From 1bea06e3cdf8d3666c7fdc45b7c45a5c4937e976 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Thu, 20 Aug 2026 09:10:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=81=8A=E6=88=B2=E5=8C=96):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=A4=A7=E5=BB=B3=E3=80=81=E9=99=84=E8=BA=AB=E3=80=81?= =?UTF-8?q?=E6=99=82=E9=96=93=E6=B5=81=E3=80=81=E5=BE=8C=E6=97=A5=E8=AB=87?= =?UTF-8?q?=E9=80=B2=E5=BA=A6=E7=AD=89=E9=81=8A=E6=88=B2=E5=8C=96=E7=B3=BB?= =?UTF-8?q?=E7=B5=B1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增角色大廳(lobby)邀約與通話、附身(possession)、時鐘(clock)抽象、 時間流與睡眠負債、後日談進度、行為選擇與旁觀反應等模組,並補齊對應冒煙 測試(R~V)與單元測試;同步調整 web/mobile 對應頁面與元件。 Co-Authored-By: Claude Sonnet 5 --- README.md | 6 +- apps/api/package.json | 6 +- apps/api/src/app.module.ts | 6 +- apps/api/src/canon/anchor.service.ts | 8 +- .../canon/behavior-rule-projection.test.ts | 143 +++ apps/api/src/canon/canon.controller.ts | 50 +- apps/api/src/canon/canon.module.ts | 6 +- .../canon/emotion-baseline-projection.test.ts | 155 +++ .../canon/ending-detection.service.test.ts | 130 +++ .../api/src/canon/ending-detection.service.ts | 40 + apps/api/src/canon/projection.service.ts | 37 +- .../src/canon/scene-import.service.test.ts | 202 ++++ apps/api/src/canon/scene-import.service.ts | 173 +++- apps/api/src/canon/timeline.service.ts | 10 + apps/api/src/chat/chat.controller.ts | 39 - apps/api/src/chat/chat.module.ts | 10 - apps/api/src/clock/clock.module.ts | 9 + apps/api/src/clock/clock.ts | 7 + apps/api/src/clock/controllable-clock.test.ts | 22 + apps/api/src/clock/controllable-clock.ts | 23 + apps/api/src/clock/system-clock.service.ts | 9 + .../src/epilogue/canon-reclamation.service.ts | 10 +- apps/api/src/epilogue/constants.ts | 22 + .../epilogue/continued-canon-import.test.ts | 162 +++ .../epilogue-progress.service.test.ts | 151 +++ .../src/epilogue/epilogue-progress.service.ts | 60 ++ apps/api/src/epilogue/epilogue.controller.ts | 16 + apps/api/src/epilogue/epilogue.module.ts | 5 +- apps/api/src/epilogue/life-event.service.ts | 9 + .../src/epilogue/time-flow.service.test.ts | 115 +++ apps/api/src/epilogue/time-flow.service.ts | 48 +- .../src/llm/behavior-reinforcement.service.ts | 21 + apps/api/src/llm/claude-provider.service.ts | 47 +- apps/api/src/llm/dialogue.controller.ts | 36 +- apps/api/src/llm/dialogue.service.ts | 30 +- .../src/llm/generate-with-resilience.test.ts | 70 ++ apps/api/src/llm/generate-with-resilience.ts | 47 + apps/api/src/llm/global-pause.service.ts | 38 + apps/api/src/llm/keyword-overlap.ts | 15 + apps/api/src/llm/llm-provider.ts | 17 + apps/api/src/llm/llm.module.ts | 4 +- .../api/src/llm/mock-provider.service.test.ts | 75 ++ apps/api/src/llm/mock-provider.service.ts | 73 +- apps/api/src/llm/prompt-builder.ts | 3 +- apps/api/src/llm/resilience-constants.ts | 5 + apps/api/src/llm/types.ts | 10 + apps/api/src/lobby/call.service.test.ts | 221 +++++ apps/api/src/lobby/call.service.ts | 317 ++++++ apps/api/src/lobby/constants.ts | 5 + apps/api/src/lobby/invitation.service.test.ts | 184 ++++ apps/api/src/lobby/invitation.service.ts | 168 ++++ .../lobby/lobby-aggregation.service.test.ts | 120 +++ .../src/lobby/lobby-aggregation.service.ts | 151 +++ apps/api/src/lobby/lobby.controller.ts | 34 + apps/api/src/lobby/lobby.module.ts | 19 + .../memory/memory-consolidation.service.ts | 5 +- .../personality-resolution.service.test.ts | 86 ++ .../personality-resolution.service.ts | 29 + .../api/src/personality/personality.module.ts | 8 +- apps/api/src/romance/confession.service.ts | 8 +- apps/api/src/romance/milestone.service.ts | 7 + .../romance/romance-eligibility.service.ts | 12 +- apps/api/src/romance/romance.controller.ts | 7 +- apps/api/src/romance/room-boundary.test.ts | 103 ++ apps/api/src/romance/room-context-guard.ts | 9 + .../room/behavior-selection.service.test.ts | 143 +++ .../src/room/behavior-selection.service.ts | 98 ++ .../character-relationship.service.test.ts | 55 ++ .../room/character-relationship.service.ts | 57 +- apps/api/src/room/constants.ts | 24 +- apps/api/src/room/cross-work-room.test.ts | 140 +++ apps/api/src/room/cross-world-note.ts | 12 + apps/api/src/room/delegate-templates.ts | 17 + .../src/room/lobby-behavior-params.test.ts | 48 + apps/api/src/room/lobby-behavior-params.ts | 38 + apps/api/src/room/lobby.service.test.ts | 88 ++ apps/api/src/room/lobby.service.ts | 195 ++++ apps/api/src/room/possession.controller.ts | 78 ++ apps/api/src/room/possession.service.test.ts | 241 +++++ apps/api/src/room/possession.service.ts | 147 +++ apps/api/src/room/privacy-boundary.test.ts | 174 ++++ .../src/room/room-consolidation.service.ts | 21 +- apps/api/src/room/room-events.service.test.ts | 34 + apps/api/src/room/room-events.service.ts | 34 + .../src/room/room-generation-usage.test.ts | 81 ++ apps/api/src/room/room-generation.service.ts | 51 +- .../src/room/room-interval.service.test.ts | 140 +++ apps/api/src/room/room-interval.service.ts | 159 +++ .../api/src/room/room-notification.service.ts | 39 + apps/api/src/room/room-notification.test.ts | 199 ++++ .../room/room-persistence.integration.test.ts | 97 ++ .../src/room/room-scheduler.service.test.ts | 142 +++ apps/api/src/room/room-scheduler.service.ts | 78 ++ apps/api/src/room/room-turns-page.test.ts | 90 ++ apps/api/src/room/room-unread.test.ts | 59 ++ apps/api/src/room/room-usage.test.ts | 65 ++ apps/api/src/room/room.controller.ts | 218 +++- apps/api/src/room/room.module.ts | 48 +- apps/api/src/room/room.service.ts | 359 +++++-- apps/api/src/room/self-chat-delegate.test.ts | 148 +++ apps/api/src/room/self-chat.service.test.ts | 172 ++++ apps/api/src/room/self-chat.service.ts | 175 ++-- apps/api/src/room/solo-chat.service.ts | 75 ++ .../room/speaking-right-n-plus-one.test.ts | 98 ++ .../src/room/speaking-right-tiebreak.test.ts | 87 ++ apps/api/src/room/speaking-right.service.ts | 87 +- apps/api/src/room/stall-detection.ts | 22 + apps/api/src/room/witness-reaction.test.ts | 147 +++ apps/api/src/room/witness-reaction.ts | 22 + .../schedule/offline-event.service.test.ts | 101 ++ .../api/src/schedule/offline-event.service.ts | 27 +- .../schedule-emotion-baseline.service.ts | 46 +- apps/api/src/schedule/schedule.module.ts | 5 +- .../src/schedule/sleep-debt.service.test.ts | 95 ++ apps/api/src/schedule/sleep-debt.service.ts | 62 ++ .../timeflow-realtime-boundary.test.ts | 95 ++ .../tachie/expression-group-context.test.ts | 62 ++ .../src/tachie/expression-resolver.service.ts | 15 +- apps/api/src/tachie/tachie.controller.ts | 12 + apps/api/src/tachie/tachie.module.ts | 3 +- apps/api/src/task/task.service.ts | 11 +- apps/api/vitest.config.ts | 13 + apps/mobile/app/(tabs)/_layout.tsx | 13 +- apps/mobile/app/(tabs)/index.tsx | 179 +--- apps/mobile/app/(tabs)/settings.tsx | 26 +- apps/mobile/app/_layout.tsx | 22 +- apps/mobile/app/canon-import.tsx | 279 ++++++ apps/mobile/app/canon-review.tsx | 258 +++++ apps/mobile/app/room/[roomId].tsx | 422 ++++++++ apps/mobile/components/HeartbeatDot.tsx | 42 + apps/mobile/components/HeartbeatWave.tsx | 78 ++ apps/mobile/components/LobbyPreview.tsx | 518 ++++++++++ apps/mobile/components/RoomStage.tsx | 44 + apps/mobile/components/TachieStage.impl.tsx | 110 +++ apps/mobile/components/TachieStage.tsx | 3 + apps/mobile/components/TachieStage.web.tsx | 20 + apps/mobile/lib/api.ts | 665 ++++++++++++- apps/mobile/lib/id.ts | 7 - apps/mobile/lib/reduce-motion.ts | 26 + apps/mobile/lib/unread-context.tsx | 44 + apps/mobile/lib/voice-autoplay-settings.ts | 14 + apps/mobile/package.json | 3 + apps/mobile/public/canvaskit.wasm | Bin 0 -> 8076553 bytes apps/web/app/canon-import/CanonImportView.tsx | 296 ++++++ apps/web/app/canon-import/page.tsx | 18 + apps/web/app/canon-review/CanonReviewView.tsx | 280 ++++++ apps/web/app/canon-review/page.tsx | 18 + apps/web/app/chat/page.tsx | 5 - apps/web/app/epilogue/EpilogueView.tsx | 228 +++++ apps/web/app/epilogue/page.tsx | 18 + apps/web/app/lobby/LobbyView.tsx | 565 +++++++++++ apps/web/app/lobby/page.tsx | 32 + apps/web/app/page.tsx | 20 +- apps/web/app/room/RoomView.tsx | 96 ++ apps/web/app/room/[roomId]/RoomChatView.tsx | 477 +++++++++ apps/web/app/room/[roomId]/page.tsx | 19 + apps/web/app/room/page.tsx | 18 + .../solo/SoloChatView.tsx} | 42 +- apps/web/app/room/solo/page.tsx | 5 + apps/web/app/settings/AdultModeSection.tsx | 103 ++ .../web/app/settings/VoiceAutoplaySection.tsx | 33 + apps/web/app/settings/page.tsx | 20 + apps/web/app/tasks/TasksView.tsx | 264 +++++ apps/web/app/tasks/page.tsx | 18 + apps/web/components/ChatBubble.tsx | 46 +- apps/web/components/RomanceSection.tsx | 161 +++ apps/web/components/RoomStage.tsx | 49 + apps/web/components/VoicePlaybackButton.tsx | 80 ++ apps/web/lib/api.ts | 933 +++++++++++++++++- apps/web/lib/voice-autoplay-settings.ts | 13 + package.json | 1 + packages/db/src/client.ts | 10 +- packages/shared/src/domain/lobby-presence.ts | 56 ++ packages/shared/src/index.ts | 1 + pnpm-lock.yaml | 668 +++++++++++++ .../migration.sql | 159 +++ .../migration.sql | 12 + .../migration.sql | 20 + .../migration.sql | 2 + .../migration.sql | 27 + prisma/schema.prisma | 457 +++++++-- scripts/smoke/F.mjs | 13 +- scripts/smoke/H.mjs | 19 +- scripts/smoke/I.mjs | 22 +- scripts/smoke/K.mjs | 27 +- scripts/smoke/L.mjs | 8 +- scripts/smoke/O.mjs | 7 +- scripts/smoke/Q.mjs | 12 +- scripts/smoke/R.mjs | 109 ++ scripts/smoke/S.mjs | 231 +++++ scripts/smoke/T.mjs | 306 ++++++ scripts/smoke/U.mjs | 262 +++++ scripts/smoke/V.mjs | 158 +++ scripts/smoke/run.mjs | 15 +- turbo.json | 3 + 195 files changed, 17219 insertions(+), 738 deletions(-) create mode 100644 apps/api/src/canon/behavior-rule-projection.test.ts create mode 100644 apps/api/src/canon/emotion-baseline-projection.test.ts create mode 100644 apps/api/src/canon/ending-detection.service.test.ts create mode 100644 apps/api/src/canon/ending-detection.service.ts create mode 100644 apps/api/src/canon/scene-import.service.test.ts delete mode 100644 apps/api/src/chat/chat.controller.ts delete mode 100644 apps/api/src/chat/chat.module.ts create mode 100644 apps/api/src/clock/clock.module.ts create mode 100644 apps/api/src/clock/clock.ts create mode 100644 apps/api/src/clock/controllable-clock.test.ts create mode 100644 apps/api/src/clock/controllable-clock.ts create mode 100644 apps/api/src/clock/system-clock.service.ts create mode 100644 apps/api/src/epilogue/continued-canon-import.test.ts create mode 100644 apps/api/src/epilogue/epilogue-progress.service.test.ts create mode 100644 apps/api/src/epilogue/epilogue-progress.service.ts create mode 100644 apps/api/src/epilogue/time-flow.service.test.ts create mode 100644 apps/api/src/llm/generate-with-resilience.test.ts create mode 100644 apps/api/src/llm/generate-with-resilience.ts create mode 100644 apps/api/src/llm/global-pause.service.ts create mode 100644 apps/api/src/llm/keyword-overlap.ts create mode 100644 apps/api/src/llm/mock-provider.service.test.ts create mode 100644 apps/api/src/llm/resilience-constants.ts create mode 100644 apps/api/src/lobby/call.service.test.ts create mode 100644 apps/api/src/lobby/call.service.ts create mode 100644 apps/api/src/lobby/constants.ts create mode 100644 apps/api/src/lobby/invitation.service.test.ts create mode 100644 apps/api/src/lobby/invitation.service.ts create mode 100644 apps/api/src/lobby/lobby-aggregation.service.test.ts create mode 100644 apps/api/src/lobby/lobby-aggregation.service.ts create mode 100644 apps/api/src/lobby/lobby.controller.ts create mode 100644 apps/api/src/lobby/lobby.module.ts create mode 100644 apps/api/src/personality/personality-resolution.service.test.ts create mode 100644 apps/api/src/personality/personality-resolution.service.ts create mode 100644 apps/api/src/romance/room-boundary.test.ts create mode 100644 apps/api/src/romance/room-context-guard.ts create mode 100644 apps/api/src/room/behavior-selection.service.test.ts create mode 100644 apps/api/src/room/behavior-selection.service.ts create mode 100644 apps/api/src/room/character-relationship.service.test.ts create mode 100644 apps/api/src/room/cross-work-room.test.ts create mode 100644 apps/api/src/room/cross-world-note.ts create mode 100644 apps/api/src/room/delegate-templates.ts create mode 100644 apps/api/src/room/lobby-behavior-params.test.ts create mode 100644 apps/api/src/room/lobby-behavior-params.ts create mode 100644 apps/api/src/room/lobby.service.test.ts create mode 100644 apps/api/src/room/lobby.service.ts create mode 100644 apps/api/src/room/possession.controller.ts create mode 100644 apps/api/src/room/possession.service.test.ts create mode 100644 apps/api/src/room/possession.service.ts create mode 100644 apps/api/src/room/privacy-boundary.test.ts create mode 100644 apps/api/src/room/room-events.service.test.ts create mode 100644 apps/api/src/room/room-events.service.ts create mode 100644 apps/api/src/room/room-generation-usage.test.ts create mode 100644 apps/api/src/room/room-interval.service.test.ts create mode 100644 apps/api/src/room/room-interval.service.ts create mode 100644 apps/api/src/room/room-notification.service.ts create mode 100644 apps/api/src/room/room-notification.test.ts create mode 100644 apps/api/src/room/room-persistence.integration.test.ts create mode 100644 apps/api/src/room/room-scheduler.service.test.ts create mode 100644 apps/api/src/room/room-scheduler.service.ts create mode 100644 apps/api/src/room/room-turns-page.test.ts create mode 100644 apps/api/src/room/room-unread.test.ts create mode 100644 apps/api/src/room/room-usage.test.ts create mode 100644 apps/api/src/room/self-chat-delegate.test.ts create mode 100644 apps/api/src/room/self-chat.service.test.ts create mode 100644 apps/api/src/room/solo-chat.service.ts create mode 100644 apps/api/src/room/speaking-right-n-plus-one.test.ts create mode 100644 apps/api/src/room/speaking-right-tiebreak.test.ts create mode 100644 apps/api/src/room/stall-detection.ts create mode 100644 apps/api/src/room/witness-reaction.test.ts create mode 100644 apps/api/src/room/witness-reaction.ts create mode 100644 apps/api/src/schedule/offline-event.service.test.ts create mode 100644 apps/api/src/schedule/sleep-debt.service.test.ts create mode 100644 apps/api/src/schedule/sleep-debt.service.ts create mode 100644 apps/api/src/schedule/timeflow-realtime-boundary.test.ts create mode 100644 apps/api/src/tachie/expression-group-context.test.ts create mode 100644 apps/api/vitest.config.ts create mode 100644 apps/mobile/app/canon-import.tsx create mode 100644 apps/mobile/app/canon-review.tsx create mode 100644 apps/mobile/app/room/[roomId].tsx create mode 100644 apps/mobile/components/HeartbeatDot.tsx create mode 100644 apps/mobile/components/HeartbeatWave.tsx create mode 100644 apps/mobile/components/LobbyPreview.tsx create mode 100644 apps/mobile/components/RoomStage.tsx create mode 100644 apps/mobile/components/TachieStage.impl.tsx create mode 100644 apps/mobile/components/TachieStage.tsx create mode 100644 apps/mobile/components/TachieStage.web.tsx delete mode 100644 apps/mobile/lib/id.ts create mode 100644 apps/mobile/lib/reduce-motion.ts create mode 100644 apps/mobile/lib/unread-context.tsx create mode 100644 apps/mobile/lib/voice-autoplay-settings.ts create mode 100644 apps/mobile/public/canvaskit.wasm create mode 100644 apps/web/app/canon-import/CanonImportView.tsx create mode 100644 apps/web/app/canon-import/page.tsx create mode 100644 apps/web/app/canon-review/CanonReviewView.tsx create mode 100644 apps/web/app/canon-review/page.tsx delete mode 100644 apps/web/app/chat/page.tsx create mode 100644 apps/web/app/epilogue/EpilogueView.tsx create mode 100644 apps/web/app/epilogue/page.tsx create mode 100644 apps/web/app/lobby/LobbyView.tsx create mode 100644 apps/web/app/lobby/page.tsx create mode 100644 apps/web/app/room/RoomView.tsx create mode 100644 apps/web/app/room/[roomId]/RoomChatView.tsx create mode 100644 apps/web/app/room/[roomId]/page.tsx create mode 100644 apps/web/app/room/page.tsx rename apps/web/app/{chat/ChatView.tsx => room/solo/SoloChatView.tsx} (74%) create mode 100644 apps/web/app/room/solo/page.tsx create mode 100644 apps/web/app/settings/AdultModeSection.tsx create mode 100644 apps/web/app/settings/VoiceAutoplaySection.tsx create mode 100644 apps/web/app/settings/page.tsx create mode 100644 apps/web/app/tasks/TasksView.tsx create mode 100644 apps/web/app/tasks/page.tsx create mode 100644 apps/web/components/RomanceSection.tsx create mode 100644 apps/web/components/RoomStage.tsx create mode 100644 apps/web/components/VoicePlaybackButton.tsx create mode 100644 apps/web/lib/voice-autoplay-settings.ts create mode 100644 packages/shared/src/domain/lobby-presence.ts create mode 100644 prisma/migrations/20260818110741_add_room_persistence/migration.sql create mode 100644 prisma/migrations/20260819062301_t32_sleep_debt/migration.sql create mode 100644 prisma/migrations/20260819141648_t25_procedural_rule_source_scene/migration.sql create mode 100644 prisma/migrations/20260819152404_t34_epilogue_progress_checkpoint/migration.sql create mode 100644 prisma/migrations/20260819165057_t43_possession/migration.sql create mode 100644 scripts/smoke/R.mjs create mode 100644 scripts/smoke/S.mjs create mode 100644 scripts/smoke/T.mjs create mode 100644 scripts/smoke/U.mjs create mode 100644 scripts/smoke/V.mjs diff --git a/README.md b/README.md index a2270e2..b167156 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,11 @@ pnpm run smoke A # 執行 A 群組冒煙測試;all 表示依序執行 A~R 4. **程序常駐與重啟**:用 systemd unit(或 pm2)分別管理 api/web 兩個 Node 行程,設定 `Restart=on-failure`;健康檢查沿用 `GET /health` (api)與首頁 200(web),與 `scripts/dev-restart.mjs` 開發環境用的 - 檢查邏輯一致。 + 檢查邏輯一致。**房間自走(T37 起)需要 api 常駐**——排程與 api 同行程 + (node-cron,見 `apps/api/src/room/room-scheduler.service.ts`),api 停機 + 期間房間不會推進,重啟後只會補推進一次接上目前時間,不會補齊停機期間 + 錯過的輪數;因排程未加分散式鎖,**api 只能起一個實例**,多實例會讓同一 + 房間被重複推進。 5. **反向代理/TLS**:nginx 或雲端負載平衡器終止 TLS 後轉發到 api/web 對應埠號,對外只曝露 443。 diff --git a/apps/api/package.json b/apps/api/package.json index 99e2504..89e9e60 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -7,7 +7,8 @@ "main": "dist/main.js", "scripts": { "build": "tsc -b", - "start": "node dist/main.js" + "start": "node dist/main.js", + "test": "vitest run" }, "dependencies": { "@kokorone/db": "workspace:*", @@ -23,6 +24,7 @@ "rxjs": "^7.8.2" }, "devDependencies": { - "@types/node-cron": "^3.0.11" + "@types/node-cron": "^3.0.11", + "vitest": "^4.1.10" } } diff --git a/apps/api/src/app.module.ts b/apps/api/src/app.module.ts index 28ad00b..547ef11 100644 --- a/apps/api/src/app.module.ts +++ b/apps/api/src/app.module.ts @@ -7,30 +7,32 @@ import { EmotionModule } from "./emotion/emotion.module.js"; import { RelationshipModule } from "./relationship/relationship.module.js"; import { LlmModule } from "./llm/llm.module.js"; import { PersonalityModule } from "./personality/personality.module.js"; -import { ChatModule } from "./chat/chat.module.js"; import { ScheduleModule } from "./schedule/schedule.module.js"; import { TaskModule } from "./task/task.module.js"; import { RoomModule } from "./room/room.module.js"; +import { LobbyModule } from "./lobby/lobby.module.js"; import { RomanceModule } from "./romance/romance.module.js"; import { CanonModule } from "./canon/canon.module.js"; import { EpilogueModule } from "./epilogue/epilogue.module.js"; import { TachieModule } from "./tachie/tachie.module.js"; import { VoiceModule } from "./voice/voice.module.js"; import { PushModule } from "./push/push.module.js"; +import { ClockModule } from "./clock/clock.module.js"; @Module({ imports: [ EventEmitterModule.forRoot(), + ClockModule, CharactersModule, MemoryModule, EmotionModule, RelationshipModule, LlmModule, PersonalityModule, - ChatModule, ScheduleModule, TaskModule, RoomModule, + LobbyModule, RomanceModule, CanonModule, EpilogueModule, diff --git a/apps/api/src/canon/anchor.service.ts b/apps/api/src/canon/anchor.service.ts index b8b8d0b..7809464 100644 --- a/apps/api/src/canon/anchor.service.ts +++ b/apps/api/src/canon/anchor.service.ts @@ -29,14 +29,14 @@ export class AnchorService { } // 錨定點後退:她「不再知道」超出新錨定點的後段劇情——移除這些場景先前投影出的所有角色資料。 + // T17/T25:清除清單與 ProjectionService.clearProjectedData() 共用同一份,避免這裡各自維護一份 + // 清單、日後新增的投影資料類型忘了同步加在兩處(先前 CharacterEmotionBaseline/ProceduralRule + // 上線時就漏了這裡,直到本次才發現並補上)。 const toUnproject = await this.prisma.client.scene.findMany({ where: { workId, storyOrder: { gt: newStoryOrder }, projected: true }, }); for (const scene of toUnproject) { - await this.prisma.client.episodicMemory.deleteMany({ where: { sourceSceneId: scene.id } }); - await this.prisma.client.semanticMemory.deleteMany({ where: { sourceSceneId: scene.id } }); - await this.prisma.client.personalityTraitSnapshot.deleteMany({ where: { sourceSceneId: scene.id } }); - await this.prisma.client.characterRelationshipEventLog.deleteMany({ where: { sceneId: scene.id } }); + await this.projection.clearProjectedData(scene.id); await this.prisma.client.scene.update({ where: { id: scene.id }, data: { projected: false } }); } diff --git a/apps/api/src/canon/behavior-rule-projection.test.ts b/apps/api/src/canon/behavior-rule-projection.test.ts new file mode 100644 index 0000000..1ad0b33 --- /dev/null +++ b/apps/api/src/canon/behavior-rule-projection.test.ts @@ -0,0 +1,143 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; +import { FingerprintService } from "./fingerprint.service.js"; +import { AttributionService } from "./attribution.service.js"; +import { ProjectionService } from "./projection.service.js"; +import { WorkRosterService } from "./work-roster.service.js"; +import { TimelineService } from "./timeline.service.js"; +import { EndingDetectionService } from "./ending-detection.service.js"; +import { SceneImportService } from "./scene-import.service.js"; + +// T25 驗收:匯入一章後可看到新增與被強化的規則各自的來源章節,且重複匯入相同行為不會產生同義重複規則。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const fingerprint = new FingerprintService(prisma); +const attribution = new AttributionService(prisma, fingerprint); +const behaviorReinforcement = new BehaviorReinforcementService(prisma); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), behaviorReinforcement); +const roster = new WorkRosterService(prisma); +const timeline = new TimelineService(prisma); +const endingDetection = new EndingDetectionService(prisma, new MockProvider()); +const sceneImport = new SceneImportService(prisma, attribution, projection, roster, timeline, endingDetection); + +const WORK_ID = "test-t25-work"; +const CHAR_A = "test-t25-char-a"; + +afterEach(async () => { + await prisma.client.proceduralRule.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.scene.deleteMany({ where: { workId: WORK_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_A } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createWorkAndCharacter(anchorStoryOrder = 100) { + await prisma.client.work.create({ data: { id: WORK_ID, title: "T25 測試作品", anchorStoryOrder } }); + await prisma.client.character.create({ + data: { + id: CHAR_A, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: "小甲" } }, + }, + }); +} + +describe("ACTION 描寫投影為 ProceduralRule(T25)", () => { + it("匯入含 ACTION 描寫的章節後,新增規則記錄來源章節", async () => { + await createWorkAndCharacter(); + + const scene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲被老師點名回答問題。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "ACTION", rawText: "小甲害羞地低下頭。", hasExplicitMarker: true, markerCharacterId: CHAR_A }], + }); + expect(scene.projected).toBe(true); + + const rule = await prisma.client.proceduralRule.findFirstOrThrow({ where: { characterId: CHAR_A } }); + expect(rule.situation).toBe("小甲被老師點名回答問題。"); + expect(rule.responsePattern).toBe("小甲害羞地低下頭。"); + expect(rule.weight).toBe(1); + expect(rule.sourceSceneId).toBe(scene.id); + }, 20000); + + it("再匯入相同情境與回應模式的另一章時,強化既有規則的權重並更新來源章節,不產生重複規則", async () => { + await createWorkAndCharacter(); + + const sceneA = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲被老師點名回答問題。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "ACTION", rawText: "小甲害羞地低下頭。", hasExplicitMarker: true, markerCharacterId: CHAR_A }], + }); + + const sceneB = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第二章", + storyOrder: 2, + summary: "小甲被老師點名回答問題。", // 同樣的情境敘述 + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "ACTION", rawText: "小甲害羞地低下頭。", hasExplicitMarker: true, markerCharacterId: CHAR_A }], + }); + + const rules = await prisma.client.proceduralRule.findMany({ where: { characterId: CHAR_A } }); + expect(rules).toHaveLength(1); // 不會產生同義重複規則 + expect(rules[0].weight).toBe(2); // 首次 1,強化一次後 2 + expect(rules[0].sourceSceneId).toBe(sceneB.id); // 記錄最近一次觸發的來源章節 + expect(sceneA.id).not.toBe(sceneB.id); + }, 20000); + + it("不同情境或不同回應模式視為不同規則,各自累計", async () => { + await createWorkAndCharacter(); + + await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲被老師點名回答問題。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "ACTION", rawText: "小甲害羞地低下頭。", hasExplicitMarker: true, markerCharacterId: CHAR_A }], + }); + await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第二章", + storyOrder: 2, + summary: "小甲在派對上收到禮物。", // 不同情境 + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "ACTION", rawText: "小甲開心地跳了起來。", hasExplicitMarker: true, markerCharacterId: CHAR_A }], + }); + + const rules = await prisma.client.proceduralRule.findMany({ where: { characterId: CHAR_A } }); + expect(rules).toHaveLength(2); + expect(rules.every((r) => r.weight === 1)).toBe(true); + }, 20000); +}); diff --git a/apps/api/src/canon/canon.controller.ts b/apps/api/src/canon/canon.controller.ts index 7ed7eb1..7d0d2f0 100644 --- a/apps/api/src/canon/canon.controller.ts +++ b/apps/api/src/canon/canon.controller.ts @@ -8,6 +8,7 @@ import { WorkRosterService } from "./work-roster.service.js"; import { IllustrationService } from "./illustration.service.js"; import { AnchorService } from "./anchor.service.js"; import { TimelineService } from "./timeline.service.js"; +import { EndingDetectionService } from "./ending-detection.service.js"; @Controller("canon") export class CanonController { @@ -20,8 +21,15 @@ export class CanonController { private readonly illustration: IllustrationService, private readonly anchor: AnchorService, private readonly timeline: TimelineService, + private readonly endingDetection: EndingDetectionService, ) {} + // M-11:待裁決畫面需要先選一部作品才能往下查場景/台詞,既有 API 沒有列出作品的端點,補上這個最小讀取端點。 + @Get("works") + async listWorks() { + return this.prisma.client.work.findMany({ orderBy: { createdAt: "desc" } }); + } + @Post("scenes") async importScene(@Body() body: ImportSceneInput) { return this.sceneImport.importScene(body); @@ -40,22 +48,48 @@ export class CanonController { return this.prisma.client.scene.findMany({ where: { workId }, orderBy: { storyOrder: "asc" } }); } + // T39:裁決完(不再有隔離台詞或待確認矛盾)後才執行階段二投影與角色建置門檻檢查, + // 使用者不需要另外手動觸發——這三個既有端點裁決完成後都會自動接續嘗試。 @Post("scene-lines/:lineId/adjudicate") async adjudicate(@Param("lineId") lineId: string, @Body() body: { speakerCharacterId: string }) { await this.attribution.adjudicate(lineId, body.speakerCharacterId); - return this.prisma.client.sceneLine.findUniqueOrThrow({ where: { id: lineId } }); + const line = await this.prisma.client.sceneLine.findUniqueOrThrow({ where: { id: lineId } }); + await this.sceneImport.tryProjectScene(line.sceneId); + return line; } @Post("scenes/:sceneId/reattempt-quarantined") async reattemptQuarantined(@Param("sceneId") sceneId: string) { const released = await this.attribution.reattemptQuarantined(sceneId); + await this.sceneImport.tryProjectScene(sceneId); return { released }; } @Post("scene-lines/:lineId/correct") async correctAttribution(@Param("lineId") lineId: string, @Body() body: { newSpeakerCharacterId: string; now?: string }) { await this.correction.correctLineAttribution(lineId, body.newSpeakerCharacterId, body.now ? new Date(body.now) : undefined); - return this.prisma.client.sceneLine.findUniqueOrThrow({ where: { id: lineId } }); + const line = await this.prisma.client.sceneLine.findUniqueOrThrow({ where: { id: lineId } }); + await this.sceneImport.tryProjectScene(line.sceneId); + return line; + } + + // T39:待裁決清單——場景自身有隔離中的台詞、或所屬作品有待人工確認的矛盾時,都算「有待裁決項目」; + // 供大廳作品卡片提示(T19-P4)與 smoke 驗證共用。 + @Get("works/:workId/pending-adjudication") + async listPendingAdjudication(@Param("workId") workId: string) { + const scenes = await this.prisma.client.scene.findMany({ where: { workId, projected: false } }); + const results = []; + for (const scene of scenes) { + const detail = await this.sceneImport.getSceneDetail(scene.id); + if (detail.pendingAdjudication) results.push(detail); + } + return results; + } + + // T13:作品頁可查詢待確認的結局偵測結果(含判定理由);確認/拒絕操作見 T14(epilogue 模組)。 + @Get("works/:workId/ending-detections") + async listPendingEndingDetections(@Param("workId") workId: string) { + return this.endingDetection.listPendingForWork(workId); } @Get("characters/:characterId/roster-progress") @@ -103,6 +137,8 @@ export class CanonController { @Post("works/:workId/detect-contradictions") async detectContradictions(@Param("workId") workId: string) { const created = await this.timeline.detectContradictions(workId); + // T39:矛盾是作品層級的,解決後可能同時解除多個場景的封鎖,逐一嘗試整個作品尚未投影的場景。 + await this.sceneImport.tryProjectPendingScenesForWork(workId); return { created }; } @@ -110,4 +146,14 @@ export class CanonController { async listContradictions(@Param("workId") workId: string) { return this.timeline.listContradictions(workId); } + + // T39:人工裁決矛盾——原本沒有任何端點能把 PENDING_HUMAN_REVIEW 的矛盾標記解決,含這類矛盾的作品 + // 會永久卡住無法投影;解決後嘗試接續投影整個作品裡尚未投影的場景。 + @Post("contradictions/:contradictionId/resolve") + async resolveContradiction(@Param("contradictionId") contradictionId: string, @Body() body: { resolution: string }) { + const contradiction = await this.prisma.client.sceneContradiction.findUniqueOrThrow({ where: { id: contradictionId } }); + await this.timeline.resolveContradiction(contradictionId, body.resolution); + await this.sceneImport.tryProjectPendingScenesForWork(contradiction.workId); + return this.prisma.client.sceneContradiction.findUniqueOrThrow({ where: { id: contradictionId } }); + } } diff --git a/apps/api/src/canon/canon.module.ts b/apps/api/src/canon/canon.module.ts index 3c50867..7e48a95 100644 --- a/apps/api/src/canon/canon.module.ts +++ b/apps/api/src/canon/canon.module.ts @@ -1,6 +1,7 @@ import { Module } from "@nestjs/common"; import { PrismaModule } from "../prisma/prisma.module.js"; import { EmotionModule } from "../emotion/emotion.module.js"; +import { LlmModule } from "../llm/llm.module.js"; import { FingerprintService } from "./fingerprint.service.js"; import { WorkRosterService } from "./work-roster.service.js"; import { IllustrationService } from "./illustration.service.js"; @@ -10,10 +11,11 @@ import { SceneImportService } from "./scene-import.service.js"; import { AnchorService } from "./anchor.service.js"; import { TimelineService } from "./timeline.service.js"; import { CorrectionService } from "./correction.service.js"; +import { EndingDetectionService } from "./ending-detection.service.js"; import { CanonController } from "./canon.controller.js"; @Module({ - imports: [PrismaModule, EmotionModule], + imports: [PrismaModule, EmotionModule, LlmModule], controllers: [CanonController], providers: [ FingerprintService, @@ -25,6 +27,7 @@ import { CanonController } from "./canon.controller.js"; AnchorService, TimelineService, CorrectionService, + EndingDetectionService, ], exports: [ FingerprintService, @@ -36,6 +39,7 @@ import { CanonController } from "./canon.controller.js"; AnchorService, TimelineService, CorrectionService, + EndingDetectionService, ], }) export class CanonModule {} diff --git a/apps/api/src/canon/emotion-baseline-projection.test.ts b/apps/api/src/canon/emotion-baseline-projection.test.ts new file mode 100644 index 0000000..505af0b --- /dev/null +++ b/apps/api/src/canon/emotion-baseline-projection.test.ts @@ -0,0 +1,155 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { ScheduleEmotionBaselineService } from "../schedule/schedule-emotion-baseline.service.js"; +import { FingerprintService } from "./fingerprint.service.js"; +import { AttributionService } from "./attribution.service.js"; +import { ProjectionService } from "./projection.service.js"; +import { WorkRosterService } from "./work-roster.service.js"; +import { TimelineService } from "./timeline.service.js"; +import { EndingDetectionService } from "./ending-detection.service.js"; +import { SceneImportService } from "./scene-import.service.js"; + +// T17 驗收:匯入悲劇章節後該角色整體基調偏低落(透過 ScheduleEmotionBaselineService.computeBaseline() +// 這個既有的合成點觀察,不直接檢查 EmotionState);reprojectScene() 重投影時一致清除舊的基線紀錄; +// 平淡場景不記錄基線;本項全程不寫 EmotionState 六維、不重設其 updatedAt。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; +const WEEKDAY_NOW = new Date("2026-08-19T05:00:00.000Z"); // 台北週三 13:00,避開週末的假期基線 + +const prisma = { client: createPrismaClient() } as PrismaService; +const fingerprint = new FingerprintService(prisma); +const attribution = new AttributionService(prisma, fingerprint); +const behaviorReinforcement = new BehaviorReinforcementService(prisma); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), behaviorReinforcement); +const roster = new WorkRosterService(prisma); +const timeline = new TimelineService(prisma); +const endingDetection = new EndingDetectionService(prisma, new MockProvider()); +const sceneImport = new SceneImportService(prisma, attribution, projection, roster, timeline, endingDetection); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const scheduleBaseline = new ScheduleEmotionBaselineService(prisma, scheduleService, sleepDebtService); + +const WORK_ID = "test-t17-work"; +const CHAR_A = "test-t17-char-a"; + +afterEach(async () => { + await prisma.client.characterEmotionBaseline.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.emotionState.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.scene.deleteMany({ where: { workId: WORK_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_A } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createWorkAndCharacter(anchorStoryOrder = 100) { + await prisma.client.work.create({ data: { id: WORK_ID, title: "T17 測試作品", anchorStoryOrder } }); + await prisma.client.character.create({ + data: { + id: CHAR_A, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: "小甲" } }, + }, + }); +} + +describe("章節匯入的情緒基線連動(T17)", () => { + it("匯入悲劇章節後,作息基線的合成結果偏向低落;沒有寫入 EmotionState", async () => { + await createWorkAndCharacter(); + + const scene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲最深愛的家人離開了,她感到非常難過,好傷心。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "小甲哭了。" }], + }); + expect(scene.projected).toBe(true); + + const baselineRow = await prisma.client.characterEmotionBaseline.findFirstOrThrow({ + where: { characterId: CHAR_A }, + }); + expect(baselineRow.emotionTag).toBe("SAD"); + expect(baselineRow.sourceSceneId).toBe(scene.id); + + const synthesized = await scheduleBaseline.computeBaseline(CHAR_A, WEEKDAY_NOW); + expect(synthesized?.tag).toBe("SAD"); + + // T17 硬性約束:全程不得直接寫 EmotionState 六維或重設其 updatedAt。 + const emotionState = await prisma.client.emotionState.findUnique({ where: { characterId: CHAR_A } }); + expect(emotionState).toBeNull(); + }, 20000); + + it("平淡場景不記錄基線;重投影時一致清除舊的基線紀錄", async () => { + await createWorkAndCharacter(); + + const neutralScene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲去便利商店買了飲料。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "今天天氣普通。" }], + }); + const rowsAfterNeutral = await prisma.client.characterEmotionBaseline.findMany({ where: { characterId: CHAR_A } }); + expect(rowsAfterNeutral).toHaveLength(0); + + const sadScene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第二章", + storyOrder: 2, + summary: "小甲失去了摯友,非常難過委屈。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "小甲難過地離開了。" }], + }); + expect(await prisma.client.characterEmotionBaseline.count({ where: { characterId: CHAR_A } })).toBe(1); + + await projection.reprojectScene(sadScene.id); + const rowsAfterReproject = await prisma.client.characterEmotionBaseline.findMany({ + where: { characterId: CHAR_A }, + }); + expect(rowsAfterReproject).toHaveLength(1); // 清掉重建後仍是同一筆(同一場景),不會累積或消失 + expect(rowsAfterReproject[0].sourceSceneId).toBe(sadScene.id); + void neutralScene; + }, 20000); + + it("作息本身有更急迫的訊號時(睡眠債),優先於章節匯入的長期基調", async () => { + await createWorkAndCharacter(); + await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲失去了摯友,非常難過委屈。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "小甲難過地離開了。" }], + }); + + await prisma.client.sleepDebt.create({ data: { characterId: CHAR_A, accumulatedMinutes: 90 } }); + const synthesized = await scheduleBaseline.computeBaseline(CHAR_A, WEEKDAY_NOW); + expect(synthesized?.tag).toBe("SAD"); // 恰好同為 SAD,改用強度驗證優先序真的走了睡眠債分支 + expect(synthesized?.intensity).toBe(0.4); // SLEEP_DEBT_TIRED_INTENSITY,而非章節基線的強度 + }, 20000); +}); diff --git a/apps/api/src/canon/ending-detection.service.test.ts b/apps/api/src/canon/ending-detection.service.test.ts new file mode 100644 index 0000000..8c2e1c0 --- /dev/null +++ b/apps/api/src/canon/ending-detection.service.test.ts @@ -0,0 +1,130 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; +import { FingerprintService } from "./fingerprint.service.js"; +import { AttributionService } from "./attribution.service.js"; +import { ProjectionService } from "./projection.service.js"; +import { WorkRosterService } from "./work-roster.service.js"; +import { TimelineService } from "./timeline.service.js"; +import { EndingDetectionService } from "./ending-detection.service.js"; +import { SceneImportService } from "./scene-import.service.js"; + +// T13 驗收:匯入結局章節後作品頁出現提示且附判定理由,Work.inEpilogue 在未確認前保持不變, +// 非結局章節不會誤提示;判定不看章節標題(chapterLabel 故意取無結局意味的名稱)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const fingerprint = new FingerprintService(prisma); +const attribution = new AttributionService(prisma, fingerprint); +const behaviorReinforcement = new BehaviorReinforcementService(prisma); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), behaviorReinforcement); +const roster = new WorkRosterService(prisma); +const timeline = new TimelineService(prisma); +const mockProvider = new MockProvider(); +const endingDetection = new EndingDetectionService(prisma, mockProvider); +const sceneImport = new SceneImportService(prisma, attribution, projection, roster, timeline, endingDetection); + +const WORK_ID = "test-t13-work"; +const CHAR_A = "test-t13-char-a"; + +afterEach(async () => { + await prisma.client.endingDetectionLog.deleteMany({ where: { scene: { workId: WORK_ID } } }); + await prisma.client.scene.deleteMany({ where: { workId: WORK_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_A } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createWork() { + await prisma.client.work.create({ data: { id: WORK_ID, title: "T13 測試作品", anchorStoryOrder: 100 } }); +} + +async function createCharacter() { + await prisma.client.character.create({ + data: { + id: CHAR_A, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: "小甲" } }, + }, + }); +} + +describe("EndingDetectionService(T13)", () => { + it("匯入結局章節後,作品頁可查到待確認的偵測結果且附判定理由;Work.inEpilogue 保持不變", async () => { + await createWork(); + await createCharacter(); + + // chapterLabel 故意取一個完全不帶結局意味的名稱,證明判定依據是場景內容本身而非章節標題。 + const scene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 3, + chapterLabel: "第五十話", + storyOrder: 1, + summary: "眾人在最後一戰後道別,故事到此結束,全劇終。", + rawText: "(測試文本)眾人告別,全劇終。", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "故事在此完結。" }], + }); + expect(scene.projected).toBe(true); + + const pending = await endingDetection.listPendingForWork(WORK_ID); + expect(pending).toHaveLength(1); + expect(pending[0].sceneId).toBe(scene.id); + expect(pending[0].evidence.length).toBeGreaterThan(0); + expect(pending[0].resolution).toBe("PENDING"); + + const work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.inEpilogue).toBe(false); // T13 本身不得直接修改 Work,確認交給 T14 + }, 20000); + + it("非結局章節不會誤提示", async () => { + await createWork(); + await createCharacter(); + + const scene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一話:最終決戰!!", // 標題帶「最終」也不該誤判,判斷依據只看場景內容 + storyOrder: 1, + summary: "小甲今天去上學,路上買了早餐。", + rawText: "(測試文本)平凡的一天。", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "今天天氣不錯。" }], + }); + expect(scene.projected).toBe(true); + + const pending = await endingDetection.listPendingForWork(WORK_ID); + expect(pending).toHaveLength(0); + }, 20000); + + it("同一場景不會重複寫入偵測紀錄", async () => { + await createWork(); + await createCharacter(); + const scene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一話", + storyOrder: 1, + summary: "大結局,故事在此完結。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "全劇終。" }], + }); + await endingDetection.detectForScene(scene.id); // 重複呼叫模擬未來可能的重複觸發路徑 + const logs = await prisma.client.endingDetectionLog.findMany({ where: { sceneId: scene.id } }); + expect(logs).toHaveLength(1); + }, 20000); +}); diff --git a/apps/api/src/canon/ending-detection.service.ts b/apps/api/src/canon/ending-detection.service.ts new file mode 100644 index 0000000..5867b20 --- /dev/null +++ b/apps/api/src/canon/ending-detection.service.ts @@ -0,0 +1,40 @@ +import { Inject, Injectable } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { LLM_PROVIDER, type LLMProvider } from "../llm/llm-provider.js"; + +// T13 匯入時的結局偵測與提示:每個場景投影完成後都呼叫,不以章節標題關鍵字預篩(呼叫端只傳場景 +// 摘要/原文/作品標題,不傳章節標題)。判定成立只寫 EndingDetectionLog(resolution=PENDING), +// 絕不直接修改 Work——是否真的切入日後談由使用者在 T14 的確認端點決定。 +@Injectable() +export class EndingDetectionService { + constructor( + private readonly prisma: PrismaService, + @Inject(LLM_PROVIDER) private readonly provider: LLMProvider, + ) {} + + async detectForScene(sceneId: string): Promise { + const scene = await this.prisma.client.scene.findUniqueOrThrow({ + where: { id: sceneId }, + include: { work: true }, + }); + + // 同一場景只投影一次(tryProjectScene 對已投影場景是 no-op),理論上不會重複偵測; + // 仍加一道保險,避免任何未來呼叫路徑重複寫入同一場景的偵測紀錄。 + const existing = await this.prisma.client.endingDetectionLog.findFirst({ where: { sceneId } }); + if (existing) return; + + const result = await this.provider.detectEnding(scene.summary, scene.rawText, scene.work.title); + if (!result.isEnding) return; + + await this.prisma.client.endingDetectionLog.create({ + data: { sceneId, evidence: result.evidence, resolution: "PENDING" }, + }); + } + + async listPendingForWork(workId: string) { + return this.prisma.client.endingDetectionLog.findMany({ + where: { scene: { workId }, resolution: "PENDING" }, + include: { scene: true }, + }); + } +} diff --git a/apps/api/src/canon/projection.service.ts b/apps/api/src/canon/projection.service.ts index 2af0635..23cf45f 100644 --- a/apps/api/src/canon/projection.service.ts +++ b/apps/api/src/canon/projection.service.ts @@ -2,6 +2,7 @@ import { Injectable } from "@nestjs/common"; import { PrismaService } from "../prisma/prisma.service.js"; import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; import { HIGH_EMOTION_THRESHOLD } from "../memory/constants.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; const CANON_EPOCH_MS = new Date("2000-01-01T00:00:00.000Z").getTime(); const DAY_MS = 24 * 60 * 60 * 1000; @@ -19,6 +20,7 @@ export class ProjectionService { constructor( private readonly prisma: PrismaService, private readonly tagger: RuleBasedEmotionTagger, + private readonly behaviorRule: BehaviorReinforcementService, ) {} async projectScene(sceneId: string): Promise { @@ -90,16 +92,49 @@ export class ProjectionService { } } + // 6) 動作描寫 → 行為規則(T25):ACTION 描述的是「在這個情境下,這個角色做了什麼」,情境取場景摘要 + // (客觀記錄的「發生了什麼事」),回應模式取這句動作描寫本身;首見新增規則、已有相同情境+回應模式 + // 則強化既有權重(沿用 F-5 既有的 (situation, responsePattern) 比對,見 BehaviorReinforcementService)。 + const actionLines = scene.lines.filter( + (line) => line.lineType === "ACTION" && line.status === "CONFIRMED" && line.speakerCharacterId, + ); + for (const line of actionLines) { + await this.behaviorRule.recordFromScene(line.speakerCharacterId!, scene.summary, line.rawText, scene.id); + } + + // 7) 場景整體情緒 → 情緒基線(T17):沿用步驟 1 已算出的場景情緒訊號(同一份客觀記錄,在場者共同 + // 經歷),累積進在場角色的長期基調;只有出現明確情緒訊號的場景才記一筆,平淡場景不灌水基線資料。 + // 這裡只寫 CharacterEmotionBaseline,絕不直接寫 EmotionState 六維、也不重設其 updatedAt—— + // 基線只在 ScheduleEmotionBaselineService.computeBaseline() 取不到更急迫的訊號時才會被拿去參考。 + if (signal.tag !== "CALM") { + for (const characterId of presentCharacterIds) { + await this.prisma.client.characterEmotionBaseline.create({ + data: { characterId, emotionTag: signal.tag, intensity: signal.intensity, sourceSceneId: scene.id }, + }); + } + } + await this.prisma.client.scene.update({ where: { id: scene.id }, data: { projected: true } }); } // M-7 重新投影:修正場景資料庫後,先移除這個場景先前投影出的所有資料,再重新投影一次。 // 只清「由這個場景投影而來」的紀錄(sourceSceneId 指到它)——使用者互動記憶從不設這個欄位,永遠不受影響。 async reprojectScene(sceneId: string): Promise { + await this.clearProjectedData(sceneId); + await this.projectScene(sceneId); + } + + // T39:階段二(投影)失敗時,把這個場景已經寫入一部分的投影結果清乾淨,回到「已裁決但未投影」 + // 可安全重跑的狀態(不是留一半髒資料卡住),與 reprojectScene() 共用同一份清除邏輯。 + async clearProjectedData(sceneId: string): Promise { await this.prisma.client.episodicMemory.deleteMany({ where: { sourceSceneId: sceneId } }); await this.prisma.client.semanticMemory.deleteMany({ where: { sourceSceneId: sceneId } }); await this.prisma.client.personalityTraitSnapshot.deleteMany({ where: { sourceSceneId: sceneId } }); await this.prisma.client.characterRelationshipEventLog.deleteMany({ where: { sceneId } }); - await this.projectScene(sceneId); + // T25:已知簡化——sourceSceneId 只記錄「最近一次」觸發,若這條規則後來又被別的場景強化過, + // 這裡整條刪掉會連同其他場景的貢獻一起清掉,見 schema.prisma 該欄位的註解。 + await this.prisma.client.proceduralRule.deleteMany({ where: { sourceSceneId: sceneId } }); + // T17:情緒基線是每場景各自一筆(不像 ProceduralRule 是單列累加),刪除重建不會誤刪其他場景的貢獻。 + await this.prisma.client.characterEmotionBaseline.deleteMany({ where: { sourceSceneId: sceneId } }); } } diff --git a/apps/api/src/canon/scene-import.service.test.ts b/apps/api/src/canon/scene-import.service.test.ts new file mode 100644 index 0000000..ca708e5 --- /dev/null +++ b/apps/api/src/canon/scene-import.service.test.ts @@ -0,0 +1,202 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { FingerprintService } from "./fingerprint.service.js"; +import { AttributionService } from "./attribution.service.js"; +import { ProjectionService } from "./projection.service.js"; +import { WorkRosterService } from "./work-roster.service.js"; +import { TimelineService } from "./timeline.service.js"; +import { EndingDetectionService } from "./ending-detection.service.js"; +import { SceneImportService } from "./scene-import.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; + +// T39 驗收:兩階段與裁決阻斷——含爭議歸屬(QUARANTINED)或待人工確認矛盾(PENDING_HUMAN_REVIEW)的 +// 匯入,暫不投影也不影響角色資料;裁決/解決矛盾完成後才接續投影;階段一失敗全回滾視為沒匯入過。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const fingerprint = new FingerprintService(prisma); +const attribution = new AttributionService(prisma, fingerprint); +const behaviorReinforcement = new BehaviorReinforcementService(prisma); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), behaviorReinforcement); +const roster = new WorkRosterService(prisma); +const timeline = new TimelineService(prisma); +const endingDetection = new EndingDetectionService(prisma, new MockProvider()); +const sceneImport = new SceneImportService(prisma, attribution, projection, roster, timeline, endingDetection); + +const WORK_ID = "test-t39-work"; +const CHAR_A = "test-t39-char-a"; +const CHAR_B = "test-t39-char-b"; +const CHAR_C = "test-t39-char-c"; +const ALL_CHAR_IDS = [CHAR_A, CHAR_B, CHAR_C]; + +afterEach(async () => { + await prisma.client.sceneContradiction.deleteMany({ where: { workId: WORK_ID } }); + await prisma.client.scene.deleteMany({ where: { workId: WORK_ID } }); + await prisma.client.character.deleteMany({ where: { id: { in: ALL_CHAR_IDS } } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createWork(anchorStoryOrder = 100) { + await prisma.client.work.create({ data: { id: WORK_ID, title: "T39 測試作品", anchorStoryOrder } }); +} + +async function createCharacter(id: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); +} + +describe("SceneImportService 兩階段與裁決阻斷(T39)", () => { + it("沒有隔離台詞、沒有矛盾時,匯入後立即完成階段二投影", async () => { + await createWork(); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + + const result = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲與小乙在教室聊天。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A, CHAR_B], + lines: [ + { lineType: "DIALOGUE", rawText: "早安。", hasExplicitMarker: true, markerCharacterId: CHAR_A }, + { lineType: "DIALOGUE", rawText: "早安呀。", hasExplicitMarker: true, markerCharacterId: CHAR_B }, + ], + }); + + expect(result.pendingAdjudication).toBe(false); + expect(result.projected).toBe(true); + const memories = await prisma.client.episodicMemory.findMany({ where: { characterId: { in: [CHAR_A, CHAR_B] } } }); + expect(memories.length).toBeGreaterThan(0); + }, 20000); + + it("有隔離中的台詞時,暫不投影;裁決完成後才接續投影", async () => { + await createWork(); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + await createCharacter(CHAR_C, "小丙"); + + // 三人在場、無明示標記、無任何指紋樣本可依附:turnTakingScore 恆為 0.5,score=0.5 < CONFIRM_THRESHOLD + // (0.55),必定隔離。 + const result = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第二章", + storyOrder: 2, + summary: "三人在場的一段對話。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A, CHAR_B, CHAR_C], + lines: [{ lineType: "DIALOGUE", rawText: "這句話是誰說的呢?" }], + }); + + expect(result.pendingAdjudication).toBe(true); + expect(result.projected).toBe(false); + const memoriesBefore = await prisma.client.episodicMemory.findMany({ + where: { characterId: { in: ALL_CHAR_IDS } }, + }); + expect(memoriesBefore).toHaveLength(0); + + const quarantinedLine = result.lines.find((l) => l.status === "QUARANTINED"); + expect(quarantinedLine).toBeTruthy(); + + // 使用者裁決:指定發言者,AttributionController 裁決完成後會呼叫 tryProjectScene()。 + await attribution.adjudicate(quarantinedLine!.id, CHAR_A); + const projected = await sceneImport.tryProjectScene(result.id); + expect(projected).toBe(true); + + const sceneAfter = await prisma.client.scene.findUniqueOrThrow({ where: { id: result.id } }); + expect(sceneAfter.projected).toBe(true); + const memoriesAfter = await prisma.client.episodicMemory.findMany({ + where: { characterId: { in: ALL_CHAR_IDS } }, + }); + expect(memoriesAfter.length).toBeGreaterThan(0); + }, 20000); + + it("有待人工確認的矛盾時,即使場景本身台詞皆已確認也暫不投影;解決矛盾後才接續投影", async () => { + await createWork(); + await createCharacter(CHAR_A, "小甲"); + + const scene1 = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一章", + storyOrder: 1, + summary: "小甲的生日。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "小甲的生日是五月。" }], + facts: [{ eventLabel: "小甲的生日", factKey: "月份", factValue: "五月" }], + }); + expect(scene1.pendingAdjudication).toBe(false); // 第一筆事實尚無衝突對象 + + // 第二個場景寫入矛盾的事實值(同 sourceType=NOVEL,來源優先序相同,不可自動裁決)。 + const scene2 = await sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第二章", + storyOrder: 3, // 落在錨定點內,若無矛盾應會投影 + summary: "小甲的生日(矛盾版本)。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "小甲的生日是十月。" }], + facts: [{ eventLabel: "小甲的生日", factKey: "月份", factValue: "十月" }], + }); + + expect(scene2.pendingAdjudication).toBe(true); + expect(scene2.projected).toBe(false); + // 矛盾是作品層級的,先前已投影的 scene1 不會被追溯撤銷。 + const scene1After = await prisma.client.scene.findUniqueOrThrow({ where: { id: scene1.id } }); + expect(scene1After.projected).toBe(true); + + const contradiction = await prisma.client.sceneContradiction.findFirstOrThrow({ + where: { workId: WORK_ID, status: "PENDING_HUMAN_REVIEW" }, + }); + await timeline.resolveContradiction(contradiction.id, "採用十月版本(人工確認)"); + const projectedCount = await sceneImport.tryProjectPendingScenesForWork(WORK_ID); + expect(projectedCount).toBe(1); + + const scene2After = await prisma.client.scene.findUniqueOrThrow({ where: { id: scene2.id } }); + expect(scene2After.projected).toBe(true); + }, 20000); + + it("階段一失敗(不存在的角色)時全回滾,Scene 本身不殘留", async () => { + await createWork(); + await createCharacter(CHAR_A, "小甲"); + + await expect( + sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "失敗章", + storyOrder: 5, + summary: "會失敗的匯入。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A, "test-t39-char-not-exist"], + lines: [{ lineType: "NARRATION", rawText: "這句不重要。" }], + }), + ).rejects.toThrow(); + + const scenesAfter = await prisma.client.scene.findMany({ where: { workId: WORK_ID, chapterLabel: "失敗章" } }); + expect(scenesAfter).toHaveLength(0); + }, 20000); +}); diff --git a/apps/api/src/canon/scene-import.service.ts b/apps/api/src/canon/scene-import.service.ts index d7498cf..336a029 100644 --- a/apps/api/src/canon/scene-import.service.ts +++ b/apps/api/src/canon/scene-import.service.ts @@ -4,6 +4,8 @@ import { PrismaService } from "../prisma/prisma.service.js"; import { AttributionService } from "./attribution.service.js"; import { ProjectionService } from "./projection.service.js"; import { WorkRosterService } from "./work-roster.service.js"; +import { TimelineService } from "./timeline.service.js"; +import { EndingDetectionService } from "./ending-detection.service.js"; export interface ImportLineInput { lineType: SceneLineType; @@ -42,6 +44,16 @@ export interface ImportSceneInput { // M-3 章節匯入與場景切分:以場景為單位寫入共用場景資料庫(角色中立的客觀記錄)。 // 場景本身的切分(章節文本 → 一個個場景)由呼叫端(人工或前置流程)完成後以結構化輸入送進來—— // 這裡不做自由文本的自動場景邊界偵測,理由同 F-7 MockProvider:對應的真實 NLP 能力屬於之後才會補的範疇。 +// +// T39 兩階段與裁決阻斷: +// 階段一(本方法內)=建立 Scene/SceneLine 等客觀記錄+跑發言歸屬(AttributionService)+矛盾偵測 +// (TimelineService)。階段一若拋錯,視為沒匯入過——把剛建立的 Scene 整棵刪掉(級聯刪除 lines/ +// facts/interactions/presences),不留半套資料。 +// 階段二(tryProjectScene()/tryProjectPendingScenesForWork())=投影+角色建置門檻檢查;只有這個 +// 場景「自己沒有隔離中的台詞」且「所屬作品沒有待人工確認的矛盾」才會執行,否則維持 +// `Scene.projected=false` 原地等待,不阻擋其他場景的匯入或投影。使用者透過既有端點 +// (adjudicate/correct/reattempt-quarantined/detect-contradictions)處理完裁決後, +// controller 會呼叫這兩個方法把符合條件的場景接續投影,呼叫端不需要另外手動觸發。 @Injectable() export class SceneImportService { constructor( @@ -49,6 +61,8 @@ export class SceneImportService { private readonly attribution: AttributionService, private readonly projection: ProjectionService, private readonly roster: WorkRosterService, + private readonly timeline: TimelineService, + private readonly endingDetection: EndingDetectionService, ) {} async importScene(input: ImportSceneInput) { @@ -64,54 +78,135 @@ export class SceneImportService { }, }); - for (const characterId of input.participantCharacterIds) { - await this.prisma.client.scenePresence.create({ data: { sceneId: scene.id, characterId } }); + try { + for (const characterId of input.participantCharacterIds) { + await this.prisma.client.scenePresence.create({ data: { sceneId: scene.id, characterId } }); + } + + for (const [lineIndex, line] of input.lines.entries()) { + await this.prisma.client.sceneLine.create({ + data: { + sceneId: scene.id, + lineIndex, + lineType: line.lineType, + rawText: line.rawText, + hasExplicitMarker: line.hasExplicitMarker ?? false, + markerCharacterId: line.markerCharacterId, + }, + }); + } + + for (const interaction of input.interactions ?? []) { + await this.prisma.client.sceneInteraction.create({ + data: { + sceneId: scene.id, + characterId: interaction.characterId, + otherCharacterId: interaction.otherCharacterId, + delta: interaction.delta, + description: interaction.description, + }, + }); + } + + for (const fact of input.facts ?? []) { + await this.prisma.client.sceneFact.create({ + data: { sceneId: scene.id, eventLabel: fact.eventLabel, factKey: fact.factKey, factValue: fact.factValue }, + }); + } + + await this.attribution.attributeScene(scene.id); + await this.timeline.detectContradictions(input.workId); + } catch (err) { + // 階段一失敗全回滾,視為沒匯入過——級聯刪除已建立的 Scene 及其所有子紀錄。 + await this.prisma.client.scene.delete({ where: { id: scene.id } }); + throw err; } - for (const [lineIndex, line] of input.lines.entries()) { - await this.prisma.client.sceneLine.create({ - data: { - sceneId: scene.id, - lineIndex, - lineType: line.lineType, - rawText: line.rawText, - hasExplicitMarker: line.hasExplicitMarker ?? false, - markerCharacterId: line.markerCharacterId, - }, + const pendingAdjudication = await this.isPendingAdjudication(scene.id, input.workId); + if (!pendingAdjudication) { + await this.tryProjectScene(scene.id); + } + + return this.getSceneDetail(scene.id); + } + + // 場景自身沒有隔離中的台詞、且所屬作品沒有待人工確認的矛盾,才算「裁決完成」可以往下走階段二。 + private async isPendingAdjudication(sceneId: string, workId: string): Promise { + const quarantinedCount = await this.prisma.client.sceneLine.count({ where: { sceneId, status: "QUARANTINED" } }); + if (quarantinedCount > 0) return true; + const pendingContradictions = await this.prisma.client.sceneContradiction.count({ + where: { workId, status: "PENDING_HUMAN_REVIEW" }, + }); + return pendingContradictions > 0; + } + + // 階段二:已裁決完成(不再有隔離台詞或待確認矛盾)才投影+檢查角色建置門檻;已投影過的場景直接 + // no-op(避免重複觸發)。回傳是否真的執行了投影,供呼叫端(例如結局偵測)判斷要不要接著跑。 + async tryProjectScene(sceneId: string): Promise { + const scene = await this.prisma.client.scene.findUniqueOrThrow({ + where: { id: sceneId }, + include: { participants: true }, + }); + if (scene.projected) return false; + if (await this.isPendingAdjudication(sceneId, scene.workId)) return false; + + // M-9 知識邊界:只有在錨定點之內的場景才投影;超前的場景先留在場景資料庫,等錨定點推進時再載入。 + let work = await this.prisma.client.work.findUniqueOrThrow({ where: { id: scene.workId } }); + + // T15:後日談期間的「日後談續匯入」(真實正史內容)不受知識邊界卡住——匯入代表使用者已經讀到 + // 這裡,直接把錨定點推進到覆蓋這批內容再投影;純粹只影響「這篇要不要投影」的判斷,不刪除任何 + // 既有 EPILOGUE 場景、也不寫入敘事化的記憶修正(與 canon-reclamation.service.ts 的 reclaim() 不同, + // reclaim() 是使用者主動選擇的覆寫手段,會找出並移除重疊的推演場景;這裡是預設路徑,兩者並存)。 + if (work.inEpilogue && scene.sourceType !== "EPILOGUE" && scene.storyOrder > work.anchorStoryOrder) { + work = await this.prisma.client.work.update({ + where: { id: work.id }, + data: { anchorStoryOrder: scene.storyOrder }, }); } - for (const interaction of input.interactions ?? []) { - await this.prisma.client.sceneInteraction.create({ - data: { - sceneId: scene.id, - characterId: interaction.characterId, - otherCharacterId: interaction.otherCharacterId, - delta: interaction.delta, - description: interaction.description, - }, - }); - } - - for (const fact of input.facts ?? []) { - await this.prisma.client.sceneFact.create({ - data: { sceneId: scene.id, eventLabel: fact.eventLabel, factKey: fact.factKey, factValue: fact.factValue }, - }); - } - - await this.attribution.attributeScene(scene.id); - - // M-9 知識邊界:只有在錨定點之內的場景才立刻投影;超前的場景先留在場景資料庫,等錨定點推進時再載入。 - // 建置門檻的「實質互動」次數只在投影後才算數(互動要先套用到關係帳本才算數),因此門檻檢查必須排在投影之後。 - const work = await this.prisma.client.work.findUniqueOrThrow({ where: { id: input.workId } }); + let didProject = false; if (scene.storyOrder <= work.anchorStoryOrder) { - await this.projection.projectScene(scene.id); + try { + await this.projection.projectScene(sceneId); + didProject = true; + } catch (err) { + // 階段二失敗回滾到「已裁決但未投影」可重跑:清掉這次可能已寫入一部分的投影結果, + // 不設 projected=true,下次呼叫 tryProjectScene() 會重新完整跑一次。 + await this.projection.clearProjectedData(sceneId); + throw err; + } } - for (const characterId of input.participantCharacterIds) { - await this.roster.checkAndPromote(characterId); + // 建置門檻的「實質互動」次數只在投影後才算數,因此門檻檢查排在投影之後;即使場景超前錨定點 + // 未投影,仍沿用既有行為讓在場角色照常檢查建置門檻(維持匯入時既有語意,不因本次改動而收緊)。 + for (const participant of scene.participants) { + await this.roster.checkAndPromote(participant.characterId); } - return this.prisma.client.scene.findUniqueOrThrow({ where: { id: scene.id }, include: { participants: true, lines: true } }); + // T13:於階段二投影完成後才加入結局偵測——場景超前錨定點而沒有真的投影時不偵測,因為錨定點本身 + // 就代表「還沒推進到這裡」,不該提前提示結局。 + if (didProject) { + await this.endingDetection.detectForScene(sceneId); + } + return didProject; + } + + // 矛盾裁決是整個作品層級的(SceneContradiction 沒有 sceneId),解決後可能同時解除多個場景的封鎖, + // 因此需要逐一嘗試整個作品裡尚未投影的場景,而不只是觸發裁決當下那一個。 + async tryProjectPendingScenesForWork(workId: string): Promise { + const pendingScenes = await this.prisma.client.scene.findMany({ where: { workId, projected: false } }); + let projected = 0; + for (const scene of pendingScenes) { + if (await this.tryProjectScene(scene.id)) projected += 1; + } + return projected; + } + + async getSceneDetail(sceneId: string) { + const scene = await this.prisma.client.scene.findUniqueOrThrow({ + where: { id: sceneId }, + include: { participants: true, lines: true }, + }); + return { ...scene, pendingAdjudication: await this.isPendingAdjudication(sceneId, scene.workId) }; } } diff --git a/apps/api/src/canon/timeline.service.ts b/apps/api/src/canon/timeline.service.ts index 8f9bef9..7cb4c61 100644 --- a/apps/api/src/canon/timeline.service.ts +++ b/apps/api/src/canon/timeline.service.ts @@ -64,4 +64,14 @@ export class TimelineService { async listContradictions(workId: string) { return this.prisma.client.sceneContradiction.findMany({ where: { workId } }); } + + // T39:detectContradictions() 只能自動裁決「來源優先序不同」的矛盾,剩下標記 PENDING_HUMAN_REVIEW + // 的矛盾原本沒有任何端點可以真的解決掉——這是本次補上的缺口,否則含這類矛盾的作品會永久卡住, + // 沒有任何路徑能讓後續場景繼續投影。 + async resolveContradiction(contradictionId: string, resolution: string): Promise { + await this.prisma.client.sceneContradiction.update({ + where: { id: contradictionId }, + data: { status: "RESOLVED", resolution }, + }); + } } diff --git a/apps/api/src/chat/chat.controller.ts b/apps/api/src/chat/chat.controller.ts deleted file mode 100644 index b97a2b4..0000000 --- a/apps/api/src/chat/chat.controller.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Body, Controller, Param, Post } from "@nestjs/common"; -import { DialogueService } from "../llm/dialogue.service.js"; -import { MemoryConsolidationService } from "../memory/memory-consolidation.service.js"; - -interface ChatMessageBody { - userId: string; - sessionId: string; - text: string; - seed?: number; - now?: string; // 測試用:模擬「現在」時間,供 I 群組作息相關行為驗證 -} - -interface EndSessionBody { - characterId: string; -} - -// H-1 對話 API:POST /chat/:characterId 走完整管線,POST /session/:sessionId/end 觸發睡眠固化。 -// 這是本清單第一個對外的正式使用者端點,先前 F 群組的 /dialogue/* 僅供工程內部驗證。 -@Controller() -export class ChatController { - constructor( - private readonly dialogue: DialogueService, - private readonly consolidation: MemoryConsolidationService, - ) {} - - @Post("chat/:characterId") - async chat(@Param("characterId") characterId: string, @Body() body: ChatMessageBody) { - return this.dialogue.handleMessage(characterId, body.userId, body.sessionId, body.text, { - seed: body.seed, - now: body.now ? new Date(body.now) : undefined, - }); - } - - @Post("session/:sessionId/end") - async endSession(@Param("sessionId") sessionId: string, @Body() body: EndSessionBody) { - await this.consolidation.consolidate(body.characterId, sessionId); - return { ok: true }; - } -} diff --git a/apps/api/src/chat/chat.module.ts b/apps/api/src/chat/chat.module.ts deleted file mode 100644 index 67e9798..0000000 --- a/apps/api/src/chat/chat.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from "@nestjs/common"; -import { LlmModule } from "../llm/llm.module.js"; -import { MemoryModule } from "../memory/memory.module.js"; -import { ChatController } from "./chat.controller.js"; - -@Module({ - imports: [LlmModule, MemoryModule], - controllers: [ChatController], -}) -export class ChatModule {} diff --git a/apps/api/src/clock/clock.module.ts b/apps/api/src/clock/clock.module.ts new file mode 100644 index 0000000..7f58d4d --- /dev/null +++ b/apps/api/src/clock/clock.module.ts @@ -0,0 +1,9 @@ +import { Module } from "@nestjs/common"; +import { CLOCK } from "./clock.js"; +import { SystemClockService } from "./system-clock.service.js"; + +@Module({ + providers: [SystemClockService, { provide: CLOCK, useExisting: SystemClockService }], + exports: [CLOCK, SystemClockService], +}) +export class ClockModule {} diff --git a/apps/api/src/clock/clock.ts b/apps/api/src/clock/clock.ts new file mode 100644 index 0000000..b7189e8 --- /dev/null +++ b/apps/api/src/clock/clock.ts @@ -0,0 +1,7 @@ +// T36:可注入時鐘介面。本計畫所有新程式一律從時鐘取時間、不直接 `new Date()`, +// 以便測試以 ControllableClock(見 controllable-clock.ts)快轉時間而不需真的等待。 +export interface Clock { + now(): Date; +} + +export const CLOCK = Symbol("CLOCK"); diff --git a/apps/api/src/clock/controllable-clock.test.ts b/apps/api/src/clock/controllable-clock.test.ts new file mode 100644 index 0000000..68ecaec --- /dev/null +++ b/apps/api/src/clock/controllable-clock.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from "vitest"; +import { ControllableClock } from "./controllable-clock.js"; + +describe("ControllableClock", () => { + it("回報設定時刻,不隨真實時間流動", () => { + const clock = new ControllableClock("2026-08-18T00:00:00.000Z"); + expect(clock.now().toISOString()).toBe("2026-08-18T00:00:00.000Z"); + expect(clock.now().toISOString()).toBe("2026-08-18T00:00:00.000Z"); + }); + + it("可快轉跨夜情境,秒級內完成", () => { + const clock = new ControllableClock("2026-08-18T23:50:00.000Z"); + clock.advance(20 * 60 * 1000); // 快轉 20 分鐘跨過午夜 + expect(clock.now().toISOString()).toBe("2026-08-19T00:10:00.000Z"); + }); + + it("set() 可直接指定新時刻", () => { + const clock = new ControllableClock(); + clock.set("2026-01-01T00:00:00.000Z"); + expect(clock.now().toISOString()).toBe("2026-01-01T00:00:00.000Z"); + }); +}); diff --git a/apps/api/src/clock/controllable-clock.ts b/apps/api/src/clock/controllable-clock.ts new file mode 100644 index 0000000..c5ab543 --- /dev/null +++ b/apps/api/src/clock/controllable-clock.ts @@ -0,0 +1,23 @@ +import type { Clock } from "./clock.js"; + +// T36 測試專用時鐘:可任意設定與快轉當前時間,讓「跨夜→角色去睡→房間關閉」這類情境 +// 在秒級內於測試中重現,不需真的等待。正式環境一律使用 SystemClockService。 +export class ControllableClock implements Clock { + private current: Date; + + constructor(initial: Date | string | number = new Date(0)) { + this.current = new Date(initial); + } + + now(): Date { + return this.current; + } + + set(date: Date | string | number): void { + this.current = new Date(date); + } + + advance(ms: number): void { + this.current = new Date(this.current.getTime() + ms); + } +} diff --git a/apps/api/src/clock/system-clock.service.ts b/apps/api/src/clock/system-clock.service.ts new file mode 100644 index 0000000..98a70d5 --- /dev/null +++ b/apps/api/src/clock/system-clock.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from "@nestjs/common"; +import type { Clock } from "./clock.js"; + +@Injectable() +export class SystemClockService implements Clock { + now(): Date { + return new Date(); + } +} diff --git a/apps/api/src/epilogue/canon-reclamation.service.ts b/apps/api/src/epilogue/canon-reclamation.service.ts index 23f669e..2c1be6a 100644 --- a/apps/api/src/epilogue/canon-reclamation.service.ts +++ b/apps/api/src/epilogue/canon-reclamation.service.ts @@ -39,12 +39,10 @@ export class CanonReclamationService { for (const presence of scene.participants) { affectedCharacterIds.add(presence.characterId); } - // 清掉這場推演事件投影出的所有角色資料——同 M-7 reprojectScene 的刪除邏輯,一樣只篩 - // sourceSceneId/sceneId,使用者互動記憶(source=INTERACTION)從不帶這些欄位,不會被動到。 - await this.prisma.client.episodicMemory.deleteMany({ where: { sourceSceneId: scene.id } }); - await this.prisma.client.semanticMemory.deleteMany({ where: { sourceSceneId: scene.id } }); - await this.prisma.client.personalityTraitSnapshot.deleteMany({ where: { sourceSceneId: scene.id } }); - await this.prisma.client.characterRelationshipEventLog.deleteMany({ where: { sceneId: scene.id } }); + // 清掉這場推演事件投影出的所有角色資料——與 ProjectionService.clearProjectedData() 共用同一份 + // 清除清單(T17/T25 上線時就漏了這裡沒同步更新,本次隨 T15 一併發現並修正),使用者互動記憶 + // (source=INTERACTION)從不帶這些欄位,不會被動到。 + await this.projection.clearProjectedData(scene.id); await this.prisma.client.sceneLine.deleteMany({ where: { sceneId: scene.id } }); await this.prisma.client.scenePresence.deleteMany({ where: { sceneId: scene.id } }); await this.prisma.client.scene.delete({ where: { id: scene.id } }); diff --git a/apps/api/src/epilogue/constants.ts b/apps/api/src/epilogue/constants.ts index 7b61451..5c70e40 100644 --- a/apps/api/src/epilogue/constants.ts +++ b/apps/api/src/epilogue/constants.ts @@ -11,3 +11,25 @@ export const MILESTONE_MIN_STORY_GAP = 5; export const MAX_EXPRESSIVENESS_DRIFT = 0.15; export const MAX_HALF_LIFE_REDUCTION = 0.3; // 情緒衰減最多加快 30% export const HALF_LIFE_REDUCTION_PER_STORY_UNIT = 0.01; + +// T34:`timeFlowMode` 唯一真正的消費者——大廳/房間對話、行程判定、睡眠機制完全不讀這個欄位, +// 一律走真實時間;這裡只換算「後日談推演進度」(anchorStoryOrder 這個既有時鐘,在日後談期間 +// 繼續往前走的速度),推演進度本身又是 N-2 性格漂移幅度與 N-4 里程碑低頻節流唯二依賴的量尺。 +// FROZEN 恆為 0(見 epilogue-progress.service.ts);其餘數值為每個現實日推進的 storyOrder 單位數, +// 僅為示意性量尺(storyOrder 本身就是不帶物理時間意義的整數序),非官方文件規定的精確值。 +// +// 刻意用「分子/幾個現實日」的整數比表示速率,而不是先算好一個 storyOrder-per-ms 的浮點常數: +// 後者在 epilogue-progress.service.ts 逐次相乘除時,會因為二進位浮點無法精確表示像 1/28800000 +// 這種分數而在多次 tick 後累積出偏差(實測會少算掉整數單位);用整數比讓每次換算都以「先乘、 +// 最後才除」的單一步驟完成,被除數與除數都是可精確表示的整數,不會有這種捨入誤差。 +export const MS_PER_DAY = 24 * 60 * 60 * 1000; +export interface EpilogueProgressRate { + numerator: number; // 每 `perRealDays` 個現實日推進的 storyOrder 單位數 + perRealDays: number; +} +export const EPILOGUE_STORY_ORDER_RATE: Record = { + FROZEN: { numerator: 0, perRealDays: 1 }, + SLOW: { numerator: 1, perRealDays: 3 }, + REALTIME: { numerator: 1, perRealDays: 1 }, + FAST: { numerator: 3, perRealDays: 1 }, +}; diff --git a/apps/api/src/epilogue/continued-canon-import.test.ts b/apps/api/src/epilogue/continued-canon-import.test.ts new file mode 100644 index 0000000..8f4073e --- /dev/null +++ b/apps/api/src/epilogue/continued-canon-import.test.ts @@ -0,0 +1,162 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; +import { FingerprintService } from "../canon/fingerprint.service.js"; +import { AttributionService } from "../canon/attribution.service.js"; +import { ProjectionService } from "../canon/projection.service.js"; +import { WorkRosterService } from "../canon/work-roster.service.js"; +import { TimelineService } from "../canon/timeline.service.js"; +import { EndingDetectionService } from "../canon/ending-detection.service.js"; +import { SceneImportService } from "../canon/scene-import.service.js"; +import { LifeEventService } from "./life-event.service.js"; + +// T15 驗收:後日談期間續匯入正史內容(L 路徑)——不受 M-9 知識邊界卡住,直接投影並推進錨定點; +// 不刪除既有 EPILOGUE 場景、不寫入敘事化的記憶修正(那是 canon-reclamation.service.ts 的 reclaim() +// 才做的事,屬使用者主動選擇的覆寫路徑,不是這裡的預設行為)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const fingerprint = new FingerprintService(prisma); +const attribution = new AttributionService(prisma, fingerprint); +const behaviorReinforcement = new BehaviorReinforcementService(prisma); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), behaviorReinforcement); +const roster = new WorkRosterService(prisma); +const timeline = new TimelineService(prisma); +const endingDetection = new EndingDetectionService(prisma, new MockProvider()); +const sceneImport = new SceneImportService(prisma, attribution, projection, roster, timeline, endingDetection); +const lifeEvent = new LifeEventService(prisma, projection); + +const WORK_ID = "test-t15-work"; +const CHAR_A = "test-t15-char-a"; + +afterEach(async () => { + await prisma.client.episodicMemory.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.epilogueMilestoneLog.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.scene.deleteMany({ where: { workId: WORK_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_A } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createWorkInEpilogue() { + await prisma.client.work.create({ + data: { id: WORK_ID, title: "T15 測試作品", anchorStoryOrder: 5, inEpilogue: true, epilogueStartStoryOrder: 5 }, + }); + await prisma.client.character.create({ + data: { + id: CHAR_A, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: "小甲" } }, + }, + }); +} + +describe("後日談期間續匯入正史內容(T15)", () => { + it("匯入超前錨定點的正史章節後直接投影,並把錨定點推進到覆蓋這批內容", async () => { + await createWorkInEpilogue(); + + const scene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 2, + chapterLabel: "第十章", + storyOrder: 10, + summary: "小甲在正史裡的新章節:她升職了。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "小甲升職了,很開心。" }], + }); + + expect(scene.projected).toBe(true); + const work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(10); + expect(work.inEpilogue).toBe(true); // 續匯入本身不改變是否處於後日談,只推進知識邊界 + + const memories = await prisma.client.episodicMemory.findMany({ + where: { characterId: CHAR_A, sourceSceneId: scene.id }, + }); + expect(memories.length).toBeGreaterThan(0); + expect(memories.every((m) => m.source !== "CORRECTION")).toBe(true); // 不是敘事化記憶修正 + }, 20000); + + it("既有已投影的 EPILOGUE 場景與其記憶完全不受續匯入影響", async () => { + await createWorkInEpilogue(); + + const epilogueScene = await lifeEvent.generateSharedEvent( + WORK_ID, + CHAR_A, + 6, + "小甲和朋友去了海邊玩。", + [], + new Date("2026-08-19T00:00:00.000Z"), + ); + const epilogueMemoriesBefore = await prisma.client.episodicMemory.findMany({ + where: { characterId: CHAR_A, sourceSceneId: epilogueScene.id }, + }); + expect(epilogueMemoriesBefore.length).toBeGreaterThan(0); + + await sceneImport.importScene({ + workId: WORK_ID, + volume: 2, + chapterLabel: "第十章", + storyOrder: 10, + summary: "小甲在正史裡的新章節:她升職了。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "小甲升職了,很開心。" }], + }); + + const epilogueSceneAfter = await prisma.client.scene.findUniqueOrThrow({ where: { id: epilogueScene.id } }); + expect(epilogueSceneAfter.projected).toBe(true); // 沒有被刪除、也沒有被 unproject + const epilogueMemoriesAfter = await prisma.client.episodicMemory.findMany({ + where: { characterId: CHAR_A, sourceSceneId: epilogueScene.id }, + }); + expect(epilogueMemoriesAfter).toHaveLength(epilogueMemoriesBefore.length); // 完全不受影響 + }, 20000); + + it("尚未進入後日談的作品,超前錨定點的正史場景仍維持既有行為(暫不投影,等錨定點推進)", async () => { + await prisma.client.work.create({ data: { id: WORK_ID, title: "T15 對照組", anchorStoryOrder: 5, inEpilogue: false } }); + await prisma.client.character.create({ + data: { + id: CHAR_A, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: "小甲" } }, + }, + }); + + const scene = await sceneImport.importScene({ + workId: WORK_ID, + volume: 2, + chapterLabel: "第十章", + storyOrder: 10, + summary: "尚未出版到這裡。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "這句還不該被角色知道。" }], + }); + + expect(scene.projected).toBe(false); + const work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(5); // 未進入後日談時不受 T15 影響,維持既有 M-9 知識邊界 + }, 20000); +}); diff --git a/apps/api/src/epilogue/epilogue-progress.service.test.ts b/apps/api/src/epilogue/epilogue-progress.service.test.ts new file mode 100644 index 0000000..4a8f564 --- /dev/null +++ b/apps/api/src/epilogue/epilogue-progress.service.test.ts @@ -0,0 +1,151 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; +import { ProjectionService } from "../canon/projection.service.js"; +import { LifeEventService } from "./life-event.service.js"; +import { EpilogueProgressService } from "./epilogue-progress.service.js"; + +// T34 驗收:`timeFlowMode` 唯一真正的作用是換算後日談「推演進度」(anchorStoryOrder 這個既有時鐘) +// 該推進多快——FAST 較快、SLOW 較慢、FROZEN 完全不推進;推演進度推進時順手嘗試自主成立里程碑 +// (不需使用者確認)。大廳/房間對話、行程、睡眠等真實時間流程完全不讀這個欄位,另見 +// `schedule/timeflow-realtime-boundary.test.ts`。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const behaviorReinforcement = new BehaviorReinforcementService(prisma); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), behaviorReinforcement); +const lifeEvent = new LifeEventService(prisma, projection); +const epilogueProgress = new EpilogueProgressService(prisma, lifeEvent); + +const WORK_ID = "test-t34-work"; +const CHAR_BAKER = "test-t34-char-baker"; // goalsObsessions 含「麵包店」,可對到既有里程碑模板 +const CHAR_PLAIN = "test-t34-char-plain"; // 沒有可對應的正史伏筆關鍵字 + +afterEach(async () => { + await prisma.client.epilogueMilestoneLog.deleteMany({ where: { characterId: { in: [CHAR_BAKER, CHAR_PLAIN] } } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_BAKER, CHAR_PLAIN] } } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createWork(timeFlowMode: string, inEpilogue = true) { + await prisma.client.work.create({ data: { id: WORK_ID, title: "T34 測試作品", inEpilogue, timeFlowMode, anchorStoryOrder: 0 } }); +} + +async function createCharacter(id: string, goalsObsessions: string) { + await prisma.client.character.create({ + data: { + id, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions, + speechStyle: "測試", + aliases: { create: { formalName: id } }, + }, + }); +} + +describe("後日談推演進度時鐘(T34)", () => { + it("尚未進入後日談的作品完全不推進,也不寫入時鐘 checkpoint", async () => { + await createWork("FAST", false); + await createCharacter(CHAR_PLAIN, "測試"); + + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date("2026-08-19T00:00:00.000Z")); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date("2026-09-19T00:00:00.000Z")); + + const work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(0); + expect(work.epilogueProgressCheckpointAt).toBeNull(); + }); + + it("FAST 模式下,跨多次不足一天的 tick 也不會遺失推演進度(餘量會保留累積)", async () => { + await createWork("FAST"); // 3 storyOrder/現實日 + await createCharacter(CHAR_PLAIN, "測試"); + const t0 = new Date("2026-08-19T00:00:00.000Z"); + + await epilogueProgress.advanceIfInEpilogue(WORK_ID, t0); // 初始化 checkpoint,不推進 + let work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(0); + + for (let hours = 4; hours <= 20; hours += 4) { + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date(t0.getTime() + hours * 60 * 60 * 1000)); + } + work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(2); // 每 8 小時累積跨過一個整數單位(3/day → 1 單位/8h) + + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date(t0.getTime() + 24 * 60 * 60 * 1000)); + work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(3); // 整整一個現實日過後,總量剛好是 3(沒有因為拆成多次 tick 而漏算) + }, 20000); + + it("SLOW 比 REALTIME 推進得慢、FAST 比 REALTIME 推進得快(同一段現實時間下比較)", async () => { + const oneWeekLater = new Date(new Date("2026-08-19T00:00:00.000Z").getTime() + 7 * 24 * 60 * 60 * 1000); + + await createWork("SLOW"); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date("2026-08-19T00:00:00.000Z")); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, oneWeekLater); + const slowAnchor = (await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } })).anchorStoryOrder; + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); + + await createWork("REALTIME"); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date("2026-08-19T00:00:00.000Z")); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, oneWeekLater); + const realtimeAnchor = (await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } })).anchorStoryOrder; + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); + + await createWork("FAST"); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date("2026-08-19T00:00:00.000Z")); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, oneWeekLater); + const fastAnchor = (await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } })).anchorStoryOrder; + + expect(slowAnchor).toBeLessThan(realtimeAnchor); + expect(realtimeAnchor).toBeLessThan(fastAnchor); + }); + + it("FROZEN 模式永遠不推進;解凍後只從解凍當下開始累積,不會把停滯期間全部補回來", async () => { + await createWork("FROZEN"); + await createCharacter(CHAR_PLAIN, "測試"); + const t0 = new Date("2026-08-19T00:00:00.000Z"); + const t0Plus50Days = new Date(t0.getTime() + 50 * 24 * 60 * 60 * 1000); + + await epilogueProgress.advanceIfInEpilogue(WORK_ID, t0); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, t0Plus50Days); // 凍結期間即使經過 50 天仍不推進 + let work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(0); + + await prisma.client.work.update({ where: { id: WORK_ID }, data: { timeFlowMode: "REALTIME" } }); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date(t0Plus50Days.getTime() + 24 * 60 * 60 * 1000)); + work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(1); // 只計入解凍後的 1 天,不是凍結前後合計的 51 天 + }); + + it("推進時嘗試自主成立里程碑:有對應正史伏筆的角色會成立、沒有的角色不會、且不需使用者確認", async () => { + await createWork("FAST"); + await createCharacter(CHAR_BAKER, "她一直想開一間屬於自己的麵包店。"); + await createCharacter(CHAR_PLAIN, "測試"); + + const t0 = new Date("2026-08-19T00:00:00.000Z"); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, t0); + await epilogueProgress.advanceIfInEpilogue(WORK_ID, new Date(t0.getTime() + 24 * 60 * 60 * 1000)); // +3 storyOrder + + const bakerMilestones = await prisma.client.epilogueMilestoneLog.findMany({ where: { characterId: CHAR_BAKER } }); + expect(bakerMilestones).toHaveLength(1); + expect(bakerMilestones[0].label).toBe("籌備麵包店"); + + const plainMilestones = await prisma.client.epilogueMilestoneLog.findMany({ where: { characterId: CHAR_PLAIN } }); + expect(plainMilestones).toHaveLength(0); + + // 讀取端點沿用的方法:作品層級可以查到剛剛自主成立的里程碑。 + const forWork = await lifeEvent.listMilestonesForWork(WORK_ID); + expect(forWork.map((m) => m.characterId)).toContain(CHAR_BAKER); + }, 20000); +}); diff --git a/apps/api/src/epilogue/epilogue-progress.service.ts b/apps/api/src/epilogue/epilogue-progress.service.ts new file mode 100644 index 0000000..42847c0 --- /dev/null +++ b/apps/api/src/epilogue/epilogue-progress.service.ts @@ -0,0 +1,60 @@ +import { Injectable } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { LifeEventService } from "./life-event.service.js"; +import { EPILOGUE_STORY_ORDER_RATE, MS_PER_DAY, type TimeFlowMode } from "./constants.js"; + +// T34:後日談期間的推演進度時鐘——只在 `work.inEpilogue===true` 時才推進,把「現實流逝了多久」換算成 +// `anchorStoryOrder` 該往前走多少個單位(FROZEN 恆為 0)。刻意只做「推進時鐘+提議里程碑」,不呼叫 +// AnchorService.setAnchor()/ProjectionService:那條路徑會無條件重新投影任何 `projected=false` 的場景, +// 若剛好有場景還卡在 T39 裁決中,會被這裡的自動推進意外強行投影,破壞裁決阻斷;真正的場景投影 +// 一律只透過既有的 SceneImportService/裁決端點觸發,這裡只是純粹的時間換算。 +@Injectable() +export class EpilogueProgressService { + constructor( + private readonly prisma: PrismaService, + private readonly lifeEvent: LifeEventService, + ) {} + + async advanceIfInEpilogue(workId: string, now: Date): Promise { + const work = await this.prisma.client.work.findUniqueOrThrow({ where: { id: workId } }); + if (!work.inEpilogue) return; + + // 第一次呼叫(時鐘還沒有起點):只建立起點,不倒推之前「沒被 tick 到」的時間,避免一啟用 + // 就把角色創建到現在為止的整段空窗期全部當成已經推演過。 + if (work.epilogueProgressCheckpointAt === null) { + await this.prisma.client.work.update({ where: { id: workId }, data: { epilogueProgressCheckpointAt: now } }); + return; + } + const checkpoint = work.epilogueProgressCheckpointAt; + + const mode = work.timeFlowMode as TimeFlowMode; + const rate = EPILOGUE_STORY_ORDER_RATE[mode] ?? EPILOGUE_STORY_ORDER_RATE.FROZEN; + + if (rate.numerator <= 0) { + // FROZEN(或未知模式,同視為凍結):不推進,但把時鐘追到現在,避免解凍後把停滯期間全部補回來。 + await this.prisma.client.work.update({ where: { id: workId }, data: { epilogueProgressCheckpointAt: now } }); + return; + } + + // 先乘、最後才除(見 constants.ts 的說明):分子分母都是整數,被除數在合理的現實時間跨度內 + // 仍落在 Number 可精確表示的整數範圍,避免預先算好的浮點速率常數在多次 tick 後累積捨入誤差。 + const elapsedMs = now.getTime() - checkpoint.getTime(); + const denominator = MS_PER_DAY * rate.perRealDays; + const delta = Math.floor((elapsedMs * rate.numerator) / denominator); + if (delta <= 0) return; // 累積量還不到一個 storyOrder 單位,時鐘先不動,留給下次繼續累積。 + + const consumedMs = (delta * denominator) / rate.numerator; + const newAnchorStoryOrder = work.anchorStoryOrder + delta; + await this.prisma.client.work.update({ + where: { id: workId }, + data: { anchorStoryOrder: newAnchorStoryOrder, epilogueProgressCheckpointAt: new Date(checkpoint.getTime() + consumedMs) }, + }); + + // N-4 里程碑:低頻節流與正史伏筆比對交給既有的 proposeMilestone() 自己判斷,這裡對在場的每位 + // 角色都嘗試提議一次即可(沒有模板可對應或還沒到節流間隔時,proposeMilestone() 本身回傳 null)。 + const characters = await this.prisma.client.character.findMany({ where: { workId } }); + for (const character of characters) { + await this.lifeEvent.proposeMilestone(character.id, newAnchorStoryOrder, [], now); + } + } +} diff --git a/apps/api/src/epilogue/epilogue.controller.ts b/apps/api/src/epilogue/epilogue.controller.ts index bddc799..10d28a6 100644 --- a/apps/api/src/epilogue/epilogue.controller.ts +++ b/apps/api/src/epilogue/epilogue.controller.ts @@ -20,6 +20,17 @@ export class EpilogueController { return this.timeFlow.checkEpilogueTransition(workId); } + // T14:使用者確認/拒絕 T13 寫入的結局偵測結果——尚未進入日後談的作品,這是唯一合法的切換入口。 + @Post("ending-detections/:logId/confirm") + async confirmEndingDetection(@Param("logId") logId: string, @Body() body: { now?: string }) { + return this.timeFlow.confirmEndingDetection(logId, body.now ? new Date(body.now) : undefined); + } + + @Post("ending-detections/:logId/reject") + async rejectEndingDetection(@Param("logId") logId: string, @Body() body: { now?: string }) { + return this.timeFlow.rejectEndingDetection(logId, body.now ? new Date(body.now) : undefined); + } + @Post("works/:workId/time-flow") async setTimeFlow(@Param("workId") workId: string, @Body() body: { mode: TimeFlowMode }) { return this.timeFlow.setTimeFlow(workId, body.mode); @@ -43,6 +54,11 @@ export class EpilogueController { ); } + @Get("works/:workId/milestones") + async listMilestones(@Param("workId") workId: string) { + return this.lifeEvent.listMilestonesForWork(workId); + } + @Post("works/:workId/reclaim") async reclaim(@Param("workId") workId: string, @Body() body: { newCanonScenes: ImportSceneInput[] }) { return this.reclamation.reclaim(workId, body.newCanonScenes); diff --git a/apps/api/src/epilogue/epilogue.module.ts b/apps/api/src/epilogue/epilogue.module.ts index 11ece4c..b00fbad 100644 --- a/apps/api/src/epilogue/epilogue.module.ts +++ b/apps/api/src/epilogue/epilogue.module.ts @@ -6,12 +6,13 @@ import { TimeFlowService } from "./time-flow.service.js"; import { PersonalityDriftService } from "./personality-drift.service.js"; import { LifeEventService } from "./life-event.service.js"; import { CanonReclamationService } from "./canon-reclamation.service.js"; +import { EpilogueProgressService } from "./epilogue-progress.service.js"; import { EpilogueController } from "./epilogue.controller.js"; @Module({ imports: [PrismaModule, RomanceModule, CanonModule], controllers: [EpilogueController], - providers: [TimeFlowService, PersonalityDriftService, LifeEventService, CanonReclamationService], - exports: [TimeFlowService, PersonalityDriftService, LifeEventService, CanonReclamationService], + providers: [TimeFlowService, PersonalityDriftService, LifeEventService, CanonReclamationService, EpilogueProgressService], + exports: [TimeFlowService, PersonalityDriftService, LifeEventService, CanonReclamationService, EpilogueProgressService], }) export class EpilogueModule {} diff --git a/apps/api/src/epilogue/life-event.service.ts b/apps/api/src/epilogue/life-event.service.ts index 663fa67..149f791 100644 --- a/apps/api/src/epilogue/life-event.service.ts +++ b/apps/api/src/epilogue/life-event.service.ts @@ -110,4 +110,13 @@ export class LifeEventService { await this.projection.projectScene(scene.id); return this.prisma.client.scene.findUniqueOrThrow({ where: { id: scene.id } }); } + + // T34:作品頁/大廳呈現這個作品旗下角色自主成立過的所有里程碑,依 storyOrder 排序方便對照時序。 + async listMilestonesForWork(workId: string) { + const characters = await this.prisma.client.character.findMany({ where: { workId }, select: { id: true } }); + return this.prisma.client.epilogueMilestoneLog.findMany({ + where: { characterId: { in: characters.map((c) => c.id) } }, + orderBy: { storyOrder: "asc" }, + }); + } } diff --git a/apps/api/src/epilogue/time-flow.service.test.ts b/apps/api/src/epilogue/time-flow.service.test.ts new file mode 100644 index 0000000..0c56ad0 --- /dev/null +++ b/apps/api/src/epilogue/time-flow.service.test.ts @@ -0,0 +1,115 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { FingerprintService } from "../canon/fingerprint.service.js"; +import { AttributionService } from "../canon/attribution.service.js"; +import { ProjectionService } from "../canon/projection.service.js"; +import { WorkRosterService } from "../canon/work-roster.service.js"; +import { TimelineService } from "../canon/timeline.service.js"; +import { EndingDetectionService } from "../canon/ending-detection.service.js"; +import { SceneImportService } from "../canon/scene-import.service.js"; +import { TimeFlowService } from "./time-flow.service.js"; + +// T14 驗收:確認後 Work.inEpilogue 為 true、epilogueStartStoryOrder 正確;拒絕後作品維持原狀, +// 同一場景不再重複提示;已處理過的偵測結果不可重複確認或拒絕。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const fingerprint = new FingerprintService(prisma); +const attribution = new AttributionService(prisma, fingerprint); +const behaviorReinforcement = new BehaviorReinforcementService(prisma); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), behaviorReinforcement); +const roster = new WorkRosterService(prisma); +const timeline = new TimelineService(prisma); +const endingDetection = new EndingDetectionService(prisma, new MockProvider()); +const sceneImport = new SceneImportService(prisma, attribution, projection, roster, timeline, endingDetection); +const eligibility = new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma)); +const timeFlow = new TimeFlowService(prisma, eligibility); + +const WORK_ID = "test-t14-work"; +const CHAR_A = "test-t14-char-a"; + +afterEach(async () => { + await prisma.client.endingDetectionLog.deleteMany({ where: { scene: { workId: WORK_ID } } }); + await prisma.client.scene.deleteMany({ where: { workId: WORK_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_A } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function importEndingScene(anchorStoryOrder: number, storyOrder: number) { + await prisma.client.work.create({ data: { id: WORK_ID, title: "T14 測試作品", anchorStoryOrder } }); + await prisma.client.character.create({ + data: { + id: CHAR_A, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: "小甲" } }, + }, + }); + return sceneImport.importScene({ + workId: WORK_ID, + volume: 1, + chapterLabel: "第一話", + storyOrder, + summary: "故事在此完結,全劇終。", + rawText: "(測試文本)", + participantCharacterIds: [CHAR_A], + lines: [{ lineType: "NARRATION", rawText: "全劇終。" }], + }); +} + +describe("TimeFlowService 結局確認與拒絕(T14)", () => { + it("確認後 Work.inEpilogue 為 true、epilogueStartStoryOrder 正確,且該筆紀錄改為 CONFIRMED", async () => { + await importEndingScene(50, 1); + const log = await prisma.client.endingDetectionLog.findFirstOrThrow({ where: { scene: { workId: WORK_ID } } }); + + const work = await timeFlow.confirmEndingDetection(log.id); + expect(work.inEpilogue).toBe(true); + expect(work.epilogueStartStoryOrder).toBe(50); + + const logAfter = await prisma.client.endingDetectionLog.findUniqueOrThrow({ where: { id: log.id } }); + expect(logAfter.resolution).toBe("CONFIRMED"); + expect(logAfter.respondedAt).toBeTruthy(); + }, 20000); + + it("拒絕後作品維持原狀,且同一場景不再重複提示", async () => { + const scene = await importEndingScene(50, 1); + const log = await prisma.client.endingDetectionLog.findFirstOrThrow({ where: { scene: { workId: WORK_ID } } }); + + await timeFlow.rejectEndingDetection(log.id); + const work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.inEpilogue).toBe(false); + + const logAfter = await prisma.client.endingDetectionLog.findUniqueOrThrow({ where: { id: log.id } }); + expect(logAfter.resolution).toBe("REJECTED"); + + // 對同一場景重新嘗試偵測(模擬未來可能的重複觸發路徑),不應再寫入新的一筆。 + await endingDetection.detectForScene(scene.id); + const logs = await prisma.client.endingDetectionLog.findMany({ where: { sceneId: scene.id } }); + expect(logs).toHaveLength(1); + }, 20000); + + it("已處理過的偵測結果不可重複確認或拒絕", async () => { + await importEndingScene(50, 1); + const log = await prisma.client.endingDetectionLog.findFirstOrThrow({ where: { scene: { workId: WORK_ID } } }); + await timeFlow.confirmEndingDetection(log.id); + + await expect(timeFlow.confirmEndingDetection(log.id)).rejects.toThrow(); + await expect(timeFlow.rejectEndingDetection(log.id)).rejects.toThrow(); + }, 20000); +}); diff --git a/apps/api/src/epilogue/time-flow.service.ts b/apps/api/src/epilogue/time-flow.service.ts index 731bef0..21d43d2 100644 --- a/apps/api/src/epilogue/time-flow.service.ts +++ b/apps/api/src/epilogue/time-flow.service.ts @@ -13,6 +13,11 @@ export class TimeFlowService { ) {} // 錨定點推進後呼叫:若已達到(或超過)已出版內容的盡頭,切入後日談區間。 + // T14:本方法保留給 T15(日後談續匯入)既有呼叫端(canon-reclamation.service.ts)沿用——那裡處理 + // 的是「已經在日後談中的作品」續匯入正史內容,`work.inEpilogue` 早已為 true 時本方法直接 no-op 回傳, + // 不構成新的未經確認自動切換路徑。**尚未進入日後談的作品,唯一合法的切換入口是下方 + // `confirmEndingDetection()`**(使用者確認結局偵測結果後才切);本方法不應再被當成「偵測到疑似結局 + // 就自動切換」的路徑使用,第 4 輪「偵測到結局先問使用者再切」的決定以 confirmEndingDetection() 落實。 async checkEpilogueTransition(workId: string) { const work = await this.prisma.client.work.findUniqueOrThrow({ where: { id: workId } }); if (work.inEpilogue) { @@ -24,14 +29,49 @@ export class TimeFlowService { }); const maxCanonStoryOrder = canonMax._max.storyOrder ?? 0; if (maxCanonStoryOrder > 0 && work.anchorStoryOrder >= maxCanonStoryOrder) { - return this.prisma.client.work.update({ - where: { id: work.id }, - data: { inEpilogue: true, epilogueStartStoryOrder: work.anchorStoryOrder }, - }); + return this.switchToEpilogue(work.id, work.anchorStoryOrder); } return work; } + private async switchToEpilogue(workId: string, epilogueStartStoryOrder: number) { + return this.prisma.client.work.update({ + where: { id: workId }, + data: { inEpilogue: true, epilogueStartStoryOrder }, + }); + } + + // T14:使用者確認 EndingDetectionLog 的偵測結果——這是「尚未進入日後談的作品」唯一合法的切換入口。 + async confirmEndingDetection(logId: string, now: Date = new Date()) { + const log = await this.prisma.client.endingDetectionLog.findUniqueOrThrow({ + where: { id: logId }, + include: { scene: true }, + }); + if (log.resolution !== "PENDING") { + throw new BadRequestException(`此偵測結果已處理過(目前狀態:${log.resolution}),不可重複確認或拒絕`); + } + const work = await this.prisma.client.work.findUniqueOrThrow({ where: { id: log.scene.workId } }); + await this.switchToEpilogue(work.id, work.anchorStoryOrder); + await this.prisma.client.endingDetectionLog.update({ + where: { id: logId }, + data: { resolution: "CONFIRMED", respondedAt: now }, + }); + return this.prisma.client.work.findUniqueOrThrow({ where: { id: work.id } }); + } + + // T14:拒絕——作品維持原狀;同一 sceneId 不再重複提示(EndingDetectionService.detectForScene() + // 一律以「這個場景是否已有任意一筆紀錄」判斷要不要再寫新紀錄,不看 resolution,故拒絕後天然不重問)。 + async rejectEndingDetection(logId: string, now: Date = new Date()) { + const log = await this.prisma.client.endingDetectionLog.findUniqueOrThrow({ where: { id: logId } }); + if (log.resolution !== "PENDING") { + throw new BadRequestException(`此偵測結果已處理過(目前狀態:${log.resolution}),不可重複確認或拒絕`); + } + return this.prisma.client.endingDetectionLog.update({ + where: { id: logId }, + data: { resolution: "REJECTED", respondedAt: now }, + }); + } + async setTimeFlow(workId: string, mode: TimeFlowMode) { if (mode === "FAST") { const characters = await this.prisma.client.character.findMany({ where: { workId } }); diff --git a/apps/api/src/llm/behavior-reinforcement.service.ts b/apps/api/src/llm/behavior-reinforcement.service.ts index 271a61c..f190f26 100644 --- a/apps/api/src/llm/behavior-reinforcement.service.ts +++ b/apps/api/src/llm/behavior-reinforcement.service.ts @@ -62,6 +62,27 @@ export class BehaviorReinforcementService { } } + // T25:章節匯入時從場景(ACTION 描寫)抽出的行為模式——首見新增規則、已有相同 (situation, + // responsePattern) 則強化既有權重,一律記錄最近一次觸發的來源場景(供追溯與重投影清除, + // 已知簡化見 schema.prisma 的 sourceSceneId 欄位註解:只記錄最近一次,不是完整貢獻清單)。 + async recordFromScene(characterId: string, situation: string, responsePattern: string, sceneId: string): Promise { + const existing = await this.prisma.client.proceduralRule.findFirst({ + where: { characterId, situation, responsePattern }, + }); + + if (existing) { + await this.prisma.client.proceduralRule.update({ + where: { id: existing.id }, + data: { weight: existing.weight + REINFORCE_INCREMENT, sourceSceneId: sceneId }, + }); + return; + } + + await this.prisma.client.proceduralRule.create({ + data: { characterId, situation, responsePattern, weight: 1, sourceSceneId: sceneId }, + }); + } + async getTopRule(characterId: string, situation: string) { return this.prisma.client.proceduralRule.findFirst({ where: { characterId, situation }, diff --git a/apps/api/src/llm/claude-provider.service.ts b/apps/api/src/llm/claude-provider.service.ts index 26f0515..8a06b49 100644 --- a/apps/api/src/llm/claude-provider.service.ts +++ b/apps/api/src/llm/claude-provider.service.ts @@ -1,5 +1,5 @@ import { Injectable } from "@nestjs/common"; -import type { LLMProvider } from "./llm-provider.js"; +import type { CharacterCallCandidate, EndingDetectionResult, LLMProvider } from "./llm-provider.js"; import type { GenerationContext, GeneratedResponse } from "./types.js"; import { buildMessages } from "./prompt-builder.js"; import { extractActions } from "./action-markup.js"; @@ -8,8 +8,13 @@ interface OpenAiCompatibleChoice { message?: { content?: string }; delta?: { content?: string }; } +interface OpenAiCompatibleUsage { + prompt_tokens?: number; + completion_tokens?: number; +} interface OpenAiCompatibleResponse { choices?: OpenAiCompatibleChoice[]; + usage?: OpenAiCompatibleUsage; } function baseUrl(): string { @@ -61,7 +66,12 @@ export class ClaudeProvider implements LLMProvider { if (!text) { throw new Error("ClaudeProvider 回應內容為空(choices[0].message.content 缺失)"); } - return { text, actions: extractActions(text) }; + // T9:真實 API 回應的 usage 未提供時(部分相容端點不回傳)以 0 記錄,不因此中斷生成。 + return { + text, + actions: extractActions(text), + usage: { model: model(), promptTokens: json.usage?.prompt_tokens ?? 0, completionTokens: json.usage?.completion_tokens ?? 0 }, + }; } async *stream(context: GenerationContext): AsyncIterable { @@ -98,4 +108,37 @@ export class ClaudeProvider implements LLMProvider { } } } + + // T5:LLM 兼底判斷指稱哪個角色;提示詞要求只能回傳候選 id 或 NONE,避免自行編造不存在的角色。 + async identifyCharacter(utterance: string, candidates: CharacterCallCandidate[]): Promise { + const candidateList = candidates.map((c) => `- ${c.id}:${c.label}(${c.keywords})`).join("\n"); + const prompt = `使用者說了一句話,請判斷這句話是在呼喚下面候選名單中的哪一位。只能回傳候選名單裡的 id,不可以自行編造不存在的 id;如果判斷不出來或這句話沒有在呼喚任何人,就回傳 NONE。只回傳 id 或 NONE,不要有其他文字。\n\n候選名單:\n${candidateList}\n\n使用者的話:「${utterance}」`; + const res = await requestChatCompletion({ + model: model(), + messages: [{ role: "user", content: prompt }], + stream: false, + }); + const json = (await res.json()) as OpenAiCompatibleResponse; + const answer = json.choices?.[0]?.message?.content?.trim() ?? ""; + return candidates.some((c) => c.id === answer) ? answer : null; + } + + // T13:每章投影完成後都呼叫,判斷這個場景是否為整部作品的最終結局;提示詞刻意不帶章節標題, + // 只給場景摘要與原文本身,避免標題關鍵字(例如「最終回」)預先左右判斷。 + async detectEnding(sceneSummary: string, sceneRawText: string, workTitle: string): Promise { + const prompt = `你是故事編輯,請只依下面的場景內容本身判斷:這段場景是否為作品「${workTitle}」整部作品的最終結局(整部作品在此完全收尾,不是單一篇章、單元劇或某個角色支線的結尾)。不要用章節標題或任何標題訊號預先假設,只看場景實際描寫的內容。\n\n場景摘要:${sceneSummary}\n\n場景原文:${sceneRawText}\n\n請用以下格式回答,不要有其他文字:\nANSWER: YES 或 NO\nEVIDENCE: 一到兩句話說明你的判斷依據`; + const res = await requestChatCompletion({ + model: model(), + messages: [{ role: "user", content: prompt }], + stream: false, + }); + const json = (await res.json()) as OpenAiCompatibleResponse; + const text = json.choices?.[0]?.message?.content?.trim() ?? ""; + const answerMatch = text.match(/ANSWER:\s*(YES|NO)/i); + const evidenceMatch = text.match(/EVIDENCE:\s*([\s\S]+)/i); + return { + isEnding: (answerMatch?.[1] ?? "").toUpperCase() === "YES", + evidence: evidenceMatch?.[1]?.trim() || text || "(LLM 未回傳可解析的判斷依據)", + }; + } } diff --git a/apps/api/src/llm/dialogue.controller.ts b/apps/api/src/llm/dialogue.controller.ts index 6cc4708..f705806 100644 --- a/apps/api/src/llm/dialogue.controller.ts +++ b/apps/api/src/llm/dialogue.controller.ts @@ -1,6 +1,9 @@ -import { Body, Controller, Get, Param, Post, Query } from "@nestjs/common"; +import { BadRequestException, Body, Controller, Get, Inject, Param, Post, Query } from "@nestjs/common"; import { DialogueService } from "./dialogue.service.js"; import { BehaviorReinforcementService } from "./behavior-reinforcement.service.js"; +import { LLM_PROVIDER, type LLMProvider } from "./llm-provider.js"; +import { MockProvider } from "./mock-provider.service.js"; +import { GlobalPauseService } from "./global-pause.service.js"; interface SendMessageBody { userId: string; @@ -25,8 +28,39 @@ export class DialogueController { constructor( private readonly dialogue: DialogueService, private readonly reinforcement: BehaviorReinforcementService, + @Inject(LLM_PROVIDER) private readonly provider: LLMProvider, + private readonly globalPause: GlobalPauseService, ) {} + // T21-P3 端到端驗證用途:讓 smoke test 能觸發真正的連續失敗達到 T30 的全域靜默暫停門檻, + // 僅在 LLM_PROVIDER=mock 時可用(MockProvider 才有可佇列的失敗)。 + @Post("test/force-llm-failure") + async forceLlmFailure(@Body() body: { count?: number }) { + if (!(this.provider instanceof MockProvider)) { + throw new BadRequestException("僅 LLM_PROVIDER=mock 時可用"); + } + for (let i = 0; i < (body.count ?? 1); i++) { + this.provider.enqueueFailure(new Error("smoke-test forced failure")); + } + return { ok: true }; + } + + @Get("test/global-pause-state") + getGlobalPauseState() { + return { paused: this.globalPause.isPaused() }; + } + + // T21-P3:驗證「恢復」需要一次保證成功的呼叫——先清空可能還沒被消耗完的佇列失敗, + // 確保下一次真的呼叫 LLM 的行為會成功,而不是被前面過量佇列的失敗繼續蓋過去。 + @Post("test/reset-llm-queue") + resetLlmQueue() { + if (!(this.provider instanceof MockProvider)) { + throw new BadRequestException("僅 LLM_PROVIDER=mock 時可用"); + } + this.provider.resetQueue(); + return { ok: true }; + } + @Post(":characterId/sessions/:sessionId/messages") async sendMessage( @Param("characterId") characterId: string, diff --git a/apps/api/src/llm/dialogue.service.ts b/apps/api/src/llm/dialogue.service.ts index 418160f..8544858 100644 --- a/apps/api/src/llm/dialogue.service.ts +++ b/apps/api/src/llm/dialogue.service.ts @@ -9,12 +9,14 @@ import { ScheduleEmotionBaselineService } from "../schedule/schedule-emotion-bas import { OfflineEventService } from "../schedule/offline-event.service.js"; import { availabilityForStatus, type AvailabilityMode, type ExceptionType } from "../schedule/constants.js"; import { LLM_PROVIDER, type LLMProvider } from "./llm-provider.js"; +import { GlobalPauseService } from "./global-pause.service.js"; +import { generateWithResilience } from "./generate-with-resilience.js"; import { ContextAssemblerService } from "./context-assembler.service.js"; import { OutputFilterService } from "./output-filter.service.js"; import { FastChannelDetector, DEFAULT_FAST_REPLIES } from "./fast-channel.service.js"; import { extractActions } from "./action-markup.js"; import { getForbiddenWords, applySpeechQuirks } from "../personality/language-style.js"; -import type { GenerationContext } from "./types.js"; +import type { GenerationContext, GenerationUsage } from "./types.js"; export interface HandleMessageOptions { seed?: number; @@ -28,6 +30,7 @@ export interface HandleMessageResult { availability: AvailabilityMode; exceptionType: ExceptionType | null; context: GenerationContext | null; + usage?: GenerationUsage; // T9:僅真的呼叫 Provider 生成時才有值(雙速通道/作息延遲不消耗 LLM) } function fastChannelSituation(reason: string): string { @@ -53,6 +56,7 @@ export class DialogueService { private readonly scheduleBaseline: ScheduleEmotionBaselineService, private readonly offlineEvent: OfflineEventService, private readonly prisma: PrismaService, + private readonly globalPause: GlobalPauseService, ) {} async handleMessage( @@ -111,6 +115,7 @@ export class DialogueService { let text: string; let actions: string[]; + let usage: GenerationUsage | undefined; if (effectiveAvailability === "DELAYED" && !exceptionType) { text = DELAYED_ACKNOWLEDGEMENT; @@ -123,16 +128,27 @@ export class DialogueService { text = rule?.responsePattern ?? DEFAULT_FAST_REPLIES[reason]; actions = extractActions(text); } else { - const generated = await this.llmProvider.generate(context); - text = generated.text; - actions = generated.actions; + // T30:全域靜默暫停或重試全部失敗時回傳 null——比照既有 NO_REPLY 的「這輪沒有真的回覆」語意, + // 回傳空字串,呼叫端(SoloChatService.sendMessage)已經是「text 有內容才寫入 RoomTurn」, + // 不需要另外判斷;使用者本人的發話在呼叫端已於此之前寫入,不受影響。 + const generated = await generateWithResilience(this.llmProvider, context, this.globalPause); + text = generated?.text ?? ""; + actions = generated?.actions ?? []; + usage = generated?.usage; } - // I-2 剛醒/睡前:以拖長語尾的簡單標記呈現迷糊演出(完整口吻交由模板庫日後擴充)。 - if (scheduleInfo.isWaking || scheduleInfo.isPreSleep) { + // I-2 剛醒/睡前:以拖長語尾的簡單標記呈現迷糊演出(完整口吻交由模板庫日後擴充);暫停中沒有 + // 真的回覆(text 為空)時不套用,避免把「……」誤當成一則真的有內容的回覆。 + if (text && (scheduleInfo.isWaking || scheduleInfo.isPreSleep)) { text = `……${text}`; } + // T30:暫停中沒有真的回覆(text 為空)時,比照既有 NO_REPLY 語意略過輸出過濾與工作記憶寫入, + // 不留下一則空白的角色訊息。 + if (!text) { + return { text: "", actions, isFastChannel, availability: effectiveAvailability, exceptionType, context, usage }; + } + const forbiddenWords = getForbiddenWords(context.character.personalityArchetype); const filteredText = applySpeechQuirks( this.outputFilter.filter(text, forbiddenWords), @@ -140,6 +156,6 @@ export class DialogueService { ); await this.workingMemory.append(sessionId, { role: "character", content: filteredText, timestamp: now }); - return { text: filteredText, actions, isFastChannel, availability: effectiveAvailability, exceptionType, context }; + return { text: filteredText, actions, isFastChannel, availability: effectiveAvailability, exceptionType, context, usage }; } } diff --git a/apps/api/src/llm/generate-with-resilience.test.ts b/apps/api/src/llm/generate-with-resilience.test.ts new file mode 100644 index 0000000..c89426e --- /dev/null +++ b/apps/api/src/llm/generate-with-resilience.test.ts @@ -0,0 +1,70 @@ +import { describe, expect, it } from "vitest"; +import { MockProvider } from "./mock-provider.service.js"; +import { GlobalPauseService } from "./global-pause.service.js"; +import { generateWithResilience } from "./generate-with-resilience.js"; +import { GLOBAL_PAUSE_FAILURE_THRESHOLD } from "./resilience-constants.js"; +import type { GenerationContext } from "./types.js"; + +function fixtureContext(): GenerationContext { + return { + character: { id: "char-1", personalityArchetype: "元氣", speechStyle: "測試", likesDislikes: "測試", basicInfo: "測試" }, + emotion: { dominant: "CALM", style: { tone: "平穩自然", sentenceLength: "medium", initiative: "medium" } }, + relationship: { intimacy: 50, trust: 50, stage: "ACQUAINTANCE" }, + retrievedMemories: [], + history: [], + userInput: "測試", + injectedMemoryIds: [], + seed: 1, + }; +} + +// T30 驗收:連續失敗達門檻觸發全域靜默暫停、恢復後自動解除並繼續;暫停期間不重試(只嘗試一次)。 +describe("generateWithResilience/GlobalPauseService(T30)", () => { + it("單次失敗會重試,最終成功時回傳結果且不觸發暫停", async () => { + const provider = new MockProvider(); + const pause = new GlobalPauseService(); + provider.enqueueFailure(new Error("暫時性錯誤")); + const result = await generateWithResilience(provider, fixtureContext(), pause); + expect(result).not.toBeNull(); + expect(pause.isPaused()).toBe(false); + }); + + it("連續失敗達門檻時觸發全域靜默暫停,回傳 null", async () => { + const provider = new MockProvider(); + const pause = new GlobalPauseService(); + + // 每次呼叫都會重試 RETRY_MAX_ATTEMPTS+1 次,讓每次呼叫都徹底失敗,模擬 LLM 全面故障。 + for (let call = 0; call < GLOBAL_PAUSE_FAILURE_THRESHOLD; call++) { + for (let attempt = 0; attempt < 10; attempt++) { + provider.enqueueFailure(new Error(`模擬全面故障 ${call}-${attempt}`)); + } + const result = await generateWithResilience(provider, fixtureContext(), pause); + expect(result).toBeNull(); + } + + expect(pause.isPaused()).toBe(true); + }, 20000); + + it("暫停中每次只嘗試一次(不重試);一旦成功就立刻解除暫停並回傳結果", async () => { + const provider = new MockProvider(); + const pause = new GlobalPauseService(); + + for (let call = 0; call < GLOBAL_PAUSE_FAILURE_THRESHOLD; call++) { + for (let attempt = 0; attempt < 10; attempt++) provider.enqueueFailure(new Error("故障")); + await generateWithResilience(provider, fixtureContext(), pause); + } + expect(pause.isPaused()).toBe(true); + + // 暫停中再失敗一次:只嘗試一次(佇列裡還有很多待用的失敗,但只會消耗一個)。 + provider.enqueueFailure(new Error("仍在故障")); + provider.enqueueFailure(new Error("這個不該被消耗到")); + const stillFailing = await generateWithResilience(provider, fixtureContext(), pause); + expect(stillFailing).toBeNull(); + expect(pause.isPaused()).toBe(true); + provider.resetQueue(); // 清掉尚未消耗的「這個不該被消耗到」,確認上面真的只嘗試了一次 + + const recovered = await generateWithResilience(provider, fixtureContext(), pause); + expect(recovered).not.toBeNull(); + expect(pause.isPaused()).toBe(false); + }, 20000); +}); diff --git a/apps/api/src/llm/generate-with-resilience.ts b/apps/api/src/llm/generate-with-resilience.ts new file mode 100644 index 0000000..f322461 --- /dev/null +++ b/apps/api/src/llm/generate-with-resilience.ts @@ -0,0 +1,47 @@ +import type { LLMProvider } from "./llm-provider.js"; +import type { GenerationContext, GeneratedResponse } from "./types.js"; +import type { GlobalPauseService } from "./global-pause.service.js"; +import { RETRY_MAX_ATTEMPTS, RETRY_BASE_BACKOFF_MS } from "./resilience-constants.js"; + +function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +// T30:自走生成的唯一呼叫入口——指數退避重試+全域靜默暫停旗標的判斷與更新都收斂在這裡, +// RoomGenerationService/DialogueService 兩個呼叫端都改叫這個函式,不直接呼叫 provider.generate()。 +// 回傳 null 表示這一輪沒有回覆(暫停中,或重試全部失敗),呼叫端應靜默略過(不寫 RoomTurn/不顯示錯誤), +// 使用者本人的發話仍照常已由呼叫端在此之前寫入,不受影響。 +export async function generateWithResilience( + provider: LLMProvider, + context: GenerationContext, + pause: GlobalPauseService, +): Promise { + if (pause.isPaused()) { + // 暫停期間仍每次嘗試「一次」真的呼叫(不額外重試),用來偵測服務是否已恢復; + // 一旦成功就立刻解除暫停,不需要額外的健康檢查機制。 + try { + const result = await provider.generate(context); + pause.recordSuccess(); + return result; + } catch (err) { + pause.recordFailure(err); + return null; + } + } + + let lastError: unknown; + for (let attempt = 0; attempt <= RETRY_MAX_ATTEMPTS; attempt++) { + try { + const result = await provider.generate(context); + pause.recordSuccess(); + return result; + } catch (err) { + lastError = err; + if (attempt < RETRY_MAX_ATTEMPTS) { + await sleep(RETRY_BASE_BACKOFF_MS * 2 ** attempt); + } + } + } + pause.recordFailure(lastError); + return null; +} diff --git a/apps/api/src/llm/global-pause.service.ts b/apps/api/src/llm/global-pause.service.ts new file mode 100644 index 0000000..f8d7a41 --- /dev/null +++ b/apps/api/src/llm/global-pause.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from "@nestjs/common"; +import { log } from "@kokorone/shared"; +import { GLOBAL_PAUSE_FAILURE_THRESHOLD } from "./resilience-constants.js"; + +// T30:自走生成連續失敗達門檻時,設定全域靜默暫停旗標,停止所有房間與大廳的自走生成——不對使用者 +// 顯示任何提示、不寫 SYSTEM 訊息,只記後端 log。單一 api 實例(README 已於部署章節註明),故用 +// 行程內記憶體狀態即可,不需要跨行程同步。 +@Injectable() +export class GlobalPauseService { + private paused = false; + private consecutiveFailures = 0; + + isPaused(): boolean { + return this.paused; + } + + recordSuccess(): void { + this.consecutiveFailures = 0; + if (this.paused) { + this.paused = false; + log("自走暫停", "INF", "LLM 恢復正常,自動解除全域靜默暫停"); + } + } + + recordFailure(err: unknown): void { + this.consecutiveFailures += 1; + const message = err instanceof Error ? err.message : String(err); + log("自走暫停", "ERR", `LLM 生成失敗(連續第 ${this.consecutiveFailures} 次):${message}`); + if (this.consecutiveFailures >= GLOBAL_PAUSE_FAILURE_THRESHOLD && !this.paused) { + this.paused = true; + log( + "自走暫停", + "ERR", + `連續失敗達 ${GLOBAL_PAUSE_FAILURE_THRESHOLD} 次,觸發全域靜默暫停:所有房間與大廳自走生成停止,不對使用者顯示任何提示`, + ); + } + } +} diff --git a/apps/api/src/llm/keyword-overlap.ts b/apps/api/src/llm/keyword-overlap.ts new file mode 100644 index 0000000..84e368b --- /dev/null +++ b/apps/api/src/llm/keyword-overlap.ts @@ -0,0 +1,15 @@ +// K-4/T5 共用:文字與關鍵字語料的重疊度,供「是否被提及/指稱哪個角色」類判斷使用。 +export function keywordOverlap(text: string, corpus: string): number { + // 中文常見以單字成詞(貓/狗/書),門檻不能設 >=2,否則會漏掉大量真實關鍵字。 + const keywords = corpus.split(/[、,,;::\s]+/).filter((word) => word.length >= 1); + if (keywords.length === 0) { + return 0; + } + const hits = keywords.filter((keyword) => text.includes(keyword)).length; + if (hits === 0) { + return 0; + } + // 只要命中,就是明確訊號(哪怕只命中角色喜好清單裡的一個詞):至少給予下限分數, + // 不讓「喜好清單條目多」稀釋掉單次命中的重要性。 + return Math.max(0.5, hits / keywords.length); +} diff --git a/apps/api/src/llm/llm-provider.ts b/apps/api/src/llm/llm-provider.ts index a9317b7..c29e132 100644 --- a/apps/api/src/llm/llm-provider.ts +++ b/apps/api/src/llm/llm-provider.ts @@ -1,9 +1,26 @@ import type { GenerationContext, GeneratedResponse } from "./types.js"; +export interface CharacterCallCandidate { + id: string; + label: string; + keywords: string; // 供關鍵字比對的語料(性格原型/喜好/目標等),格式同既有頓號分隔慣例 +} + +export interface EndingDetectionResult { + isEnding: boolean; + evidence: string; // 判定理由,成立與不成立都要有依據可查 +} + // F-1 LLMProvider 介面:切換 Provider 不動引擎任何一行。 export interface LLMProvider { generate(context: GenerationContext): Promise; stream(context: GenerationContext): AsyncIterable; + // T5:大廳對話式呼叫的規則比對失敗或指稱含糊時的 LLM 兼底——從候選清單判斷指稱的是哪個角色, + // 必須回傳候選清單中的某個 id 或 null(無法判斷/沒有人被指稱),不可自行編造不存在的角色。 + identifyCharacter(utterance: string, candidates: CharacterCallCandidate[]): Promise; + // T13:每章投影完成後都呼叫,判斷這個場景是否為整部作品的最終結局;只依場景內容本身判斷, + // 不以章節標題關鍵字預篩(呼叫端不會把標題資訊帶進來影響判斷)。 + detectEnding(sceneSummary: string, sceneRawText: string, workTitle: string): Promise; } export const LLM_PROVIDER = Symbol("LLM_PROVIDER"); diff --git a/apps/api/src/llm/llm.module.ts b/apps/api/src/llm/llm.module.ts index 29be8d5..a1c809e 100644 --- a/apps/api/src/llm/llm.module.ts +++ b/apps/api/src/llm/llm.module.ts @@ -14,6 +14,7 @@ import { BehaviorReinforcementService } from "./behavior-reinforcement.service.j import { ContextAssemblerService } from "./context-assembler.service.js"; import { DialogueService } from "./dialogue.service.js"; import { DialogueController } from "./dialogue.controller.js"; +import { GlobalPauseService } from "./global-pause.service.js"; // F-2 Provider 切換:LLM_PROVIDER=mock|claude 決定注入哪個實作,切換不動引擎任何一行。 // R-3:ClaudeProvider 已接上真實 API,這裡不再需要特別的「尚未實作」警告。 @@ -38,7 +39,8 @@ function llmProviderFactory(mock: MockProvider, claude: ClaudeProvider) { BehaviorReinforcementService, ContextAssemblerService, DialogueService, + GlobalPauseService, ], - exports: [DialogueService, BehaviorReinforcementService, LLM_PROVIDER], + exports: [DialogueService, BehaviorReinforcementService, LLM_PROVIDER, GlobalPauseService], }) export class LlmModule {} diff --git a/apps/api/src/llm/mock-provider.service.test.ts b/apps/api/src/llm/mock-provider.service.test.ts new file mode 100644 index 0000000..90571a1 --- /dev/null +++ b/apps/api/src/llm/mock-provider.service.test.ts @@ -0,0 +1,75 @@ +import { describe, expect, it } from "vitest"; +import { MockProvider } from "./mock-provider.service.js"; +import type { GenerationContext } from "./types.js"; + +function fixtureContext(overrides: Partial = {}): GenerationContext { + return { + character: { + id: "char-1", + personalityArchetype: "TSUNDERE", + speechStyle: "口是心非", + likesDislikes: "喜歡貓,不喜歡被稱讚", + basicInfo: "測試用角色", + }, + emotion: { dominant: "CALM", style: { tone: "平穩自然", sentenceLength: "medium", initiative: "medium" } }, + relationship: { intimacy: 10, trust: 10, stage: "STRANGER" }, + retrievedMemories: [], + history: [], + userInput: "早安", + injectedMemoryIds: [], + seed: 42, + ...overrides, + }; +} + +describe("MockProvider", () => { + it("同 seed 產生相同輸出,全程不呼叫網路(LLM_PROVIDER=mock 的離線保證)", async () => { + const provider = new MockProvider(); + const context = fixtureContext(); + const first = await provider.generate(context); + const second = await provider.generate(context); + expect(first.text).toBe(second.text); + }); + + it("enqueueResponse 可指定接下來的回傳內容,用完才回退模板庫", async () => { + const provider = new MockProvider(); + provider.enqueueResponse("測試專用固定回覆"); + const queued = await provider.generate(fixtureContext()); + expect(queued.text).toBe("測試專用固定回覆"); + + const fallback = await provider.generate(fixtureContext()); + expect(fallback.text).not.toBe("測試專用固定回覆"); + }); + + it("enqueueFailure 可指定連續失敗次數,用於驗證重試與全域暫停路徑", async () => { + const provider = new MockProvider(); + provider.enqueueFailure(new Error("模擬 LLM 失敗 1")); + provider.enqueueFailure(new Error("模擬 LLM 失敗 2")); + + await expect(provider.generate(fixtureContext())).rejects.toThrow("模擬 LLM 失敗 1"); + await expect(provider.generate(fixtureContext())).rejects.toThrow("模擬 LLM 失敗 2"); + + const recovered = await provider.generate(fixtureContext()); + expect(recovered.text).toBeTruthy(); + }); + + it("resetQueue 可清空佇列,恢復模板庫行為", async () => { + const provider = new MockProvider(); + provider.enqueueResponse("不該被用到"); + provider.resetQueue(); + const result = await provider.generate(fixtureContext()); + expect(result.text).not.toBe("不該被用到"); + }); + + it("T9:generate() 附上非零的 usage 估算值,且隨輸入內容成長而增加", async () => { + const provider = new MockProvider(); + const short = await provider.generate(fixtureContext({ userInput: "早" })); + const long = await provider.generate( + fixtureContext({ userInput: "早".repeat(200), history: [{ role: "user", content: "嗨".repeat(200), timestamp: "" }] }), + ); + expect(short.usage?.model).toBe("mock"); + expect(short.usage?.promptTokens).toBeGreaterThan(0); + expect(short.usage?.completionTokens).toBeGreaterThan(0); + expect(long.usage!.promptTokens).toBeGreaterThan(short.usage!.promptTokens); + }); +}); diff --git a/apps/api/src/llm/mock-provider.service.ts b/apps/api/src/llm/mock-provider.service.ts index 1565bc9..2b515ea 100644 --- a/apps/api/src/llm/mock-provider.service.ts +++ b/apps/api/src/llm/mock-provider.service.ts @@ -1,14 +1,57 @@ import { Injectable } from "@nestjs/common"; -import type { LLMProvider } from "./llm-provider.js"; -import type { GenerationContext, GeneratedResponse } from "./types.js"; +import type { CharacterCallCandidate, EndingDetectionResult, LLMProvider } from "./llm-provider.js"; +import type { GenerationContext, GeneratedResponse, GenerationUsage } from "./types.js"; import { extractActions } from "./action-markup.js"; import { createSeededRandom } from "./seeded-random.js"; import { intimacyTier, pickTemplates } from "./template-library.js"; +import { keywordOverlap } from "./keyword-overlap.js"; + +const IDENTIFY_MATCH_THRESHOLD = 0.3; +const ENDING_SIGNAL_PHRASES = ["全劇終", "大結局", "故事到此結束", "完結", "The End"]; + +// T9:MockProvider 沒有真的呼叫 LLM,用字數/4 的粗略估算給出非零、隨內容成長的用量數字, +// 讓「用量統計」在測試/mock 環境下也能被觀察到成長趨勢,不追求與真實 tokenizer 一致。 +function estimateUsage(context: GenerationContext, outputText: string): GenerationUsage { + const historyChars = context.history.reduce((sum, turn) => sum + turn.content.length, 0); + const promptChars = context.userInput.length + historyChars; + return { + model: "mock", + promptTokens: Math.max(1, Math.ceil(promptChars / 4)), + completionTokens: Math.max(1, Math.ceil(outputText.length / 4)), + }; +} + +type QueuedResult = + | { kind: "success"; text: string; actions?: string[] } + | { kind: "failure"; error: Error }; // F-7 MockProvider:依「性格原型 × 情緒狀態 × 親密度」從模板庫選填回應,同 seed 產生可重現輸出。 +// T36:新增測試專用佇列——enqueueResponse/enqueueFailure 可指定接下來 N 次 generate() 的 +// 回傳內容或連續失敗,先進先出,用完才回退到原有模板庫邏輯;正式環境(佇列恆空)行為不變。 @Injectable() export class MockProvider implements LLMProvider { + private readonly queue: QueuedResult[] = []; + + enqueueResponse(text: string, actions?: string[]): void { + this.queue.push({ kind: "success", text, actions }); + } + + enqueueFailure(error: Error): void { + this.queue.push({ kind: "failure", error }); + } + + resetQueue(): void { + this.queue.length = 0; + } + async generate(context: GenerationContext): Promise { + const queued = this.queue.shift(); + if (queued) { + if (queued.kind === "failure") throw queued.error; + const text = queued.text; + return { text, actions: queued.actions ?? extractActions(text), usage: estimateUsage(context, text) }; + } + const tier = intimacyTier(context.relationship.intimacy); const candidates = pickTemplates(context.character.personalityArchetype, context.emotion.dominant, tier); @@ -16,7 +59,7 @@ export class MockProvider implements LLMProvider { const index = Math.floor(random() * candidates.length); const text = candidates[index]; - return { text, actions: extractActions(text) }; + return { text, actions: extractActions(text), usage: estimateUsage(context, text) }; } async *stream(context: GenerationContext): AsyncIterable { @@ -25,4 +68,28 @@ export class MockProvider implements LLMProvider { yield char; } } + + // T5:無真實語言理解能力,以關鍵字重疊度模擬「LLM 兼底」——沿用既有 K-4 的重疊度公式, + // 分數最高且達門檻者視為指稱對象;沒有任何候選達門檻則回傳 null(無法判斷,不可編造)。 + async identifyCharacter(utterance: string, candidates: CharacterCallCandidate[]): Promise { + let best: { id: string; score: number } | null = null; + for (const candidate of candidates) { + const score = keywordOverlap(utterance, candidate.keywords); + if (score > 0 && (!best || score > best.score)) { + best = { id: candidate.id, score }; + } + } + return best && best.score >= IDENTIFY_MATCH_THRESHOLD ? best.id : null; + } + + // T13:無真實語言理解能力,以場景內容是否出現明確的結局訊號詞模擬判定(例如「完結」「全劇終」); + // 不使用呼叫端可能帶入的章節標題(本方法本身就沒有標題參數,天然滿足「不以標題關鍵字預篩」)。 + async detectEnding(sceneSummary: string, sceneRawText: string, _workTitle: string): Promise { + const combined = `${sceneSummary}\n${sceneRawText}`; + const hit = ENDING_SIGNAL_PHRASES.find((phrase) => combined.includes(phrase)); + if (hit) { + return { isEnding: true, evidence: `場景內容出現「${hit}」等結局訊號詞(mock 判定,非真實 LLM 推論)` }; + } + return { isEnding: false, evidence: "場景內容未見明顯結局訊號詞(mock 判定,非真實 LLM 推論)" }; + } } diff --git a/apps/api/src/llm/prompt-builder.ts b/apps/api/src/llm/prompt-builder.ts index 24da42d..773d418 100644 --- a/apps/api/src/llm/prompt-builder.ts +++ b/apps/api/src/llm/prompt-builder.ts @@ -15,7 +15,7 @@ const RELATIONSHIP_STAGE_LABEL: Record = { }; function buildSystemPrompt(context: GenerationContext): string { - const { character, emotion, relationship, retrievedMemories } = context; + const { character, emotion, relationship, retrievedMemories, crossWorldNote } = context; const stageLabel = RELATIONSHIP_STAGE_LABEL[relationship.stage] ?? relationship.stage; const memoryLines = @@ -44,6 +44,7 @@ function buildSystemPrompt(context: GenerationContext): string { `【相關記憶】`, memoryLines, ``, + ...(crossWorldNote ? [`【跨作品提示】`, crossWorldNote, ``] : []), `【輸出格式】`, `回應為純文字。若有動作/表情描寫,用全形星號包住,例如 *臉紅撇過頭*;不要用任何其他標記語法,不要加角色名稱前綴。`, ``, diff --git a/apps/api/src/llm/resilience-constants.ts b/apps/api/src/llm/resilience-constants.ts new file mode 100644 index 0000000..43919ea --- /dev/null +++ b/apps/api/src/llm/resilience-constants.ts @@ -0,0 +1,5 @@ +// T30:連續失敗達此次數即觸發全域靜默暫停。 +export const GLOBAL_PAUSE_FAILURE_THRESHOLD = 5; +// T30:指數退避重試——單次生成最多重試這麼多次(不含首次嘗試),每次間隔倍增。 +export const RETRY_MAX_ATTEMPTS = 3; +export const RETRY_BASE_BACKOFF_MS = 200; diff --git a/apps/api/src/llm/types.ts b/apps/api/src/llm/types.ts index 46c4f19..4b40097 100644 --- a/apps/api/src/llm/types.ts +++ b/apps/api/src/llm/types.ts @@ -15,6 +15,9 @@ export interface GenerationContext { likesDislikes: string; basicInfo: string; }; + // T28:跨作品混房時,對「這次要回應的對象」附上一句世界觀提示——這個人來自不同作品,不是自己 + // 原本世界就認識的存在,禁止把對方設定當成自身世界既有知識。同作品/對象是使用者本人時不設定。 + crossWorldNote?: string; emotion: { dominant: EmotionTag; style: ResponseStyle; @@ -33,7 +36,14 @@ export interface GenerationContext { seed: number; } +export interface GenerationUsage { + model: string; + promptTokens: number; + completionTokens: number; +} + export interface GeneratedResponse { text: string; // 含動作描寫標記,如 *臉紅撇過頭* actions: string[]; // 從 text 抽取出的動作描寫(不含*符號) + usage?: GenerationUsage; // T9:每房 LLM 用量統計的來源,僅供觀察,不影響生成行為 } diff --git a/apps/api/src/lobby/call.service.test.ts b/apps/api/src/lobby/call.service.test.ts new file mode 100644 index 0000000..e9c93ec --- /dev/null +++ b/apps/api/src/lobby/call.service.test.ts @@ -0,0 +1,221 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { SentimentLedgerService } from "../relationship/sentiment-ledger.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { ScheduleExceptionService } from "../schedule/schedule-exception.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { LobbyService as RoomLobbyService } from "../room/lobby.service.js"; +import { RoomEventsService } from "../room/room-events.service.js"; +import { RoomService } from "../room/room.service.js"; +import { CharacterRelationshipService } from "../room/character-relationship.service.js"; +import { SpeakingRightService } from "../room/speaking-right.service.js"; +import { RoomGenerationService } from "../room/room-generation.service.js"; +import { PossessionService } from "../room/possession.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { CallService } from "./call.service.js"; + +// T5 驗收:喊一位答應者進單人房、喊多位有兩位答應進多人房、喊多位僅一位答應會降級為單人房、 +// 全部不答應則留在大廳且畫面顯示的是角色台詞而非系統錯誤。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); // 週三 13:00 台北,屬 FREE 時段 +const roomEvents = new RoomEventsService(new EventEmitter2()); +const roomLobby = new RoomLobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, roomLobby, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const sentimentLedger = new SentimentLedgerService(prisma, relationshipService); +const scheduleService = new ScheduleService(prisma); +const scheduleException = new ScheduleExceptionService(prisma, sentimentLedger); +const mockProvider = new MockProvider(); +const characterRelationship = new CharacterRelationshipService(prisma); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); +const retriever = new KeywordMemoryRetriever(prisma); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const generation = new RoomGenerationService(prisma, emotionService, relationshipService, retriever, characterRelationship, romanceService, mockProvider, new GlobalPauseService()); +const possession = new PossessionService(prisma, roomService, speakingRight, generation, roomLobby); +const callService = new CallService( + prisma, + clock, + emotionService, + relationshipService, + scheduleService, + scheduleException, + mockProvider, + roomService, + roomLobby, + possession, +); + +const userId = "test-call-user"; +const GENKI_LIKE = "運動、甜食"; // 元氣:conversationBaseline 高,中性關係下應答應 +const COOL_LIKE = "安靜、看書"; // 三無:conversationBaseline 低,中性關係下應婉拒 + +async function createCharacter(id: string, archetype: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: archetype, + likesDislikes: archetype === "元氣" ? GENKI_LIKE : COOL_LIKE, + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); + await prisma.client.relationship.create({ + data: { characterId: id, userId, intimacy: 50, trust: 50 }, + }); +} + +const ALL_TEST_CHARACTER_IDS = [ + "test-call-genki", + "test-call-cool", + "test-call-genki2", + "test-call-sleeper", + "test-call-delegate", + "test-call-possessed", +]; + +afterEach(async () => { + await prisma.client.pendingLobbyCall.deleteMany({ where: { userId } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.callAttemptLog.deleteMany({ where: { userId } }); + await prisma.client.characterRelationship.deleteMany({ where: { characterId: { in: ALL_TEST_CHARACTER_IDS } } }); + await prisma.client.scheduleSlot.deleteMany({ where: { characterId: { in: ALL_TEST_CHARACTER_IDS } } }); + await prisma.client.character.deleteMany({ where: { id: { in: ALL_TEST_CHARACTER_IDS } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +describe("CallService(T5)", () => { + it("喊一位答應者:降級開 SOLO 房", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試呼叫使用者" } }); + await createCharacter("test-call-genki", "元氣", "測試喵一號"); + + const result = await callService.say(userId, "測試喵一號,你在嗎?", clock.now()); + expect(result.accepted).toEqual(["test-call-genki"]); + expect(result.mode).toBe("SOLO"); + expect(result.roomId).not.toBeNull(); + + const log = await prisma.client.callAttemptLog.findFirst({ where: { userId, characterId: "test-call-genki" } }); + expect(log?.accepted).toBe(true); + }, 20000); + + it("喊多位皆答應:開 GROUP 房", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試呼叫使用者" } }); + await createCharacter("test-call-genki", "元氣", "測試喵一號"); + await createCharacter("test-call-genki2", "元氣", "測試喵二號"); + + const result = await callService.say(userId, "測試喵一號、測試喵二號,你們在嗎?", clock.now()); + expect(result.accepted.sort()).toEqual(["test-call-genki", "test-call-genki2"].sort()); + expect(result.mode).toBe("GROUP"); + }, 20000); + + it("喊多位僅一位答應:降級開 SOLO 房", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試呼叫使用者" } }); + await createCharacter("test-call-genki", "元氣", "測試喵一號"); + await createCharacter("test-call-cool", "三無", "測試喵三號"); + + const result = await callService.say(userId, "測試喵一號、測試喵三號,你們在嗎?", clock.now()); + expect(result.accepted).toEqual(["test-call-genki"]); + expect(result.declined).toEqual(["test-call-cool"]); + expect(result.mode).toBe("SOLO"); + }, 20000); + + it("全部不答應:不開房,回傳角色台詞而非系統錯誤", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試呼叫使用者" } }); + await createCharacter("test-call-cool", "三無", "測試喵三號"); + + const result = await callService.say(userId, "測試喵三號,你在嗎?", clock.now()); + expect(result.accepted).toEqual([]); + expect(result.roomId).toBeNull(); + expect(result.mode).toBeNull(); + expect(typeof result.message).toBe("string"); + expect(result.message!.length).toBeGreaterThan(0); + expect(result.message).not.toMatch(/error|Error|錯誤/); + }, 20000); +}); + +describe("CallService 大廳代答(T23)", () => { + it("喊睡著的角色:由關係最近且清醒未入房的角色代答,時間與行程資料一致", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試呼叫使用者" } }); + await createCharacter("test-call-sleeper", "三無", "測試喵睡神"); + await createCharacter("test-call-delegate", "元氣", "測試喵代答"); + // 週三(WEEKDAY)12:00~15:00 睡眠,clock 固定在 13:00,落在睡眠時段內;15:00 即為下次可找的時間。 + await prisma.client.scheduleSlot.create({ + data: { characterId: "test-call-sleeper", dayType: "WEEKDAY", startMinute: 720, endMinute: 900, status: "SLEEP" }, + }); + await prisma.client.characterRelationship.create({ + data: { characterId: "test-call-sleeper", otherCharacterId: "test-call-delegate", affinity: 90 }, + }); + + const result = await callService.say(userId, "測試喵睡神,你在嗎?", clock.now()); + expect(result.accepted).toEqual([]); + expect(result.roomId).toBeNull(); + expect(result.delegatedBy).toBe("test-call-delegate"); + expect(result.message).toContain("15:00"); + expect(result.message).not.toMatch(/error|Error|錯誤/); + + const log = await prisma.client.callAttemptLog.findFirst({ + where: { userId, characterId: "test-call-sleeper" }, + }); + expect(log?.delegatedByCharacterId).toBe("test-call-delegate"); + }, 20000); + + it("喊睡著的角色但無人可代答:大廳沉默,不輸出系統錯誤訊息", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試呼叫使用者" } }); + await createCharacter("test-call-sleeper", "三無", "測試喵睡神"); + await prisma.client.scheduleSlot.create({ + data: { characterId: "test-call-sleeper", dayType: "WEEKDAY", startMinute: 720, endMinute: 900, status: "SLEEP" }, + }); + + const result = await callService.say(userId, "測試喵睡神,你在嗎?", clock.now()); + expect(result.accepted).toEqual([]); + expect(result.roomId).toBeNull(); + expect(result.delegatedBy).toBeNull(); + expect(result.message).toBeNull(); + }, 20000); + + it("T43:喊到目前套用中的角色——人格系統不代她判斷,記一筆待決給套用者;套用者接受後開房入場", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試呼叫使用者" } }); + await createCharacter("test-call-possessed", "元氣", "測試喵套用"); + await possession.enter(userId, "test-call-possessed"); + + const result = await callService.say(userId, "測試喵套用,你在嗎?", clock.now()); + expect(result.accepted).toEqual([]); + expect(result.declined).toEqual([]); + expect(result.roomId).toBeNull(); + expect(result.message).toBeNull(); // 沒有任何人格系統代答的台詞 + expect(result.pendingPossessedCharacterIds).toEqual(["test-call-possessed"]); + + const log = await prisma.client.callAttemptLog.findFirst({ where: { userId, characterId: "test-call-possessed" } }); + expect(log).toBeNull(); // 沒有走判定流程,自然也不會留下判定紀錄 + + const pending = await possession.listPendingCalls(userId); + expect(pending).toHaveLength(1); + const decision = await possession.decidePendingCall(pending[0].id, true, clock.now()); + expect(decision.roomId).not.toBeNull(); + const roomAfter = await roomService.get(decision.roomId!); + expect(roomAfter.participants.has("test-call-possessed")).toBe(true); + expect(await possession.listPendingCalls(userId)).toHaveLength(0); + + await possession.exit(userId); + }, 20000); +}); diff --git a/apps/api/src/lobby/call.service.ts b/apps/api/src/lobby/call.service.ts new file mode 100644 index 0000000..bc39d23 --- /dev/null +++ b/apps/api/src/lobby/call.service.ts @@ -0,0 +1,317 @@ +import { Inject, Injectable } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { CLOCK, type Clock } from "../clock/clock.js"; +import { EmotionService, dominantState } from "../emotion/emotion.service.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { ScheduleExceptionService } from "../schedule/schedule-exception.service.js"; +import { availabilityForStatus } from "../schedule/constants.js"; +import { getArchetypeParams } from "../personality/archetype-params.js"; +import { LLM_PROVIDER, type LLMProvider } from "../llm/llm-provider.js"; +import { hashToSeed } from "../llm/seeded-random.js"; +import { EMOTION_SPEAKING_MODIFIER } from "../room/constants.js"; +import { RoomService } from "../room/room.service.js"; +import { LobbyService as RoomLobbyService } from "../room/lobby.service.js"; +import { PossessionService } from "../room/possession.service.js"; +import { CALL_ACCEPTANCE_THRESHOLD } from "./constants.js"; + +export interface CallJudgment { + characterId: string; + accepted: boolean; + reason: string; +} + +export interface CallResult { + calledCharacterIds: string[]; + accepted: string[]; + declined: string[]; + roomId: string | null; + mode: "SOLO" | "GROUP" | null; + message: string | null; // 全部不答應時:本人婉拒台詞,或由代答者說出的理由與可再來的時間 + delegatedBy: string | null; // T23:代答者(若有) + pendingPossessedCharacterIds: string[]; // T43:被喊到但目前套用中,改記待決、交由套用者決定 +} + +const HARD_DECLINE_PREFIXES = ["無法回應(作息)", "已在其他房間"]; + +// T5:大廳對話式呼叫。角色辨識規則先行(角色名/CharacterAlias 直接比對),比不到才以 LLM 兼底 +// (見 MockProvider/ClaudeProvider.identifyCharacter);逐位判定是否答應後,依組房規則決定結果。 +@Injectable() +export class CallService { + constructor( + private readonly prisma: PrismaService, + @Inject(CLOCK) private readonly clock: Clock, + private readonly emotion: EmotionService, + private readonly relationship: RelationshipService, + private readonly schedule: ScheduleService, + private readonly scheduleException: ScheduleExceptionService, + @Inject(LLM_PROVIDER) private readonly llmProvider: LLMProvider, + private readonly room: RoomService, + private readonly roomLobby: RoomLobbyService, + private readonly possession: PossessionService, + ) {} + + async say(userId: string, text: string, now?: Date): Promise { + const effectiveNow = now ?? this.clock.now(); + const calledCharacterIds = await this.identifyCandidates(text); + + if (calledCharacterIds.length === 0) { + return { + calledCharacterIds: [], + accepted: [], + declined: [], + roomId: null, + mode: null, + message: null, + delegatedBy: null, + pendingPossessedCharacterIds: [], + }; + } + + // T43:被喊到的角色若正被(任一使用者)套用中,人格系統不得代她判斷接受/婉拒——記一筆待決給 + // 套用者自己決定,不參與這一輪的組房/代答邏輯。 + const possessedIds = await this.possession.getPossessedCharacterIds(); + const possessedCalledIds = calledCharacterIds.filter((id) => possessedIds.has(id)); + for (const characterId of possessedCalledIds) { + await this.possession.createPendingCall(characterId, text, effectiveNow); + } + const judgeableCharacterIds = calledCharacterIds.filter((id) => !possessedIds.has(id)); + if (judgeableCharacterIds.length === 0) { + return { + calledCharacterIds, + accepted: [], + declined: [], + roomId: null, + mode: null, + message: null, + delegatedBy: null, + pendingPossessedCharacterIds: possessedCalledIds, + }; + } + + const judgments = await Promise.all( + judgeableCharacterIds.map((characterId) => this.judgeAcceptance(characterId, userId, text, effectiveNow)), + ); + const accepted = judgments.filter((j) => j.accepted).map((j) => j.characterId); + const declined = judgments.filter((j) => !j.accepted).map((j) => j.characterId); + + let roomId: string | null = null; + let mode: "SOLO" | "GROUP" | null = null; + let message: string | null = null; + let delegatedBy: string | null = null; + + if (accepted.length >= 2) { + const room = await this.openRoom(userId, accepted, "GROUP", text, effectiveNow); + roomId = room.id; + mode = "GROUP"; + } else if (accepted.length === 1) { + const room = await this.openRoom(userId, accepted, "SOLO", text, effectiveNow); + roomId = room.id; + mode = "SOLO"; + } else { + // 全部不答應:軟性婉拒(人清醒、不在其他房間,單純不想理你)由本人親自回一句話; + // 硬性無法回應(睡眠/忙碌/已在其他房間)改由關係最近且當下清醒未入房的角色代答(T23)。 + const primaryId = declined[0]; + const primaryJudgment = judgments.find((j) => j.characterId === primaryId)!; + const isHardDecline = HARD_DECLINE_PREFIXES.some((prefix) => primaryJudgment.reason.startsWith(prefix)); + + if (!isHardDecline) { + message = await this.declineMessage(primaryId, userId, text, effectiveNow); + } else { + const delegateId = await this.findDelegate(primaryId, effectiveNow); + if (delegateId) { + delegatedBy = delegateId; + const nextAvailable = await this.describeNextAvailable(primaryId, primaryJudgment.reason, effectiveNow); + message = await this.delegateMessage(delegateId, primaryId, userId, text, nextAvailable, effectiveNow); + } + // 找不到合適代答者:大廳沉默,message 維持 null,不輸出系統訊息。 + } + } + + await this.prisma.client.callAttemptLog.createMany({ + data: judgments.map((j) => ({ + userId, + characterId: j.characterId, + accepted: j.accepted, + reason: j.reason, + delegatedByCharacterId: j.characterId === declined[0] ? delegatedBy : null, + resultingRoomId: j.accepted ? roomId : null, + createdAt: effectiveNow, + })), + }); + + return { calledCharacterIds, accepted, declined, roomId, mode, message, delegatedBy, pendingPossessedCharacterIds: possessedCalledIds }; + } + + // 角色辨識:規則先行(角色名與 CharacterAlias 直接比對),比不到或指稱含糊才以 LLM 兼底。 + private async identifyCandidates(text: string): Promise { + const characters = await this.prisma.client.character.findMany({ + where: { buildStatus: "BUILT" }, + include: { aliases: true }, + }); + + const ruleMatches = characters.filter((character) => + character.aliases.some( + (alias) => + (alias.formalName && text.includes(alias.formalName)) || + (alias.nickname && text.includes(alias.nickname)) || + (alias.calledByOthers && text.includes(alias.calledByOthers)), + ), + ); + if (ruleMatches.length > 0) { + return ruleMatches.map((c) => c.id); + } + + const candidateList = characters.map((character) => ({ + id: character.id, + label: character.aliases[0]?.formalName ?? character.id, + keywords: [character.personalityArchetype, character.likesDislikes, character.goalsObsessions].join("、"), + })); + const identified = await this.llmProvider.identifyCharacter(text, candidateList); + return identified ? [identified] : []; + } + + private async judgeAcceptance(characterId: string, userId: string, text: string, now: Date): Promise { + // R5:已在其他(非大廳)房間在場者無法接受新的呼叫。 + const activeMembership = await this.prisma.client.roomMember.findFirst({ + where: { characterId, activeCharacterId: characterId }, + include: { room: true }, + }); + if (activeMembership && activeMembership.room.mode !== "LOBBY") { + return { characterId, accepted: false, reason: "已在其他房間" }; + } + + const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); + const scheduleInfo = await this.schedule.getInfo(characterId, now); + const availability = availabilityForStatus(scheduleInfo.slot?.status ?? null); + const emotionState = await this.emotion.getState(characterId, now); + const dominant = dominantState(emotionState); + const { relationship } = await this.relationship.getState(characterId, userId, now); + + let effectiveAvailability = availability; + if (availability !== "NORMAL") { + const exceptionType = await this.scheduleException.tryApply( + characterId, + userId, + availability, + { intimacy: relationship.intimacy, dominantEmotion: dominant, userInput: text }, + now, + ); + if (exceptionType) effectiveAvailability = "NORMAL"; + } + if (effectiveAvailability === "NO_REPLY") { + return { characterId, accepted: false, reason: "無法回應(作息)" }; + } + + const archetypeParams = getArchetypeParams(character.personalityArchetype); + const emotionModifier = EMOTION_SPEAKING_MODIFIER[dominant]; + const relationshipModifier = (relationship.intimacy - 50) / 100; + const score = archetypeParams.conversationBaseline + emotionModifier + relationshipModifier; + const accepted = score >= CALL_ACCEPTANCE_THRESHOLD; + return { characterId, accepted, reason: accepted ? `答應(score=${score.toFixed(2)})` : `衝動值不足(score=${score.toFixed(2)})` }; + } + + private async openRoom(userId: string, characterIds: string[], mode: "SOLO" | "GROUP", topicSeed: string, now: Date) { + const room = await this.room.create(userId, [], mode, topicSeed); + for (const characterId of characterIds) { + await this.roomLobby.enterRoom(characterId, room.id, now); + } + return room; + } + + private async declineMessage(characterId: string, userId: string, userInput: string, now: Date): Promise { + const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); + const emotionState = await this.emotion.getState(characterId, now); + const dominant = dominantState(emotionState); + const { relationship } = await this.relationship.getState(characterId, userId, now); + const seed = hashToSeed(`lobby-decline:${characterId}:${userInput}`); + + const generated = await this.llmProvider.generate({ + character: { + id: character.id, + personalityArchetype: character.personalityArchetype, + speechStyle: character.speechStyle, + likesDislikes: character.likesDislikes, + basicInfo: character.basicInfo, + }, + emotion: { dominant, style: { tone: "", sentenceLength: "short", initiative: "low" } }, + relationship: { intimacy: relationship.intimacy, trust: relationship.trust, stage: relationship.stage }, + retrievedMemories: [], + history: [], + userInput, + injectedMemoryIds: [], + seed, + }); + return generated.text; + } + + // T23:找與被喊角色關係最近、當下清醒(非睡眠)且未入其他房間(含大廳都算「有空」)的代答者。 + private async findDelegate(characterId: string, now: Date): Promise { + const relationships = await this.prisma.client.characterRelationship.findMany({ + where: { characterId }, + orderBy: { affinity: "desc" }, + }); + for (const rel of relationships) { + const candidateId = rel.otherCharacterId; + const scheduleInfo = await this.schedule.getInfo(candidateId, now); + if (availabilityForStatus(scheduleInfo.slot?.status ?? null) === "NO_REPLY") continue; // 睡著跳過 + const activeMembership = await this.prisma.client.roomMember.findFirst({ + where: { characterId: candidateId, activeCharacterId: candidateId }, + include: { room: true }, + }); + if (activeMembership && activeMembership.room.mode !== "LOBBY") continue; // 已入其他房間跳過 + return candidateId; + } + return null; + } + + // T23:「下次可找的時間」一律取自行程資料本身,不可由 LLM 自行編時間。 + private async describeNextAvailable(characterId: string, declineReason: string, now: Date): Promise { + if (declineReason.startsWith("已在其他房間")) { + return "等她忙完手邊的事"; + } + const scheduleInfo = await this.schedule.getInfo(characterId, now); + if (!scheduleInfo.slot) { + return "晚一點"; + } + const hh = String(Math.floor(scheduleInfo.slot.endMinute / 60) % 24).padStart(2, "0"); + const mm = String(scheduleInfo.slot.endMinute % 60).padStart(2, "0"); + return `${hh}:${mm}`; + } + + private async delegateMessage( + delegateId: string, + aboutCharacterId: string, + userId: string, + userInput: string, + nextAvailable: string, + now: Date, + ): Promise { + const delegate = await this.prisma.client.character.findUniqueOrThrow({ where: { id: delegateId } }); + const aboutAlias = await this.prisma.client.characterAlias.findFirst({ where: { characterId: aboutCharacterId } }); + const aboutLabel = aboutAlias?.formalName ?? aboutCharacterId; + const emotionState = await this.emotion.getState(delegateId, now); + const dominant = dominantState(emotionState); + const { relationship } = await this.relationship.getState(delegateId, userId, now); + const seed = hashToSeed(`lobby-delegate:${delegateId}:${aboutCharacterId}:${userInput}`); + + const generated = await this.llmProvider.generate({ + character: { + id: delegate.id, + personalityArchetype: delegate.personalityArchetype, + speechStyle: delegate.speechStyle, + likesDislikes: delegate.likesDislikes, + basicInfo: delegate.basicInfo, + }, + emotion: { dominant, style: { tone: "", sentenceLength: "short", initiative: "low" } }, + relationship: { intimacy: relationship.intimacy, trust: relationship.trust, stage: relationship.stage }, + retrievedMemories: [], + history: [], + userInput, + injectedMemoryIds: [], + seed, + }); + // 「下次可找的時間」由程式碼直接拼接,不讓 LLM 生成的那段話決定時間內容。 + return `${generated.text}${aboutLabel}大概${nextAvailable}才有空,到時候再來找她吧。`; + } +} diff --git a/apps/api/src/lobby/constants.ts b/apps/api/src/lobby/constants.ts new file mode 100644 index 0000000..10c3298 --- /dev/null +++ b/apps/api/src/lobby/constants.ts @@ -0,0 +1,5 @@ +// T5:大廳對話式呼叫的接受判定門檻。score = conversationBaseline + 情緒修正 + 關係修正, +// 中性關係(50)+平靜情緒時 score 即等於角色的 conversationBaseline;0.3 落在冷淡(0.15)/ +// 三無(0.05)之上、傲嬌(0.5)/天然呆(0.6)/大小姐(0.55)/元氣(0.85)之下,讓「外向角色 +// 預設答應、內向角色預設婉拒」符合直覺,同時仍可被情緒/關係修正推過門檻。 +export const CALL_ACCEPTANCE_THRESHOLD = 0.3; diff --git a/apps/api/src/lobby/invitation.service.test.ts b/apps/api/src/lobby/invitation.service.test.ts new file mode 100644 index 0000000..991e3e7 --- /dev/null +++ b/apps/api/src/lobby/invitation.service.test.ts @@ -0,0 +1,184 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { CharacterRelationshipService } from "../room/character-relationship.service.js"; +import { LobbyService as RoomLobbyService } from "../room/lobby.service.js"; +import { RoomEventsService } from "../room/room-events.service.js"; +import { RoomService } from "../room/room.service.js"; +import { SpeakingRightService } from "../room/speaking-right.service.js"; +import { RoomGenerationService } from "../room/room-generation.service.js"; +import { PossessionService } from "../room/possession.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { InvitationService } from "./invitation.service.js"; + +// T29 驗收:同一角色同時被兩處邀請時,兩處都收到該角色的回覆,且他只會出現在其中一間。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); // 週三 13:00 台北,FREE 時段 +const roomEvents = new RoomEventsService(new EventEmitter2()); +const roomLobby = new RoomLobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, roomLobby, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const scheduleService = new ScheduleService(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); +const retriever = new KeywordMemoryRetriever(prisma); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const generation = new RoomGenerationService( + prisma, + emotionService, + relationshipService, + retriever, + characterRelationship, + romanceService, + new MockProvider(), + new GlobalPauseService(), +); +const possession = new PossessionService(prisma, roomService, speakingRight, generation, roomLobby); +const invitationService = new InvitationService( + prisma, + clock, + emotionService, + scheduleService, + characterRelationship, + roomService, + roomLobby, + possession, +); + +const ownerUserId = "test-invite-user"; +const TARGET = "test-invite-target"; +const INVITER_A = "test-invite-inviter-a"; +const INVITER_B = "test-invite-inviter-b"; + +async function createCharacter(id: string, archetype = "元氣") { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: archetype, + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: id } }, + }, + }); +} + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId: ownerUserId } }); + await prisma.client.characterRelationship.deleteMany({ + where: { characterId: TARGET, otherCharacterId: { in: [INVITER_A, INVITER_B] } }, + }); + await prisma.client.character.deleteMany({ where: { id: { in: [TARGET, INVITER_A, INVITER_B] } } }); + await prisma.client.user.deleteMany({ where: { id: ownerUserId } }); +}); + +describe("InvitationService(T29)", () => { + it("同一角色同時被兩間房邀請:兩處都收到回覆,且只會出現在其中一間", async () => { + await prisma.client.user.create({ data: { id: ownerUserId, name: "測試邀請使用者" } }); + await createCharacter(TARGET); + await createCharacter(INVITER_A); + await createCharacter(INVITER_B); + + const roomA = await roomService.create(ownerUserId, [INVITER_A], "GROUP"); + const roomB = await roomService.create(ownerUserId, [INVITER_B], "GROUP"); + await roomLobby.enterRoom(INVITER_A, roomA.id, clock.now()); + await roomLobby.enterRoom(INVITER_B, roomB.id, clock.now()); + + // TARGET 與 B 關係較好,應該選擇加入 B 的房間。 + await prisma.client.characterRelationship.create({ + data: { characterId: TARGET, otherCharacterId: INVITER_A, affinity: 50 }, + }); + await prisma.client.characterRelationship.create({ + data: { characterId: TARGET, otherCharacterId: INVITER_B, affinity: 95 }, + }); + + await invitationService.invite(roomA.id, TARGET, INVITER_A, clock.now()); + await invitationService.invite(roomB.id, TARGET, INVITER_B, clock.now()); + + // 裁決前:兩筆都還是 PENDING,TARGET 尚未入房。 + const beforeResolve = await prisma.client.roomInvitation.findMany({ where: { characterId: TARGET } }); + expect(beforeResolve.every((i) => i.status === "PENDING")).toBe(true); + + await invitationService.resolvePendingFor(TARGET, clock.now()); + + const invitations = await prisma.client.roomInvitation.findMany({ where: { characterId: TARGET } }); + expect(invitations).toHaveLength(2); + const accepted = invitations.filter((i) => i.status === "ACCEPTED"); + const declined = invitations.filter((i) => i.status === "DECLINED"); + expect(accepted).toHaveLength(1); + expect(declined).toHaveLength(1); + expect(accepted[0].roomId).toBe(roomB.id); // 關係較好的那間 + + // 兩處都收到回覆(各自房間都留了一則 TARGET 的發話)。 + const roomAAfter = await roomService.get(roomA.id); + const roomBAfter = await roomService.get(roomB.id); + expect(roomAAfter.turns.some((t) => t.speakerId === TARGET)).toBe(true); + expect(roomBAfter.turns.some((t) => t.speakerId === TARGET)).toBe(true); + + // 只會出現在其中一間:僅在 B 房實際在場。 + expect(roomBAfter.participants.has(TARGET)).toBe(true); + expect(roomAAfter.participants.has(TARGET)).toBe(false); + + const activeRows = await prisma.client.roomMember.findMany({ where: { characterId: TARGET, leftAt: null } }); + expect(activeRows).toHaveLength(1); + expect(activeRows[0].roomId).toBe(roomB.id); + }, 20000); + + it("T43:被邀請的角色目前套用中時,人格系統不代她判斷——維持 PENDING,交由套用者明確決定", async () => { + await prisma.client.user.create({ data: { id: ownerUserId, name: "測試邀請使用者" } }); + await createCharacter(TARGET); + await createCharacter(INVITER_A); + await createCharacter(INVITER_B); + + const roomA = await roomService.create(ownerUserId, [INVITER_A], "GROUP"); + const roomB = await roomService.create(ownerUserId, [INVITER_B], "GROUP"); + await roomLobby.enterRoom(INVITER_A, roomA.id, clock.now()); + await roomLobby.enterRoom(INVITER_B, roomB.id, clock.now()); + await invitationService.invite(roomA.id, TARGET, INVITER_A, clock.now()); + await invitationService.invite(roomB.id, TARGET, INVITER_B, clock.now()); + + await possession.enter(ownerUserId, TARGET); + await invitationService.resolvePendingFor(TARGET, clock.now()); + + // 人格系統的自動裁決完全沒有介入:兩筆都還是 PENDING,沒有任何一間被系統代答。 + const stillPending = await prisma.client.roomInvitation.findMany({ where: { characterId: TARGET } }); + expect(stillPending.every((i) => i.status === "PENDING")).toBe(true); + const roomAWhilePending = await roomService.get(roomA.id); + const roomBWhilePending = await roomService.get(roomB.id); + expect(roomAWhilePending.turns).toHaveLength(0); + expect(roomBWhilePending.turns).toHaveLength(0); + + // 套用者親自決定:接受 B 房的邀請,A 房的邀請一併被婉拒(與人格系統「選一個、其餘逐一回覆」語意一致)。 + const invitationB = stillPending.find((i) => i.roomId === roomB.id)!; + await invitationService.decideAsPossessed(invitationB.id, true, clock.now()); + + const afterDecision = await prisma.client.roomInvitation.findMany({ where: { characterId: TARGET } }); + expect(afterDecision.find((i) => i.roomId === roomB.id)?.status).toBe("ACCEPTED"); + expect(afterDecision.find((i) => i.roomId === roomA.id)?.status).toBe("DECLINED"); + const roomBAfterDecision = await roomService.get(roomB.id); + expect(roomBAfterDecision.participants.has(TARGET)).toBe(true); + + await possession.exit(ownerUserId); + }, 20000); +}); diff --git a/apps/api/src/lobby/invitation.service.ts b/apps/api/src/lobby/invitation.service.ts new file mode 100644 index 0000000..ee4da03 --- /dev/null +++ b/apps/api/src/lobby/invitation.service.ts @@ -0,0 +1,168 @@ +import { Inject, Injectable } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { CLOCK, type Clock } from "../clock/clock.js"; +import { EmotionService, dominantState } from "../emotion/emotion.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { availabilityForStatus } from "../schedule/constants.js"; +import { getArchetypeParams } from "../personality/archetype-params.js"; +import { EMOTION_SPEAKING_MODIFIER } from "../room/constants.js"; +import { RoomService } from "../room/room.service.js"; +import { LobbyService as RoomLobbyService } from "../room/lobby.service.js"; +import { CharacterRelationshipService } from "../room/character-relationship.service.js"; +import { PossessionService } from "../room/possession.service.js"; +import { CALL_ACCEPTANCE_THRESHOLD } from "./constants.js"; + +// T29:使用者呼叫(T5)與房內角色邀請走同一套 RoomInvitation。房內角色邀請不在場角色時, +// 若該角色同時有多筆 PENDING 邀請(例如同時被兩個不同房間邀請),由人格系統依關係/情緒選出 +// 一筆 ACCEPTED,其餘標 DECLINED,並在每一個邀請來源各留一則發話後才真正入房。 +@Injectable() +export class InvitationService { + constructor( + private readonly prisma: PrismaService, + @Inject(CLOCK) private readonly clock: Clock, + private readonly emotion: EmotionService, + private readonly schedule: ScheduleService, + private readonly characterRelationship: CharacterRelationshipService, + private readonly room: RoomService, + private readonly roomLobby: RoomLobbyService, + private readonly possession: PossessionService, + ) {} + + // invitedByCharacterId 為 null 表使用者從大廳呼叫;非 null 表房內角色邀請。 + // 只登記邀請意向(PENDING 或依 R5 立即 DECLINED),不在此立刻裁決——同一角色可能「同時」被 + // 多處邀請(例如兩個不同房間各自邀請),必須等呼叫端明確觸發 resolvePendingFor() 才裁決, + // 否則最先送達的邀請永遠會在還沒有對手可比較時就單獨勝出,變成先到先贏而非依人格系統選擇。 + async invite(roomId: string, characterId: string, invitedByCharacterId: string | null, now?: Date): Promise { + const effectiveNow = now ?? this.clock.now(); + + // R5:已在其他(非大廳)房間在場者只能婉拒,不進入待裁決佇列。 + const activeMembership = await this.prisma.client.roomMember.findFirst({ + where: { characterId, activeCharacterId: characterId }, + include: { room: true }, + }); + if (activeMembership && activeMembership.room.mode !== "LOBBY" && activeMembership.roomId !== roomId) { + await this.prisma.client.roomInvitation.create({ + data: { roomId, characterId, invitedByCharacterId, status: "DECLINED", respondedAt: effectiveNow }, + }); + return; + } + + await this.prisma.client.roomInvitation.create({ + data: { roomId, characterId, invitedByCharacterId, status: "PENDING" }, + }); + } + + // 依關係/情緒選出一筆 ACCEPTED,其餘 DECLINED;每個來源各留一則發話後才真正入房。 + async resolvePendingFor(characterId: string, now?: Date): Promise { + const effectiveNow = now ?? this.clock.now(); + const pending = await this.prisma.client.roomInvitation.findMany({ + where: { characterId, status: "PENDING" }, + include: { room: true }, + }); + if (pending.length === 0) return; + + // T43:套用中的角色不能讓人格系統代她判斷接受/婉拒——維持 PENDING,交由套用者透過 + // decideAsPossessed() 明確決定。 + const possessedIds = await this.possession.getPossessedCharacterIds(); + if (possessedIds.has(characterId)) return; + + const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); + const scheduleInfo = await this.schedule.getInfo(characterId, effectiveNow); + const asleep = availabilityForStatus(scheduleInfo.slot?.status ?? null) === "NO_REPLY"; + + const emotionState = await this.emotion.getState(characterId, effectiveNow); + const dominant = dominantState(emotionState); + const archetypeParams = getArchetypeParams(character.personalityArchetype); + const emotionModifier = EMOTION_SPEAKING_MODIFIER[dominant]; + + const scored = await Promise.all( + pending.map(async (invitation) => { + if (asleep) return { invitation, score: -Infinity }; + const affinity = invitation.invitedByCharacterId + ? await this.characterRelationship.getAffinity(characterId, invitation.invitedByCharacterId) + : 50; // 使用者從大廳呼叫:以中性關係修正為基準(呼叫端多半已另行以 T5 的完整關係計分判斷過一次) + const relationshipModifier = (affinity - 50) / 100; + const score = archetypeParams.conversationBaseline + emotionModifier + relationshipModifier; + return { invitation, score }; + }), + ); + + const winner = scored.reduce((best, cur) => (cur.score > best.score ? cur : best), scored[0]); + const accept = winner.score >= CALL_ACCEPTANCE_THRESHOLD; + + for (const { invitation } of scored) { + const isWinner = accept && invitation.id === winner.invitation.id; + await this.prisma.client.roomInvitation.update({ + where: { id: invitation.id }, + data: { status: isWinner ? "ACCEPTED" : "DECLINED", respondedAt: effectiveNow }, + }); + if (!isWinner) { + await this.leaveReply(invitation.roomId, characterId, effectiveNow, false); + } + } + + if (accept) { + // T42:邀請對象答應加入原本是 SOLO 的房間時,房型立即改為 GROUP(不支援之後降回 SOLO, + // 沒有任何程式路徑會把 GROUP 改回 SOLO——離開只會減少在場人數,不影響 mode)。 + const targetRoom = await this.prisma.client.room.findUniqueOrThrow({ where: { id: winner.invitation.roomId } }); + if (targetRoom.mode === "SOLO") { + await this.room.switchToGroup(winner.invitation.roomId); + } + await this.roomLobby.enterRoom(characterId, winner.invitation.roomId, effectiveNow); + await this.leaveReply(winner.invitation.roomId, characterId, effectiveNow, true); + } + } + + // T43:套用中角色的待決邀請清單,供套用者查看並決定。 + async listPendingFor(characterId: string) { + return this.prisma.client.roomInvitation.findMany({ + where: { characterId, status: "PENDING" }, + include: { room: true }, + orderBy: { createdAt: "asc" }, + }); + } + + // T43:套用者以角色本人的身分決定一筆待決邀請——不經過人格系統的關係/情緒評分。答應時,同角色 + // 其餘待決邀請一併婉拒(與 resolvePendingFor() 的「選一個、其餘逐一回覆」語意一致)。 + async decideAsPossessed(invitationId: string, accept: boolean, now?: Date): Promise { + const effectiveNow = now ?? this.clock.now(); + const invitation = await this.prisma.client.roomInvitation.findUniqueOrThrow({ where: { id: invitationId } }); + if (invitation.status !== "PENDING") return; + + await this.prisma.client.roomInvitation.update({ + where: { id: invitationId }, + data: { status: accept ? "ACCEPTED" : "DECLINED", respondedAt: effectiveNow }, + }); + if (!accept) { + await this.leaveReply(invitation.roomId, invitation.characterId, effectiveNow, false); + return; + } + + const otherPending = await this.prisma.client.roomInvitation.findMany({ + where: { characterId: invitation.characterId, status: "PENDING", id: { not: invitationId } }, + }); + for (const other of otherPending) { + await this.prisma.client.roomInvitation.update({ + where: { id: other.id }, + data: { status: "DECLINED", respondedAt: effectiveNow }, + }); + await this.leaveReply(other.roomId, invitation.characterId, effectiveNow, false); + } + + const targetRoom = await this.prisma.client.room.findUniqueOrThrow({ where: { id: invitation.roomId } }); + if (targetRoom.mode === "SOLO") { + await this.room.switchToGroup(invitation.roomId); + } + await this.roomLobby.enterRoom(invitation.characterId, invitation.roomId, effectiveNow); + await this.leaveReply(invitation.roomId, invitation.characterId, effectiveNow, true); + } + + // 在邀請來源留下一則角色台詞(婉拒說明,或答應後的入房招呼),而不是靜默消失或系統訊息。 + private async leaveReply(roomId: string, characterId: string, now: Date, accepted: boolean): Promise { + const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); + const alias = await this.prisma.client.characterAlias.findFirst({ where: { characterId } }); + const label = alias?.formalName ?? character.id; + const text = accepted ? "好,我來了!" : "抱歉,我這邊有點事,這次不能過去了。"; + await this.room.addTurn(roomId, characterId, label, text, now); + } +} diff --git a/apps/api/src/lobby/lobby-aggregation.service.test.ts b/apps/api/src/lobby/lobby-aggregation.service.test.ts new file mode 100644 index 0000000..9304a83 --- /dev/null +++ b/apps/api/src/lobby/lobby-aggregation.service.test.ts @@ -0,0 +1,120 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { LobbyService as RoomLobbyService } from "../room/lobby.service.js"; +import { RoomEventsService } from "../room/room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "../room/room.service.js"; +import { LobbyAggregationService } from "./lobby-aggregation.service.js"; + +// T4 驗收:單一請求即可畫出完整大廳;角色狀態與實際房間佔用一致;多房並存時各房未讀數皆正確。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T12:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const roomLobby = new RoomLobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, roomLobby, roomEvents); +const scheduleService = new ScheduleService(prisma); +const aggregation = new LobbyAggregationService(prisma, scheduleService, roomLobby); + +const userId = "test-lobby-agg-user"; +const charA = "test-lobby-agg-char-a"; +const charB = "test-lobby-agg-char-b"; +const WORK_ID = "test-lobby-agg-t34-work"; +const CHAR_C = "test-lobby-agg-t34-char-c"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [charA, charB] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); + await prisma.client.epilogueMilestoneLog.deleteMany({ where: { characterId: CHAR_C } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_C } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createCharacter(id: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "TSUNDERE", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: id } }, + }, + }); +} + +describe("LobbyAggregationService(T4)", () => { + it("角色狀態與實際房間佔用一致;多房並存時各房未讀數皆正確", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試大廳聚合使用者" } }); + await createCharacter(charA); + await createCharacter(charB); + + const before = await aggregation.getLobby(userId, clock.now()); + const beforeA = before.characters.find((c) => c.id === charA)!; + expect(beforeA.presenceState).toBe("IDLE"); + expect(beforeA.roomId).toBeNull(); + + const room = await roomService.create(userId, [], "GROUP"); + await roomLobby.enterRoom(charA, room.id, clock.now()); + await roomService.addTurn(room.id, USER_SPEAKER_ID, "測試", "第一句", clock.now()); + await roomService.addTurn(room.id, USER_SPEAKER_ID, "測試", "第二句", clock.now()); + + const after = await aggregation.getLobby(userId, clock.now()); + const afterA = after.characters.find((c) => c.id === charA)!; + expect(afterA.presenceState).toBe("IN_GROUP_ROOM"); + expect(afterA.roomId).toBe(room.id); + const afterB = after.characters.find((c) => c.id === charB)!; + expect(afterB.presenceState).toBe("IDLE"); // 未入房的角色狀態不受影響 + + const activeRoomView = after.activeRooms.find((r) => r.id === room.id)!; + expect(activeRoomView.unreadCount).toBe(2); // 尚未回報已讀 + + await roomService.reportRead(room.id, userId, 0); + const afterPartialRead = await aggregation.getLobby(userId, clock.now()); + expect(afterPartialRead.activeRooms.find((r) => r.id === room.id)!.unreadCount).toBe(1); + }, 20000); + + it("T34:作品的自主里程碑會呈現在對應的作品卡片,不影響其他作品", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試大廳聚合使用者" } }); + await prisma.client.work.create({ data: { id: WORK_ID, title: "T34 測試作品", inEpilogue: true } }); + await prisma.client.character.create({ + data: { + id: CHAR_C, + workId: WORK_ID, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: "小丙" } }, + }, + }); + await prisma.client.epilogueMilestoneLog.create({ + data: { characterId: CHAR_C, storyOrder: 5, label: "考上目標學校" }, + }); + + const lobby = await aggregation.getLobby(userId, clock.now()); + const workView = lobby.works.find((w) => w.id === WORK_ID)!; + expect(workView.milestones).toHaveLength(1); + expect(workView.milestones[0]).toMatchObject({ characterId: CHAR_C, label: "考上目標學校", storyOrder: 5 }); + + // 沒有里程碑的其他作品不受影響(milestones 為空陣列,不是 undefined 或摻進別的作品的資料)。 + const otherWorks = lobby.works.filter((w) => w.id !== WORK_ID); + expect(otherWorks.every((w) => Array.isArray(w.milestones) && w.milestones.length === 0)).toBe(true); + }, 20000); +}); diff --git a/apps/api/src/lobby/lobby-aggregation.service.ts b/apps/api/src/lobby/lobby-aggregation.service.ts new file mode 100644 index 0000000..6a82556 --- /dev/null +++ b/apps/api/src/lobby/lobby-aggregation.service.ts @@ -0,0 +1,151 @@ +import { Injectable } from "@nestjs/common"; +import { deriveLobbyPresenceState, type LobbyPresenceState, type LobbyPresenceRoomMode } from "@kokorone/shared"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { LobbyService as RoomLobbyService } from "../room/lobby.service.js"; + +export interface LobbyMilestoneView { + characterId: string; + label: string; + storyOrder: number; + createdAt: Date; +} + +export interface LobbyWorkView { + id: string; + title: string; + inEpilogue: boolean; + milestones: LobbyMilestoneView[]; // T34:自走一段時間後自主成立的人生變化,明顯呈現在大廳作品卡片 +} + +export interface LobbyCharacterView { + id: string; + workId: string | null; + formalName: string; + buildStatus: string; + presenceState: LobbyPresenceState; + roomId: string | null; // 目前所在的非大廳房間(若有) +} + +export interface LobbyActiveRoomView { + id: string; + mode: string; + topicSeed: string | null; + memberCharacterIds: string[]; + unreadCount: number; + totalTokens: number; // T9:該房累計 LLM 用量(promptTokens + completionTokens),僅供觀察 +} + +// T4:大廳聚合端點。單一請求聚合所有作品、旗下角色與 T1 定義的狀態、以及該使用者所有 ACTIVE +// 房間與各房未讀數,以批次查詢(findMany + groupBy)避免逐一角色/房間各自查詢造成 N+1; +// 唯一的例外是 ScheduleService.getInfo(每位角色的作息判定邏輯本身就是逐角色計算,改以 +// Promise.all 併發查詢而非序列 N+1 阻塞)。 +@Injectable() +export class LobbyAggregationService { + constructor( + private readonly prisma: PrismaService, + private readonly schedule: ScheduleService, + private readonly roomLobby: RoomLobbyService, + ) {} + + async getLobby( + userId: string, + now: Date = new Date(), + ): Promise<{ works: LobbyWorkView[]; characters: LobbyCharacterView[]; activeRooms: LobbyActiveRoomView[] }> { + // T24 常駐流轉的一致性前提:先確保所有角色都已正確登記在場(大廳或其他房間)。 + await this.roomLobby.syncMembership(userId); + + const [works, characters, activeMemberships, readStates, activeRooms] = await Promise.all([ + this.prisma.client.work.findMany({ orderBy: { createdAt: "asc" } }), + this.prisma.client.character.findMany({ include: { aliases: true }, orderBy: { createdAt: "asc" } }), + this.prisma.client.roomMember.findMany({ where: { activeCharacterId: { not: null } }, include: { room: true } }), + this.prisma.client.roomReadState.findMany({ where: { userId } }), + this.prisma.client.room.findMany({ + where: { userId, status: "ACTIVE", mode: { not: "LOBBY" } }, + include: { members: { where: { leftAt: null } } }, + }), + ]); + + const roomByCharacter = new Map(activeMemberships.map((m) => [m.characterId, m.room])); + const lastReadSeqByRoom = new Map(readStates.map((r) => [r.roomId, r.lastReadSeq])); + + const roomIds = activeRooms.map((r) => r.id); + const latestTurns = roomIds.length + ? await this.prisma.client.roomTurn.groupBy({ by: ["roomId"], where: { roomId: { in: roomIds } }, _max: { seq: true } }) + : []; + const turnCounterByRoom = new Map(latestTurns.map((t) => [t.roomId, (t._max.seq ?? -1) + 1])); + + // T9:每房累計用量,批次查詢避免逐房各自聚合造成 N+1。 + const usageTotals = roomIds.length + ? await this.prisma.client.roomUsageLog.groupBy({ + by: ["roomId"], + where: { roomId: { in: roomIds } }, + _sum: { promptTokens: true, completionTokens: true }, + }) + : []; + const totalTokensByRoom = new Map( + usageTotals.map((u) => [u.roomId, (u._sum.promptTokens ?? 0) + (u._sum.completionTokens ?? 0)]), + ); + + // T34:批次查詢所有角色的里程碑紀錄,依角色所屬作品分組——同既有慣例,避免逐作品各自查詢造成 N+1。 + const milestoneLogs = characters.length + ? await this.prisma.client.epilogueMilestoneLog.findMany({ + where: { characterId: { in: characters.map((c) => c.id) } }, + orderBy: { storyOrder: "asc" }, + }) + : []; + const workIdByCharacter = new Map(characters.map((c) => [c.id, c.workId])); + const milestonesByWork = new Map(); + for (const log of milestoneLogs) { + const workId = workIdByCharacter.get(log.characterId); + if (!workId) continue; + const list = milestonesByWork.get(workId) ?? []; + list.push({ characterId: log.characterId, label: log.label, storyOrder: log.storyOrder, createdAt: log.createdAt }); + milestonesByWork.set(workId, list); + } + + const scheduleStatuses = await Promise.all( + characters.map(async (c) => ({ id: c.id, status: (await this.schedule.getInfo(c.id, now)).slot?.status ?? null })), + ); + const scheduleStatusByCharacter = new Map(scheduleStatuses.map((s) => [s.id, s.status])); + + const characterViews: LobbyCharacterView[] = characters.map((character) => { + const room = roomByCharacter.get(character.id); + const roomMode: LobbyPresenceRoomMode = room && room.mode === "SOLO" ? "SOLO" : room && room.mode === "GROUP" ? "GROUP" : null; + return { + id: character.id, + workId: character.workId, + formalName: character.aliases[0]?.formalName ?? character.id, + buildStatus: character.buildStatus, + presenceState: deriveLobbyPresenceState({ + buildStatus: character.buildStatus, + scheduleSlotStatus: scheduleStatusByCharacter.get(character.id) ?? "FREE", + roomMode, + }), + roomId: roomMode ? (room!.id ?? null) : null, + }; + }); + + return { + works: works.map((work) => ({ + id: work.id, + title: work.title, + inEpilogue: work.inEpilogue, + milestones: milestonesByWork.get(work.id) ?? [], + })), + characters: characterViews, + activeRooms: activeRooms.map((room) => { + const turnCounter = turnCounterByRoom.get(room.id) ?? 0; + const lastReadSeq = lastReadSeqByRoom.get(room.id) ?? -1; + return { + id: room.id, + mode: room.mode, + topicSeed: room.topicSeed, + memberCharacterIds: room.members.map((m) => m.characterId), + unreadCount: Math.max(0, turnCounter - (lastReadSeq + 1)), + totalTokens: totalTokensByRoom.get(room.id) ?? 0, + }; + }), + }; + } +} diff --git a/apps/api/src/lobby/lobby.controller.ts b/apps/api/src/lobby/lobby.controller.ts new file mode 100644 index 0000000..9019ea1 --- /dev/null +++ b/apps/api/src/lobby/lobby.controller.ts @@ -0,0 +1,34 @@ +import { Body, Controller, Get, Post, Query } from "@nestjs/common"; +import { LobbyAggregationService } from "./lobby-aggregation.service.js"; +import { CallService } from "./call.service.js"; +import { PossessionService } from "../room/possession.service.js"; + +interface SayBody { + userId: string; + text: string; + now?: string; +} + +// T4:GET /lobby——單一請求畫出完整大廳。既有 GET /room/lobby(T19-P1/T20-P1 最小可用) +// 保留供舊呼叫端使用;本端點取代其作為正式聚合來源。 +// T5:POST /lobby/say——大廳對話式呼叫。 +@Controller("lobby") +export class LobbyController { + constructor( + private readonly aggregation: LobbyAggregationService, + private readonly call: CallService, + private readonly possession: PossessionService, + ) {} + + @Get() + async getLobby(@Query("userId") userId: string) { + return this.aggregation.getLobby(userId); + } + + @Post("say") + async say(@Body() body: SayBody) { + // T43:套用角色期間不可以自己的身分發話(大廳呼叫本身就是「以使用者身分」喊人)。 + await this.possession.assertNotPossessing(body.userId); + return this.call.say(body.userId, body.text, body.now ? new Date(body.now) : undefined); + } +} diff --git a/apps/api/src/lobby/lobby.module.ts b/apps/api/src/lobby/lobby.module.ts new file mode 100644 index 0000000..7f64baa --- /dev/null +++ b/apps/api/src/lobby/lobby.module.ts @@ -0,0 +1,19 @@ +import { Module } from "@nestjs/common"; +import { PrismaModule } from "../prisma/prisma.module.js"; +import { ScheduleModule } from "../schedule/schedule.module.js"; +import { RoomModule } from "../room/room.module.js"; +import { EmotionModule } from "../emotion/emotion.module.js"; +import { RelationshipModule } from "../relationship/relationship.module.js"; +import { LlmModule } from "../llm/llm.module.js"; +import { ClockModule } from "../clock/clock.module.js"; +import { LobbyAggregationService } from "./lobby-aggregation.service.js"; +import { CallService } from "./call.service.js"; +import { LobbyController } from "./lobby.controller.js"; + +@Module({ + imports: [PrismaModule, ScheduleModule, RoomModule, EmotionModule, RelationshipModule, LlmModule, ClockModule], + controllers: [LobbyController], + providers: [LobbyAggregationService, CallService], + exports: [LobbyAggregationService, CallService], +}) +export class LobbyModule {} diff --git a/apps/api/src/memory/memory-consolidation.service.ts b/apps/api/src/memory/memory-consolidation.service.ts index 4004299..5bb2c26 100644 --- a/apps/api/src/memory/memory-consolidation.service.ts +++ b/apps/api/src/memory/memory-consolidation.service.ts @@ -8,7 +8,9 @@ function normalize(content: string): string { return content.trim().toLowerCase(); } -// C-4 睡眠固化:對話中只累積在工作記憶,session 結束時才批次萃取寫入長期記憶。 +// C-4/T40 睡眠固化:對話中只累積在工作記憶,session 結束時才批次萃取寫入長期記憶。 +// T40:本服務固化的內容一律來自 1:1(SOLO)房間,因此一律標記 isPrivate=true——多人房生成 +// (RoomGenerationService)預設排除私密記憶,口風不緊原型除外(見 K-3/T40 隱私邊界)。 @Injectable() export class MemoryConsolidationService { constructor( @@ -49,6 +51,7 @@ export class MemoryConsolidationService { emotionIntensity, source: "INTERACTION", weight: isHighEmotion ? 1 + emotionIntensity : 0.5, + isPrivate: true, }, }); } diff --git a/apps/api/src/personality/personality-resolution.service.test.ts b/apps/api/src/personality/personality-resolution.service.test.ts new file mode 100644 index 0000000..03806e1 --- /dev/null +++ b/apps/api/src/personality/personality-resolution.service.test.ts @@ -0,0 +1,86 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { PersonalityResolutionService } from "./personality-resolution.service.js"; +import { getArchetypeParams } from "./archetype-params.js"; + +// T16 驗收:混房實測中日後談角色表現符合漂移後設定、本篇角色維持原設定,且彼此不互相污染。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const personalityDrift = new PersonalityDriftService(prisma); +const resolution = new PersonalityResolutionService(prisma, personalityDrift); + +const WORK_EPILOGUE = "test-t16-work-epilogue"; +const WORK_CANON = "test-t16-work-canon"; +const CHAR_EPILOGUE = "test-t16-char-epilogue"; +const CHAR_CANON = "test-t16-char-canon"; + +afterEach(async () => { + await prisma.client.personalityTraitSnapshot.deleteMany({ where: { characterId: CHAR_EPILOGUE } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_EPILOGUE, CHAR_CANON] } } }); + await prisma.client.work.deleteMany({ where: { id: { in: [WORK_EPILOGUE, WORK_CANON] } } }); +}); + +describe("PersonalityResolutionService(T16)", () => { + it("inEpilogue 角色取得漂移後 expressiveness;同房的本篇角色維持原始設定,互不污染", async () => { + await prisma.client.work.create({ + data: { id: WORK_EPILOGUE, title: "測試作品(日後談)", inEpilogue: true, anchorStoryOrder: 100 }, + }); + await prisma.client.work.create({ + data: { id: WORK_CANON, title: "測試作品(本篇)", inEpilogue: false, anchorStoryOrder: 10 }, + }); + await prisma.client.character.create({ + data: { + id: CHAR_EPILOGUE, + workId: WORK_EPILOGUE, + source: "EXISTING_WORK", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "三無", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + await prisma.client.character.create({ + data: { + id: CHAR_CANON, + workId: WORK_CANON, + source: "EXISTING_WORK", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "三無", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + // 正史已顯現的成長軌跡:外顯度隨故事推進逐漸上升,日後談應外插延續這個趨勢。 + await prisma.client.personalityTraitSnapshot.create({ + data: { characterId: CHAR_EPILOGUE, atStoryOrder: 0, note: "測試", expressivenessOverride: 0.05 }, + }); + await prisma.client.personalityTraitSnapshot.create({ + data: { characterId: CHAR_EPILOGUE, atStoryOrder: 10, note: "測試", expressivenessOverride: 0.15 }, + }); + + const base = getArchetypeParams("三無"); + const epilogueResolved = await resolution.resolve(CHAR_EPILOGUE); + const canonResolved = await resolution.resolve(CHAR_CANON); + + // 日後談角色:expressiveness 應偏離原始值(漂移後設定),其餘參數(如 conversationBaseline)不變 + // ——性格核心本身鎖定,只有外顯度依正史成長軌跡外插小幅位移。 + expect(epilogueResolved.expressiveness).not.toBe(base.expressiveness); + expect(epilogueResolved.expressiveness).toBeGreaterThan(base.expressiveness); + expect(epilogueResolved.conversationBaseline).toBe(base.conversationBaseline); + + // 本篇角色:完全維持原始設定,不受隔壁日後談角色的漂移結果影響(互不污染)。 + expect(canonResolved).toEqual(base); + }); +}); diff --git a/apps/api/src/personality/personality-resolution.service.ts b/apps/api/src/personality/personality-resolution.service.ts new file mode 100644 index 0000000..1672f66 --- /dev/null +++ b/apps/api/src/personality/personality-resolution.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { getArchetypeParams, type ArchetypeParams } from "./archetype-params.js"; + +// T16:混房的人格一致性——inEpilogue 作品的角色改取漂移後人格(目前只有 expressiveness 會被漂移, +// 見 PersonalityDriftService 的說明:性格核心鎖定不變,只有外顯度依正史已顯現的成長軌跡小幅位移), +// 其餘(非日後談)角色沿用本篇原始設定。每次呼叫都各自查該角色自己的 Work,不共用、不快取跨角色 +// 的結果,確保混房時彼此的設定不會互相污染。 +@Injectable() +export class PersonalityResolutionService { + constructor( + private readonly prisma: PrismaService, + private readonly personalityDrift: PersonalityDriftService, + ) {} + + async resolve(characterId: string): Promise { + const character = await this.prisma.client.character.findUniqueOrThrow({ + where: { id: characterId }, + include: { work: true }, + }); + const base = getArchetypeParams(character.personalityArchetype); + if (!character.work?.inEpilogue) { + return base; + } + const drift = await this.personalityDrift.computeDrift(characterId, character.work.anchorStoryOrder); + return { ...base, expressiveness: drift.expressiveness }; + } +} diff --git a/apps/api/src/personality/personality.module.ts b/apps/api/src/personality/personality.module.ts index 175b3d7..ad23fe8 100644 --- a/apps/api/src/personality/personality.module.ts +++ b/apps/api/src/personality/personality.module.ts @@ -1,14 +1,16 @@ import { Module } from "@nestjs/common"; import { PrismaModule } from "../prisma/prisma.module.js"; import { EmotionModule } from "../emotion/emotion.module.js"; +import { EpilogueModule } from "../epilogue/epilogue.module.js"; import { ContrastBehaviorService } from "./contrast-behavior.service.js"; import { CharacterCreationService } from "./character-creation.service.js"; +import { PersonalityResolutionService } from "./personality-resolution.service.js"; import { PersonalityController } from "./personality.controller.js"; @Module({ - imports: [PrismaModule, EmotionModule], + imports: [PrismaModule, EmotionModule, EpilogueModule], controllers: [PersonalityController], - providers: [ContrastBehaviorService, CharacterCreationService], - exports: [ContrastBehaviorService, CharacterCreationService], + providers: [ContrastBehaviorService, CharacterCreationService, PersonalityResolutionService], + exports: [ContrastBehaviorService, CharacterCreationService, PersonalityResolutionService], }) export class PersonalityModule {} diff --git a/apps/api/src/romance/confession.service.ts b/apps/api/src/romance/confession.service.ts index 9b5410c..ee8df05 100644 --- a/apps/api/src/romance/confession.service.ts +++ b/apps/api/src/romance/confession.service.ts @@ -3,6 +3,7 @@ import { PrismaService } from "../prisma/prisma.service.js"; import { EmotionService, dominantState } from "../emotion/emotion.service.js"; import { RomanceService } from "./romance.service.js"; import { RomanceEligibilityService } from "./romance-eligibility.service.js"; +import { isOutsideSoloRoom } from "./room-context-guard.js"; import { CONFESSION_METER_THRESHOLD, AWKWARD_PERIOD_DAYS, @@ -37,7 +38,12 @@ export class ConfessionService { private readonly emotion: EmotionService, ) {} - async confess(characterId: string, userId: string, now: Date = new Date()): Promise { + async confess(characterId: string, userId: string, now: Date = new Date(), roomId?: string): Promise { + // T42:房型已轉為 GROUP/LOBBY/SELF_CHAT 時,告白一律不可用——不消耗嘗試次數、不記錄拒絕。 + if (await isOutsideSoloRoom(this.prisma, roomId)) { + return { outcome: "INELIGIBLE", romanceMeter: 0, consecutiveRejections: 0 }; + } + const eligible = await this.eligibility.getEligibility(characterId); if (!eligible.romanceAxisEligible) { return { outcome: "INELIGIBLE", romanceMeter: 0, consecutiveRejections: 0 }; diff --git a/apps/api/src/romance/milestone.service.ts b/apps/api/src/romance/milestone.service.ts index 6635344..c133c92 100644 --- a/apps/api/src/romance/milestone.service.ts +++ b/apps/api/src/romance/milestone.service.ts @@ -2,6 +2,7 @@ import { Injectable } from "@nestjs/common"; import type { Archetype } from "../personality/archetype-params.js"; import { PrismaService } from "../prisma/prisma.service.js"; import { RomanceService } from "./romance.service.js"; +import { isOutsideSoloRoom } from "./room-context-guard.js"; import { MILESTONE_MIN_TIER, PARTNER_STABLE_EVENT_COUNT, type MilestoneType } from "./constants.js"; export interface MilestoneResult { @@ -47,7 +48,13 @@ export class MilestoneService { userId: string, milestoneType: MilestoneType, now: Date = new Date(), + roomId?: string, ): Promise { + // T42:房型已轉為 GROUP/LOBBY/SELF_CHAT 時,親密表現里程碑一律禁止——視同尚未達到任何層級。 + if (await isOutsideSoloRoom(this.prisma, roomId)) { + return { allowed: false, isFirstTime: false, reactionLine: "……這裡人多,不太方便。" }; + } + const relationship = await this.romance.getState(characterId, userId, now); const currentTier = tierFor(relationship.romanceStage, relationship.romanceEventsInStage); const requiredTier = MILESTONE_MIN_TIER[milestoneType]; diff --git a/apps/api/src/romance/romance-eligibility.service.ts b/apps/api/src/romance/romance-eligibility.service.ts index fc63afb..d6d21eb 100644 --- a/apps/api/src/romance/romance-eligibility.service.ts +++ b/apps/api/src/romance/romance-eligibility.service.ts @@ -1,6 +1,7 @@ import { Injectable } from "@nestjs/common"; import { PrismaService } from "../prisma/prisma.service.js"; import { AgeDeterminationService } from "./age-determination.service.js"; +import { isOutsideSoloRoom } from "./room-context-guard.js"; export interface RomanceEligibility { romanceAxisEligible: boolean; // 戀愛軸是否可啟動(含後日談自然成年者) @@ -28,15 +29,20 @@ export class RomanceEligibilityService { return { romanceAxisEligible: currentAdult, adultModeEligible: canonAdult, isEpilogueAdult }; } - async checkAdultContentAllowed(characterId: string, userId: string): Promise { - const result = await this.evaluate(characterId, userId); + async checkAdultContentAllowed(characterId: string, userId: string, roomId?: string): Promise { + const result = await this.evaluate(characterId, userId, roomId); await this.prisma.client.adultContentAttemptLog.create({ data: { characterId, userId, allowed: result.allowed, reason: result.reason }, }); return result; } - private async evaluate(characterId: string, userId: string): Promise { + private async evaluate(characterId: string, userId: string, roomId?: string): Promise { + // T42:房型已轉為 GROUP/LOBBY/SELF_CHAT 時,成人內容一律禁止——房型本身是硬邊界, + // 不受角色資格或使用者 opt-in 狀態影響,優先於下方其他判斷。 + if (await isOutsideSoloRoom(this.prisma, roomId)) { + return { allowed: false, reason: "目前在多人房(GROUP/LOBBY/SELF_CHAT),成人內容僅限 1:1 房間" }; + } const eligibility = await this.getEligibility(characterId); if (!eligibility.adultModeEligible) { return { diff --git a/apps/api/src/romance/romance.controller.ts b/apps/api/src/romance/romance.controller.ts index b544af3..760c3bf 100644 --- a/apps/api/src/romance/romance.controller.ts +++ b/apps/api/src/romance/romance.controller.ts @@ -25,12 +25,14 @@ interface RomanceEventBody { interface UserOnlyBody { userId: string; now?: string; + roomId?: string; // T42:帶房間時依房型套用邊界(僅 SOLO 可用) } interface MilestoneBody { userId: string; milestoneType: MilestoneType; now?: string; + roomId?: string; // T42:帶房間時依房型套用邊界(僅 SOLO 可用) } interface AdultConsentBody { @@ -77,7 +79,7 @@ export class RomanceController { // L-7 引擎層唯一入口:任何嘗試皆記錄,不論放行與否。 @Post(":characterId/adult-content-check") async checkAdultContent(@Param("characterId") characterId: string, @Body() body: UserOnlyBody) { - return this.eligibility.checkAdultContentAllowed(characterId, body.userId); + return this.eligibility.checkAdultContentAllowed(characterId, body.userId, body.roomId); } @Post("adult-mode/consent") @@ -108,7 +110,7 @@ export class RomanceController { @Post(":characterId/confess") async confess(@Param("characterId") characterId: string, @Body() body: UserOnlyBody) { - return this.confession.confess(characterId, body.userId, body.now ? new Date(body.now) : undefined); + return this.confession.confess(characterId, body.userId, body.now ? new Date(body.now) : undefined, body.roomId); } @Post(":characterId/milestone") @@ -118,6 +120,7 @@ export class RomanceController { body.userId, body.milestoneType, body.now ? new Date(body.now) : undefined, + body.roomId, ); } } diff --git a/apps/api/src/romance/room-boundary.test.ts b/apps/api/src/romance/room-boundary.test.ts new file mode 100644 index 0000000..562939f --- /dev/null +++ b/apps/api/src/romance/room-boundary.test.ts @@ -0,0 +1,103 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { RoomEventsService } from "../room/room-events.service.js"; +import { LobbyService } from "../room/lobby.service.js"; +import { RoomService } from "../room/room.service.js"; +import { RomanceService } from "./romance.service.js"; +import { RomanceEligibilityService } from "./romance-eligibility.service.js"; +import { AgeDeterminationService } from "./age-determination.service.js"; +import { ConfessionService } from "./confession.service.js"; +import { MilestoneService } from "./milestone.service.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; + +// T42 驗收:房型轉為 GROUP 後,戀愛里程碑/告白/成人內容一律禁止,不看關係數值。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const roomLobby = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, roomLobby, roomEvents); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const ageDetermination = new AgeDeterminationService(prisma); +const eligibility = new RomanceEligibilityService(prisma, ageDetermination); +const romanceService = new RomanceService(prisma, relationshipService, eligibility); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const confessionService = new ConfessionService(prisma, romanceService, eligibility, emotionService); +const milestoneService = new MilestoneService(prisma, romanceService); + +const CHARACTER_ID = "test-t42-romance-char"; +const USER_ID = "test-t42-romance-user"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId: USER_ID } }); + await prisma.client.romanceEventLog.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.adultContentAttemptLog.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.characterAgeEvidence.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.relationship.deleteMany({ where: { characterId: CHARACTER_ID, userId: USER_ID } }); + await prisma.client.adultModeConsent.deleteMany({ where: { userId: USER_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHARACTER_ID } }); + await prisma.client.user.deleteMany({ where: { id: USER_ID } }); +}); + +describe("戀愛系統房型邊界(T42)", () => { + it("GROUP 房內告白/里程碑/成人內容一律被禁止,SOLO 房內不受影響", async () => { + await prisma.client.user.create({ data: { id: USER_ID, name: "測試使用者" } }); + await prisma.client.character.create({ + data: { + id: CHARACTER_ID, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + await prisma.client.characterAgeEvidence.create({ + data: { characterId: CHARACTER_ID, evidenceType: "OFFICIAL_STATED", impliesAdult: true, isEpilogue: false, description: "測試" }, + }); + await prisma.client.relationship.create({ + data: { + characterId: CHARACTER_ID, + userId: USER_ID, + intimacy: 80, + trust: 80, + stage: "BONDED", + romanceStage: "AMBIGUOUS", + romanceMeter: 90, + }, + }); + await prisma.client.adultModeConsent.create({ data: { userId: USER_ID, verifiedAdult: true, optedIn: true } }); + + const soloRoom = await roomService.create(USER_ID, [], "SOLO"); + const groupRoom = await roomService.create(USER_ID, [], "GROUP"); + + // SOLO 房:正常運作(不受 T42 邊界影響)。 + const soloConfess = await confessionService.confess(CHARACTER_ID, USER_ID, clock.now(), soloRoom.id); + expect(soloConfess.outcome).toBe("ACCEPTED"); + const soloMilestone = await milestoneService.attemptMilestone(CHARACTER_ID, USER_ID, "DISTANCE_SHORTENED", clock.now(), soloRoom.id); + expect(soloMilestone.allowed).toBe(true); + const soloAdult = await eligibility.checkAdultContentAllowed(CHARACTER_ID, USER_ID, soloRoom.id); + expect(soloAdult.allowed).toBe(true); + + // GROUP 房:一律禁止,即使關係數值完全達標。 + const groupConfess = await confessionService.confess(CHARACTER_ID, USER_ID, clock.now(), groupRoom.id); + expect(groupConfess.outcome).toBe("INELIGIBLE"); + const groupMilestone = await milestoneService.attemptMilestone(CHARACTER_ID, USER_ID, "DISTANCE_SHORTENED", clock.now(), groupRoom.id); + expect(groupMilestone.allowed).toBe(false); + const groupAdult = await eligibility.checkAdultContentAllowed(CHARACTER_ID, USER_ID, groupRoom.id); + expect(groupAdult.allowed).toBe(false); + expect(groupAdult.reason).toContain("多人房"); + }, 20000); +}); diff --git a/apps/api/src/romance/room-context-guard.ts b/apps/api/src/romance/room-context-guard.ts new file mode 100644 index 0000000..3023b79 --- /dev/null +++ b/apps/api/src/romance/room-context-guard.ts @@ -0,0 +1,9 @@ +import { PrismaService } from "../prisma/prisma.service.js"; + +// T42:戀愛里程碑/告白/成人內容一律限 1:1(SOLO)房間;房型一旦轉為 GROUP/LOBBY/SELF_CHAT, +// 這些互動全面禁止——不看關係階段、不看使用者是否已 opt-in,房型本身就是硬邊界。 +export async function isOutsideSoloRoom(prisma: PrismaService, roomId: string | undefined): Promise { + if (!roomId) return false; // 未帶 roomId 視為既有非房間情境(相容舊呼叫端),不套用房型邊界 + const room = await prisma.client.room.findUnique({ where: { id: roomId } }); + return room !== null && room.mode !== "SOLO"; +} diff --git a/apps/api/src/room/behavior-selection.service.test.ts b/apps/api/src/room/behavior-selection.service.test.ts new file mode 100644 index 0000000..75b6981 --- /dev/null +++ b/apps/api/src/room/behavior-selection.service.test.ts @@ -0,0 +1,143 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, type Room } from "./room.service.js"; +import { BehaviorSelectionService, type BehaviorSelectionResult } from "./behavior-selection.service.js"; + +// T6 驗收:離開只在三項動因(行程/情緒耗盡/話題耗盡)之一成立時才進入候選;多輪抽樣下四種行為皆會出現。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); // 週三 13:00 台北,FREE 時段 +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const behaviorSelection = new BehaviorSelectionService(prisma, emotionService, scheduleService, sleepDebtService, new PersonalityResolutionService(prisma, new PersonalityDriftService(prisma))); + +const userId = "test-behavior-user"; +const CHAR_A = "test-behavior-char-a"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.emotionState.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.scheduleSlot.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_A } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +// 依序(非併發)抽樣:better-sqlite3 是單一寫入者,併發大量 Promise.all 會在資料量大的共用 dev.db 上 +// 造成明顯的鎖等待,序列執行較穩定不易逾時。 +async function sampleMany(room: Room, characterId: string, baseTime: Date, count: number): Promise { + const results: BehaviorSelectionResult[] = []; + for (let i = 0; i < count; i++) { + results.push(await behaviorSelection.selectBehavior(room, characterId, new Date(baseTime.getTime() + i * 1000))); + } + return results; +} + +async function createCharacter(archetype: string) { + await prisma.client.character.create({ + data: { + id: CHAR_A, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: archetype, + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); +} + +describe("BehaviorSelectionService(T6)", () => { + it("沒有任何離開動因成立時,LEAVE 權重為 0、絕不會被抽中", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter("元氣"); // FREE 時段、預設情緒 CALM、無行程 + const room = await roomService.create(userId, [CHAR_A], "SELF_CHAT", "測試話題"); + + const results = await sampleMany(room, CHAR_A, clock.now(), 15); + expect(results.every((r) => r.kind !== "LEAVE")).toBe(true); + }, 30000); + + it("行程忙碌(BUSY)時,LEAVE 有非零權重且 leaveReason 為 SCHEDULE", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter("元氣"); + await prisma.client.scheduleSlot.create({ + data: { characterId: CHAR_A, dayType: "WEEKDAY", startMinute: 720, endMinute: 900, status: "BUSY" }, + }); + const room = await roomService.create(userId, [CHAR_A], "SELF_CHAT", "測試話題"); + + // 多次抽樣,統計是否確實可能抽到 LEAVE(機率性行為,抽夠多次應該至少中一次)。 + const results = await sampleMany(room, CHAR_A, clock.now(), 25); + const leaveResults = results.filter((r) => r.kind === "LEAVE"); + expect(leaveResults.length).toBeGreaterThan(0); + expect(leaveResults.every((r) => r.leaveReason === "SCHEDULE")).toBe(true); + }, 30000); + + it("情緒耗盡(SAD 高強度)時,LEAVE 的 leaveReason 為 EMOTIONAL_EXHAUSTION", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter("元氣"); + await prisma.client.emotionState.create({ data: { characterId: CHAR_A, sad: 90, calm: 10 } }); + const room = await roomService.create(userId, [CHAR_A], "SELF_CHAT", "測試話題"); + + const results = await sampleMany(room, CHAR_A, clock.now(), 25); + const leaveResults = results.filter((r) => r.kind === "LEAVE"); + expect(leaveResults.length).toBeGreaterThan(0); + expect(leaveResults.every((r) => r.leaveReason === "EMOTIONAL_EXHAUSTION")).toBe(true); + }, 30000); + + it("多輪抽樣下 TALK/ACTION/DELEGATE 都可能出現(元氣:conversationBaseline 與 expressiveness 皆高)", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter("元氣"); + const room = await roomService.create(userId, [CHAR_A], "SELF_CHAT", "測試話題"); + + const kinds = new Set((await sampleMany(room, CHAR_A, clock.now(), 35)).map((r) => r.kind)); + expect(kinds.has("TALK")).toBe(true); + expect(kinds.has("ACTION")).toBe(true); + expect(kinds.has("DELEGATE")).toBe(true); + }, 30000); + + it("T32:睡眠債達升級門檻時,LEAVE 的 leaveReason 為 SLEEP_DEBT,優先於一般行程理由 SCHEDULE", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter("元氣"); + // 同時符合一般行程忙碌動因,驗證睡眠債升級後會優先蓋過 SCHEDULE。 + await prisma.client.scheduleSlot.create({ + data: { characterId: CHAR_A, dayType: "WEEKDAY", startMinute: 720, endMinute: 900, status: "BUSY" }, + }); + await prisma.client.sleepDebt.create({ data: { characterId: CHAR_A, accumulatedMinutes: 200 } }); + const room = await roomService.create(userId, [CHAR_A], "SELF_CHAT", "測試話題"); + + const results = await sampleMany(room, CHAR_A, clock.now(), 25); + const leaveResults = results.filter((r) => r.kind === "LEAVE"); + expect(leaveResults.length).toBeGreaterThan(0); + expect(leaveResults.every((r) => r.leaveReason === "SLEEP_DEBT")).toBe(true); + }, 30000); + + it("T32:睡眠債活躍(未達升級門檻)時,ACTION 權重提高,更容易抽到打瞌睡演出", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter("三無"); // expressiveness 極低,平常幾乎不會抽到 ACTION + await prisma.client.sleepDebt.create({ data: { characterId: CHAR_A, accumulatedMinutes: 90 } }); + const room = await roomService.create(userId, [CHAR_A], "SELF_CHAT", "測試話題"); + + const kinds = (await sampleMany(room, CHAR_A, clock.now(), 40)).map((r) => r.kind); + expect(kinds).toContain("ACTION"); + }, 30000); +}); diff --git a/apps/api/src/room/behavior-selection.service.ts b/apps/api/src/room/behavior-selection.service.ts new file mode 100644 index 0000000..4c28bd1 --- /dev/null +++ b/apps/api/src/room/behavior-selection.service.ts @@ -0,0 +1,98 @@ +import { Injectable } from "@nestjs/common"; +import type { RoomTurnKind } from "@kokorone/db"; +import type { EmotionState } from "@kokorone/shared"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { EmotionService, dominantState } from "../emotion/emotion.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService, SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES, SLEEP_DEBT_ESCALATION_THRESHOLD_MINUTES } from "../schedule/sleep-debt.service.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; +import { createSeededRandom, hashToSeed } from "../llm/seeded-random.js"; +import { isStalling } from "./stall-detection.js"; +import { STALL_CHECK_WINDOW } from "./constants.js"; +import type { Room } from "./room.service.js"; + +export type LeaveReason = "SCHEDULE" | "EMOTIONAL_EXHAUSTION" | "TOPIC_EXHAUSTED" | "SLEEP_DEBT"; + +export interface BehaviorSelectionResult { + kind: RoomTurnKind; + leaveReason?: LeaveReason; // 只有 kind === "LEAVE" 時才有值,對應四項離開動因之一 +} + +const DELEGATE_BASELINE_WEIGHT = 0.15; +const ACTION_WEIGHT_SCALE = 0.4; +const TALK_WEIGHT_FLOOR = 0.2; // 即使 conversationBaseline 極低(如三無),TALK 仍保留最低權重不至於完全消失 +const HIGH_EMOTION_INTENSITY_THRESHOLD = 70; // EmotionState 各維度 0~100,達此值視為「情緒耗盡」等級 +const LEAVE_WEIGHT_WHEN_ELIGIBLE = 0.5; +const LEAVE_WEIGHT_WHEN_SLEEP_DEBT_ESCALATED = 0.75; // T32:撐不住想睡,比一般行程理由更強烈 +const SLEEP_DEBT_ACTION_WEIGHT_BONUS = 0.3; // T32:打瞌睡演出——睡眠債活躍時 ACTION 權重額外加成 + +function emotionFieldFor(tag: string): keyof Omit { + return tag === "CALM" ? "calm" : (tag.toLowerCase() as "joy" | "sad" | "alert" | "shy" | "grumpy"); +} + +function weightedSample(weights: Partial>, seed: number): RoomTurnKind { + const entries = (Object.entries(weights) as [RoomTurnKind, number][]).filter(([, weight]) => weight > 0); + const total = entries.reduce((sum, [, weight]) => sum + weight, 0); + if (total <= 0) return "TALK"; // 保底:理論上不會發生(TALK 恆有 floor 權重),防禦性 fallback + const roll = createSeededRandom(seed)() * total; + let acc = 0; + for (const [kind, weight] of entries) { + acc += weight; + if (roll < acc) return kind; + } + return entries[entries.length - 1][0]; +} + +// T6/T32:由程式依 ARCHETYPE_PARAMS+情緒/行程/話題狀態/睡眠債算權重抽樣決定行為種類(TALK/ +// ACTION/DELEGATE/LEAVE),不交給 LLM 決定——LLM 只負責生成該行為的內容。LEAVE 只在動因成立時 +// 才會有非零權重、才可能被抽中:行程(忙碌/睡眠)、情緒(情緒耗盡)、話題耗盡(isStalling)、 +// 睡眠債(T32:熬夜累積的債務達門檻,升級為「撐不住想睡」,優先於一般行程理由)。 +@Injectable() +export class BehaviorSelectionService { + constructor( + private readonly prisma: PrismaService, + private readonly emotion: EmotionService, + private readonly schedule: ScheduleService, + private readonly sleepDebt: SleepDebtService, + private readonly personalityResolution: PersonalityResolutionService, + ) {} + + async selectBehavior(room: Room, characterId: string, now: Date = new Date()): Promise { + await this.sleepDebt.reconcileToday(characterId, now); + + // T16:inEpilogue 角色改用漂移後的 expressiveness(僅影響 ACTION 權重),非日後談角色維持原始 + // 設定;每次都各自查該角色自己的 Work,混房時不會互相污染。 + const archetypeParams = await this.personalityResolution.resolve(characterId); + + const emotionState = await this.emotion.getState(characterId, now); + const dominant = dominantState(emotionState); + const intensity = emotionState[emotionFieldFor(dominant)] as number; + + const scheduleInfo = await this.schedule.getInfo(characterId, now); + const scheduleEligible = scheduleInfo.slot?.status === "BUSY" || scheduleInfo.slot?.status === "SLEEP"; + const emotionalExhaustion = (dominant === "SAD" || dominant === "GRUMPY") && intensity >= HIGH_EMOTION_INTENSITY_THRESHOLD; + const topicExhausted = isStalling(room.turns.slice(-STALL_CHECK_WINDOW).map((turn) => turn.content)); + const debtMinutes = await this.sleepDebt.getDebtMinutes(characterId); + const sleepDebtEscalated = debtMinutes >= SLEEP_DEBT_ESCALATION_THRESHOLD_MINUTES; + + // T32:睡眠債達升級門檻時,優先於一般行程理由——「撐不住想睡」比「行程到了」更強烈、更明說。 + let leaveReason: LeaveReason | undefined; + if (sleepDebtEscalated) leaveReason = "SLEEP_DEBT"; + else if (scheduleEligible) leaveReason = "SCHEDULE"; + else if (emotionalExhaustion) leaveReason = "EMOTIONAL_EXHAUSTION"; + else if (topicExhausted) leaveReason = "TOPIC_EXHAUSTED"; + + const sleepDebtActive = debtMinutes >= SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES; + const weights: Partial> = { + TALK: TALK_WEIGHT_FLOOR + archetypeParams.conversationBaseline, + ACTION: archetypeParams.expressiveness * ACTION_WEIGHT_SCALE + (sleepDebtActive ? SLEEP_DEBT_ACTION_WEIGHT_BONUS : 0), + DELEGATE: DELEGATE_BASELINE_WEIGHT, + LEAVE: leaveReason ? (sleepDebtEscalated ? LEAVE_WEIGHT_WHEN_SLEEP_DEBT_ESCALATED : LEAVE_WEIGHT_WHEN_ELIGIBLE) : 0, + }; + + const seed = hashToSeed(`${room.id}:${room.turnCounter}:${characterId}:${now.getTime()}:behavior`); + const kind = weightedSample(weights, seed); + + return { kind, leaveReason: kind === "LEAVE" ? leaveReason : undefined }; + } +} diff --git a/apps/api/src/room/character-relationship.service.test.ts b/apps/api/src/room/character-relationship.service.test.ts new file mode 100644 index 0000000..d801849 --- /dev/null +++ b/apps/api/src/room/character-relationship.service.test.ts @@ -0,0 +1,55 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; + +// T33 回歸測試:加上 Redis 讀寫快取後,get/set 的既有語意(未設定回傳中性值 50、set 後讀到新值、 +// 更新後不會讀到舊值)必須維持不變——本環境沒有可用的 Redis(同 EmotionService 既有的快取層一樣, +// 未連線時一律安全退回直接讀寫 Prisma,見 character-relationship.service.ts 的 try/catch), +// 因此這裡實際測到的是「Redis 不可用」的退回路徑,與快取命中路徑的正確性需在有 Redis 的環境另行確認。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const service = new CharacterRelationshipService(prisma); + +const CHAR_A = "test-charrel-a"; +const CHAR_B = "test-charrel-b"; + +afterEach(async () => { + await prisma.client.characterRelationship.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_A, CHAR_B] } } }); +}); + +async function createCharacter(id: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); +} + +describe("CharacterRelationshipService(T33 快取回歸)", () => { + it("未設定時回傳中性值 50;set 後讀到新值;再次 set 更新後讀到最新值(不是舊快取)", async () => { + await createCharacter(CHAR_A); + await createCharacter(CHAR_B); + + expect(await service.getAffinity(CHAR_A, CHAR_B)).toBe(50); + + await service.set(CHAR_A, CHAR_B, 80, "喜歡"); + expect(await service.getAffinity(CHAR_A, CHAR_B)).toBe(80); + + await service.set(CHAR_A, CHAR_B, 20, "吵架"); + expect(await service.getAffinity(CHAR_A, CHAR_B)).toBe(20); + }, 20000); +}); diff --git a/apps/api/src/room/character-relationship.service.ts b/apps/api/src/room/character-relationship.service.ts index 32d4a65..2650864 100644 --- a/apps/api/src/room/character-relationship.service.ts +++ b/apps/api/src/room/character-relationship.service.ts @@ -1,25 +1,78 @@ import { Injectable } from "@nestjs/common"; import { PrismaService } from "../prisma/prisma.service.js"; +import { getRedisClient } from "../cache/redis-client.js"; + +const REDIS_KEY_PREFIX = "kokorone:character-affinity:"; +// T28:同房互動的關係值小幅累積——初次同房從中性 50 開始,之後每次固化(房間結束)都朝更熟悉一點 +// 位移;夠小的固定值即可,跨作品/同作品一視同仁(跨作品混房也照常累積,不特別區分)。 +const INTERACTION_AFFINITY_DELTA = 2; + +function cacheKey(characterId: string, otherCharacterId: string): string { + return `${REDIS_KEY_PREFIX}${characterId}:${otherCharacterId}`; +} // K-2/K-4 角色間關係:同作品角色互損、拆台、護短、吃醋等化學反應的資料來源。 // 有向邊:characterId 對 otherCharacterId 的觀感,兩邊可以各自設定、不必對稱。 +// T33:多人房每輪每位候選都要查一次 affinity,改走 Redis 快取當熱路徑——Prisma/SQLite 仍是唯一 +// 持久真實來源,Redis 不可用或未命中都直接退回原本讀 Prisma 的行為(同 EmotionService 既有慣例); +// set() 寫入時一併使該筆快取失效,不會有「改了關係但快取還是舊值」的問題。 @Injectable() export class CharacterRelationshipService { constructor(private readonly prisma: PrismaService) {} async set(characterId: string, otherCharacterId: string, affinity: number, dynamic?: string) { - return this.prisma.client.characterRelationship.upsert({ + const result = await this.prisma.client.characterRelationship.upsert({ where: { characterId_otherCharacterId: { characterId, otherCharacterId } }, update: { affinity, dynamic }, create: { characterId, otherCharacterId, affinity, dynamic }, }); + try { + await getRedisClient().del(cacheKey(characterId, otherCharacterId)); + } catch { + // Redis 不可用:沒有快取可失效,下一次 getAffinity 本來就會直接讀 Prisma。 + } + return result; } // 未設定關係時,回傳中性值(50)——同作品角色預設不特別親近也不特別有心結。 async getAffinity(characterId: string, otherCharacterId: string): Promise { + const key = cacheKey(characterId, otherCharacterId); + try { + const cached = await getRedisClient().get(key); + if (cached !== null) return Number(cached); + } catch { + // Redis 不可用:退回直接讀 Prisma。 + } + const row = await this.prisma.client.characterRelationship.findUnique({ where: { characterId_otherCharacterId: { characterId, otherCharacterId } }, }); - return row?.affinity ?? 50; + const affinity = row?.affinity ?? 50; + try { + await getRedisClient().set(key, String(affinity)); + } catch { + // Redis 不可用:純粹跳過快取寫入,不影響回傳值。 + } + return affinity; + } + + // T28:同房互動後的關係值累積——初次同房(尚無既有關係列)視為中性 50 起算,之後每次固化都朝 + // 更熟悉一點小幅位移,夾在 0~100 之間。呼叫端(RoomConsolidationService)於房間關房固化時, + // 對每一對「同一場都有真的發言」的角色雙向各呼叫一次。 + async recordInteraction(characterId: string, otherCharacterId: string): Promise { + const current = await this.getAffinity(characterId, otherCharacterId); + const next = Math.max(0, Math.min(100, current + INTERACTION_AFFINITY_DELTA)); + await this.set(characterId, otherCharacterId, next); + } + + // T35 目擊者反應:旁觀角色對「使用者與另一位角色曖昧互動」的反應,同時調整關係值並留下事件紀錄 + // (CharacterRelationshipEventLog),供未來人格對話/關係史回顧引用這段「吃味/替對方開心」的事件。 + async recordWitnessReaction(witnessId: string, targetId: string, delta: number, description: string): Promise { + const current = await this.getAffinity(witnessId, targetId); + const next = Math.max(0, Math.min(100, current + delta)); + await this.set(witnessId, targetId, next); + await this.prisma.client.characterRelationshipEventLog.create({ + data: { characterId: witnessId, otherCharacterId: targetId, delta, description }, + }); } } diff --git a/apps/api/src/room/constants.ts b/apps/api/src/room/constants.ts index f8c3410..4c3aed8 100644 --- a/apps/api/src/room/constants.ts +++ b/apps/api/src/room/constants.ts @@ -28,11 +28,25 @@ export const GROUP_RESERVE_INTIMACY_PENALTY = 35; export const TSUNDERE_EXTRA_GROUP_PENALTY = 15; // K-6 角色自聊 +// T6:不再是「累積到此輪數就整室結束」的硬上限——結束改由每位角色各自的 LEAVE 判定驅動(見 +// BehaviorSelectionService),房間可連續推進超過此值。保留常數供未來「單次推進批次上限」使用 +// (T8 排程器一次 tick 最多處理幾輪),目前尚無呼叫端消費。 export const SELF_CHAT_MAX_TURNS = 12; export const STALL_CHECK_WINDOW = 3; // 檢查最近幾輪是否開始空轉 -export const TOPIC_TWIST_LINES = [ - "對了,說到這個,我突然想到另一件事……", - "欸,先別說這個了,你們聽說了嗎——", - "話說回來,今天發生了一件蠻好玩的事。", -]; +// T6:LEAVE 動因之一(話題耗盡)離場時沿用的台詞。 export const SELF_CHAT_WRAP_UP_LINES = ["好啦,先聊到這裡吧,晚點再聊!", "時間也差不多了,先這樣吧~"]; + +// T37:房間自走推進的「應有間隔」。P1 階段先用固定值佔位;T22 已實作依氣氛/情緒/記憶/行為動態 +// 計算的 RoomIntervalService,本常數留給尚未接上動態間隔的呼叫端(T8 會把排程器改為消費 +// RoomIntervalService 的計算結果,屆時本常數即可淘汰)。 +export const ROOM_ADVANCE_INTERVAL_MS = 30_000; +// T37 排程 tick 週期(node-cron 表達式):遠小於 ROOM_ADVANCE_INTERVAL_MS,確保到期後很快被掃到。 +export const ROOM_SCHEDULER_TICK_CRON = "*/10 * * * * *"; + +// T22 動態推進間隔的上下限初值(第 5 輪決定):熱度最高時貼下限、完全空轉時貼上限。 +export const ROOM_ADVANCE_INTERVAL_LOWER_MS = 10_000; // 10 秒 +export const ROOM_ADVANCE_INTERVAL_UPPER_MS = 5 * 60_000; // 5 分鐘 + +// T40 隱私邊界:口風不緊原型在群聊中把私密(1:1)記憶說出來算「說溜嘴」,對使用者的信任/親密度 +// 給予懲罰(負值),代表這段本該只屬於兩人的私密內容被說給旁人聽,關係打了折扣。 +export const SLIP_INTIMACY_PENALTY = -3; diff --git a/apps/api/src/room/cross-work-room.test.ts b/apps/api/src/room/cross-work-room.test.ts new file mode 100644 index 0000000..cbace7b --- /dev/null +++ b/apps/api/src/room/cross-work-room.test.ts @@ -0,0 +1,140 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; +import { RoomConsolidationService } from "./room-consolidation.service.js"; +import { buildCrossWorldNote, isCrossWork } from "./cross-world-note.js"; + +// T28 驗收:跨作品同房時生成上下文附上世界觀提示、關係值隨互動變化(初次同房中性起算)、 +// 記憶查得到該次相遇且標記來源為房間互動(非正典),矛盾偵測不會把它當成作品事實。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService(prisma, emotionService, relationshipService, retriever, characterRelationship, romanceService, mockProvider, new GlobalPauseService()); +const consolidation = new RoomConsolidationService(prisma, roomService, new RuleBasedEmotionTagger(), characterRelationship); + +const userId = "test-crossword-user"; +const WORK_A = "test-crossword-work-a"; +const WORK_B = "test-crossword-work-b"; +const CHAR_A = "test-crossword-char-a"; +const CHAR_B = "test-crossword-char-b"; +const CHAR_A2 = "test-crossword-char-a2"; // 與 CHAR_A 同作品,作對照組 + +afterEach(async () => { + await prisma.client.episodicMemory.deleteMany({ where: { characterId: { in: [CHAR_A, CHAR_B, CHAR_A2] } } }); + await prisma.client.characterRelationship.deleteMany({ where: { characterId: { in: [CHAR_A, CHAR_B, CHAR_A2] } } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_A, CHAR_B, CHAR_A2] } } }); + await prisma.client.work.deleteMany({ where: { id: { in: [WORK_A, WORK_B] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string, workId: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + workId, + source: "EXISTING_WORK", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); +} + +describe("跨作品混房(T28)", () => { + it("isCrossWork/buildCrossWorldNote:純函式的判定邏輯", () => { + expect(isCrossWork("work-a", "work-b")).toBe(true); + expect(isCrossWork("work-a", "work-a")).toBe(false); + expect(isCrossWork(null, null)).toBe(false); // 皆為原創(無掛作品),不算跨作品 + expect(isCrossWork("work-a", null)).toBe(true); + + const note = buildCrossWorldNote("小乙", "測試作品乙"); + expect(note).toContain("小乙"); + expect(note).toContain("測試作品乙"); + expect(note).toContain("不可以把TA的背景設定當成妳自己世界本來就知道的事"); + }); + + it("對來自不同作品的對象生成回覆時,實際生成流程正常運作(不拋錯、有內容);同作品對象亦同", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await prisma.client.work.create({ data: { id: WORK_A, title: "測試作品甲" } }); + await prisma.client.work.create({ data: { id: WORK_B, title: "測試作品乙" } }); + await createCharacter(CHAR_A, WORK_A, "小甲"); + await createCharacter(CHAR_B, WORK_B, "小乙"); + await createCharacter(CHAR_A2, WORK_A, "小甲二"); + + const room = await roomService.create(userId, [CHAR_A, CHAR_B, CHAR_A2], "GROUP"); + + // 小甲對小乙(不同作品)發言:內部會組出 crossWorldNote 並帶進 GenerationContext(見 + // RoomGenerationService,實際內容由上一個測試對純函式直接驗證),這裡確認整條路徑不受影響。 + const replyToB = await generation.generateReply(room, CHAR_A, CHAR_B, "小乙", "你也在這裡?", { now: clock.now() }); + expect(replyToB.text).toBeTruthy(); + + // 小甲對小甲二(同作品)發言:不會有 crossWorldNote,一樣正常生成。 + const replyToA2 = await generation.generateReply(room, CHAR_A, CHAR_A2, "小甲二", "欸你也在?", { now: clock.now() }); + expect(replyToA2.text).toBeTruthy(); + }, 20000); + + it("初次同房從中性關係起算;房間固化後關係值累積;記憶標記為房間互動(非正典)", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await prisma.client.work.create({ data: { id: WORK_A, title: "測試作品甲" } }); + await prisma.client.work.create({ data: { id: WORK_B, title: "測試作品乙" } }); + await createCharacter(CHAR_A, WORK_A, "小甲"); + await createCharacter(CHAR_B, WORK_B, "小乙"); + + // 初次同房前:中性 50。 + expect(await characterRelationship.getAffinity(CHAR_A, CHAR_B)).toBe(50); + + const room = await roomService.create(userId, [CHAR_A, CHAR_B], "GROUP"); + // 用高情緒強度+提及對方別名的內容,確保觸發既有固化規則(RoomConsolidationService 只留存 + // 高情緒或與自己有關的發言,平淡閒聊不特別留存——這是既有規則,本測試只是配合它)。 + await roomService.addTurn(room.id, CHAR_A, "小甲", "小乙!第一次遇到你,好開心!!!", clock.now()); + await roomService.addTurn(room.id, CHAR_B, "小乙", "小甲你也太誇張了吧哈哈哈!!!", clock.now()); + + await consolidation.consolidate(room.id); + + // 固化後:關係值應從中性起算後累積(變高),雙向皆有變化。 + const affinityAB = await characterRelationship.getAffinity(CHAR_A, CHAR_B); + const affinityBA = await characterRelationship.getAffinity(CHAR_B, CHAR_A); + expect(affinityAB).toBeGreaterThan(50); + expect(affinityBA).toBeGreaterThan(50); + + // 記憶查得到該次相遇,來源標記為房間互動(非正典)。 + const memoriesA = await prisma.client.episodicMemory.findMany({ where: { characterId: CHAR_A } }); + expect(memoriesA.length).toBeGreaterThan(0); + expect(memoriesA.every((m) => m.source === "INTERACTION")).toBe(true); + }, 20000); +}); diff --git a/apps/api/src/room/cross-world-note.ts b/apps/api/src/room/cross-world-note.ts new file mode 100644 index 0000000..085a62a --- /dev/null +++ b/apps/api/src/room/cross-world-note.ts @@ -0,0 +1,12 @@ +// T28:不同作品角色相遇時的世界觀提示——不是自己原本世界就認識的存在,禁止把對方設定當成自身 +// 世界既有知識,只能透過房內實際發生過的互動認識對方。純函式,方便直接單元測試。 +export function buildCrossWorldNote(speakerLabel: string, speakerWorkTitle: string | null): string { + return `${speakerLabel}來自不同的作品世界(${speakerWorkTitle ?? "未知的世界"}),不是妳原本故事裡就認識的人。妳對TA的認識僅限於這個房間裡實際發生過的對話,不可以把TA的背景設定當成妳自己世界本來就知道的事,請以「第一次遇到不同世界的人」的態度應對。`; +} + +// 兩個角色的 workId 是否視為「不同作品」——皆為 null(都沒有掛作品)不算不同,只有明確不同的 +// 已知 workId 才算跨作品。 +export function isCrossWork(workIdA: string | null, workIdB: string | null): boolean { + if (workIdA === null && workIdB === null) return false; + return workIdA !== workIdB; +} diff --git a/apps/api/src/room/delegate-templates.ts b/apps/api/src/room/delegate-templates.ts new file mode 100644 index 0000000..9b1ecad --- /dev/null +++ b/apps/api/src/room/delegate-templates.ts @@ -0,0 +1,17 @@ +import type { TaskType } from "@kokorone/db"; + +export interface DelegateTemplate { + line: string; // 寫入 RoomTurn 的台詞 + taskContent: string; // 對應建立的 Task.content + taskType: TaskType; +} + +// T7:DELEGATE 行為的台詞與對應委託內容一對一固定配對(同 LEAVE 行為的 LEAVE_LINES 作法), +// 不透過 LLM 自由生成再回頭解析——房內委託是「程式決定要不要委託、委託什麼」,LLM 自由生成的文字 +// 難以穩定解析出明確的 TaskType 與內容,固定配對能保證每次都可靠地转成 Task。 +export const DELEGATE_TEMPLATES: DelegateTemplate[] = [ + { line: "欸,我來去幫大家查一下附近有什麼好吃的,等等回報!", taskContent: "查附近有什麼好吃的", taskType: "QUERY_ORGANIZE" }, + { line: "我來把剛剛聊到的重點整理一下,晚點給你們看。", taskContent: "整理剛剛聊到的重點", taskType: "QUERY_ORGANIZE" }, + { line: "這件事交給我,我去處理一下、之後跟你們說結果。", taskContent: "處理剛剛提到的待辦事項", taskType: "TODO_TRACKING" }, + { line: "我來留意一下這件事的後續,有進展馬上講。", taskContent: "追蹤剛剛提到的事情後續", taskType: "TODO_TRACKING" }, +]; diff --git a/apps/api/src/room/lobby-behavior-params.test.ts b/apps/api/src/room/lobby-behavior-params.test.ts new file mode 100644 index 0000000..6da1484 --- /dev/null +++ b/apps/api/src/room/lobby-behavior-params.test.ts @@ -0,0 +1,48 @@ +import { describe, expect, it } from "vitest"; +import { filterLobbyEligibleCandidates, LOBBY_ALLOWED_TURN_KINDS, LOBBY_SPEAKING_THRESHOLD } from "./lobby-behavior-params.js"; +import { SPEAKING_THRESHOLD } from "./constants.js"; + +describe("大廳專屬自走參數(T27)", () => { + it("LOBBY_SPEAKING_THRESHOLD 高於一般房間門檻,LOBBY_ALLOWED_TURN_KINDS 不含 LEAVE", () => { + expect(LOBBY_SPEAKING_THRESHOLD).toBeGreaterThan(SPEAKING_THRESHOLD); + expect(LOBBY_ALLOWED_TURN_KINDS).not.toContain("LEAVE"); + expect(LOBBY_ALLOWED_TURN_KINDS).toEqual(expect.arrayContaining(["TALK", "ACTION", "DELEGATE"])); + }); + + it("同作品的角色互相視為候選,即使關係普通、情緒平靜", () => { + const candidates = [ + { characterId: "a", workId: "work-1", emotionIntensity: 0.1 }, + { characterId: "b", workId: "work-1", emotionIntensity: 0.1 }, + { characterId: "c", workId: "work-2", emotionIntensity: 0.1 }, + ]; + const eligible = filterLobbyEligibleCandidates(candidates, () => 50); + expect(eligible.map((c) => c.characterId).sort()).toEqual(["a", "b"]); + }); + + it("關係夠近(affinity 達門檻)即使不同作品也視為候選", () => { + const candidates = [ + { characterId: "a", workId: "work-1", emotionIntensity: 0.1 }, + { characterId: "b", workId: "work-2", emotionIntensity: 0.1 }, + ]; + const eligible = filterLobbyEligibleCandidates(candidates, () => 90); + expect(eligible.map((c) => c.characterId).sort()).toEqual(["a", "b"]); + }); + + it("情緒高漲者獨自也視為候選,不需要其他角色陪襯", () => { + const candidates = [ + { characterId: "a", workId: "work-1", emotionIntensity: 0.9 }, + { characterId: "b", workId: "work-2", emotionIntensity: 0.1 }, + ]; + const eligible = filterLobbyEligibleCandidates(candidates, () => 0); + expect(eligible.map((c) => c.characterId)).toEqual(["a"]); + }); + + it("不同作品、關係普通、情緒平靜:都不列入候選", () => { + const candidates = [ + { characterId: "a", workId: "work-1", emotionIntensity: 0.1 }, + { characterId: "b", workId: "work-2", emotionIntensity: 0.1 }, + ]; + const eligible = filterLobbyEligibleCandidates(candidates, () => 50); + expect(eligible).toEqual([]); + }); +}); diff --git a/apps/api/src/room/lobby-behavior-params.ts b/apps/api/src/room/lobby-behavior-params.ts new file mode 100644 index 0000000..7cffcd6 --- /dev/null +++ b/apps/api/src/room/lobby-behavior-params.ts @@ -0,0 +1,38 @@ +import type { RoomTurnKind } from "@kokorone/db"; +import { SPEAKING_THRESHOLD } from "./constants.js"; + +// T27:大廳套用較高的發言門檻與更長的動態間隔上限,避免長時間觀察出現連續刷話; +// 實際的自走行為引擎(T6 擴充行為種類、T8 不降頻排程、T22 動態間隔計算)尚未把 LOBBY 房納入 +// 推進範圍,這裡先備妥常數與純函式,供這幾項後續直接消費,不需要重新設計介面。 +export const LOBBY_SPEAKING_THRESHOLD = SPEAKING_THRESHOLD * 2; // 大廳話少一點,門檻拉高一倍 +export const LOBBY_ADVANCE_INTERVAL_MAX_MS = 10 * 60 * 1000; // 一般房間(T22)上限 5 分鐘,大廳拉到 10 分鐘 + +// 大廳只允許 TALK/ACTION/DELEGATE:行程轉忙或睡眠只改角色狀態(見 T1 deriveLobbyPresenceState), +// 不會產生 LEAVE 把角色移出大廳在場名單。 +export const LOBBY_ALLOWED_TURN_KINDS: readonly RoomTurnKind[] = ["TALK", "ACTION", "DELEGATE"]; + +const HIGH_EMOTION_INTENSITY_THRESHOLD = 0.7; + +export interface LobbyCandidate { + characterId: string; + workId: string | null; + emotionIntensity: number; // 0~1,情緒引擎目前主導情緒的強度 +} + +// T27:把大廳候選發言者限縮為「彼此關係近、同作品、或情緒高漲」的少數角色。 +// affinityLookup 由呼叫端提供(通常是 CharacterRelationshipService.getAffinity),本函式本身 +// 不查資料庫,方便單元測試以固定輸入驗證篩選邏輯。 +export function filterLobbyEligibleCandidates( + candidates: LobbyCandidate[], + affinityLookup: (characterId: string, otherCharacterId: string) => number, + closeAffinityThreshold = 70, +): LobbyCandidate[] { + return candidates.filter((candidate) => { + if (candidate.emotionIntensity >= HIGH_EMOTION_INTENSITY_THRESHOLD) return true; + return candidates.some((other) => { + if (other.characterId === candidate.characterId) return false; + if (candidate.workId !== null && candidate.workId === other.workId) return true; + return affinityLookup(candidate.characterId, other.characterId) >= closeAffinityThreshold; + }); + }); +} diff --git a/apps/api/src/room/lobby.service.test.ts b/apps/api/src/room/lobby.service.test.ts new file mode 100644 index 0000000..cb40fab --- /dev/null +++ b/apps/api/src/room/lobby.service.test.ts @@ -0,0 +1,88 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; + +// T24 驗收:任一時刻每個角色只有一筆未離場 RoomMember;進房後大廳在場名單少一人、離房(房間關閉)後自動回到大廳。 +// 沿用已套用過 migration 的開發用 dev.db,測試資料一律以 test- 前綴命名並在 afterEach 清理。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-18T12:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobby = new LobbyService(prisma, clock, roomEvents); + +const userId = "test-lobby-user"; +const characterIdA = "test-lobby-char-a"; +const characterIdB = "test-lobby-char-b"; + +afterEach(async () => { + await prisma.client.roomMember.deleteMany({ where: { characterId: { in: [characterIdA, characterIdB] } } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [characterIdA, characterIdB] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +describe("LobbyService(T24)", () => { + it("任一時刻每個角色只有一筆未離場 RoomMember;進房後大廳名單少一人、房間關閉後自動回到大廳", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試大廳使用者" } }); + await prisma.client.character.createMany({ + data: [characterIdA, characterIdB].map((id) => ({ + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "TSUNDERE", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + })), + }); + + // dev.db 為共用開發資料庫,可能已有其他角色(種子資料/其他冒煙測試殘留),syncMembership + // 依規格會把「所有」未在場角色都掃進大廳,故底下一律用「是否包含」而非「精確相等」斷言, + // 只驗證這兩個測試角色本身的在場狀態轉移,不假設大廳當下的完整名單只有這兩人。 + await lobby.syncMembership(userId); + const lobbyRoom = await lobby.getOrCreateLobby(userId); + const rosterIds = async () => + (await prisma.client.roomMember.findMany({ where: { roomId: lobbyRoom.id, leftAt: null } })).map( + (m) => m.characterId, + ); + + let lobbyRoster = await rosterIds(); + expect(lobbyRoster).toContain(characterIdA); + expect(lobbyRoster).toContain(characterIdB); + + const targetRoom = await prisma.client.room.create({ data: { userId, mode: "GROUP" } }); + await lobby.enterRoom(characterIdA, targetRoom.id); + + lobbyRoster = await rosterIds(); + expect(lobbyRoster).not.toContain(characterIdA); + expect(lobbyRoster).toContain(characterIdB); + + const activeRowsForA = await prisma.client.roomMember.findMany({ where: { characterId: characterIdA, leftAt: null } }); + expect(activeRowsForA).toHaveLength(1); + expect(activeRowsForA[0].roomId).toBe(targetRoom.id); + + await lobby.closeRoomAndReturnMembers(targetRoom.id); + lobbyRoster = await rosterIds(); + expect(lobbyRoster).toContain(characterIdA); + expect(lobbyRoster).toContain(characterIdB); + }); + + it("closeRoomAndReturnMembers 對大廳本身與未曾登記在場的既有房間安全地不做任何事", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試大廳使用者2" } }); + const lobbyRoom = await lobby.getOrCreateLobby(userId); + await expect(lobby.closeRoomAndReturnMembers(lobbyRoom.id)).resolves.toBeUndefined(); + + const legacyRoom = await prisma.client.room.create({ data: { userId, mode: "GROUP" } }); + await expect(lobby.closeRoomAndReturnMembers(legacyRoom.id)).resolves.toBeUndefined(); + }); +}); diff --git a/apps/api/src/room/lobby.service.ts b/apps/api/src/room/lobby.service.ts new file mode 100644 index 0000000..a7cb995 --- /dev/null +++ b/apps/api/src/room/lobby.service.ts @@ -0,0 +1,195 @@ +import { Inject, Injectable } from "@nestjs/common"; +import type { Room as PrismaRoom } from "@kokorone/db"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { CLOCK, type Clock } from "../clock/clock.js"; +import { RoomEventsService } from "./room-events.service.js"; + +// T24:大廳常駐房與在場流轉。每位使用者恆有唯一一間 mode=LOBBY 的房間,status 永久 ACTIVE、 +// 不套用自動關房(T8 的自動關房掃描必須排除 LOBBY,見該項);所有未在其他房間在場的角色以 +// RoomMember 記在這間房。角色進房/離房只是把 activeCharacterId 從大廳那一筆搬到目標房那一筆 +// (或搬回來),R5「角色不可跨房」由 T2 的 RoomMember.activeCharacterId 唯一索引在 DB 層擋下。 +@Injectable() +export class LobbyService { + constructor( + private readonly prisma: PrismaService, + @Inject(CLOCK) private readonly clock: Clock, + private readonly roomEvents: RoomEventsService, + ) {} + + // T10:member 事件的序號沿用當下 turnCounter(不落地、盡力而為,見 RoomEventsService 註解)。 + private async currentTurnCounter(roomId: string): Promise { + const last = await this.prisma.client.roomTurn.findFirst({ where: { roomId }, orderBy: { seq: "desc" } }); + return (last?.seq ?? -1) + 1; + } + + async getOrCreateLobby(userId: string): Promise { + const existing = await this.prisma.client.room.findFirst({ where: { userId, mode: "LOBBY" } }); + if (existing) return existing; + return this.prisma.client.room.create({ + data: { userId, mode: "LOBBY", status: "ACTIVE", autoAdvanceEnabled: false }, + }); + } + + // 讓「目前沒有在任何房間在場」的角色補進大廳;已在其他房間在場(含已在大廳)的角色不重複處理。 + async syncMembership(userId: string): Promise { + const lobby = await this.getOrCreateLobby(userId); + const [allCharacters, activeMemberships] = await Promise.all([ + this.prisma.client.character.findMany({ select: { id: true } }), + this.prisma.client.roomMember.findMany({ where: { activeCharacterId: { not: null } }, select: { characterId: true } }), + ]); + const alreadyActive = new Set(activeMemberships.map((m) => m.characterId)); + const missing = allCharacters.filter((c) => !alreadyActive.has(c.id)); + if (missing.length === 0) return; + + await this.prisma.client.roomMember.createMany({ + data: missing.map((c) => ({ roomId: lobby.id, characterId: c.id, activeCharacterId: c.id })), + }); + } + + // 角色從目前所在房間(通常是大廳)搬進 targetRoomId;已經在 targetRoomId 則視為已完成(幂等)。 + async enterRoom(characterId: string, targetRoomId: string, now?: Date): Promise { + const effectiveNow = now ?? this.clock.now(); + const current = await this.prisma.client.roomMember.findFirst({ where: { activeCharacterId: characterId } }); + if (current?.roomId === targetRoomId) return; + + await this.prisma.client.$transaction(async (tx) => { + if (current) { + await tx.roomMember.update({ + where: { id: current.id }, + data: { leftAt: effectiveNow, leaveReason: "ENTER_ROOM", activeCharacterId: null }, + }); + } + await tx.roomMember.create({ + data: { roomId: targetRoomId, characterId, activeCharacterId: characterId }, + }); + }); + + if (current) { + this.roomEvents.emit(current.roomId, { + type: "member", + seq: await this.currentTurnCounter(current.roomId), + data: { characterId, action: "left" }, + }); + } + this.roomEvents.emit(targetRoomId, { + type: "member", + seq: await this.currentTurnCounter(targetRoomId), + data: { characterId, action: "joined" }, + }); + } + + // 角色離開目前所在房間,補回大廳一筆在場紀錄;若目前所在房間本身就是大廳,視為已完成(幂等)。 + async returnToLobby(characterId: string, userId: string, now?: Date, leaveReason = "LEFT_ROOM"): Promise { + const effectiveNow = now ?? this.clock.now(); + const lobby = await this.getOrCreateLobby(userId); + const current = await this.prisma.client.roomMember.findFirst({ where: { activeCharacterId: characterId } }); + if (current?.roomId === lobby.id) return; + + await this.prisma.client.$transaction(async (tx) => { + if (current) { + await tx.roomMember.update({ + where: { id: current.id }, + data: { leftAt: effectiveNow, leaveReason, activeCharacterId: null }, + }); + } + await tx.roomMember.create({ + data: { roomId: lobby.id, characterId, activeCharacterId: characterId }, + }); + }); + + if (current) { + this.roomEvents.emit(current.roomId, { + type: "member", + seq: await this.currentTurnCounter(current.roomId), + data: { characterId, action: "left" }, + }); + } + this.roomEvents.emit(lobby.id, { + type: "member", + seq: await this.currentTurnCounter(lobby.id), + data: { characterId, action: "joined" }, + }); + } + + // T6:角色離開「指定的」房間並回大廳——與 returnToLobby() 不同之處在於明確帶入 roomId,不依賴 + // activeCharacterId 找出目前所在房間。既有 room.service.ts create() 對直接帶入 characterIds 建立 + // 的房間(K 群組沿用至今的舊式 GROUP/SELF_CHAT 測試房)刻意不設 activeCharacterId(見該處註解, + // 讓同一角色可同時存在於多個測試房間),若 T6 的自走 LEAVE 沿用 returnToLobby() 的 + // activeCharacterId 查找方式會找不到「目前這個房間」的在場列,離開會失敗。改以 roomId+characterId + // 直接鎖定要離開的那一列;回大廳的登記採「先查再寫」,避免與可能已存在(例如 syncMembership 誤判 + // 舊式房間角色為未在場而先建立的)大廳列衝突到 activeCharacterId 唯一索引。 + async leaveSpecificRoom(characterId: string, roomId: string, userId: string, now?: Date, leaveReason = "LEFT_ROOM"): Promise { + const effectiveNow = now ?? this.clock.now(); + const lobby = await this.getOrCreateLobby(userId); + if (roomId === lobby.id) return; + + const currentInRoom = await this.prisma.client.roomMember.findFirst({ where: { roomId, characterId, leftAt: null } }); + if (!currentInRoom) return; // 幂等:已經不在這個房間了 + + await this.prisma.client.$transaction(async (tx) => { + await tx.roomMember.update({ + where: { id: currentInRoom.id }, + data: { leftAt: effectiveNow, leaveReason, activeCharacterId: null }, + }); + const alreadyActiveElsewhere = await tx.roomMember.findFirst({ where: { activeCharacterId: characterId } }); + if (!alreadyActiveElsewhere) { + await tx.roomMember.create({ data: { roomId: lobby.id, characterId, activeCharacterId: characterId } }); + } + }); + + this.roomEvents.emit(roomId, { + type: "member", + seq: await this.currentTurnCounter(roomId), + data: { characterId, action: "left" }, + }); + this.roomEvents.emit(lobby.id, { + type: "member", + seq: await this.currentTurnCounter(lobby.id), + data: { characterId, action: "joined" }, + }); + } + + // 房間關閉時,把仍在場的每一位成員都送回(房主使用者的)大廳。對 LOBBY 房本身不生效 + // (大廳永不關閉);對從未有人以 activeCharacterId 在場登記過的房間(例如既有 K 群組 + // 自聊/群聊測試房)安全地什麼都不做。 + async closeRoomAndReturnMembers(roomId: string, now?: Date): Promise { + const room = await this.prisma.client.room.findUnique({ + where: { id: roomId }, + include: { members: { where: { activeCharacterId: { not: null } } } }, + }); + if (!room || room.mode === "LOBBY") return; + + for (const member of room.members) { + await this.returnToLobby(member.characterId, room.userId, now, "ROOM_CLOSED"); + } + } + + // T19-P1/T20-P1 最小可用大廳畫面所需的簡化快照:在場名單+進行中房間清單。 + // 正式的完整大廳聚合端點(作品分組、角色狀態、各房未讀數)是 T4(P2),屆時取代本方法的呼叫端。 + async getLobbySnapshot(userId: string): Promise<{ + lobbyRoomId: string; + roster: string[]; + activeRooms: { id: string; mode: string; topicSeed: string | null; memberCharacterIds: string[] }[]; + }> { + await this.syncMembership(userId); + const lobby = await this.getOrCreateLobby(userId); + const [lobbyMembers, activeRooms] = await Promise.all([ + this.prisma.client.roomMember.findMany({ where: { roomId: lobby.id, leftAt: null } }), + this.prisma.client.room.findMany({ + where: { userId, status: "ACTIVE", mode: { not: "LOBBY" } }, + include: { members: { where: { leftAt: null } } }, + }), + ]); + + return { + lobbyRoomId: lobby.id, + roster: lobbyMembers.map((m) => m.characterId), + activeRooms: activeRooms.map((room) => ({ + id: room.id, + mode: room.mode, + topicSeed: room.topicSeed, + memberCharacterIds: room.members.map((m) => m.characterId), + })), + }; + } +} diff --git a/apps/api/src/room/possession.controller.ts b/apps/api/src/room/possession.controller.ts new file mode 100644 index 0000000..b1fa385 --- /dev/null +++ b/apps/api/src/room/possession.controller.ts @@ -0,0 +1,78 @@ +import { Body, Controller, Get, Param, Post, Query } from "@nestjs/common"; +import { PossessionService } from "./possession.service.js"; +import { InvitationService } from "../lobby/invitation.service.js"; + +interface EnterBody { + userId: string; + characterId: string; + now?: string; +} + +interface ExitBody { + userId: string; +} + +interface SpeakBody { + userId: string; + text: string; + now?: string; +} + +interface DecideBody { + accept: boolean; + now?: string; +} + +// R8/T43 人格套用:套用/退出、以角色身分在房內發話、待決邀請(房內邀請+大廳呼叫)的查詢與 +// 決定——集中在這一個 controller,因為這些都是「套用」這個橫切狀態衍生出的操作,不屬於任何單一 +// 既有 controller(room/canon/epilogue)的既有職責範圍。 +@Controller("possession") +export class PossessionController { + constructor( + private readonly possession: PossessionService, + private readonly invitation: InvitationService, + ) {} + + @Get("status") + async getStatus(@Query("userId") userId: string) { + return this.possession.getStatus(userId); + } + + @Post("enter") + async enter(@Body() body: EnterBody) { + return this.possession.enter(body.userId, body.characterId, body.now ? new Date(body.now) : undefined); + } + + @Post("exit") + async exit(@Body() body: ExitBody) { + return this.possession.exit(body.userId); + } + + @Post(":roomId/message") + async speak(@Param("roomId") roomId: string, @Body() body: SpeakBody) { + return this.possession.speakAsPossessed(body.userId, roomId, body.text, body.now ? new Date(body.now) : undefined); + } + + @Get("pending-invitations") + async listPendingInvitations(@Query("userId") userId: string) { + const status = await this.possession.getStatus(userId); + if (!status.possessingCharacterId) return []; + return this.invitation.listPendingFor(status.possessingCharacterId); + } + + @Post("invitations/:invitationId/decide") + async decideInvitation(@Param("invitationId") invitationId: string, @Body() body: DecideBody) { + await this.invitation.decideAsPossessed(invitationId, body.accept, body.now ? new Date(body.now) : undefined); + return { ok: true }; + } + + @Get("pending-calls") + async listPendingCalls(@Query("userId") userId: string) { + return this.possession.listPendingCalls(userId); + } + + @Post("lobby-calls/:pendingCallId/decide") + async decideLobbyCall(@Param("pendingCallId") pendingCallId: string, @Body() body: DecideBody) { + return this.possession.decidePendingCall(pendingCallId, body.accept, body.now ? new Date(body.now) : undefined); + } +} diff --git a/apps/api/src/room/possession.service.test.ts b/apps/api/src/room/possession.service.test.ts new file mode 100644 index 0000000..d6b64c8 --- /dev/null +++ b/apps/api/src/room/possession.service.test.ts @@ -0,0 +1,241 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { SpeakingRightService } from "./speaking-right.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; +import { RoomConsolidationService } from "./room-consolidation.service.js"; +import { BehaviorSelectionService } from "./behavior-selection.service.js"; +import { SelfChatService } from "./self-chat.service.js"; +import { PossessionService } from "./possession.service.js"; +import { TaskService } from "../task/task.service.js"; +import { TaskSchedulerService } from "../task/task-scheduler.service.js"; +import { TaskTriggerService } from "../task/task-trigger.service.js"; +import { SentimentLedgerService } from "../relationship/sentiment-ledger.service.js"; +import { PushTokenService } from "../push/push-token.service.js"; +import { PushNotificationService } from "../push/push-notification.service.js"; +import { MockPushProvider } from "../push/mock-push-provider.service.js"; +import { InProcessJobQueue } from "../memory/in-process-job-queue.service.js"; +import { RoomNotificationService } from "./room-notification.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; +import { LifeEventService } from "../epilogue/life-event.service.js"; +import { EpilogueProgressService } from "../epilogue/epilogue-progress.service.js"; +import { ProjectionService } from "../canon/projection.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; + +// T43 驗收:套用期間該角色不會自己發話(自走排程/回覆迴圈皆排除她)、其他角色的反應與她本人在場 +// 時一致、對話結束後她名下多了對應記憶、套用中被邀請由使用者決定且未出現系統代答、退出套用後恢復自走。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService(prisma, emotionService, relationshipService, retriever, characterRelationship, romanceService, mockProvider, new GlobalPauseService()); +const consolidation = new RoomConsolidationService(prisma, roomService, new RuleBasedEmotionTagger(), characterRelationship); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const behaviorSelection = new BehaviorSelectionService(prisma, emotionService, scheduleService, sleepDebtService, new PersonalityResolutionService(prisma, new PersonalityDriftService(prisma))); +const pushToken = new PushTokenService(prisma); +const mockPushProvider = new MockPushProvider(); +const pushNotification = new PushNotificationService(prisma, pushToken, mockPushProvider); +const taskTrigger = new TaskTriggerService(prisma, scheduleService, retriever, pushNotification); +const jobQueue = new InProcessJobQueue(); +const taskScheduler = new TaskSchedulerService(prisma, jobQueue, taskTrigger); +const sentimentLedger = new SentimentLedgerService(prisma, relationshipService); +const taskService = new TaskService(prisma, sentimentLedger, taskScheduler); +const roomNotification = new RoomNotificationService(pushNotification); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), new BehaviorReinforcementService(prisma)); +const lifeEvent = new LifeEventService(prisma, projection); +const epilogueProgress = new EpilogueProgressService(prisma, lifeEvent); +const possession = new PossessionService(prisma, roomService, speakingRight, generation, lobbyService); +const selfChat = new SelfChatService( + prisma, + roomService, + speakingRight, + generation, + lobbyService, + behaviorSelection, + taskService, + roomNotification, + epilogueProgress, + possession, +); + +const userId = "test-possession-user"; +const CHAR_A = "test-possession-char-a"; // 被套用的角色 +const CHAR_B = "test-possession-char-b"; + +afterEach(async () => { + await prisma.client.episodicMemory.deleteMany({ where: { characterId: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.characterRelationship.deleteMany({ where: { characterId: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.roomInvitation.deleteMany({ where: { characterId: CHAR_A } }); + await prisma.client.roomTurn.deleteMany({ where: { room: { userId } } }); + await prisma.client.roomMember.deleteMany({ where: { characterId: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); +} + +describe("人格套用(T43)", () => { + it("套用/退出:狀態正確反映;套用範圍不設門檻(buildStatus 未完成的角色也可套用)", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await prisma.client.character.create({ + data: { + id: CHAR_A, + source: "ORIGINAL", + buildStatus: "CANDIDATE", // 未完成,仍可套用 + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + + expect((await possession.getStatus(userId)).possessingCharacterId).toBeNull(); + await possession.enter(userId, CHAR_A); + expect((await possession.getStatus(userId)).possessingCharacterId).toBe(CHAR_A); + expect(await possession.getPossessedCharacterIds()).toEqual(new Set([CHAR_A])); + + await possession.exit(userId); + expect((await possession.getStatus(userId)).possessingCharacterId).toBeNull(); + expect(await possession.getPossessedCharacterIds()).toEqual(new Set()); + }); + + it("套用期間該角色不會自己發話(自走排程排除她);退出套用後恢復自走", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + const room = await selfChat.start(userId, [CHAR_A, CHAR_B], "測試話題", clock.now()); + + await possession.enter(userId, CHAR_A); + for (let i = 0; i < 15; i++) { + const result = await selfChat.advance(room.id, new Date(clock.now().getTime() + i * 1000)); + if (result.turn) { + expect(result.turn.characterId).not.toBe(CHAR_A); // 套用中絕不會被自走選為發言者 + } + } + + await possession.exit(userId); + let sawCharA = false; + for (let i = 15; i < 40 && !sawCharA; i++) { + const result = await selfChat.advance(room.id, new Date(clock.now().getTime() + i * 1000)); + if (result.turn?.characterId === CHAR_A) sawCharA = true; + } + expect(sawCharA).toBe(true); // 退出套用後恢復自走,終究會輪到她自己開口 + }, 30000); + + it("套用中若房內只剩她一人,自走安靜一輪而不會把房間收尾關閉", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + const room = await selfChat.start(userId, [CHAR_A], "測試話題", clock.now()); + await possession.enter(userId, CHAR_A); + + const result = await selfChat.advance(room.id, clock.now()); + expect(result.ended).toBe(false); + const roomAfter = await roomService.get(room.id); + expect(roomAfter.status).toBe("ACTIVE"); + expect(roomAfter.participants.has(CHAR_A)).toBe(true); + }); + + it("以套用角色的身分在房內發話:其他在場角色的反應與她本人在場時一致;對話結束後她名下多了記憶", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + const room = await roomService.create(userId, [CHAR_A, CHAR_B], "GROUP"); + await possession.enter(userId, CHAR_A); + + mockProvider.enqueueResponse("哇,聽起來好棒!"); + // 三個正向關鍵字疊加,確保情緒強度超過 HIGH_EMOTION_THRESHOLD(0.6),讓固化一定會記下這句話, + // 不受測試巧合影響。 + const herLine = "太開心了!好棒!太好了!"; + const result = await possession.speakAsPossessed(userId, room.id, herLine, clock.now()); + // 小乙沒有明確理由不回應時,既有 K-4 發言權機制仍可能判定她這輪不開口;只要有回應,內容必須 + // 來自小乙且不是套用者自己編的話(走既有 LLM 生成路徑),佐證「其他角色不知情,一律當她本人反應」。 + for (const speaker of result.speakers) { + expect(speaker.characterId).toBe(CHAR_B); + } + + const roomDetail = await roomService.get(room.id); + const herTurn = roomDetail.turns.find((t) => t.speakerId === CHAR_A); + expect(herTurn?.content).toBe(herLine); + + await consolidation.consolidate(room.id); + const herMemories = await prisma.client.episodicMemory.findMany({ where: { characterId: CHAR_A } }); + expect(herMemories.some((m) => m.content.includes(herLine))).toBe(true); // 記憶照常記在她名下 + }, 20000); + + it("套用中不可以自己的身分發話;不可在 SOLO 房以套用角色身分發話;沒有套用時無法以角色身分發話", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + const groupRoom = await roomService.create(userId, [CHAR_A, CHAR_B], "GROUP"); + + await expect(possession.speakAsPossessed(userId, groupRoom.id, "測試", clock.now())).rejects.toThrow(); + + await possession.enter(userId, CHAR_A); + await expect(possession.assertNotPossessing(userId)).rejects.toThrow(); + + const soloRoom = await roomService.create(userId, [CHAR_A], "SOLO", "測試"); + await expect(possession.speakAsPossessed(userId, soloRoom.id, "測試", clock.now())).rejects.toThrow(); + }); + + it("套用範圍不設親密度門檻,且套用中的角色仍佔用 RoomMember 在場名額(不可跨房規則照舊不受影響)", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + const room = await roomService.create(userId, [CHAR_A, CHAR_B], "GROUP"); + await lobbyService.enterRoom(CHAR_A, room.id, clock.now()); // 既有「不可跨房」的在場登記機制,套用不改變它 + await possession.enter(userId, CHAR_A); + + const member = await prisma.client.roomMember.findFirst({ where: { characterId: CHAR_A, activeCharacterId: CHAR_A } }); + expect(member?.roomId).toBe(room.id); // 套用不改變既有的在場判定機制 + }); +}); diff --git a/apps/api/src/room/possession.service.ts b/apps/api/src/room/possession.service.ts new file mode 100644 index 0000000..a5e299d --- /dev/null +++ b/apps/api/src/room/possession.service.ts @@ -0,0 +1,147 @@ +import { BadRequestException, Injectable, NotFoundException } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { RoomService } from "./room.service.js"; +import { SpeakingRightService } from "./speaking-right.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; +import { LobbyService } from "./lobby.service.js"; + +export interface PossessionStatus { + possessingCharacterId: string | null; +} + +// R8/T43 人格套用:使用者套用某個角色的身分——她的自走暫停(見 SpeakingRightService/ +// SelfChatService 對 getPossessedCharacterIds() 的排除邏輯),改由使用者輸入產生她的 +// RoomTurn;其他角色不知情,一律當她本人在場反應(沿用既有 RoomGenerationService,不特殊處理); +// 記憶/關係變化照常記在她名下(沿用既有的以 RoomTurn 為底的固化機制,未特殊處理)。 +@Injectable() +export class PossessionService { + constructor( + private readonly prisma: PrismaService, + private readonly room: RoomService, + private readonly speakingRight: SpeakingRightService, + private readonly generation: RoomGenerationService, + private readonly roomLobby: LobbyService, + ) {} + + async getStatus(userId: string): Promise { + const user = await this.prisma.client.user.findUniqueOrThrow({ where: { id: userId } }); + return { possessingCharacterId: user.possessingCharacterId }; + } + + // 所有「自走/自動回覆」的候選者篩選都要排除目前被(任何使用者)套用中的角色——她的發言只能 + // 來自套用者的輸入,不能被 LLM/自走機制搶著幫她講話。 + async getPossessedCharacterIds(): Promise> { + const users = await this.prisma.client.user.findMany({ + where: { possessingCharacterId: { not: null } }, + select: { possessingCharacterId: true }, + }); + return new Set(users.map((u) => u.possessingCharacterId!)); + } + + async assertNotPossessing(userId: string): Promise { + const status = await this.getStatus(userId); + if (status.possessingCharacterId) { + throw new BadRequestException("套用角色期間不可以自己的身分發話,請先退出套用"); + } + } + + // 可套用範圍為任何角色(含日後談、跨作品、buildStatus 未完成者),不設門檻;直接切換到新角色 + // 等同先退出舊的再套用新的(單一使用者一次只能套用一位)。 + async enter(userId: string, characterId: string, now: Date = new Date()): Promise { + await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); + const alreadyPossessedBy = await this.prisma.client.user.findFirst({ + where: { possessingCharacterId: characterId, id: { not: userId } }, + }); + if (alreadyPossessedBy) { + throw new BadRequestException("這個角色目前已被其他使用者套用中"); + } + await this.prisma.client.user.update({ where: { id: userId }, data: { possessingCharacterId: characterId } }); + void now; // 保留參數對齊其餘服務簽名慣例(時鐘可控),本方法本身不需要用到時間 + return { possessingCharacterId: characterId }; + } + + async exit(userId: string): Promise { + await this.prisma.client.user.update({ where: { id: userId }, data: { possessingCharacterId: null } }); + return { possessingCharacterId: null }; + } + + // 使用者以套用中的角色身分在某個房間發話——沿用既有 RoomController.message() 對「一輪發言後 + // 誰會回應」的處理方式(decideSpeakers 找出想回應的其他在場角色逐位生成回覆),差別只在觸發者 + // 是她(characterId)而不是 USER_SPEAKER_ID;不能用在 SOLO/LOBBY 房——那兩種房型的「對象」 + // 就是使用者本人,套用她之後沒有其他人可以對話。 + async speakAsPossessed( + userId: string, + roomId: string, + text: string, + now: Date = new Date(), + ): Promise<{ speakers: { characterId: string; text: string; score: number }[] }> { + const status = await this.getStatus(userId); + const characterId = status.possessingCharacterId; + if (!characterId) { + throw new BadRequestException("目前沒有套用任何角色,無法以角色身分發話"); + } + + let room = await this.room.get(roomId); + if (room.mode === "SOLO") { + throw new BadRequestException("SOLO 房沒有其他角色可以對話,不能在這裡以套用角色的身分發話"); + } + if (!room.participants.has(characterId)) { + throw new NotFoundException("套用中的角色目前不在這個房間"); + } + + const alias = await this.prisma.client.characterAlias.findFirst({ where: { characterId } }); + const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); + const speakerLabel = alias?.nickname || alias?.formalName || character.id; + + await this.room.addTurn(roomId, characterId, speakerLabel, text, now); + room = await this.room.get(roomId); + + const possessedIds = await this.getPossessedCharacterIds(); + const speakers = await this.speakingRight.decideSpeakers(room, characterId, text, now, possessedIds); + const replies: { characterId: string; text: string; score: number }[] = []; + for (const candidate of speakers) { + const reactingCharacter = await this.prisma.client.character.findUniqueOrThrow({ where: { id: candidate.characterId } }); + const reactingAlias = await this.prisma.client.characterAlias.findFirst({ where: { characterId: candidate.characterId } }); + const reactingLabel = reactingAlias?.nickname || reactingAlias?.formalName || reactingCharacter.id; + const reply = await this.generation.generateReply(room, candidate.characterId, characterId, speakerLabel, text, { now }); + if (reply.text) { + const turn = await this.room.addTurn(roomId, candidate.characterId, reactingLabel, reply.text, now); + if (reply.usage) { + await this.room.recordUsage(roomId, { ...reply.usage, turnSeq: turn.turnIndex }); + } + room = await this.room.get(roomId); + replies.push({ characterId: candidate.characterId, text: reply.text, score: candidate.score }); + } + } + return { speakers: replies }; + } + + // T5 大廳呼叫時識別到的角色目前被套用中:不能讓人格系統代她判斷接受/婉拒,記一筆待決給套用者。 + // 待決的歸戶對象是「目前正在套用她的那個使用者」,不是打這通呼叫的使用者——兩者不一定相同 + // (呼叫者甚至可能不知道對方正被套用),故這裡自己查出套用者,不接受呼叫端傳入的 userId。 + async createPendingCall(characterId: string, text: string, now: Date = new Date()): Promise { + const possessor = await this.prisma.client.user.findFirstOrThrow({ where: { possessingCharacterId: characterId } }); + await this.prisma.client.pendingLobbyCall.create({ data: { userId: possessor.id, characterId, text, createdAt: now } }); + } + + async listPendingCalls(userId: string) { + const status = await this.getStatus(userId); + if (!status.possessingCharacterId) return []; + return this.prisma.client.pendingLobbyCall.findMany({ + where: { userId, characterId: status.possessingCharacterId }, + orderBy: { createdAt: "asc" }, + }); + } + + async decidePendingCall(pendingCallId: string, accept: boolean, now: Date = new Date()) { + const pending = await this.prisma.client.pendingLobbyCall.findUniqueOrThrow({ where: { id: pendingCallId } }); + await this.prisma.client.pendingLobbyCall.delete({ where: { id: pendingCallId } }); + if (!accept) return { roomId: null }; + + // 與一般呼叫接受時的入房方式一致(見 CallService.openRoom()):開一間 SOLO 房,再透過既有的 + // LobbyService.enterRoom() 登記在場(會自動處理「原本在哪個房間」的離場轉移)。 + const room = await this.room.create(pending.userId, [], "SOLO", pending.text); + await this.roomLobby.enterRoom(pending.characterId, room.id, now); + return { roomId: room.id }; + } +} diff --git a/apps/api/src/room/privacy-boundary.test.ts b/apps/api/src/room/privacy-boundary.test.ts new file mode 100644 index 0000000..66b211f --- /dev/null +++ b/apps/api/src/room/privacy-boundary.test.ts @@ -0,0 +1,174 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; +import { RoomConsolidationService } from "./room-consolidation.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { SLIP_INTIMACY_PENALTY } from "./constants.js"; + +// T40 驗收:K-3 隱私邊界不再是沒人寫入的空殼——一般原型在群聊中不會洩漏私密(1:1)記憶; +// 口風不緊原型(天然呆)偶爾會洩漏,一旦洩漏視為真實事件,對使用者的親密度給予懲罰。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService( + prisma, + emotionService, + relationshipService, + retriever, + characterRelationship, + romanceService, + mockProvider, + new GlobalPauseService(), +); +const consolidation = new RoomConsolidationService(prisma, roomService, new RuleBasedEmotionTagger(), characterRelationship); + +const userId = "test-privacy-user"; +const CHAR_DISCREET = "test-privacy-char-discreet"; // 元氣:非口風不緊 +const CHAR_LOOSE = "test-privacy-char-loose"; // 天然呆:口風不緊 +const CHAR_OTHER = "test-privacy-char-other"; // 房內第三人,純粹製造「有旁人在場」的群聊情境 + +afterEach(async () => { + await prisma.client.episodicMemory.deleteMany({ + where: { characterId: { in: [CHAR_DISCREET, CHAR_LOOSE, CHAR_OTHER] } }, + }); + await prisma.client.characterRelationship.deleteMany({ + where: { characterId: { in: [CHAR_DISCREET, CHAR_LOOSE, CHAR_OTHER] } }, + }); + await prisma.client.relationship.deleteMany({ where: { userId } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_DISCREET, CHAR_LOOSE, CHAR_OTHER] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string, archetype: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: archetype, + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); +} + +async function seedPrivateMemory(characterId: string) { + await prisma.client.episodicMemory.create({ + data: { + characterId, + content: "秘密基地的事只有我們兩個知道", + occurredAt: clock.now(), + emotionTag: "JOY", + emotionIntensity: 0.9, + source: "INTERACTION", + weight: 1.9, + isPrivate: true, + }, + }); +} + +describe("隱私邊界與口風不緊(T40)", () => { + it("一般原型(非口風不緊)在群聊生成中不會檢索到私密記憶,也不觸發懲罰", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_DISCREET, "元氣", "小甲"); + await createCharacter(CHAR_OTHER, "元氣", "小丙"); + await seedPrivateMemory(CHAR_DISCREET); + await relationshipService.getOrCreate(CHAR_DISCREET, userId, clock.now()); + await prisma.client.relationship.update({ + where: { characterId_userId: { characterId: CHAR_DISCREET, userId } }, + data: { intimacy: 50 }, + }); + + const room = await roomService.create(userId, [CHAR_DISCREET, CHAR_OTHER], "GROUP"); + const reply = await generation.generateReply(room, CHAR_DISCREET, USER_SPEAKER_ID, "使用者", "秘密基地的事", { + now: clock.now(), + }); + expect(reply.text).toBeTruthy(); + + const { relationship } = await relationshipService.getState(CHAR_DISCREET, userId, clock.now()); + expect(relationship.intimacy).toBe(50); // 未洩漏私密記憶,親密度不受影響 + }, 20000); + + it("口風不緊原型可能在群聊中洩漏私密記憶,洩漏時對使用者的親密度給予懲罰", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_LOOSE, "天然呆", "小乙"); + await createCharacter(CHAR_OTHER, "元氣", "小丙"); + await seedPrivateMemory(CHAR_LOOSE); + await relationshipService.getOrCreate(CHAR_LOOSE, userId, clock.now()); + await prisma.client.relationship.update({ + where: { characterId_userId: { characterId: CHAR_LOOSE, userId } }, + data: { intimacy: 50 }, + }); + + const room = await roomService.create(userId, [CHAR_LOOSE, CHAR_OTHER], "GROUP"); + const reply = await generation.generateReply(room, CHAR_LOOSE, USER_SPEAKER_ID, "使用者", "秘密基地的事", { + now: clock.now(), + }); + expect(reply.text).toBeTruthy(); + + const { relationship } = await relationshipService.getState(CHAR_LOOSE, userId, clock.now()); + expect(relationship.intimacy).toBe(50 + SLIP_INTIMACY_PENALTY); // 說溜嘴:親密度扣分 + }, 20000); + + it("K-5 各自視角固化:同一場群聊,不同角色各自萃取出的記憶內容與權重不同", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_DISCREET, "元氣", "小甲"); + await createCharacter(CHAR_LOOSE, "天然呆", "小乙"); + + const room = await roomService.create(userId, [CHAR_DISCREET, CHAR_LOOSE], "GROUP"); + // 「好可愛」觸發高情緒(PRAISE,強度剛好達門檻 0.6):小甲自己說的話因情緒夠強而留存; + // 小乙被提到(aboutMe)則無論情緒強度一律留存,且權重比小甲自己主觀敘述更高。 + await roomService.addTurn(room.id, CHAR_DISCREET, "小甲", "小乙你好可愛,喜歡你啦!!!", clock.now()); + + await consolidation.consolidate(room.id); + + const memoriesDiscreet = await prisma.client.episodicMemory.findMany({ where: { characterId: CHAR_DISCREET } }); + const memoriesLoose = await prisma.client.episodicMemory.findMany({ where: { characterId: CHAR_LOOSE } }); + expect(memoriesDiscreet.length).toBeGreaterThan(0); + expect(memoriesLoose.length).toBeGreaterThan(0); + + // 小乙被小甲提到(虧她可愛)——小乙記得這件事是「被說到自己」,權重比小甲自己主觀的敘述更高。 + const looseAboutSelf = memoriesLoose.find((m) => m.content.includes("小乙你好可愛")); + const discreetOwnLine = memoriesDiscreet.find((m) => m.content.includes("小乙你好可愛")); + expect(looseAboutSelf).toBeTruthy(); + expect(discreetOwnLine).toBeTruthy(); + expect(looseAboutSelf!.weight).toBeGreaterThan(discreetOwnLine!.weight); + + // 群聊固化的記憶並非來自 1:1,不應標記為私密。 + expect(memoriesDiscreet.every((m) => m.isPrivate === false)).toBe(true); + expect(memoriesLoose.every((m) => m.isPrivate === false)).toBe(true); + }, 20000); +}); diff --git a/apps/api/src/room/room-consolidation.service.ts b/apps/api/src/room/room-consolidation.service.ts index 872b64d..8d6e6b6 100644 --- a/apps/api/src/room/room-consolidation.service.ts +++ b/apps/api/src/room/room-consolidation.service.ts @@ -3,6 +3,7 @@ import { PrismaService } from "../prisma/prisma.service.js"; import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; import { HIGH_EMOTION_THRESHOLD } from "../memory/constants.js"; import { RoomService, USER_SPEAKER_ID, type Room, type RoomTurnRecord } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; async function isAboutCharacter( prisma: PrismaService, @@ -26,15 +27,29 @@ export class RoomConsolidationService { private readonly prisma: PrismaService, private readonly room: RoomService, private readonly tagger: RuleBasedEmotionTagger, + private readonly characterRelationship: CharacterRelationshipService, ) {} async consolidate(roomId: string): Promise { - const room = this.room.get(roomId); + const room = await this.room.get(roomId); for (const characterId of room.participants.keys()) { await this.consolidateForCharacter(room, characterId); } - this.room.end(roomId); - this.room.clear(roomId); + await this.accumulateRelationships(room); + await this.room.end(roomId); + await this.room.clear(roomId); + } + + // T28:初次同房從中性關係開始、之後每次固化都朝更熟悉一點小幅累積——對每一對「這場都有真的 + // 發言過」的角色(不含使用者本人),雙向各累積一次;跨作品/同作品一視同仁。 + private async accumulateRelationships(room: Room): Promise { + const speakerIds = [...new Set(room.turns.map((turn) => turn.speakerId).filter((id) => id !== USER_SPEAKER_ID))]; + for (let i = 0; i < speakerIds.length; i++) { + for (let j = i + 1; j < speakerIds.length; j++) { + await this.characterRelationship.recordInteraction(speakerIds[i], speakerIds[j]); + await this.characterRelationship.recordInteraction(speakerIds[j], speakerIds[i]); + } + } } private async consolidateForCharacter(room: Room, characterId: string): Promise { diff --git a/apps/api/src/room/room-events.service.test.ts b/apps/api/src/room/room-events.service.test.ts new file mode 100644 index 0000000..bbd7762 --- /dev/null +++ b/apps/api/src/room/room-events.service.test.ts @@ -0,0 +1,34 @@ +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { describe, expect, it } from "vitest"; +import { RoomEventsService, type RoomStreamEvent } from "./room-events.service.js"; + +// T10 驗收(服務層):訂閱者能收到對應房間的即時事件、取消訂閱後不再收到、不同房間互不干擾。 +// SSE 端到端行為(Last-Event-ID/?afterSeq= 重連補齊)已以真實 curl 對運行中伺服器驗證,見該項備註。 +describe("RoomEventsService(T10)", () => { + it("訂閱者收到對應房間發出的事件;取消訂閱後不再收到", () => { + const service = new RoomEventsService(new EventEmitter2()); + const received: RoomStreamEvent[] = []; + const unsubscribe = service.subscribe("room-a", (event) => received.push(event)); + + service.emit("room-a", { type: "turn", seq: 0, data: { content: "hi" } }); + expect(received).toHaveLength(1); + expect(received[0]).toEqual({ type: "turn", seq: 0, data: { content: "hi" } }); + + unsubscribe(); + service.emit("room-a", { type: "turn", seq: 1, data: { content: "bye" } }); + expect(received).toHaveLength(1); // 取消訂閱後不再收到 + }); + + it("不同房間的事件互不干擾", () => { + const service = new RoomEventsService(new EventEmitter2()); + const receivedA: RoomStreamEvent[] = []; + const receivedB: RoomStreamEvent[] = []; + service.subscribe("room-a", (event) => receivedA.push(event)); + service.subscribe("room-b", (event) => receivedB.push(event)); + + service.emit("room-a", { type: "member", seq: 0, data: { characterId: "x", action: "joined" } }); + + expect(receivedA).toHaveLength(1); + expect(receivedB).toHaveLength(0); + }); +}); diff --git a/apps/api/src/room/room-events.service.ts b/apps/api/src/room/room-events.service.ts new file mode 100644 index 0000000..a813669 --- /dev/null +++ b/apps/api/src/room/room-events.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from "@nestjs/common"; +import { EventEmitter2 } from "@nestjs/event-emitter"; + +// T10:房間 SSE 推送的即時(live)事件匯流排。以 RoomTurn.seq 為事件序號空間—— +// turn 事件用真正的 RoomTurn.seq(可經 GET /room/:roomId 的分頁機制完整回補,見 getTurnsSince); +// member/closed 事件用當下的 turnCounter(單調遞增、與 turn 事件同一號碼軸),但這兩類事件本身 +// 不落地成 RoomTurn,斷線期間錯過的 member/closed 屬於盡力而為通知,不保證重連後補送—— +// 重連後呼叫端可另外呼叫 GET /room/:roomId 取得當下最新的在場名單與房間狀態以校正。 +export type RoomStreamEventType = "turn" | "member" | "closed"; + +export interface RoomStreamEvent { + type: RoomStreamEventType; + seq: number; + data: Record; +} + +@Injectable() +export class RoomEventsService { + constructor(private readonly emitter: EventEmitter2) {} + + private channel(roomId: string): string { + return `room-stream.${roomId}`; + } + + emit(roomId: string, event: RoomStreamEvent): void { + this.emitter.emit(this.channel(roomId), event); + } + + subscribe(roomId: string, handler: (event: RoomStreamEvent) => void): () => void { + const channel = this.channel(roomId); + this.emitter.on(channel, handler); + return () => this.emitter.off(channel, handler); + } +} diff --git a/apps/api/src/room/room-generation-usage.test.ts b/apps/api/src/room/room-generation-usage.test.ts new file mode 100644 index 0000000..8487158 --- /dev/null +++ b/apps/api/src/room/room-generation-usage.test.ts @@ -0,0 +1,81 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; + +// T9 回歸測試:generateReply() 必須把 Provider 回傳的 usage 原樣往上傳,不可在組裝 RoomReply 時遺漏 +// (曾發生過:回傳字面量只挑了 text/actions/address,漏了 usage,導致 GROUP 房用量永遠是 0)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T12:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService(prisma, emotionService, relationshipService, retriever, characterRelationship, romanceService, mockProvider, new GlobalPauseService()); + +const userId = "test-room-gen-usage-user"; +const characterId = "test-room-gen-usage-char"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.relationship.deleteMany({ where: { characterId, userId } }); + await prisma.client.character.deleteMany({ where: { id: characterId } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +describe("RoomGenerationService.generateReply(T9 回歸)", () => { + it("回傳的 RoomReply 帶有 Provider 提供的 usage,可直接交給 RoomService.recordUsage", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await prisma.client.character.create({ + data: { + id: characterId, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + const room = await roomService.create(userId, [characterId], "GROUP"); + + const reply = await generation.generateReply(room, characterId, USER_SPEAKER_ID, "測試使用者", "哈囉", { now: clock.now() }); + + expect(reply.usage).toBeDefined(); + expect(reply.usage!.model).toBe("mock"); + expect(reply.usage!.promptTokens).toBeGreaterThan(0); + + const turn = await roomService.addTurn(room.id, characterId, "測試角色", reply.text, clock.now()); + await roomService.recordUsage(room.id, { ...reply.usage!, turnSeq: turn.turnIndex }); + const summary = await roomService.getUsageSummary(room.id); + expect(summary.generationCount).toBe(1); + expect(summary.totalPromptTokens).toBeGreaterThan(0); + }); +}); diff --git a/apps/api/src/room/room-generation.service.ts b/apps/api/src/room/room-generation.service.ts index e8e1925..671343c 100644 --- a/apps/api/src/room/room-generation.service.ts +++ b/apps/api/src/room/room-generation.service.ts @@ -3,16 +3,21 @@ import { PrismaService } from "../prisma/prisma.service.js"; import { EmotionService, dominantState } from "../emotion/emotion.service.js"; import { toResponseStyle } from "../emotion/response-style.js"; import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; import { LLM_PROVIDER, type LLMProvider } from "../llm/llm-provider.js"; import { hashToSeed } from "../llm/seeded-random.js"; import type { GenerationContext, GeneratedResponse } from "../llm/types.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { generateWithResilience } from "../llm/generate-with-resilience.js"; import { getArchetypeParams } from "../personality/archetype-params.js"; import { resolveAddress } from "../personality/language-style.js"; import { stageForIntimacy } from "../relationship/constants.js"; import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { buildCrossWorldNote, isCrossWork } from "./cross-world-note.js"; import { USER_SPEAKER_ID, type Room } from "./room.service.js"; -import { GROUP_RESERVE_INTIMACY_PENALTY, TSUNDERE_EXTRA_GROUP_PENALTY } from "./constants.js"; +import { GROUP_RESERVE_INTIMACY_PENALTY, SLIP_INTIMACY_PENALTY, TSUNDERE_EXTRA_GROUP_PENALTY } from "./constants.js"; +import { computeWitnessReaction, isRomanticMoment } from "./witness-reaction.js"; export interface RoomReplyOptions { seed?: number; @@ -32,7 +37,9 @@ export class RoomGenerationService { private readonly relationship: RelationshipService, private readonly retriever: KeywordMemoryRetriever, private readonly characterRelationship: CharacterRelationshipService, + private readonly romance: RomanceService, @Inject(LLM_PROVIDER) private readonly provider: LLMProvider, + private readonly globalPause: GlobalPauseService, ) {} async generateReply( @@ -55,15 +62,41 @@ export class RoomGenerationService { let baseIntimacy: number; let trust: number; let address: string; + let crossWorldNote: string | undefined; if (speakerId === USER_SPEAKER_ID) { const { relationship } = await this.relationship.getState(characterId, room.userId, now); baseIntimacy = relationship.intimacy; trust = relationship.trust; address = resolveAddress(speakerLabel, relationship.intimacy); + + // T35 目擊者反應:使用者跟這位角色已到曖昧以上,房內其他角色不是空氣——各自依「自己跟使用者 + // 是不是也有戀愛心思」反應,調整與這位角色的關係值並留下事件紀錄。 + if (isRomanticMoment(relationship.romanceStage)) { + const witnessIds = [...room.participants.keys()].filter((id) => id !== characterId); + if (witnessIds.length > 0) { + const targetAlias = await this.prisma.client.characterAlias.findFirst({ where: { characterId } }); + const targetLabel = targetAlias?.nickname || targetAlias?.formalName || characterId; + for (const witnessId of witnessIds) { + const witnessRomance = await this.romance.getState(witnessId, room.userId, now); + const reaction = computeWitnessReaction(witnessRomance.romanceStage, targetLabel); + await this.characterRelationship.recordWitnessReaction(witnessId, characterId, reaction.delta, reaction.description); + } + } + } } else { baseIntimacy = await this.characterRelationship.getAffinity(characterId, speakerId); trust = baseIntimacy; address = speakerLabel; + + // T28:對象是另一位角色且來自不同作品時,附上世界觀提示——不是自己原本世界就認識的存在, + // 禁止把對方設定當成自身世界既有知識,只能透過房內互動認識對方。 + const speakerCharacter = await this.prisma.client.character.findUnique({ + where: { id: speakerId }, + include: { work: true }, + }); + if (speakerCharacter && isCrossWork(speakerCharacter.workId, character.workId)) { + crossWorldNote = buildCrossWorldNote(speakerLabel, speakerCharacter.work?.title ?? null); + } } // K-2 群聊矜持:實際餵給生成的親密度下修,讓既有的模板分層(intimacyTier)自然選到更收斂的回應; @@ -81,6 +114,12 @@ export class RoomGenerationService { excludePrivate, }); + // T40 說溜嘴:口風不緊原型才可能檢索到私密記憶(見上方 excludePrivate),一旦真的取到,代表 + // 這段本該只屬於 1:1 的內容要在有旁人的房間裡說出來了——對使用者的信任/親密度給予懲罰。 + if (!excludePrivate && retrievedMemories.some((memory) => memory.isPrivate)) { + await this.relationship.recordInteraction(characterId, room.userId, now, SLIP_INTIMACY_PENALTY); + } + const history = room.turns.slice(-10).map((turn) => ({ role: (turn.speakerId === USER_SPEAKER_ID ? "user" : "character") as "user" | "character", content: `${turn.speakerLabel}:${turn.content}`, @@ -104,9 +143,15 @@ export class RoomGenerationService { userInput, injectedMemoryIds: retrievedMemories.map((memory) => memory.id), seed, + crossWorldNote, }; - const generated = await this.provider.generate(context); - return { text: `${address},${generated.text}`, actions: generated.actions, address }; + // T30:全域靜默暫停或重試全部失敗時回傳 null——這裡回傳空字串,呼叫端(room.controller.ts/ + // self-chat.service.ts)一律以「reply.text 是否有內容」決定要不要寫入 RoomTurn,不需要另外判斷。 + const generated = await generateWithResilience(this.provider, context, this.globalPause); + if (!generated) { + return { text: "", actions: [], address }; + } + return { text: `${address},${generated.text}`, actions: generated.actions, usage: generated.usage, address }; } } diff --git a/apps/api/src/room/room-interval.service.test.ts b/apps/api/src/room/room-interval.service.test.ts new file mode 100644 index 0000000..9b8bad0 --- /dev/null +++ b/apps/api/src/room/room-interval.service.test.ts @@ -0,0 +1,140 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService } from "./room.service.js"; +import { RoomIntervalService } from "./room-interval.service.js"; +import { ROOM_ADVANCE_INTERVAL_LOWER_MS, ROOM_ADVANCE_INTERVAL_UPPER_MS } from "./constants.js"; + +// T22 驗收:熱絡話題下間隔明顯縮短、空轉時明顯拉長,且計算依據可從 log 回推(本測試驗證數值行為, +// log 內容本身以 curl/人工檢視後端 log 驗證)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); // 週三 13:00 台北,FREE 時段 +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const retriever = new KeywordMemoryRetriever(prisma); +const intervalService = new RoomIntervalService(prisma, emotionService, scheduleService, retriever, sleepDebtService); + +const userId = "test-interval-user"; +const CHAR_A = "test-interval-char-a"; +const CHAR_B = "test-interval-char-b"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.emotionState.deleteMany({ where: { characterId: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.episodicMemory.deleteMany({ where: { characterId: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); +} + +describe("RoomIntervalService(T22)", () => { + it("靜默 tick 一律貼上限,不計入熱度計算", () => { + const result = intervalService.silentInterval("some-room-id"); + expect(result.silent).toBe(true); + expect(result.intervalMs).toBe(ROOM_ADVANCE_INTERVAL_UPPER_MS); + expect(result.heatScore).toBe(0); + }); + + it("熱絡話題(密集發言+互相點名+高昂情緒+命中記憶):間隔明顯縮短,貼近下限", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + await prisma.client.emotionState.create({ data: { characterId: CHAR_A, joy: 80, calm: 20 } }); + await prisma.client.emotionState.create({ data: { characterId: CHAR_B, joy: 80, calm: 20 } }); + await prisma.client.episodicMemory.create({ + data: { characterId: CHAR_A, content: "小乙的生日派對", occurredAt: clock.now(), emotionTag: "JOY", emotionIntensity: 0.8, source: "INTERACTION", weight: 1 }, + }); + + const room = await roomService.create(userId, [CHAR_A, CHAR_B], "GROUP"); + const base = clock.now(); + const turns = [ + { speaker: CHAR_A, label: "小甲", content: "小乙,今天生日派對超好玩的!", at: 0 }, + { speaker: CHAR_B, label: "小乙", content: "小甲你也太誇張了吧哈哈哈", at: 5_000 }, + { speaker: CHAR_A, label: "小甲", content: "小乙我們下次還要再辦一次!", at: 10_000 }, + ]; + for (const t of turns) { + await roomService.addTurn(room.id, t.speaker, t.label, t.content, new Date(base.getTime() + t.at)); + } + const hydrated = await roomService.get(room.id); + + const result = await intervalService.computeInterval(hydrated, new Date(base.getTime() + 12_000)); + expect(result.silent).toBe(false); + expect(result.heatScore).toBeGreaterThan(0.5); + // 熱絡話題應明顯低於上下限中點——具體門檻與冷場情境的相對差異在下一個測試直接比較。 + expect(result.intervalMs).toBeLessThan((ROOM_ADVANCE_INTERVAL_LOWER_MS + ROOM_ADVANCE_INTERVAL_UPPER_MS) / 2); + }); + + it("空轉話題(內容重複觸發 isStalling、情緒平靜、無記憶命中):間隔明顯拉長,貼近上限", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await prisma.client.emotionState.create({ data: { characterId: CHAR_A, calm: 100 } }); + + const room = await roomService.create(userId, [CHAR_A], "GROUP"); + const base = clock.now(); + for (let i = 0; i < 3; i++) { + await roomService.addTurn(room.id, CHAR_A, "小甲", "嗯。", new Date(base.getTime() + i * 60_000)); + } + const hydrated = await roomService.get(room.id); + + const result = await intervalService.computeInterval(hydrated, new Date(base.getTime() + 180_000)); + expect(result.factors.atmosphere).toBe(0); + expect(result.heatScore).toBeLessThan(0.3); + expect(result.intervalMs).toBeGreaterThan((ROOM_ADVANCE_INTERVAL_LOWER_MS + ROOM_ADVANCE_INTERVAL_UPPER_MS) / 2); + }); + + it("T32:睡眠債活躍時對該角色加懲罰項,同樣的對話內容下間隔比沒有睡眠債時更長(回覆變慢)", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await prisma.client.scheduleSlot.create({ + data: { characterId: CHAR_A, dayType: "WEEKDAY", startMinute: 0, endMinute: 1440, status: "FREE" }, + }); + const room = await roomService.create(userId, [CHAR_A], "GROUP"); + const base = clock.now(); + await roomService.addTurn(room.id, CHAR_A, "小甲", "今天天氣真好!", base); + const hydrated = await roomService.get(room.id); + + const without = await intervalService.computeInterval(hydrated, new Date(base.getTime() + 1_000)); + + await prisma.client.sleepDebt.create({ data: { characterId: CHAR_A, accumulatedMinutes: 90 } }); + const withDebt = await intervalService.computeInterval(hydrated, new Date(base.getTime() + 1_000)); + + expect(withDebt.factors.behavior).toBeLessThan(without.factors.behavior); + expect(withDebt.intervalMs).toBeGreaterThan(without.intervalMs); + + await prisma.client.sleepDebt.deleteMany({ where: { characterId: CHAR_A } }); + }); +}); diff --git a/apps/api/src/room/room-interval.service.ts b/apps/api/src/room/room-interval.service.ts new file mode 100644 index 0000000..d72e9f1 --- /dev/null +++ b/apps/api/src/room/room-interval.service.ts @@ -0,0 +1,159 @@ +import { Injectable } from "@nestjs/common"; +import { log } from "@kokorone/shared"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { EmotionService, dominantState } from "../emotion/emotion.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { SleepDebtService, SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES } from "../schedule/sleep-debt.service.js"; +import { EMOTION_SPEAKING_MODIFIER, ROOM_ADVANCE_INTERVAL_LOWER_MS, ROOM_ADVANCE_INTERVAL_UPPER_MS, STALL_CHECK_WINDOW } from "./constants.js"; +import { isStalling } from "./stall-detection.js"; +import type { Room } from "./room.service.js"; + +export interface IntervalFactors { + atmosphere: number; // 0~1:近期發言密度、互相點名、空轉判定 + emotion: number; // 0~1:在場角色情緒對發言意願的影響 + memory: number; // 0~1:目前話題是否命中既有記憶 + behavior: number; // 0~1:行程狀態與既有行為規則的活躍程度 +} + +export interface IntervalResult { + intervalMs: number; + heatScore: number; // 0~1,四項因子加權後的熱度 + factors: IntervalFactors; + silent: boolean; // T22:靜默 tick(沒有實際產生 RoomTurn)一律貼上限,不計入熱度計算 +} + +const FACTOR_WEIGHTS = { atmosphere: 0.35, emotion: 0.25, memory: 0.2, behavior: 0.2 }; + +// 發言密度的參考間隔:近期發言平均間隔 ≦ 此值視為「很熱絡」(density 分數趨近 1)。 +const DENSITY_REFERENCE_GAP_MS = 2 * 60_000; +const RECENT_TURN_WINDOW = 5; + +function clamp01(value: number): number { + return Math.max(0, Math.min(1, value)); +} + +function densityScore(timestamps: Date[]): number { + if (timestamps.length < 2) return 0; + const window = timestamps.slice(-RECENT_TURN_WINDOW); + const gaps: number[] = []; + for (let i = 1; i < window.length; i++) { + gaps.push(window[i].getTime() - window[i - 1].getTime()); + } + const avgGap = gaps.reduce((sum, gap) => sum + gap, 0) / gaps.length; + return clamp01(1 - avgGap / DENSITY_REFERENCE_GAP_MS); +} + +function mutualNamingScore(recentTurns: { speakerLabel: string; content: string }[], presentLabels: string[]): number { + if (recentTurns.length === 0 || presentLabels.length < 2) return 0; + const hits = recentTurns.filter((turn) => presentLabels.some((label) => label !== turn.speakerLabel && turn.content.includes(label))).length; + return clamp01(hits / recentTurns.length); +} + +// T22:把推進間隔改為每輪重算——房內氣氛(發言密度+互相點名,空轉判定會直接歸零)、在場角色情緒、 +// 話題是否命中既有記憶、行程狀態與既有行為規則四項因子算出熱度分數,再以單調遞減映射換成間隔並夾在 +// 上下限之間;計算全程不參考 SSE 連線數與用量(見各因子計算內容,皆與這兩者無關)。 +@Injectable() +export class RoomIntervalService { + constructor( + private readonly prisma: PrismaService, + private readonly emotion: EmotionService, + private readonly schedule: ScheduleService, + private readonly retriever: KeywordMemoryRetriever, + private readonly sleepDebt: SleepDebtService, + ) {} + + // 靜默 tick(本輪沒有產生任何 RoomTurn,例如沒有角色被判定該發言):不計入熱度計算,間隔直接貼上限。 + silentInterval(roomId: string): IntervalResult { + const result: IntervalResult = { + intervalMs: ROOM_ADVANCE_INTERVAL_UPPER_MS, + heatScore: 0, + factors: { atmosphere: 0, emotion: 0, memory: 0, behavior: 0 }, + silent: true, + }; + log("自走間隔計算", "INF", `房間 ${roomId} 本輪靜默(無新 RoomTurn),間隔貼上限 ${result.intervalMs}ms`); + return result; + } + + async computeInterval(room: Room, now: Date = new Date()): Promise { + const presentCharacterIds = [...room.participants.keys()]; + const recentTurns = room.turns.slice(-RECENT_TURN_WINDOW); + const recentContents = recentTurns.map((turn) => turn.content); + + const atmosphere = isStalling(room.turns.slice(-STALL_CHECK_WINDOW).map((turn) => turn.content)) + ? 0 + : clamp01( + densityScore(recentTurns.map((turn) => turn.timestamp)) * 0.7 + + mutualNamingScore(recentTurns, recentTurns.map((turn) => turn.speakerLabel)) * 0.3, + ); + + const emotion = await this.computeEmotionFactor(presentCharacterIds, now); + const memory = await this.computeMemoryFactor(presentCharacterIds, recentContents); + const behavior = await this.computeBehaviorFactor(presentCharacterIds, now); + + const factors: IntervalFactors = { atmosphere, emotion, memory, behavior }; + const heatScore = clamp01( + factors.atmosphere * FACTOR_WEIGHTS.atmosphere + + factors.emotion * FACTOR_WEIGHTS.emotion + + factors.memory * FACTOR_WEIGHTS.memory + + factors.behavior * FACTOR_WEIGHTS.behavior, + ); + + // 單調遞減映射:熱度 1 → 下限,熱度 0 → 上限。 + const intervalMs = Math.round( + ROOM_ADVANCE_INTERVAL_LOWER_MS + (ROOM_ADVANCE_INTERVAL_UPPER_MS - ROOM_ADVANCE_INTERVAL_LOWER_MS) * (1 - heatScore), + ); + + log( + "自走間隔計算", + "INF", + `房間 ${room.id} 熱度=${heatScore.toFixed(2)}(氣氛=${atmosphere.toFixed(2)}、情緒=${emotion.toFixed(2)}、記憶=${memory.toFixed(2)}、行為=${behavior.toFixed(2)})→ 間隔 ${intervalMs}ms`, + ); + + return { intervalMs, heatScore, factors, silent: false }; + } + + private async computeEmotionFactor(characterIds: string[], now: Date): Promise { + if (characterIds.length === 0) return 0; + const modifiers = await Promise.all( + characterIds.map(async (characterId) => { + const state = await this.emotion.getState(characterId, now); + return EMOTION_SPEAKING_MODIFIER[dominantState(state)]; + }), + ); + const avg = modifiers.reduce((sum, modifier) => sum + modifier, 0) / modifiers.length; + // EMOTION_SPEAKING_MODIFIER 範圍約 -0.3~0.3,正規化到 0~1。 + return clamp01((avg + 0.3) / 0.6); + } + + private async computeMemoryFactor(characterIds: string[], recentContents: string[]): Promise { + if (characterIds.length === 0 || recentContents.length === 0) return 0; + const query = recentContents.join(" "); + const hits = await Promise.all( + characterIds.map(async (characterId) => { + const memories = await this.retriever.retrieve(characterId, query, { limit: 1 }); + return memories.length > 0 ? 1 : 0; + }), + ); + return clamp01(hits.reduce((sum, hit) => sum + hit, 0) / characterIds.length); + } + + private async computeBehaviorFactor(characterIds: string[], now: Date): Promise { + if (characterIds.length === 0) return 0; + const perCharacter = await Promise.all( + characterIds.map(async (characterId) => { + const info = await this.schedule.getInfo(characterId, now); + const scheduleComponent = info.slot?.status === "FREE" ? 1 : info.slot?.status === "BUSY" ? 0.3 : 0; + const rules = await this.prisma.client.proceduralRule.findMany({ where: { characterId } }); + const ruleWeightSum = rules.reduce((sum, rule) => sum + rule.weight, 0); + const ruleComponent = clamp01(ruleWeightSum / 5); + // T32:睡眠債活躍時對該角色加懲罰項,拖低房間整體熱度(等同「回覆變慢」)。 + const debtMinutes = await this.sleepDebt.getDebtMinutes(characterId); + const sleepDebtPenalty = debtMinutes >= SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES ? 0.4 : 0; + return clamp01((scheduleComponent + ruleComponent) / 2 - sleepDebtPenalty); + }), + ); + return clamp01(perCharacter.reduce((sum, value) => sum + value, 0) / perCharacter.length); + } +} + diff --git a/apps/api/src/room/room-notification.service.ts b/apps/api/src/room/room-notification.service.ts new file mode 100644 index 0000000..b4a1ce1 --- /dev/null +++ b/apps/api/src/room/room-notification.service.ts @@ -0,0 +1,39 @@ +import { Injectable } from "@nestjs/common"; +import { PushNotificationService } from "../push/push-notification.service.js"; +import type { Room } from "./room.service.js"; + +// T31 靜音與重要事件推播:房間 `muted` 為真時完全不推播(但自走照常進行,不是暫停); +// 閒聊本身一律不推播,只有下面四類事件才會走這裡。第四類(結局偵測待確認)的偵測邏輯本身屬於 +// P4「結局偵測」的範疇、尚未實作,這裡先備好可直接呼叫的推播入口——等 P4 該功能落地時直接呼叫 +// notifyEndingDetectionPending(),不需要再回頭改動推播模組本身。 +@Injectable() +export class RoomNotificationService { + constructor(private readonly push: PushNotificationService) {} + + // 角色直接回覆使用者發言(被喊/被點名),非角色之間的自走閒聊。 + async notifyMentioned(room: Room, characterLabel: string, content: string): Promise { + await this.notify(room, `${characterLabel}回你了`, content); + } + + // 自走過程中所有角色各自離場後,房間自動收尾關閉(非使用者主動按下「結束房間」)。 + async notifyRoomClosed(room: Room, reason: string): Promise { + await this.notify(room, "房間已自動關閉", `原因:${reason}`); + } + + async notifyDelegateProposed(room: Room, characterLabel: string, taskContent: string): Promise { + await this.notify(room, `${characterLabel}提出了委託`, taskContent); + } + + async notifyEndingDetectionPending(userId: string, characterLabel: string): Promise { + await this.push.sendToUser( + userId, + "有一段故事可能走向結局", + `${characterLabel}的故事似乎到了轉折點,要不要去看看、確認一下?`, + ); + } + + private async notify(room: Room, title: string, body: string): Promise { + if (room.muted) return; + await this.push.sendToUser(room.userId, title, body); + } +} diff --git a/apps/api/src/room/room-notification.test.ts b/apps/api/src/room/room-notification.test.ts new file mode 100644 index 0000000..30bbf3c --- /dev/null +++ b/apps/api/src/room/room-notification.test.ts @@ -0,0 +1,199 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { PushTokenService } from "../push/push-token.service.js"; +import { PushNotificationService } from "../push/push-notification.service.js"; +import { MockPushProvider } from "../push/mock-push-provider.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; +import { SpeakingRightService } from "./speaking-right.service.js"; +import { BehaviorSelectionService } from "./behavior-selection.service.js"; +import { SelfChatService } from "./self-chat.service.js"; +import { RoomNotificationService } from "./room-notification.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; +import { TaskService } from "../task/task.service.js"; +import { TaskSchedulerService } from "../task/task-scheduler.service.js"; +import { TaskTriggerService } from "../task/task-trigger.service.js"; +import { SentimentLedgerService } from "../relationship/sentiment-ledger.service.js"; +import { InProcessJobQueue } from "../memory/in-process-job-queue.service.js"; +import { PossessionService } from "./possession.service.js"; +import { LifeEventService } from "../epilogue/life-event.service.js"; +import { EpilogueProgressService } from "../epilogue/epilogue-progress.service.js"; +import { ProjectionService } from "../canon/projection.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; + +// T31 驗收:Room.muted 為真時完全不推播;被喊或被點名(自走內容提到使用者本名)、房間自動關閉 +// (自走收尾,非使用者主動結束)兩類事件會走 RoomNotificationService 送出推播。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const romanceService = new RomanceService( + prisma, + relationshipService, + new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma)), +); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService( + prisma, + emotionService, + relationshipService, + retriever, + characterRelationship, + romanceService, + mockProvider, + new GlobalPauseService(), +); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const behaviorSelection = new BehaviorSelectionService( + prisma, + emotionService, + scheduleService, + sleepDebtService, + new PersonalityResolutionService(prisma, new PersonalityDriftService(prisma)), +); +const pushToken = new PushTokenService(prisma); +const mockPushProvider = new MockPushProvider(); +const pushNotification = new PushNotificationService(prisma, pushToken, mockPushProvider); +const roomNotification = new RoomNotificationService(pushNotification); +const taskTrigger = new TaskTriggerService(prisma, scheduleService, retriever, pushNotification); +const jobQueue = new InProcessJobQueue(); +const taskScheduler = new TaskSchedulerService(prisma, jobQueue, taskTrigger); +const sentimentLedger = new SentimentLedgerService(prisma, relationshipService); +const taskService = new TaskService(prisma, sentimentLedger, taskScheduler); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), new BehaviorReinforcementService(prisma)); +const lifeEvent = new LifeEventService(prisma, projection); +const epilogueProgress = new EpilogueProgressService(prisma, lifeEvent); +const possession = new PossessionService(prisma, roomService, speakingRight, generation, lobbyService); +const selfChat = new SelfChatService( + prisma, + roomService, + speakingRight, + generation, + lobbyService, + behaviorSelection, + taskService, + roomNotification, + epilogueProgress, + possession, +); + +const userId = "test-room-notify-user"; +const CHAR_A = "test-room-notify-char-a"; + +afterEach(async () => { + await prisma.client.pushToken.deleteMany({ where: { userId } }); + await prisma.client.pushNotificationLog.deleteMany({ where: { userId } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_A } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: id } }, + }, + }); +} + +describe("靜音與重要事件推播(T31)", () => { + it("Room.muted 為真時,四類事件的推播入口一律不送出", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await pushToken.register(userId, "test-room-notify-token-muted", "expo"); + const room = await roomService.create(userId, [], "GROUP"); + await roomService.setMuted(room.id, true); + const mutedRoom = await roomService.get(room.id); + + const before = mockPushProvider.sent.length; + await roomNotification.notifyMentioned(mutedRoom, "小甲", "在嗎?"); + await roomNotification.notifyRoomClosed(mutedRoom, "ALL_LEFT"); + await roomNotification.notifyDelegateProposed(mutedRoom, "小甲", "幫你查了一下"); + expect(mockPushProvider.sent.length).toBe(before); // 靜音:一則都沒送出 + }, 20000); + + it("Room.muted 為假時,四類事件都會送出推播", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await pushToken.register(userId, "test-room-notify-token-unmuted", "expo"); + const room = await roomService.create(userId, [], "GROUP"); + + await roomNotification.notifyMentioned(room, "小甲", "在嗎?"); + await roomNotification.notifyRoomClosed(room, "ALL_LEFT"); + await roomNotification.notifyDelegateProposed(room, "小甲", "幫你查了一下"); + await roomNotification.notifyEndingDetectionPending(userId, "小甲"); + + expect(mockPushProvider.sent.some((m) => m.body === "在嗎?")).toBe(true); + expect(mockPushProvider.sent.some((m) => m.body === "原因:ALL_LEFT")).toBe(true); + expect(mockPushProvider.sent.some((m) => m.body === "幫你查了一下")).toBe(true); + expect(mockPushProvider.sent.some((m) => m.title === "有一段故事可能走向結局")).toBe(true); + }, 20000); + + it("自走內容提到使用者本名(被喊或被點名)時會推播,未提到(純閒聊)則不會", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await pushToken.register(userId, "test-room-notify-token-mention", "expo"); + await createCharacter(CHAR_A); + const room = await selfChat.start(userId, [CHAR_A], "測試話題", clock.now()); + + mockProvider.enqueueResponse("欸,測試使用者,你在嗎?我有事想問你!"); + const beforeMention = mockPushProvider.sent.length; + await selfChat.advance(room.id, clock.now()); + expect(mockPushProvider.sent.length).toBeGreaterThan(beforeMention); + expect(mockPushProvider.sent.some((m) => m.body.includes("測試使用者,你在嗎"))).toBe(true); + + mockProvider.enqueueResponse("今天天氣真好呢,心情也很不錯!"); + const beforeChitchat = mockPushProvider.sent.length; + await selfChat.advance(room.id, new Date(clock.now().getTime() + 1000)); + expect(mockPushProvider.sent.length).toBe(beforeChitchat); // 純閒聊不推播 + }, 20000); + + it("自走房間所有角色都離場、自動關閉時會推播", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await pushToken.register(userId, "test-room-notify-token-close", "expo"); + // 零角色的自走房:advance() 第一輪就因找不到候選發言者直接觸發 wrapUp()(見 self-chat.service.ts)。 + const room = await selfChat.start(userId, [], "測試話題", clock.now()); + + const before = mockPushProvider.sent.length; + const result = await selfChat.advance(room.id, clock.now()); + expect(result.ended).toBe(true); + expect(mockPushProvider.sent.length).toBeGreaterThan(before); + expect(mockPushProvider.sent.some((m) => m.title === "房間已自動關閉")).toBe(true); + }, 20000); +}); diff --git a/apps/api/src/room/room-persistence.integration.test.ts b/apps/api/src/room/room-persistence.integration.test.ts new file mode 100644 index 0000000..a4be659 --- /dev/null +++ b/apps/api/src/room/room-persistence.integration.test.ts @@ -0,0 +1,97 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterAll, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; + +// T2 驗收:migration 可套用;RoomMember 的 activeCharacterId 唯一索引讓「重複讓同一角色入房」直接被 DB 擋下(R5)。 +// 沿用已套用過 migration 的開發用 dev.db,每個案例包在互動式交易內並強制丟出 sentinel 觸發回滾, +// 確保測試資料不會殘留(`prisma migrate deploy` 對全新資料庫套用 16 筆 migration 實測約需 78 秒, +// 不適合每次跑測試都重建資料庫)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +const devDbUrl = `file:${join(repoRoot, "prisma", "dev.db")}`; + +process.env.DATABASE_URL = devDbUrl; +const prisma = createPrismaClient(); + +const ROLLBACK = Symbol("rollback"); + +async function inRolledBackTransaction(fn: (tx: typeof prisma) => Promise): Promise { + try { + await prisma.$transaction(async (tx) => { + await fn(tx as typeof prisma); + throw ROLLBACK; + }); + } catch (error) { + if (error !== ROLLBACK) throw error; + return undefined; + } +} + +afterAll(async () => { + await prisma.$disconnect(); +}); + +describe("Room 持久化 schema(T2)", () => { + it("角色不可同時在場於兩個房間:第二筆 activeCharacterId 會被唯一索引擋下", async () => { + await inRolledBackTransaction(async (tx) => { + const user = await tx.user.create({ data: { name: "測試使用者" } }); + const character = await tx.character.create({ + data: { + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試角色", + backgroundStory: "測試", + personalityArchetype: "TSUNDERE", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + const roomA = await tx.room.create({ data: { userId: user.id, mode: "SOLO" } }); + const roomB = await tx.room.create({ data: { userId: user.id, mode: "SOLO" } }); + + await tx.roomMember.create({ + data: { roomId: roomA.id, characterId: character.id, activeCharacterId: character.id }, + }); + + await expect( + tx.roomMember.create({ + data: { roomId: roomB.id, characterId: character.id, activeCharacterId: character.id }, + }), + ).rejects.toThrow(); + }); + }); + + it("角色離場(activeCharacterId 設為 null)後可在另一間房重新登記為在場", async () => { + await inRolledBackTransaction(async (tx) => { + const user = await tx.user.create({ data: { name: "測試使用者2" } }); + const character = await tx.character.create({ + data: { + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試角色2", + backgroundStory: "測試", + personalityArchetype: "TSUNDERE", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + const roomA = await tx.room.create({ data: { userId: user.id, mode: "SOLO" } }); + const roomB = await tx.room.create({ data: { userId: user.id, mode: "SOLO" } }); + + const membershipA = await tx.roomMember.create({ + data: { roomId: roomA.id, characterId: character.id, activeCharacterId: character.id }, + }); + await tx.roomMember.update({ + where: { id: membershipA.id }, + data: { leftAt: new Date(), leaveReason: "ENTER_ROOM", activeCharacterId: null }, + }); + + const membershipB = await tx.roomMember.create({ + data: { roomId: roomB.id, characterId: character.id, activeCharacterId: character.id }, + }); + expect(membershipB.activeCharacterId).toBe(character.id); + }); + }); +}); diff --git a/apps/api/src/room/room-scheduler.service.test.ts b/apps/api/src/room/room-scheduler.service.test.ts new file mode 100644 index 0000000..15de58b --- /dev/null +++ b/apps/api/src/room/room-scheduler.service.test.ts @@ -0,0 +1,142 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import type { JobQueue } from "../memory/job-queue.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService } from "./room.service.js"; +import { RoomIntervalService } from "./room-interval.service.js"; +import type { SelfChatService } from "./self-chat.service.js"; +import { RoomSchedulerService } from "./room-scheduler.service.js"; +import { ROOM_ADVANCE_INTERVAL_UPPER_MS } from "./constants.js"; + +// T37/T8 驗收:重啟 api 後房間自動繼續推進、不出現爆量補齊;到期判斷改依 T22 動態間隔(本測試用的 +// 空房間沒有任何在場角色/對話內容,熱度恆為 0,動態間隔會穩定落在上限值,藉此驗證排程判斷邏輯本身, +// 實際自走內容生成已由 smoke K 群組覆蓋)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const noopJobQueue = {} as JobQueue; // scanAndAdvance() 本身不用到 jobQueue,只有 onModuleInit 會用 +const roomEvents = new RoomEventsService(new EventEmitter2()); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const retriever = new KeywordMemoryRetriever(prisma); + +const userId = "test-scheduler-user"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +function buildScheduler(clock: ControllableClock, selfChat: SelfChatService) { + const lobbyService = new LobbyService(prisma, clock, roomEvents); + const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); + const intervalService = new RoomIntervalService(prisma, emotionService, scheduleService, retriever, sleepDebtService); + return new RoomSchedulerService(prisma, noopJobQueue, clock, roomService, selfChat, intervalService); +} + +describe("RoomSchedulerService(T37/T8)", () => { + it("到期才推進一次;停機再久重新掃描也只補推進一次,不會依錯過的輪數重複補齊", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試排程使用者" } }); + const room = await prisma.client.room.create({ data: { userId, mode: "SELF_CHAT", status: "ACTIVE" } }); + + const clock = new ControllableClock("2026-08-18T12:00:00.000Z"); + const advanceCalls: string[] = []; + const fakeSelfChat = { + advance: async (roomId: string, now?: Date) => { + advanceCalls.push(roomId); + await prisma.client.room.update({ where: { id: roomId }, data: { lastAdvancedAt: now ?? clock.now() } }); + return { ended: false }; + }, + } as unknown as SelfChatService; + const scheduler = buildScheduler(clock, fakeSelfChat); + + // 剛建立、lastAdvancedAt 為 null:立刻視為到期,推進一次。 + await scheduler.scanAndAdvance(); + expect(advanceCalls).toEqual([room.id]); + + // 間隔內再掃一次:還沒到期,不推進(空房間熱度恆為 0,動態間隔落在上限值)。 + advanceCalls.length = 0; + await scheduler.scanAndAdvance(); + expect(advanceCalls).toEqual([]); + + // 模擬停機遠超過間隔上限後才重新掃描:只推進「一次」讓它接上目前時間,不依錯過的輪數補齊。 + clock.advance(ROOM_ADVANCE_INTERVAL_UPPER_MS * 10); + advanceCalls.length = 0; + await scheduler.scanAndAdvance(); + expect(advanceCalls).toEqual([room.id]); + expect(advanceCalls).toHaveLength(1); + + // 補推進後立刻再掃一次:又還沒到期,不會連續補第二次。 + advanceCalls.length = 0; + await scheduler.scanAndAdvance(); + expect(advanceCalls).toEqual([]); + + // 間隔剛好過了:正常繼續推進,不因為前面的補推進而被跳過。 + clock.advance(ROOM_ADVANCE_INTERVAL_UPPER_MS + 1); + advanceCalls.length = 0; + await scheduler.scanAndAdvance(); + expect(advanceCalls).toEqual([room.id]); + }, 20000); + + it("同一房間的上一次 advance() 還沒跑完時,下一次 tick 不會再併發推進同一房間(T18 迴歸)", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試排程使用者3" } }); + const room = await prisma.client.room.create({ data: { userId, mode: "SELF_CHAT", status: "ACTIVE" } }); + + const clock = new ControllableClock("2026-08-18T12:00:00.000Z"); + let concurrentCalls = 0; + let maxConcurrentCalls = 0; + const fakeSelfChat = { + advance: async (roomId: string) => { + concurrentCalls += 1; + maxConcurrentCalls = Math.max(maxConcurrentCalls, concurrentCalls); + // 故意拖長:模擬 T18 實測中大房間單輪耗時可能超過 tick 週期(10 秒)的情況。 + await new Promise((resolve) => setTimeout(resolve, 100)); + concurrentCalls -= 1; + return { ended: false }; + }, + } as unknown as SelfChatService; + const scheduler = buildScheduler(clock, fakeSelfChat); + + // 第一次 scanAndAdvance() 還在跑(advance() 尚未完成)時,立刻疊上第二次 tick。 + const first = scheduler.scanAndAdvance(); + const second = scheduler.scanAndAdvance(); + await Promise.all([first, second]); + + expect(maxConcurrentCalls).toBe(1); // 任何時刻最多只有一個 advance() 在跑同一房間 + void room; // 僅供上方 create 呼叫,本測試不需要另外讀取房間內容 + }, 20000); + + it("不掃描 LOBBY 房與 autoAdvanceEnabled=false 的房間", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試排程使用者2" } }); + await prisma.client.room.create({ data: { userId, mode: "LOBBY", status: "ACTIVE", autoAdvanceEnabled: false } }); + await prisma.client.room.create({ + data: { userId, mode: "SELF_CHAT", status: "ACTIVE", autoAdvanceEnabled: false }, + }); + + const clock = new ControllableClock("2026-08-18T12:00:00.000Z"); + const advanceCalls: string[] = []; + const fakeSelfChat = { + advance: async (roomId: string) => { + advanceCalls.push(roomId); + return { ended: false }; + }, + } as unknown as SelfChatService; + const scheduler = buildScheduler(clock, fakeSelfChat); + + await scheduler.scanAndAdvance(); + expect(advanceCalls).toEqual([]); + }, 20000); +}); diff --git a/apps/api/src/room/room-scheduler.service.ts b/apps/api/src/room/room-scheduler.service.ts new file mode 100644 index 0000000..de89205 --- /dev/null +++ b/apps/api/src/room/room-scheduler.service.ts @@ -0,0 +1,78 @@ +import { Inject, Injectable, OnModuleInit } from "@nestjs/common"; +import { log } from "@kokorone/shared"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { JOB_QUEUE, type JobQueue } from "../memory/job-queue.js"; +import { CLOCK, type Clock } from "../clock/clock.js"; +import { RoomService } from "./room.service.js"; +import { SelfChatService } from "./self-chat.service.js"; +import { RoomIntervalService } from "./room-interval.service.js"; +import { ROOM_SCHEDULER_TICK_CRON } from "./constants.js"; + +// T37/T8:推進行程的部署與重啟恢復,且不降頻——排程與 api 同行程(沿用 InProcessJobQueue/node-cron +// 慣例,不等主計畫 R-6 的 BullMQ 化)。啟動時立刻掃一次所有 ACTIVE 房間並依 lastAdvancedAt 判斷是否 +// 已到期,到期就推進「一次」讓它接上目前時間——停機期間錯過的推進不補齊(不因為停機 1 小時就 +// 補打 120 次),之後交給週期 tick 持續運作。 +// +// 前提:單一 api 實例(README 已於部署章節註明),故不需要分散式鎖;本排程器目前查詢量小, +// 沒有導入 Redis 加速的需要,因此也沒有任何硬性 Redis 依賴——「Redis 不可用時退回查庫」對本 +// 排程器而言是「本來就只查庫」,不是額外的容錯路徑。 +// +// T8:到期判斷改為每房各自呼叫 T22 的 RoomIntervalService 動態算出應有間隔(不再是固定值), +// 完全不參考 SSE 連線數/用量——關掉所有前端連線、沒有任何人在看,房間仍會依這裡算出的節奏持續推進; +// 全員離開的自動關房已由 SelfChatService 內部的 LEAVE/wrapUp(見該檔)處理,本排程器只需照常 +// 掃描 status=ACTIVE 的房間,房間關閉後自然不再被掃到。 +@Injectable() +export class RoomSchedulerService implements OnModuleInit { + // T18 實測發現:多人房單輪耗時可能超過 tick 週期(12 人房 p95 實測達數十秒,遠超 10 秒 tick), + // 若不擋下,下一次 tick 會在同一房間的 advance() 還沒跑完時又觸發一次,造成同一房間被併發推進兩次 + // (turnCounter/發言權計算都假設單一 in-flight advance,併發會產生競態)。用一個記憶體內的 + // in-flight 名單擋下:單一 api 實例前提下(見檔頭註解)足夠,房間推進完(成功或失敗)都會移除。 + private readonly advancing = new Set(); + + constructor( + private readonly prisma: PrismaService, + @Inject(JOB_QUEUE) private readonly jobQueue: JobQueue, + @Inject(CLOCK) private readonly clock: Clock, + private readonly room: RoomService, + private readonly selfChat: SelfChatService, + private readonly interval: RoomIntervalService, + ) {} + + onModuleInit(): void { + this.jobQueue.now("room-scheduler:startup-scan", () => this.scanAndAdvance()); + this.jobQueue.every(ROOM_SCHEDULER_TICK_CRON, "room-scheduler:tick", () => this.scanAndAdvance()); + } + + async scanAndAdvance(): Promise { + const now = this.clock.now(); + const candidates = await this.prisma.client.room.findMany({ + where: { status: "ACTIVE", mode: "SELF_CHAT", autoAdvanceEnabled: true }, + select: { id: true, lastAdvancedAt: true }, + }); + + // 支援多房並行:每間房各自獨立判斷、獨立推進,一間失敗不影響其他房間。 + await Promise.all( + candidates.map(async ({ id: roomId, lastAdvancedAt }) => { + // 檢查與標記必須同步、中間不能有 await,否則兩個幾乎同時的 tick 會在彼此標記完成前 + // 都通過檢查、一起把同一房間送進 advance()——這正是本段要擋下的併發。 + if (this.advancing.has(roomId)) return; // 上一次 advance() 還沒跑完,這次 tick 先跳過。 + this.advancing.add(roomId); + try { + if (!(await this.isDue(roomId, lastAdvancedAt, now))) return; + await this.selfChat.advance(roomId, now); + } catch (err) { + log("排程", "ERR", `房間 ${roomId} 自走推進失敗:${err instanceof Error ? err.message : String(err)}`); + } finally { + this.advancing.delete(roomId); + } + }), + ); + } + + private async isDue(roomId: string, lastAdvancedAt: Date | null, now: Date): Promise { + if (!lastAdvancedAt) return true; // 從未推進過,立刻接上。 + const room = await this.room.get(roomId); + const { intervalMs } = await this.interval.computeInterval(room, now); + return now.getTime() - lastAdvancedAt.getTime() >= intervalMs; + } +} diff --git a/apps/api/src/room/room-turns-page.test.ts b/apps/api/src/room/room-turns-page.test.ts new file mode 100644 index 0000000..ac9bbc3 --- /dev/null +++ b/apps/api/src/room/room-turns-page.test.ts @@ -0,0 +1,90 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; + +// T12 驗收:GET /room/:roomId 分頁支援從指定游標往前後取,重新進入未關閉的房間可看到先前對話。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-18T12:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); + +const userId = "test-turns-page-user"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +describe("RoomService.getTurnsPage(T12)", () => { + it("未帶游標時回傳最新一頁;beforeSeq 可往前翻到較舊的一頁;afterSeq 可往後翻到較新的一頁", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試翻頁使用者" } }); + const room = await roomService.create(userId, [], "GROUP"); + for (let i = 0; i < 10; i++) { + await roomService.addTurn(room.id, USER_SPEAKER_ID, "測試使用者", `第 ${i} 句`, clock.now()); + clock.advance(1000); + } + + const latest = await roomService.getTurnsPage(room.id, { limit: 4 }); + expect(latest.turns.map((t) => t.content)).toEqual(["第 6 句", "第 7 句", "第 8 句", "第 9 句"]); + expect(latest.hasMore).toBe(true); + expect(latest.nextCursor).toBe(6); + + const older = await roomService.getTurnsPage(room.id, { beforeSeq: latest.nextCursor!, limit: 4 }); + expect(older.turns.map((t) => t.content)).toEqual(["第 2 句", "第 3 句", "第 4 句", "第 5 句"]); + expect(older.hasMore).toBe(true); + expect(older.nextCursor).toBe(2); + + const oldest = await roomService.getTurnsPage(room.id, { beforeSeq: older.nextCursor!, limit: 4 }); + expect(oldest.turns.map((t) => t.content)).toEqual(["第 0 句", "第 1 句"]); + expect(oldest.hasMore).toBe(false); + expect(oldest.nextCursor).toBeNull(); + + const newerAgain = await roomService.getTurnsPage(room.id, { afterSeq: 5, limit: 3 }); + expect(newerAgain.turns.map((t) => t.content)).toEqual(["第 6 句", "第 7 句", "第 8 句"]); + expect(newerAgain.hasMore).toBe(true); + expect(newerAgain.nextCursor).toBe(8); + }, 20000); // 多次循序 DB 往返(better-sqlite3 + 逐漸增長的 dev.db),預設 5s 逾時偶爾不夠。 + + it("使用者離開後重進,對話歷程完整且角色仍在場", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試重進使用者" } }); + const characterId = "test-turns-page-char"; + await prisma.client.character.upsert({ + where: { id: characterId }, + update: {}, + create: { + id: characterId, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "TSUNDERE", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + try { + const room = await roomService.create(userId, [characterId], "GROUP"); + await roomService.addTurn(room.id, USER_SPEAKER_ID, "測試使用者", "你好", clock.now()); + await roomService.addTurn(room.id, characterId, "小測", "你好呀", clock.now()); + + // 模擬「離開後重進」:不做任何額外動作,單純重新讀取即可,因為對話已持久化不是記憶體物件。 + const reentered = await roomService.get(room.id); + expect(reentered.turns.map((t) => t.content)).toEqual(["你好", "你好呀"]); + expect([...reentered.participants.keys()]).toContain(characterId); + } finally { + await prisma.client.character.deleteMany({ where: { id: characterId } }); + } + }); +}); diff --git a/apps/api/src/room/room-unread.test.ts b/apps/api/src/room/room-unread.test.ts new file mode 100644 index 0000000..b6f9e06 --- /dev/null +++ b/apps/api/src/room/room-unread.test.ts @@ -0,0 +1,59 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; + +// T11 驗收:離開房間讓它累積訊息後重進,畫面自動落在第一則未讀且未讀數歸零。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T12:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); + +const userId = "test-unread-user"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +describe("RoomService 未讀追蹤(T11)", () => { + it("未讀數與第一則未讀游標正確;已讀游標單調遞增不可回退;讀到底部未讀數歸零", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試未讀使用者" } }); + const room = await roomService.create(userId, [], "GROUP"); + + for (let i = 0; i < 5; i++) { + await roomService.addTurn(room.id, USER_SPEAKER_ID, "測試", `第 ${i} 句`, clock.now()); + } + + const beforeAnyRead = await roomService.getUnreadInfo(room.id, userId); + expect(beforeAnyRead.lastReadSeq).toBe(-1); + expect(beforeAnyRead.firstUnreadSeq).toBe(0); + expect(beforeAnyRead.unreadCount).toBe(5); + + await roomService.reportRead(room.id, userId, 2); + const afterPartialRead = await roomService.getUnreadInfo(room.id, userId); + expect(afterPartialRead.firstUnreadSeq).toBe(3); + expect(afterPartialRead.unreadCount).toBe(2); + + // 不可回退:回報比目前紀錄舊的 seq 不應讓已讀游標倒退。 + await roomService.reportRead(room.id, userId, 1); + const afterRegress = await roomService.getUnreadInfo(room.id, userId); + expect(afterRegress.lastReadSeq).toBe(2); + + // 讀到底部才回報:未讀數應歸零。 + await roomService.reportRead(room.id, userId, 4); + const afterFullRead = await roomService.getUnreadInfo(room.id, userId); + expect(afterFullRead.firstUnreadSeq).toBeNull(); + expect(afterFullRead.unreadCount).toBe(0); + }, 20000); // 多次循序 DB 往返(better-sqlite3 + 逐漸增長的 dev.db),預設 5s 逾時偶爾不夠。 +}); diff --git a/apps/api/src/room/room-usage.test.ts b/apps/api/src/room/room-usage.test.ts new file mode 100644 index 0000000..13762fa --- /dev/null +++ b/apps/api/src/room/room-usage.test.ts @@ -0,0 +1,65 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; + +// T9 驗收:每次生成後寫入用量紀錄、可查詢累計用量,且不因用量而限制發言(本測試只驗證記錄本身)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T12:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); + +const userId = "test-room-usage-user"; +const characterId = "test-room-usage-char"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: characterId } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +describe("RoomService.recordUsage/getUsageSummary(T9)", () => { + it("累計多筆用量紀錄後,getUsageSummary 回傳正確加總;刻意衝高用量不影響是否能繼續發言", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試用量使用者" } }); + await prisma.client.character.create({ + data: { + id: characterId, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + const room = await roomService.create(userId, [], "GROUP"); + + const emptyBefore = await roomService.getUsageSummary(room.id); + expect(emptyBefore).toEqual({ totalPromptTokens: 0, totalCompletionTokens: 0, generationCount: 0 }); + + for (let i = 0; i < 5; i++) { + const turn = await roomService.addTurn(room.id, characterId, "測試角色", `第 ${i} 句`, clock.now()); + await roomService.recordUsage(room.id, { model: "mock", promptTokens: 100, completionTokens: 50, turnSeq: turn.turnIndex }); + clock.advance(1000); + } + + const summary = await roomService.getUsageSummary(room.id); + expect(summary).toEqual({ totalPromptTokens: 500, totalCompletionTokens: 250, generationCount: 5 }); + + // 用量已經很高,房間仍可正常繼續新增發言——不存在任何用量門檻擋下寫入。 + const stillWorks = await roomService.addTurn(room.id, characterId, "測試角色", "第 5 句", clock.now()); + expect(stillWorks.content).toBe("第 5 句"); + }); +}); diff --git a/apps/api/src/room/room.controller.ts b/apps/api/src/room/room.controller.ts index b41f6f6..3941688 100644 --- a/apps/api/src/room/room.controller.ts +++ b/apps/api/src/room/room.controller.ts @@ -1,4 +1,6 @@ -import { Body, Controller, Get, Param, Post } from "@nestjs/common"; +import { Body, Controller, Get, Headers, Param, Post, Query, Sse } from "@nestjs/common"; +import type { MessageEvent } from "@nestjs/common"; +import { Observable } from "rxjs"; import { PrismaService } from "../prisma/prisma.service.js"; import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; import { SpeakingRightService } from "./speaking-right.service.js"; @@ -6,6 +8,11 @@ import { RoomGenerationService } from "./room-generation.service.js"; import { RoomConsolidationService } from "./room-consolidation.service.js"; import { SelfChatService } from "./self-chat.service.js"; import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { SoloChatService } from "./solo-chat.service.js"; +import { RoomEventsService, type RoomStreamEvent } from "./room-events.service.js"; +import { InvitationService } from "../lobby/invitation.service.js"; +import { PossessionService } from "./possession.service.js"; interface CreateRoomBody { userId: string; @@ -14,10 +21,16 @@ interface CreateRoomBody { topicSeed?: string; } +interface CreateSoloRoomBody { + userId: string; + characterId: string; +} + interface MessageBody { userId: string; userLabel?: string; text: string; + seed?: number; now?: string; } @@ -27,6 +40,21 @@ interface RelationshipBody { dynamic?: string; } +interface ReadReceiptBody { + userId: string; + lastReadSeq: number; +} + +interface InviteBody { + characterId: string; + invitedByCharacterId: string; // 房內角色邀請:邀請人必須是 :roomId 目前在場的角色 + now?: string; +} + +interface MuteBody { + muted: boolean; +} + @Controller("room") export class RoomController { constructor( @@ -37,39 +65,190 @@ export class RoomController { private readonly consolidation: RoomConsolidationService, private readonly selfChat: SelfChatService, private readonly characterRelationship: CharacterRelationshipService, + private readonly lobby: LobbyService, + private readonly soloChat: SoloChatService, + private readonly roomEvents: RoomEventsService, + private readonly invitation: InvitationService, + private readonly possession: PossessionService, ) {} @Post() - create(@Body() body: CreateRoomBody) { - const room = this.room.create(body.userId, body.characterIds, body.mode ?? "GROUP", body.topicSeed); + async create(@Body() body: CreateRoomBody) { + const room = await this.room.create(body.userId, body.characterIds, body.mode ?? "GROUP", body.topicSeed); return { id: room.id, mode: room.mode, status: room.status, topicSeed: room.topicSeed }; } + // T31:靜音只影響推播與自動語音播放,自走排程與生成照常進行——沒有「暫停房間」這個概念。 + @Post(":roomId/mute") + async setMuted(@Param("roomId") roomId: string, @Body() body: MuteBody) { + const room = await this.room.setMuted(roomId, body.muted); + return { id: room.id, muted: room.muted }; + } + + // T29:房內角色邀請不在場角色。與使用者從大廳呼叫(T5)走同一套 RoomInvitation;若被邀請角色 + // 同時有其他 PENDING 邀請,由人格系統依關係/情緒選一筆 ACCEPTED,其餘 DECLINED。 + @Post(":roomId/invite") + async invite(@Param("roomId") roomId: string, @Body() body: InviteBody) { + await this.invitation.invite(roomId, body.characterId, body.invitedByCharacterId, body.now ? new Date(body.now) : undefined); + return { ok: true }; + } + + // T19-P3:房間頁輪詢用量顯示,不需要整份 GET /:roomId 一起重查。 + @Get(":roomId/usage") + async getUsage(@Param("roomId") roomId: string) { + return this.room.getUsageSummary(roomId); + } + + // T29:明確觸發裁決——收集完某角色目前所有 PENDING 邀請後才呼叫,避免先到先贏。 + @Post("invitations/:characterId/resolve") + async resolveInvitations(@Param("characterId") characterId: string, @Body() body: { now?: string }) { + await this.invitation.resolvePendingFor(characterId, body.now ? new Date(body.now) : undefined); + return { ok: true }; + } + + // T19-P1/T20-P1:大廳頁最小可用所需的在場名單與進行中房間清單(正式聚合端點見 T4,P2)。 + @Get("lobby") + async getLobby(@Query("userId") userId: string) { + return this.lobby.getLobbySnapshot(userId); + } + + // T38:取得或建立與某角色的 1:1 房間,取代舊版由呼叫端自行產生 sessionId 的做法。 + @Post("solo") + async createSolo(@Body() body: CreateSoloRoomBody) { + const room = await this.soloChat.getOrCreateRoom(body.userId, body.characterId); + return { id: room.id, mode: room.mode, status: room.status }; + } + // K-1 驗收:角色(或呼叫端)可取得完整在場名單。 + // T12 驗收:支援從指定游標(afterSeq/beforeSeq)分頁取歷程;未帶游標時預設回傳最新一頁, + // 讓重新進入未關閉的房間可以看到先前對話(含 hasMore/nextCursor 供前端接續翻頁)。 + // T11 驗收:附上 unread(lastReadSeq/firstUnreadSeq/unreadCount),供前端定位第一則未讀分隔線; + // 不帶 userId 時預設查房主本人(本系統目前為單一使用者情境,房主即唯一讀者)。 @Get(":roomId") - get(@Param("roomId") roomId: string) { - const room = this.room.get(roomId); + async get( + @Param("roomId") roomId: string, + @Query("afterSeq") afterSeq?: string, + @Query("beforeSeq") beforeSeq?: string, + @Query("limit") limit?: string, + @Query("userId") userId?: string, + ) { + const room = await this.room.get(roomId); + const page = await this.room.getTurnsPage(roomId, { + afterSeq: afterSeq !== undefined ? Number(afterSeq) : undefined, + beforeSeq: beforeSeq !== undefined ? Number(beforeSeq) : undefined, + limit: limit !== undefined ? Number(limit) : undefined, + }); + const unread = await this.room.getUnreadInfo(roomId, userId ?? room.userId); + // T9:房間頁可看到該房累計用量,僅供觀察。 + const usage = await this.room.getUsageSummary(roomId); return { id: room.id, mode: room.mode, status: room.status, topicSeed: room.topicSeed, - participants: this.room.roster(roomId), + muted: room.muted, + participants: await this.room.roster(roomId), turnCount: room.turnCounter, - turns: room.turns.map((turn) => ({ speakerId: turn.speakerId, speakerLabel: turn.speakerLabel, content: turn.content })), + turns: page.turns.map((turn) => ({ + seq: turn.turnIndex, + speakerId: turn.speakerId, + speakerLabel: turn.speakerLabel, + content: turn.content, + kind: turn.kind, + })), + hasMore: page.hasMore, + nextCursor: page.nextCursor, + unread, + usage, }; } + // T10:SSE 推送。turn/member/closed 三類事件,id 為 RoomTurn.seq(同一號碼軸,見 + // RoomEventsService 註解);支援 Last-Event-ID(瀏覽器重連自動帶)與 ?afterSeq= 手動指定, + // 兩者擇一(Last-Event-ID 優先),斷線期間錯過的 turn 一律從 DB 補齊、不遺漏。 + @Sse(":roomId/stream") + stream( + @Param("roomId") roomId: string, + @Query("afterSeq") afterSeqQuery?: string, + @Headers("last-event-id") lastEventId?: string, + ): Observable { + const startAfterSeq = lastEventId !== undefined ? Number(lastEventId) : afterSeqQuery !== undefined ? Number(afterSeqQuery) : -1; + + return new Observable((subscriber) => { + let lastSentSeq = startAfterSeq; + let replaying = true; + const buffered: RoomStreamEvent[] = []; + + const forward = (event: RoomStreamEvent) => { + if (event.seq <= lastSentSeq && event.type === "turn") return; // turn 事件有真正的 seq,避免補播時重複 + lastSentSeq = Math.max(lastSentSeq, event.seq); + subscriber.next({ id: String(event.seq), type: event.type, data: event.data }); + }; + + // 先訂閱即時事件(暫存到 replay 查完再送),避免「查 DB 期間」發生的新事件被漏掉。 + const unsubscribe = this.roomEvents.subscribe(roomId, (event) => { + if (replaying) { + buffered.push(event); + return; + } + forward(event); + }); + + this.room + .getTurnsSince(roomId, startAfterSeq) + .then((missed) => { + for (const turn of missed) { + forward({ + type: "turn", + seq: turn.turnIndex, + data: { speakerId: turn.speakerId, speakerLabel: turn.speakerLabel, content: turn.content, kind: turn.kind }, + }); + } + replaying = false; + for (const event of buffered) forward(event); + }) + .catch((err) => subscriber.error(err)); + + const heartbeat = setInterval(() => subscriber.next({ type: "ping", data: {} }), 15000); + + return () => { + clearInterval(heartbeat); + unsubscribe(); + }; + }); + } + + // T11:回報已讀游標(單調遞增、不可回退)。 + @Post(":roomId/read") + async reportRead(@Param("roomId") roomId: string, @Body() body: ReadReceiptBody) { + await this.room.reportRead(roomId, body.userId, body.lastReadSeq); + return this.room.getUnreadInfo(roomId, body.userId); + } + // K-2/K-4 群聊訊息:使用者發言後,依發言權分配決定哪些角色本輪回應,依衝動值高到低依序生成。 + // T38:SOLO 房走既有 1:1 對話管線(DialogueService,含快速通道/作息可用度/破例規則), + // 回傳形狀與舊版 POST /chat/:characterId 一致,不是 GROUP/SELF_CHAT 的 {speakers:[...]}。 @Post(":roomId/message") async message(@Param("roomId") roomId: string, @Body() body: MessageBody) { + // T43:套用角色期間不可以自己的身分發話,一律先擋在這裡(SOLO/GROUP 兩種房型共用同一個入口)。 + await this.possession.assertNotPossessing(body.userId); const now = body.now ? new Date(body.now) : new Date(); - const room = this.room.get(roomId); const userLabel = body.userLabel ?? body.userId; - this.room.addTurn(roomId, USER_SPEAKER_ID, userLabel, body.text, now); + const soloRoomCheck = await this.room.get(roomId); + if (soloRoomCheck.mode === "SOLO") { + return this.soloChat.sendMessage(roomId, body.userId, body.text, { seed: body.seed, now }); + } - const speakers = await this.speakingRight.decideSpeakers(room, USER_SPEAKER_ID, body.text, now); + // 舊版 room 是共享的可變物件,addTurn 會就地 push/遞增,因此決定發言者與逐位生成時看到的 + // 都是「加上這一輪最新發言後」的狀態;DB 版改為每次快照,須在每次 addTurn 後重新 get() 一次, + // 才能維持「候選者的沉默計數已計入使用者剛發的這句、後面候選者能看到前面候選者剛講的話」語意。 + await this.room.addTurn(roomId, USER_SPEAKER_ID, userLabel, body.text, now); + let room = await this.room.get(roomId); + + // T43:套用中的角色不能被這個回覆迴圈搶著代為發言。 + const possessedIds = await this.possession.getPossessedCharacterIds(); + const speakers = await this.speakingRight.decideSpeakers(room, USER_SPEAKER_ID, body.text, now, possessedIds); const replies: { characterId: string; text: string; score: number }[] = []; for (const candidate of speakers) { const character = await this.prisma.client.character.findUniqueOrThrow({ @@ -82,8 +261,16 @@ export class RoomController { const reply = await this.generation.generateReply(room, candidate.characterId, USER_SPEAKER_ID, userLabel, body.text, { now, }); - this.room.addTurn(roomId, candidate.characterId, speakerLabel, reply.text, now); - replies.push({ characterId: candidate.characterId, text: reply.text, score: candidate.score }); + // T30:全域靜默暫停或重試全部失敗時 reply.text 為空——靜默略過,不寫 RoomTurn、不對使用者 + // 顯示任何提示;使用者本人的發話已於上方寫入,不受影響,恢復後的下一次發言會正常繼續。 + if (reply.text) { + const turn = await this.room.addTurn(roomId, candidate.characterId, speakerLabel, reply.text, now); + if (reply.usage) { + await this.room.recordUsage(roomId, { ...reply.usage, turnSeq: turn.turnIndex }); + } + room = await this.room.get(roomId); + replies.push({ characterId: candidate.characterId, text: reply.text, score: candidate.score }); + } } return { speakers: replies }; @@ -100,8 +287,15 @@ export class RoomController { return this.message(roomId, body); } + // T38:SOLO 房關房走既有睡眠固化(MemoryConsolidationService,取代舊版 POST /session/:id/end); + // GROUP/SELF_CHAT 房沿用既有多人群聊記憶投影(RoomConsolidationService)。 @Post(":roomId/end") async end(@Param("roomId") roomId: string) { + const room = await this.room.get(roomId); + if (room.mode === "SOLO") { + await this.soloChat.endRoom(roomId); + return { ok: true }; + } await this.consolidation.consolidate(roomId); return { ok: true }; } diff --git a/apps/api/src/room/room.module.ts b/apps/api/src/room/room.module.ts index e188d07..2621fe2 100644 --- a/apps/api/src/room/room.module.ts +++ b/apps/api/src/room/room.module.ts @@ -4,17 +4,34 @@ import { EmotionModule } from "../emotion/emotion.module.js"; import { RelationshipModule } from "../relationship/relationship.module.js"; import { MemoryModule } from "../memory/memory.module.js"; import { LlmModule } from "../llm/llm.module.js"; +import { ClockModule } from "../clock/clock.module.js"; +import { ScheduleModule } from "../schedule/schedule.module.js"; +import { TaskModule } from "../task/task.module.js"; +import { PersonalityModule } from "../personality/personality.module.js"; +import { RomanceModule } from "../romance/romance.module.js"; +import { PushModule } from "../push/push.module.js"; +import { EpilogueModule } from "../epilogue/epilogue.module.js"; import { RoomService } from "./room.service.js"; import { CharacterRelationshipService } from "./character-relationship.service.js"; import { SpeakingRightService } from "./speaking-right.service.js"; import { RoomGenerationService } from "./room-generation.service.js"; import { RoomConsolidationService } from "./room-consolidation.service.js"; import { SelfChatService } from "./self-chat.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomSchedulerService } from "./room-scheduler.service.js"; +import { SoloChatService } from "./solo-chat.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomIntervalService } from "./room-interval.service.js"; +import { BehaviorSelectionService } from "./behavior-selection.service.js"; +import { InvitationService } from "../lobby/invitation.service.js"; import { RoomController } from "./room.controller.js"; +import { RoomNotificationService } from "./room-notification.service.js"; +import { PossessionService } from "./possession.service.js"; +import { PossessionController } from "./possession.controller.js"; @Module({ - imports: [PrismaModule, EmotionModule, RelationshipModule, MemoryModule, LlmModule], - controllers: [RoomController], + imports: [PrismaModule, EmotionModule, RelationshipModule, MemoryModule, LlmModule, ClockModule, ScheduleModule, TaskModule, PersonalityModule, RomanceModule, PushModule, EpilogueModule], + controllers: [RoomController, PossessionController], providers: [ RoomService, CharacterRelationshipService, @@ -22,7 +39,32 @@ import { RoomController } from "./room.controller.js"; RoomGenerationService, RoomConsolidationService, SelfChatService, + LobbyService, + RoomSchedulerService, + SoloChatService, + RoomEventsService, + RoomIntervalService, + BehaviorSelectionService, + InvitationService, + RoomNotificationService, + PossessionService, + ], + exports: [ + RoomService, + CharacterRelationshipService, + SpeakingRightService, + RoomGenerationService, + RoomConsolidationService, + SelfChatService, + LobbyService, + RoomSchedulerService, + SoloChatService, + RoomEventsService, + RoomIntervalService, + BehaviorSelectionService, + InvitationService, + RoomNotificationService, + PossessionService, ], - exports: [RoomService, CharacterRelationshipService, SpeakingRightService, RoomGenerationService, RoomConsolidationService, SelfChatService], }) export class RoomModule {} diff --git a/apps/api/src/room/room.service.ts b/apps/api/src/room/room.service.ts index 4e76c51..1d1d50c 100644 --- a/apps/api/src/room/room.service.ts +++ b/apps/api/src/room/room.service.ts @@ -1,7 +1,12 @@ -import { Injectable, NotFoundException } from "@nestjs/common"; +import { Inject, Injectable, NotFoundException } from "@nestjs/common"; import type { EmotionTag } from "@kokorone/shared"; +import type { RoomTurnKind } from "@kokorone/db"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { CLOCK, type Clock } from "../clock/clock.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; -export type RoomMode = "GROUP" | "SELF_CHAT"; +export type RoomMode = "GROUP" | "SELF_CHAT" | "SOLO"; // T38:SOLO 為既有 1:1 聊天併入房間後的房型 export type RoomStatus = "ACTIVE" | "ENDED"; export const USER_SPEAKER_ID = "USER"; @@ -16,6 +21,7 @@ export interface RoomTurnRecord { speakerId: string; // characterId,或使用者固定用 USER_SPEAKER_ID speakerLabel: string; content: string; + kind: RoomTurnKind; // T6:TALK/ACTION/DELEGATE/LEAVE/SYSTEM,API 對外契約尚未擴充(見 T19-P3) emotionTag?: EmotionTag; emotionIntensity?: number; timestamp: Date; @@ -27,103 +33,320 @@ export interface Room { mode: RoomMode; status: RoomStatus; topicSeed?: string; + muted: boolean; // T31:靜音——不推播、不自動播放語音,但自走照常進行(不是暫停) participants: Map; turns: RoomTurnRecord[]; turnCounter: number; } -let roomSeq = 0; -function nextRoomId(): string { - roomSeq += 1; - return `room-${roomSeq}-${roomSeq * 31 + 7}`; -} - -// K-1 在場者模型:群聊/自聊 session 的參與者名冊與共用場景記錄。 -// 刻意採用純記憶體儲存(同 C-1 WorkingMemoryService 的設計),因為這是 session 期間的暫存場景, -// session 結束後會由 K-5 的固化流程萃取成各角色的長期記憶,原始記錄本身不需要落地保存。 +// T3:K-1 在場者模型與 K-2~K-6 群聊/自聊改為 Prisma 持久化(破壞性替換,不留記憶體相容層)。 +// 對外方法語意維持原樣(create/get/roster/addTurn/switchToGroup/end),供既有呼叫端 +// (room.controller/self-chat/speaking-right/room-consolidation)改為 await 後直接沿用。 +// +// silentStreak/lastSpokeAtTurn 不落地成獨立欄位,改由 RoomTurn 歷史在 hydrate() 時重新算出: +// 對任一角色 c,lastSpokeAtTurn(c) = 最後一則由 c 發言的 turn.seq(無則 -1); +// silentStreak(c) = (turnCounter - 1) - lastSpokeAtTurn(c)(從未發言則等於 turnCounter)。 +// 這與舊版「每輪逐一遞增/發言者歸零」的逐步更新結果完全等價(純函數重算,無需額外欄位)。 +// +// speakerLabel 舊版是呼叫端逐輪傳入的即時稱呼;DB 版改為 hydrate 時依當下的角色別名/使用者名稱 +// 重新解析(USER_SPEAKER_ID 一律取房主 User.name),準確度等同於「以目前名稱回溯」,不逐輪落地。 @Injectable() export class RoomService { - private readonly rooms = new Map(); + constructor( + private readonly prisma: PrismaService, + @Inject(CLOCK) private readonly clock: Clock, + private readonly lobby: LobbyService, + private readonly roomEvents: RoomEventsService, + ) {} - create(userId: string, characterIds: string[], mode: RoomMode, topicSeed?: string): Room { - const room: Room = { - id: nextRoomId(), - userId, - mode, - status: "ACTIVE", - topicSeed, - participants: new Map( - characterIds.map((characterId) => [characterId, { characterId, silentStreak: 0, lastSpokeAtTurn: -1 }]), - ), - turns: [], - turnCounter: 0, - }; - this.rooms.set(room.id, room); - return room; + async create(userId: string, characterIds: string[], mode: RoomMode = "GROUP", topicSeed?: string): Promise { + const dbRoom = await this.prisma.client.room.create({ + data: { + userId, + mode, + status: "ACTIVE", + topicSeed, + // 舊版 K-1~K-6 的房間是無「不可跨房」約束的暫存場景(同一角色可同時存在於多個測試房間), + // 這裡不設 activeCharacterId(維持 null),R5 的跨房唯一約束由 T24 起的大廳常駐流轉負責啟用。 + members: { create: characterIds.map((characterId) => ({ characterId })) }, + }, + }); + return this.hydrate(dbRoom.id); } - get(roomId: string): Room { - const room = this.rooms.get(roomId); - if (!room) { - throw new NotFoundException(`聊天室不存在:${roomId}`); - } - return room; + async get(roomId: string): Promise { + return this.hydrate(roomId); } // K-1 驗收:角色(或呼叫端)可取得完整在場名單。 - roster(roomId: string): string[] { - return [...this.get(roomId).participants.keys()]; + async roster(roomId: string): Promise { + const room = await this.hydrate(roomId); + return [...room.participants.keys()]; } - addTurn( + async addTurn( roomId: string, speakerId: string, speakerLabel: string, content: string, - now: Date = new Date(), + now?: Date, emotion?: { tag: EmotionTag; intensity: number }, - ): RoomTurnRecord { - const room = this.get(roomId); - const turnIndex = room.turnCounter; - room.turnCounter += 1; + kind: RoomTurnKind = "TALK", + ): Promise { + const effectiveNow = now ?? this.clock.now(); + const speakerCharacterId = speakerId === USER_SPEAKER_ID ? null : speakerId; - const turn: RoomTurnRecord = { - turnIndex, + const turn = await this.prisma.client.$transaction(async (tx) => { + const last = await tx.roomTurn.findFirst({ where: { roomId }, orderBy: { seq: "desc" } }); + const seq = (last?.seq ?? -1) + 1; + const created = await tx.roomTurn.create({ + data: { roomId, seq, kind, speakerCharacterId, content, createdAt: effectiveNow }, + }); + await tx.room.update({ where: { id: roomId }, data: { lastAdvancedAt: effectiveNow } }); + return created; + }); + + const record: RoomTurnRecord = { + turnIndex: turn.seq, speakerId, speakerLabel, content, + kind, emotionTag: emotion?.tag, emotionIntensity: emotion?.intensity, - timestamp: now, + timestamp: turn.createdAt, }; - room.turns.push(turn); + // T10:新 RoomTurn 即時推送給所有已連上 SSE 的訂閱者。 + // T19-P3:kind 隨 SSE 一併推送,前端才能依 TALK/ACTION/DELEGATE/LEAVE/SYSTEM 分別呈現。 + this.roomEvents.emit(roomId, { type: "turn", seq: turn.seq, data: { speakerId, speakerLabel, content, kind } }); + return record; + } - // 發言冷卻/被冷落累積:發言者本輪清空沉默計數,其他在場角色沉默計數 +1。 - for (const participant of room.participants.values()) { - if (participant.characterId === speakerId) { - participant.lastSpokeAtTurn = turnIndex; - participant.silentStreak = 0; - } else { - participant.silentStreak += 1; - } + async switchToGroup(roomId: string): Promise { + await this.prisma.client.room.update({ where: { id: roomId }, data: { mode: "GROUP" } }); + return this.hydrate(roomId); + } + + async end(roomId: string, closeReason: string = "SESSION_ENDED"): Promise { + const now = this.clock.now(); + await this.prisma.client.room.update({ + where: { id: roomId }, + data: { status: "CLOSED", closedAt: now, closeReason }, + }); + // T24:房間關閉時把仍在場的成員送回大廳;對從未登記 activeCharacterId 的既有 K 群組 + // 自聊/群聊測試房是安全的 no-op(見 LobbyService.closeRoomAndReturnMembers 註解)。 + await this.lobby.closeRoomAndReturnMembers(roomId, now); + const room = await this.hydrate(roomId); + // T10:房間關閉即時通知;seq 沿用目前 turnCounter(與 turn 事件同一號碼軸,見 RoomEventsService 註解)。 + this.roomEvents.emit(roomId, { type: "closed", seq: room.turnCounter, data: { reason: closeReason } }); + return room; + } + + // 舊版記憶體實作於 session 結束後整筆丟棄;DB 版改為保留歷史紀錄供 T12 重新進入與稽核,故改為 no-op, + // 不做實體刪除(呼叫端沿用既有「end() 後接著 clear()」的呼叫順序,維持語意相容不需改呼叫端)。 + async clear(_roomId: string): Promise {} + + // T12:分頁取得房間歷程,支援從指定游標往前或往後取,讓未關閉的房間可重新進入並看到先前對話。 + // afterSeq:取 seq > afterSeq 的較新那一段(往後翻);beforeSeq:取 seq < beforeSeq 的較舊那一段(往前翻)。 + // 兩者都未提供時,回傳最新一頁(依 limit)。回傳一律依 seq 由舊到新排序,並附 hasMore/nextCursor。 + async getTurnsPage( + roomId: string, + options: { afterSeq?: number; beforeSeq?: number; limit?: number } = {}, + ): Promise<{ turns: RoomTurnRecord[]; hasMore: boolean; nextCursor: number | null }> { + const room = await this.prisma.client.room.findUnique({ where: { id: roomId }, include: { user: true } }); + if (!room) { + throw new NotFoundException(`聊天室不存在:${roomId}`); + } + const limit = options.limit ?? 50; + // 沒給 afterSeq 時(不論有沒有給 beforeSeq)都以「離 beforeSeq(或離最新)最近的一頁」為準, + // 從新到舊查再反轉——重新進入房間時預設看到的是最新對話,而不是從頭。只有明確給 afterSeq + // (往後翻、要更新的那一段)才改成從舊到新查。 + const goingBackward = options.afterSeq === undefined; + + const where: { roomId: string; seq?: { gt?: number; lt?: number } } = { roomId }; + if (options.afterSeq !== undefined) where.seq = { ...where.seq, gt: options.afterSeq }; + if (options.beforeSeq !== undefined) where.seq = { ...where.seq, lt: options.beforeSeq }; + + const rows = await this.prisma.client.roomTurn.findMany({ + where, + orderBy: { seq: goingBackward ? "desc" : "asc" }, + take: limit + 1, + }); + const hasMore = rows.length > limit; + const page = hasMore ? rows.slice(0, limit) : rows; + const ordered = goingBackward ? [...page].reverse() : page; + + const resolveLabel = await this.buildLabelResolver(ordered.flatMap((t) => (t.speakerCharacterId ? [t.speakerCharacterId] : []))); + const turns: RoomTurnRecord[] = ordered.map((turn) => ({ + turnIndex: turn.seq, + speakerId: turn.speakerCharacterId ?? USER_SPEAKER_ID, + speakerLabel: turn.speakerCharacterId ? resolveLabel(turn.speakerCharacterId) : room.user.name, + content: turn.content, + kind: turn.kind, + timestamp: turn.createdAt, + })); + + const nextCursor = hasMore ? (goingBackward ? turns[0]?.turnIndex ?? null : turns.at(-1)?.turnIndex ?? null) : null; + return { turns, hasMore, nextCursor }; + } + + // T10:SSE 重新連線時的完整回補(不設上限,`?afterSeq=` 或 `Last-Event-ID` 斷線期間錯過的訊息 + // 一律補齊),依 seq 由舊到新排序。 + async getTurnsSince(roomId: string, afterSeq: number): Promise { + const room = await this.prisma.client.room.findUnique({ where: { id: roomId }, include: { user: true } }); + if (!room) { + throw new NotFoundException(`聊天室不存在:${roomId}`); + } + const rows = await this.prisma.client.roomTurn.findMany({ + where: { roomId, seq: { gt: afterSeq } }, + orderBy: { seq: "asc" }, + }); + const resolveLabel = await this.buildLabelResolver(rows.flatMap((t) => (t.speakerCharacterId ? [t.speakerCharacterId] : []))); + return rows.map((turn) => ({ + turnIndex: turn.seq, + speakerId: turn.speakerCharacterId ?? USER_SPEAKER_ID, + speakerLabel: turn.speakerCharacterId ? resolveLabel(turn.speakerCharacterId) : room.user.name, + content: turn.content, + kind: turn.kind, + timestamp: turn.createdAt, + })); + } + + // T11:回報已讀游標,單調遞增、不可回退——即使呼叫端傳來比目前紀錄舊的 seq 也只取兩者較大值。 + async reportRead(roomId: string, userId: string, lastReadSeq: number): Promise { + const existing = await this.prisma.client.roomReadState.findUnique({ + where: { roomId_userId: { roomId, userId } }, + }); + const nextValue = Math.max(existing?.lastReadSeq ?? -1, lastReadSeq); + await this.prisma.client.roomReadState.upsert({ + where: { roomId_userId: { roomId, userId } }, + update: { lastReadSeq: nextValue }, + create: { roomId, userId, lastReadSeq: nextValue }, + }); + } + + // T11:進房時依 lastReadSeq 定位到第一則未讀;未讀一律全部保留,不做摘要也不折疊。 + async getUnreadInfo( + roomId: string, + userId: string, + ): Promise<{ lastReadSeq: number; firstUnreadSeq: number | null; unreadCount: number }> { + const [readState, room] = await Promise.all([ + this.prisma.client.roomReadState.findUnique({ where: { roomId_userId: { roomId, userId } } }), + this.prisma.client.room.findUnique({ where: { id: roomId } }), + ]); + if (!room) { + throw new NotFoundException(`聊天室不存在:${roomId}`); + } + const lastReadSeq = readState?.lastReadSeq ?? -1; + const latestTurn = await this.prisma.client.roomTurn.findFirst({ where: { roomId }, orderBy: { seq: "desc" } }); + const turnCounter = latestTurn ? latestTurn.seq + 1 : 0; + const unreadCount = Math.max(0, turnCounter - (lastReadSeq + 1)); + return { lastReadSeq, firstUnreadSeq: unreadCount > 0 ? lastReadSeq + 1 : null, unreadCount }; + } + + // T9:每次角色發言生成後寫入一筆用量紀錄,僅供觀察,不因用量而暫停或降頻——呼叫端(RoomGenerationService/ + // DialogueService 的呼叫方)在拿到 Provider 回傳的 usage 後才呼叫本方法,沒有 usage 就不記錄。 + async recordUsage(roomId: string, usage: { model: string; promptTokens: number; completionTokens: number; turnSeq: number }): Promise { + await this.prisma.client.roomUsageLog.create({ + data: { + roomId, + model: usage.model, + promptTokens: usage.promptTokens, + completionTokens: usage.completionTokens, + turnSeq: usage.turnSeq, + }, + }); + } + + // T9:房間頁與大廳呈現用的累計用量——一律以 roomId 聚合(T33 亦沿用同一個聚合方式,避免逐筆查詢)。 + async getUsageSummary(roomId: string): Promise<{ totalPromptTokens: number; totalCompletionTokens: number; generationCount: number }> { + const aggregate = await this.prisma.client.roomUsageLog.aggregate({ + where: { roomId }, + _sum: { promptTokens: true, completionTokens: true }, + _count: { _all: true }, + }); + return { + totalPromptTokens: aggregate._sum.promptTokens ?? 0, + totalCompletionTokens: aggregate._sum.completionTokens ?? 0, + generationCount: aggregate._count._all, + }; + } + + private async buildLabelResolver(characterIds: string[]): Promise<(characterId: string) => string> { + const ids = [...new Set(characterIds)]; + const [characters, aliases] = await Promise.all([ + this.prisma.client.character.findMany({ where: { id: { in: ids } } }), + this.prisma.client.characterAlias.findMany({ where: { characterId: { in: ids } } }), + ]); + return (characterId: string) => { + const alias = aliases.find((a) => a.characterId === characterId); + if (alias?.nickname) return alias.nickname; + if (alias?.formalName) return alias.formalName; + return characters.find((c) => c.id === characterId)?.id ?? characterId; + }; + } + + private async hydrate(roomId: string): Promise { + const dbRoom = await this.prisma.client.room.findUnique({ + where: { id: roomId }, + include: { + user: true, + members: { where: { leftAt: null } }, + turns: { orderBy: { seq: "asc" } }, + }, + }); + if (!dbRoom) { + throw new NotFoundException(`聊天室不存在:${roomId}`); } - return turn; + const characterIds = [ + ...dbRoom.members.map((member) => member.characterId), + ...dbRoom.turns.flatMap((turn) => (turn.speakerCharacterId ? [turn.speakerCharacterId] : [])), + ]; + const labelFor = await this.buildLabelResolver(characterIds); + + const turnCounter = dbRoom.turns.length === 0 ? 0 : dbRoom.turns[dbRoom.turns.length - 1].seq + 1; + + const lastSpokeAtTurn = new Map(); + for (const turn of dbRoom.turns) { + if (turn.speakerCharacterId) lastSpokeAtTurn.set(turn.speakerCharacterId, turn.seq); + } + + const participants = new Map(); + for (const member of dbRoom.members) { + const last = lastSpokeAtTurn.get(member.characterId) ?? -1; + participants.set(member.characterId, { + characterId: member.characterId, + lastSpokeAtTurn: last, + silentStreak: last === -1 ? turnCounter : turnCounter - 1 - last, + }); + } + + const turns: RoomTurnRecord[] = dbRoom.turns.map((turn) => ({ + turnIndex: turn.seq, + speakerId: turn.speakerCharacterId ?? USER_SPEAKER_ID, + speakerLabel: turn.speakerCharacterId ? labelFor(turn.speakerCharacterId) : dbRoom.user.name, + content: turn.content, + kind: turn.kind, + timestamp: turn.createdAt, + })); + + return { + id: dbRoom.id, + userId: dbRoom.userId, + mode: dbRoom.mode as RoomMode, + status: dbRoom.status === "ACTIVE" ? "ACTIVE" : "ENDED", + topicSeed: dbRoom.topicSeed ?? undefined, + muted: dbRoom.muted, + participants, + turns, + turnCounter, + }; } - switchToGroup(roomId: string): Room { - const room = this.get(roomId); - room.mode = "GROUP"; - return room; - } - - end(roomId: string): Room { - const room = this.get(roomId); - room.status = "ENDED"; - return room; - } - - clear(roomId: string): void { - this.rooms.delete(roomId); + // T31:靜音開關——不提供「暫停」,自走排程與生成不受影響,只影響是否推播/自動播語音(由呼叫端判斷)。 + async setMuted(roomId: string, muted: boolean): Promise { + await this.prisma.client.room.update({ where: { id: roomId }, data: { muted } }); + return this.hydrate(roomId); } } diff --git a/apps/api/src/room/self-chat-delegate.test.ts b/apps/api/src/room/self-chat-delegate.test.ts new file mode 100644 index 0000000..d051dd6 --- /dev/null +++ b/apps/api/src/room/self-chat-delegate.test.ts @@ -0,0 +1,148 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { SpeakingRightService } from "./speaking-right.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; +import { BehaviorSelectionService } from "./behavior-selection.service.js"; +import { SelfChatService } from "./self-chat.service.js"; +import { TaskService } from "../task/task.service.js"; +import { TaskSchedulerService } from "../task/task-scheduler.service.js"; +import { TaskTriggerService } from "../task/task-trigger.service.js"; +import { SentimentLedgerService } from "../relationship/sentiment-ledger.service.js"; +import { PushTokenService } from "../push/push-token.service.js"; +import { PushNotificationService } from "../push/push-notification.service.js"; +import { MockPushProvider } from "../push/mock-push-provider.service.js"; +import { InProcessJobQueue } from "../memory/in-process-job-queue.service.js"; +import { DELEGATE_TEMPLATES } from "./delegate-templates.js"; +import { RoomNotificationService } from "./room-notification.service.js"; +import { PossessionService } from "./possession.service.js"; +import { LifeEventService } from "../epilogue/life-event.service.js"; +import { EpilogueProgressService } from "../epilogue/epilogue-progress.service.js"; +import { ProjectionService } from "../canon/projection.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; + +// T7 驗收:房內出現委託行為(DELEGATE)後,委託頁可看到對應 Task,且能追溯到來源房間與該則發言。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService(prisma, emotionService, relationshipService, retriever, characterRelationship, romanceService, mockProvider, new GlobalPauseService()); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const behaviorSelection = new BehaviorSelectionService(prisma, emotionService, scheduleService, sleepDebtService, new PersonalityResolutionService(prisma, new PersonalityDriftService(prisma))); +const pushToken = new PushTokenService(prisma); +const mockPushProvider = new MockPushProvider(); +const pushNotification = new PushNotificationService(prisma, pushToken, mockPushProvider); +const taskTrigger = new TaskTriggerService(prisma, scheduleService, retriever, pushNotification); +const jobQueue = new InProcessJobQueue(); +const taskScheduler = new TaskSchedulerService(prisma, jobQueue, taskTrigger); +const sentimentLedger = new SentimentLedgerService(prisma, relationshipService); +const taskService = new TaskService(prisma, sentimentLedger, taskScheduler); +const roomNotification = new RoomNotificationService(pushNotification); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), new BehaviorReinforcementService(prisma)); +const lifeEvent = new LifeEventService(prisma, projection); +const epilogueProgress = new EpilogueProgressService(prisma, lifeEvent); +const possession = new PossessionService(prisma, roomService, speakingRight, generation, lobbyService); +const selfChat = new SelfChatService(prisma, roomService, speakingRight, generation, lobbyService, behaviorSelection, taskService, roomNotification, epilogueProgress, possession); + +const userId = "test-selfchat-delegate-user"; +const CHAR_A = "test-selfchat-delegate-char-a"; +const CHAR_B = "test-selfchat-delegate-char-b"; + +afterEach(async () => { + await prisma.client.task.deleteMany({ where: { userId } }); + await prisma.client.pushToken.deleteMany({ where: { userId } }); + await prisma.client.pushNotificationLog.deleteMany({ where: { userId } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); +} + +describe("SelfChatService DELEGATE → Task(T7)", () => { + it("多輪推進直到出現 DELEGATE 行為:對應 Task 已建立,且可追溯到來源房間與該則發言", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await pushToken.register(userId, "test-selfchat-delegate-token", "expo"); + await createCharacter(CHAR_A); + await createCharacter(CHAR_B); + // 兩位角色輪流發言,即使其中一位途中因話題耗盡 LEAVE,房間仍會由另一位繼續, + // 避免單一角色因內容重複觸發 LEAVE 而過早結束、導致跑不到 DELEGATE。 + const room = await selfChat.start(userId, [CHAR_A, CHAR_B], "測試話題", clock.now()); + + let delegateTurnContent: string | null = null; + let delegateCharacterId: string | null = null; + const kinds: string[] = []; + for (let i = 0; i < 150 && !delegateTurnContent; i++) { + const result = await selfChat.advance(room.id, new Date(clock.now().getTime() + i * 1000)); + if (result.turn) kinds.push(result.turn.content.slice(0, 6)); + if (result.turn && DELEGATE_TEMPLATES.some((t) => t.line === result.turn!.content)) { + delegateTurnContent = result.turn.content; + delegateCharacterId = result.turn.characterId; + } + } + expect(delegateTurnContent, `跑了 ${kinds.length} 輪都沒出現 DELEGATE`).not.toBeNull(); + + const tasks = await prisma.client.task.findMany({ where: { userId, characterId: delegateCharacterId! } }); + expect(tasks).toHaveLength(1); + expect(tasks[0].sourceRoomId).toBe(room.id); + expect(tasks[0].rawText).toBe(delegateTurnContent); + + const matchedTemplate = DELEGATE_TEMPLATES.find((t) => t.line === delegateTurnContent)!; + expect(tasks[0].content).toBe(matchedTemplate.taskContent); + expect(tasks[0].type).toBe(matchedTemplate.taskType); + + // 委託頁(listForUser)可看到這筆委託。 + const listed = await taskService.listForUser(delegateCharacterId!, userId); + expect(listed.some((t) => t.id === tasks[0].id)).toBe(true); + + // T31:角色提出委託也算重要事件之一,應該推播(房間未靜音)。 + expect(mockPushProvider.sent.some((m) => m.body === matchedTemplate.taskContent)).toBe(true); + }, 90000); +}); diff --git a/apps/api/src/room/self-chat.service.test.ts b/apps/api/src/room/self-chat.service.test.ts new file mode 100644 index 0000000..e434835 --- /dev/null +++ b/apps/api/src/room/self-chat.service.test.ts @@ -0,0 +1,172 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { ScheduleService } from "../schedule/schedule.service.js"; +import { SleepDebtService } from "../schedule/sleep-debt.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { SpeakingRightService } from "./speaking-right.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; +import { BehaviorSelectionService } from "./behavior-selection.service.js"; +import { SelfChatService } from "./self-chat.service.js"; +import { TaskService } from "../task/task.service.js"; +import { TaskSchedulerService } from "../task/task-scheduler.service.js"; +import { TaskTriggerService } from "../task/task-trigger.service.js"; +import { SentimentLedgerService } from "../relationship/sentiment-ledger.service.js"; +import { PushTokenService } from "../push/push-token.service.js"; +import { PushNotificationService } from "../push/push-notification.service.js"; +import { MockPushProvider } from "../push/mock-push-provider.service.js"; +import { InProcessJobQueue } from "../memory/in-process-job-queue.service.js"; +import { RoomNotificationService } from "./room-notification.service.js"; +import { PossessionService } from "./possession.service.js"; +import { LifeEventService } from "../epilogue/life-event.service.js"; +import { EpilogueProgressService } from "../epilogue/epilogue-progress.service.js"; +import { ProjectionService } from "../canon/projection.service.js"; +import { BehaviorReinforcementService } from "../llm/behavior-reinforcement.service.js"; + +// T6 驗收:多人房實測四種行為都出現過、每次離開都能對應到三項動因之一,且房間可連續推進超過 12 輪。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); +const romanceService = new RomanceService(prisma, relationshipService, new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma))); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService(prisma, emotionService, relationshipService, retriever, characterRelationship, romanceService, mockProvider, new GlobalPauseService()); +const scheduleService = new ScheduleService(prisma); +const sleepDebtService = new SleepDebtService(prisma, scheduleService); +const behaviorSelection = new BehaviorSelectionService(prisma, emotionService, scheduleService, sleepDebtService, new PersonalityResolutionService(prisma, new PersonalityDriftService(prisma))); +const pushToken = new PushTokenService(prisma); +const mockPushProvider = new MockPushProvider(); +const pushNotification = new PushNotificationService(prisma, pushToken, mockPushProvider); +const taskTrigger = new TaskTriggerService(prisma, scheduleService, retriever, pushNotification); +const jobQueue = new InProcessJobQueue(); +const taskScheduler = new TaskSchedulerService(prisma, jobQueue, taskTrigger); +const sentimentLedger = new SentimentLedgerService(prisma, relationshipService); +const taskService = new TaskService(prisma, sentimentLedger, taskScheduler); +const roomNotification = new RoomNotificationService(pushNotification); +const projection = new ProjectionService(prisma, new RuleBasedEmotionTagger(), new BehaviorReinforcementService(prisma)); +const lifeEvent = new LifeEventService(prisma, projection); +const epilogueProgress = new EpilogueProgressService(prisma, lifeEvent); +const possession = new PossessionService(prisma, roomService, speakingRight, generation, lobbyService); +const selfChat = new SelfChatService(prisma, roomService, speakingRight, generation, lobbyService, behaviorSelection, taskService, roomNotification, epilogueProgress, possession); + +const userId = "test-selfchat-user"; +const CHAR_A = "test-selfchat-char-a"; +const CHAR_B = "test-selfchat-char-b"; +const WORK_ID = "test-selfchat-t34-work"; +const CHAR_EPILOGUE = "test-selfchat-t34-char"; + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_A, CHAR_B] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); + await prisma.client.character.deleteMany({ where: { id: CHAR_EPILOGUE } }); + await prisma.client.work.deleteMany({ where: { id: WORK_ID } }); +}); + +async function createCharacter(id: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); +} + +describe("SelfChatService(T6)", () => { + it("可連續推進超過 12 輪,不再受舊版硬上限強制結束", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await createCharacter(CHAR_B, "小乙"); + const room = await selfChat.start(userId, [CHAR_A, CHAR_B], "測試話題", clock.now()); + + let turns = 0; + let ended = false; + for (let i = 0; i < 20 && !ended; i++) { + const result = await selfChat.advance(room.id, new Date(clock.now().getTime() + i * 1000)); + if (result.ended) { + ended = true; + } else { + turns += 1; + } + } + expect(turns).toBeGreaterThan(12); + }, 60000); + + it("角色 LEAVE 後會離開房間在場名單、回到大廳,且 RoomTurn.kind 記為 LEAVE", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A, "小甲"); + await prisma.client.scheduleSlot.create({ + data: { characterId: CHAR_A, dayType: "WEEKDAY", startMinute: 720, endMinute: 900, status: "BUSY" }, + }); + const room = await selfChat.start(userId, [CHAR_A], "測試話題", clock.now()); + + let leftTurn: { kind: string; content: string } | undefined; + for (let i = 0; i < 40 && !leftTurn; i++) { + const before = await roomService.get(room.id); + await selfChat.advance(room.id, new Date(clock.now().getTime() + i * 1000)); + const after = await roomService.get(room.id); + if (before.participants.has(CHAR_A) && !after.participants.has(CHAR_A)) { + const lastTurn = after.turns.at(-1)!; + leftTurn = { kind: lastTurn.kind, content: lastTurn.content }; + } + } + expect(leftTurn).toBeDefined(); + expect(leftTurn!.kind).toBe("LEAVE"); + + const lobby = await lobbyService.getOrCreateLobby(userId); + const lobbyMember = await prisma.client.roomMember.findFirst({ where: { roomId: lobby.id, characterId: CHAR_A, leftAt: null } }); + expect(lobbyMember).not.toBeNull(); + }, 60000); + + it("T34:房內自走會順手推進發言角色所屬(後日談)作品的推演進度時鐘", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await prisma.client.work.create({ data: { id: WORK_ID, title: "T34 自走推進測試作品", inEpilogue: true, timeFlowMode: "FAST" } }); + await createCharacter(CHAR_EPILOGUE, "小丁"); + await prisma.client.character.update({ where: { id: CHAR_EPILOGUE }, data: { workId: WORK_ID } }); + + const room = await selfChat.start(userId, [CHAR_EPILOGUE], "測試話題", clock.now()); + const t0 = clock.now(); + await selfChat.advance(room.id, t0); // 第一次 tick:只建立時鐘起點,尚不推進 + let work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(0); + + await selfChat.advance(room.id, new Date(t0.getTime() + 24 * 60 * 60 * 1000)); // 一個現實日後再 tick 一次 + work = await prisma.client.work.findUniqueOrThrow({ where: { id: WORK_ID } }); + expect(work.anchorStoryOrder).toBe(3); // FAST:3 storyOrder/現實日 + }, 60000); +}); diff --git a/apps/api/src/room/self-chat.service.ts b/apps/api/src/room/self-chat.service.ts index 964e735..8edcca9 100644 --- a/apps/api/src/room/self-chat.service.ts +++ b/apps/api/src/room/self-chat.service.ts @@ -1,62 +1,58 @@ import { Injectable } from "@nestjs/common"; -import { RoomService, USER_SPEAKER_ID, type Room } from "./room.service.js"; +import { RoomService, type Room } from "./room.service.js"; import { SpeakingRightService } from "./speaking-right.service.js"; import { RoomGenerationService } from "./room-generation.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { BehaviorSelectionService, type LeaveReason } from "./behavior-selection.service.js"; +import { DELEGATE_TEMPLATES } from "./delegate-templates.js"; import { PrismaService } from "../prisma/prisma.service.js"; -import { SELF_CHAT_MAX_TURNS, STALL_CHECK_WINDOW, TOPIC_TWIST_LINES, SELF_CHAT_WRAP_UP_LINES } from "./constants.js"; - -function normalize(text: string): string { - return text.trim().toLowerCase(); -} - -// 偵測最近幾輪是否開始空轉:內容高度重複,或字數持續下降(話越講越少,快聊不下去了)。 -function isStalling(recentContents: string[]): boolean { - if (recentContents.length < STALL_CHECK_WINDOW) { - return false; - } - const window = recentContents.slice(-STALL_CHECK_WINDOW); - const normalized = window.map(normalize); - const uniqueCount = new Set(normalized).size; - if (uniqueCount === 1) { - return true; // 完全重複 - } - const lengths = window.map((text) => text.length); - const isMonotonicDecline = lengths.every((length, index) => index === 0 || length <= lengths[index - 1]); - return isMonotonicDecline && lengths[0] > lengths[lengths.length - 1]; -} +import { TaskService } from "../task/task.service.js"; +import { RoomNotificationService } from "./room-notification.service.js"; +import { createSeededRandom, hashToSeed } from "../llm/seeded-random.js"; +import { SELF_CHAT_WRAP_UP_LINES } from "./constants.js"; +import { EpilogueProgressService } from "../epilogue/epilogue-progress.service.js"; +import { PossessionService } from "./possession.service.js"; export interface SelfChatAdvanceResult { ended: boolean; turn?: { characterId: string; content: string }; - reason?: "topic-exhausted" | "turn-cap" | "stalled-out"; + reason?: "all-left"; // 現在只有「所有角色都已個別離開」這一種收斂路徑(見 T6) } -// K-6 角色自聊:話題種子驅動、發言權機制沿用 K-4、空轉偵測注入轉折或收尾、輪數硬上限。 +const LEAVE_LINES: Record = { + SCHEDULE: "啊,我差不多該去忙別的事了,先這樣!", + EMOTIONAL_EXHAUSTION: "……我想自己靜一靜,先離開一下。", + TOPIC_EXHAUSTED: SELF_CHAT_WRAP_UP_LINES[0], + SLEEP_DEBT: "……不行了,真的撐不住了,我要去睡了……", // T32:熬夜累積睡眠債達門檻,明說撐不住想睡 +}; + +// K-6/T6 角色自聊:話題種子驅動、發言權機制沿用 K-4;每輪決定發言者後,行為種類(TALK/ACTION/ +// DELEGATE/LEAVE)改由 BehaviorSelectionService 依人格參數+情緒/行程/話題狀態算權重抽樣決定, +// LLM 只生成內容,不決定「做什麼」。LEAVE 取代舊版「空轉即整室轉折或收尾」的機制——角色離開是 +// 個別發生的(一次只有一位角色離開),房間在還有人在場時就持續運作,不再受 12 輪硬上限節制。 @Injectable() export class SelfChatService { - private readonly twistCounts = new Map(); - constructor( private readonly prisma: PrismaService, private readonly room: RoomService, private readonly speakingRight: SpeakingRightService, private readonly generation: RoomGenerationService, + private readonly lobby: LobbyService, + private readonly behaviorSelection: BehaviorSelectionService, + private readonly task: TaskService, + private readonly roomNotification: RoomNotificationService, + private readonly epilogueProgress: EpilogueProgressService, + private readonly possession: PossessionService, ) {} async start(userId: string, characterIds: string[], topicSeed: string, now: Date = new Date()) { - const room = this.room.create(userId, characterIds, "SELF_CHAT", topicSeed); - this.twistCounts.set(room.id, 0); - return room; + return this.room.create(userId, characterIds, "SELF_CHAT", topicSeed); } async advance(roomId: string, now: Date = new Date()): Promise { - const room = this.room.get(roomId); + const room = await this.room.get(roomId); if (room.mode !== "SELF_CHAT" || room.status !== "ACTIVE") { - return { ended: true, reason: "topic-exhausted" }; - } - - if (room.turnCounter >= SELF_CHAT_MAX_TURNS) { - return this.wrapUp(room, now); + return { ended: true, reason: "all-left" }; } const lastTurn = room.turns.at(-1); @@ -64,31 +60,80 @@ export class SelfChatService { const triggerContent = lastTurn?.content ?? room.topicSeed ?? "今天過得怎麼樣?"; const triggerLabel = lastTurn?.speakerLabel ?? "話題"; - const recentContents = room.turns.slice(-STALL_CHECK_WINDOW).map((turn) => turn.content); - const twistCount = this.twistCounts.get(room.id) ?? 0; - if (isStalling(recentContents)) { - if (twistCount >= 2) { - return this.wrapUp(room, now); - } - return this.injectTwist(room, twistCount, now); - } - - const candidates = await this.speakingRight.decideSpeakers(room, triggerSpeakerId, triggerContent, now); - const speakerId = candidates[0]?.characterId ?? [...room.participants.keys()][0]; + // T43:套用中的角色不能被自走/發言權機制搶著代為發言——排除她們後再決定這輪誰要開口。 + const possessedIds = await this.possession.getPossessedCharacterIds(); + const candidates = await this.speakingRight.decideSpeakers(room, triggerSpeakerId, triggerContent, now, possessedIds); + const eligibleParticipants = [...room.participants.keys()].filter((id) => !possessedIds.has(id)); + const speakerId = candidates[0]?.characterId ?? eligibleParticipants[0]; if (!speakerId) { - return this.wrapUp(room, now); + // 在場者不是真的清空(那才是「全員離場」該收尾的情況),只是全員目前都被套用中——安靜一輪, + // 等套用者以角色身分發話即可,不應該把房間直接收尾關閉。 + if (room.participants.size > 0) { + return { ended: false }; + } + return this.wrapUp(room); } const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: speakerId } }); const alias = await this.prisma.client.characterAlias.findFirst({ where: { characterId: speakerId } }); const speakerLabel = alias?.nickname || alias?.formalName || character.id; + // T34:房內自走本身就是「後日談推演」唯一自然發生的時間點——沿著這個既有 tick 順手推進 + // 該角色所屬作品的推演進度時鐘(非日後談作品此方法內部直接 no-op),不另外開一條背景排程。 + if (character.workId) { + await this.epilogueProgress.advanceIfInEpilogue(character.workId, now); + } + + const behavior = await this.behaviorSelection.selectBehavior(room, speakerId, now); + + if (behavior.kind === "LEAVE") { + const line = LEAVE_LINES[behavior.leaveReason!]; + await this.room.addTurn(roomId, speakerId, speakerLabel, line, now, undefined, "LEAVE"); + await this.lobby.leaveSpecificRoom(speakerId, roomId, room.userId, now, `AUTONOMOUS_LEAVE_${behavior.leaveReason}`); + return { ended: false, turn: { characterId: speakerId, content: line } }; + } + + // T7:DELEGATE 台詞與委託內容固定配對(同 LEAVE 的做法,見 delegate-templates.ts 註解), + // 寫入 RoomTurn 的同時直接建立 Task、標記 sourceRoomId,不需要使用者確認即成立。 + if (behavior.kind === "DELEGATE") { + const index = Math.floor(createSeededRandom(hashToSeed(`${roomId}:${room.turnCounter}:${speakerId}:${now.getTime()}:delegate`))() * DELEGATE_TEMPLATES.length); + const template = DELEGATE_TEMPLATES[index]; + await this.room.addTurn(roomId, speakerId, speakerLabel, template.line, now, undefined, "DELEGATE"); + await this.task.create( + speakerId, + room.userId, + { type: template.taskType, content: template.taskContent, rawText: template.line, sourceRoomId: roomId }, + now, + ); + await this.roomNotification.notifyDelegateProposed(room, speakerLabel, template.taskContent); + return { ended: false, turn: { characterId: speakerId, content: template.line } }; + } + const reply = await this.generation.generateReply(room, speakerId, triggerSpeakerId, triggerLabel, triggerContent, { now, }); - this.room.addTurn(roomId, speakerId, speakerLabel, reply.text, now); + // T30:全域靜默暫停或重試全部失敗時 reply.text 為空——這一輪是「靜默 tick」,不寫 RoomTurn、 + // 不計用量、也不對使用者顯示任何提示;lastAdvancedAt 因此不會更新,排程器下次 tick 會再次嘗試。 + if (!reply.text) { + return { ended: false }; + } + const content = behavior.kind === "ACTION" && !reply.text.includes("*") ? `*${reply.text}*` : reply.text; + const turn = await this.room.addTurn(roomId, speakerId, speakerLabel, content, now, undefined, behavior.kind); + if (reply.usage) { + await this.room.recordUsage(roomId, { ...reply.usage, turnSeq: turn.turnIndex }); + } + // T31 被喊或被點名:自走過程中角色主動點名喚使用者(內容提到使用者本名),視為需要使用者注意的 + // 事件;一般角色間閒聊(不提到使用者)不算,不推播。 + if (await this.mentionsUser(room.userId, content)) { + await this.roomNotification.notifyMentioned(room, speakerLabel, content); + } - return { ended: false, turn: { characterId: speakerId, content: reply.text } }; + return { ended: false, turn: { characterId: speakerId, content } }; + } + + private async mentionsUser(userId: string, content: string): Promise { + const user = await this.prisma.client.user.findUnique({ where: { id: userId } }); + return Boolean(user?.name && content.includes(user.name)); } // 使用者插話:切換為群聊模式,插話內容本身視為使用者的第一則群聊訊息。 @@ -96,32 +141,10 @@ export class SelfChatService { return this.room.switchToGroup(roomId); } - private async injectTwist(room: Room, twistCount: number, now: Date): Promise { - const speakerId = [...room.participants.keys()][twistCount % room.participants.size]; - const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: speakerId } }); - const alias = await this.prisma.client.characterAlias.findFirst({ where: { characterId: speakerId } }); - const speakerLabel = alias?.nickname || alias?.formalName || character.id; - const line = TOPIC_TWIST_LINES[twistCount % TOPIC_TWIST_LINES.length]; - - this.room.addTurn(room.id, speakerId, speakerLabel, line, now); - this.twistCounts.set(room.id, twistCount + 1); - return { ended: false, turn: { characterId: speakerId, content: line } }; - } - - private async wrapUp(room: Room, now: Date): Promise { - const speakerId = [...room.participants.keys()][0]; - if (speakerId) { - const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: speakerId } }); - const alias = await this.prisma.client.characterAlias.findFirst({ where: { characterId: speakerId } }); - const speakerLabel = alias?.nickname || alias?.formalName || character.id; - const line = SELF_CHAT_WRAP_UP_LINES[room.turnCounter % SELF_CHAT_WRAP_UP_LINES.length]; - this.room.addTurn(room.id, speakerId, speakerLabel, line, now); - } - this.twistCounts.delete(room.id); - this.room.end(room.id); - return { - ended: true, - reason: room.turnCounter >= SELF_CHAT_MAX_TURNS ? "turn-cap" : "stalled-out", - }; + // 所有角色都已透過 LEAVE 個別離開(在場名單清空)時,才真的把房間收尾關閉。 + private async wrapUp(room: Room): Promise { + await this.room.end(room.id, "ALL_LEFT"); + await this.roomNotification.notifyRoomClosed(room, "ALL_LEFT"); + return { ended: true, reason: "all-left" }; } } diff --git a/apps/api/src/room/solo-chat.service.ts b/apps/api/src/room/solo-chat.service.ts new file mode 100644 index 0000000..ed5fd35 --- /dev/null +++ b/apps/api/src/room/solo-chat.service.ts @@ -0,0 +1,75 @@ +import { Inject, Injectable, NotFoundException } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { CLOCK, type Clock } from "../clock/clock.js"; +import { DialogueService, type HandleMessageOptions, type HandleMessageResult } from "../llm/dialogue.service.js"; +import { MemoryConsolidationService } from "../memory/memory-consolidation.service.js"; +import { RoomService, USER_SPEAKER_ID, type Room } from "./room.service.js"; +import { LobbyService } from "./lobby.service.js"; + +// T38:既有 1:1 聊天併入 SOLO 房。以 roomId 取代既有 sessionId 作為 WorkingMemoryService/ +// ContextAssemblerService/MemoryConsolidationService 的鍵值——這三者原本就把 sessionId 當成不透明 +// 字串鍵使用,沒有獨立的 session 資料表,因此「併入」在這幾層完全不需要改動,只需要呼叫端改傳 roomId。 +// 舊 sessionId 產生的工作記憶/長期記憶保留不動、不做資料遷移(舊 session 早已各自過期或已固化)。 +@Injectable() +export class SoloChatService { + constructor( + private readonly prisma: PrismaService, + private readonly room: RoomService, + private readonly lobby: LobbyService, + private readonly dialogue: DialogueService, + private readonly consolidation: MemoryConsolidationService, + @Inject(CLOCK) private readonly clock: Clock, + ) {} + + // 同一使用者對同一角色永遠沿用同一間進行中的 SOLO 房,直到明確呼叫 endRoom() 為止—— + // 對應舊版「使用同一 sessionId 持續同一場對話」的語意,但改由伺服器端管理,呼叫端不需要 + // 自己產生並記住 sessionId。 + async getOrCreateRoom(userId: string, characterId: string): Promise { + const existing = await this.prisma.client.room.findFirst({ + where: { userId, mode: "SOLO", status: "ACTIVE", members: { some: { characterId } } }, + }); + if (existing) return this.room.get(existing.id); + + // characterIds 傳空陣列:成員登記完全交給 lobby.enterRoom() 處理(它會建立帶 activeCharacterId + // 的那一筆),避免這裡再建一筆沒有 activeCharacterId 的重複 RoomMember。 + const created = await this.room.create(userId, [], "SOLO"); + // R5:進入 1:1 房即離開大廳,交由 LobbyService 統一管理跨房唯一性。 + await this.lobby.enterRoom(characterId, created.id, this.clock.now()); + return this.room.get(created.id); + } + + async sendMessage( + roomId: string, + userId: string, + text: string, + options: HandleMessageOptions = {}, + ): Promise { + const room = await this.room.get(roomId); + const characterId = [...room.participants.keys()][0]; + if (!characterId) { + throw new NotFoundException(`房間 ${roomId} 沒有對應角色`); + } + + const result = await this.dialogue.handleMessage(characterId, userId, roomId, text, options); + const now = options.now ?? this.clock.now(); + await this.room.addTurn(roomId, USER_SPEAKER_ID, userId, text, now); + if (result.text) { + const turn = await this.room.addTurn(roomId, characterId, characterId, result.text, now); + if (result.usage) { + await this.room.recordUsage(roomId, { ...result.usage, turnSeq: turn.turnIndex }); + } + } + return result; + } + + // 關房即觸發睡眠固化(取代舊版 POST /session/:sessionId/end),並沿用 RoomService.end() 內建的 + // T24 送回大廳流程。 + async endRoom(roomId: string): Promise { + const room = await this.room.get(roomId); + const characterId = [...room.participants.keys()][0]; + if (characterId) { + await this.consolidation.consolidate(characterId, roomId); + } + await this.room.end(roomId); + } +} diff --git a/apps/api/src/room/speaking-right-n-plus-one.test.ts b/apps/api/src/room/speaking-right-n-plus-one.test.ts new file mode 100644 index 0000000..a584c3f --- /dev/null +++ b/apps/api/src/room/speaking-right-n-plus-one.test.ts @@ -0,0 +1,98 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { SpeakingRightService } from "./speaking-right.service.js"; + +// T33 驗收:多人房單輪的資料庫查詢次數不隨人數線性成長——decideSpeakers() 對 Character/ +// CharacterAlias 改為批次查詢(各一次),不再是每位候選各自查一次(舊版 2N 次)。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +const dbUrl = `file:${join(repoRoot, "prisma", "dev.db")}`; +process.env.DATABASE_URL = dbUrl; + +// 另建一個帶 query 事件記錄的 PrismaClient,只用來數這個測試檔案本身查詢次數,不影響其他測試共用的 +// prisma 實例(其餘服務仍用一般的 createPrismaClient(),行為不變)。 +const queryLog: string[] = []; +const loggingClient = createPrismaClient({ logQueries: true }); +(loggingClient.$on as (event: "query", callback: (e: { query: string }) => void) => void)("query", (event) => { + queryLog.push(event.query); +}); +const prisma = { client: loggingClient } as unknown as PrismaService; + +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const characterRelationship = new CharacterRelationshipService(prisma); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); + +const userId = "test-nplus1-user"; +const CHAR_IDS = Array.from({ length: 8 }, (_, i) => `test-nplus1-char-${i}`); + +afterEach(async () => { + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: CHAR_IDS } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: id } }, + }, + }); +} + +function countTableQueries(table: string, sinceIndex: number): number { + return queryLog + .slice(sinceIndex) + .filter((sql) => sql.toLowerCase().includes(`from \`main\`.\`${table.toLowerCase()}\``)).length; +} + +describe("SpeakingRightService.decideSpeakers 批次查詢(T33)", () => { + it("Character/CharacterAlias 查詢次數固定,不隨候選人數線性成長", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + for (const id of CHAR_IDS) await createCharacter(id); + + const smallRoom = await roomService.create(userId, CHAR_IDS.slice(0, 2), "GROUP"); + const largeRoom = await roomService.create(userId, CHAR_IDS, "GROUP"); + + const beforeSmall = queryLog.length; + await speakingRight.decideSpeakers(smallRoom, USER_SPEAKER_ID, "哈囉大家", clock.now()); + const smallCharacterQueries = countTableQueries("characters", beforeSmall); + const smallAliasQueries = countTableQueries("character_aliases", beforeSmall); + + const beforeLarge = queryLog.length; + await speakingRight.decideSpeakers(largeRoom, USER_SPEAKER_ID, "哈囉大家", clock.now()); + const largeCharacterQueries = countTableQueries("characters", beforeLarge); + const largeAliasQueries = countTableQueries("character_aliases", beforeLarge); + + // 候選人數從 2 增為 8(4 倍),批次查詢後 Character/CharacterAlias 查詢次數應相同(各 1 次), + // 不會隨人數等比成長(若還是舊版 N+1,largeRoom 的查詢數應該是 smallRoom 的數倍)。 + expect(smallCharacterQueries).toBe(1); + expect(largeCharacterQueries).toBe(1); + expect(smallAliasQueries).toBe(1); + expect(largeAliasQueries).toBe(1); + }, 60000); +}); diff --git a/apps/api/src/room/speaking-right-tiebreak.test.ts b/apps/api/src/room/speaking-right-tiebreak.test.ts new file mode 100644 index 0000000..e5923b4 --- /dev/null +++ b/apps/api/src/room/speaking-right-tiebreak.test.ts @@ -0,0 +1,87 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { SpeakingRightService } from "./speaking-right.service.js"; +import { USER_SPEAKER_ID, type Room, type RoomParticipantState } from "./room.service.js"; + +// T18 實測發現的迴歸測試:多位候選分數完全相同時(例如同原型、皆已冷落到 SILENT_STREAK_BONUS_CAP +// 封頂),decideSpeakers() 若只靠 Array.sort 的穩定排序決勝,會永遠偏向陣列(= 建立)順序較前的角色; +// 12 人房實測曾出現 4 位角色 80 輪內完全零發言。修正後分數相同時改以「實際冷落輪數」(未封頂的 +// silentStreak)決勝,冷落最久者優先,才不會被建立順序卡死。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const characterRelationship = new CharacterRelationshipService(prisma); +const speakingRight = new SpeakingRightService(prisma, emotionService, relationshipService, characterRelationship); + +const userId = "test-tiebreak-user"; +const CHAR_A = "test-tiebreak-char-a"; // 冷落 6 輪(剛好觸頂) +const CHAR_B = "test-tiebreak-char-b"; // 冷落 8 輪(也觸頂,但實際冷落更久) +const CHAR_C = "test-tiebreak-char-c"; // 冷落 6 輪,陣列順序排在 A 之後 + +afterEach(async () => { + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_A, CHAR_B, CHAR_C] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: id } }, + }, + }); +} + +function participant(characterId: string, silentStreak: number): RoomParticipantState { + return { characterId, silentStreak, lastSpokeAtTurn: -1 }; +} + +describe("SpeakingRightService.decideSpeakers 同分決勝(T18 迴歸)", () => { + it("分數因 SILENT_STREAK_BONUS_CAP 封頂而完全相同時,改以未封頂的冷落輪數決勝,不受建立順序卡死", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_A); + await createCharacter(CHAR_B); + await createCharacter(CHAR_C); + + const participants = new Map([ + [CHAR_A, participant(CHAR_A, 6)], + [CHAR_B, participant(CHAR_B, 8)], + [CHAR_C, participant(CHAR_C, 6)], + ]); + const room: Room = { + id: "test-tiebreak-room", + userId, + mode: "SELF_CHAT", + status: "ACTIVE", + muted: false, + participants, + turns: [], + turnCounter: 20, + }; + + const result = await speakingRight.decideSpeakers(room, USER_SPEAKER_ID, "哈囉大家", new Date()); + + expect(result[0].characterId).toBe(CHAR_B); // 實際冷落最久,即使加分封頂也該優先 + expect(result[0].score).toBe(result[1].score); // 與其餘同分(皆已觸頂) + expect(result[0].score).toBe(result[2].score); + }, 20000); +}); diff --git a/apps/api/src/room/speaking-right.service.ts b/apps/api/src/room/speaking-right.service.ts index ee14dc9..2b9ea1d 100644 --- a/apps/api/src/room/speaking-right.service.ts +++ b/apps/api/src/room/speaking-right.service.ts @@ -1,10 +1,12 @@ import { Injectable } from "@nestjs/common"; +import type { Character, CharacterAlias } from "@kokorone/db"; import { PrismaService } from "../prisma/prisma.service.js"; import { EmotionService, dominantState } from "../emotion/emotion.service.js"; import { RelationshipService } from "../relationship/relationship.service.js"; import { getArchetypeParams } from "../personality/archetype-params.js"; import { CharacterRelationshipService } from "./character-relationship.service.js"; import { type Room, USER_SPEAKER_ID } from "./room.service.js"; +import { keywordOverlap } from "../llm/keyword-overlap.js"; import { SPEAKING_THRESHOLD, NAMED_BOOST, @@ -24,22 +26,9 @@ export interface SpeakingImpulse { isNamed: boolean; } -function keywordOverlap(text: string, corpus: string): number { - // 中文常見以單字成詞(貓/狗/書),門檻不能設 >=2,否則會漏掉大量真實關鍵字。 - const keywords = corpus.split(/[、,,;::\s]+/).filter((word) => word.length >= 1); - if (keywords.length === 0) { - return 0; - } - const hits = keywords.filter((keyword) => text.includes(keyword)).length; - if (hits === 0) { - return 0; - } - // 只要命中,就是明確訊號(哪怕只命中角色喜好清單裡的一個詞):至少給予下限分數, - // 不讓「喜好清單條目多」稀釋掉單次命中的重要性。 - return Math.max(0.5, hits / keywords.length); -} - // K-4 發言權分配:每輪為每位在場角色計算「發言衝動值」,超過門檻者本輪發言。 +// T33:decideSpeakers() 一輪內為全體候選批次查詢 Character/CharacterAlias(各一次查詢,不隨候選人數 +// 線性成長),computeImpulse() 改為接受預先批次好的資料而非各自查詢,避免多人房的 N+1。 @Injectable() export class SpeakingRightService { constructor( @@ -55,11 +44,14 @@ export class SpeakingRightService { speakerId: string, content: string, now: Date, + prefetched?: { character: Character; aliases: CharacterAlias[] }, ): Promise { - const [character, aliases] = await Promise.all([ - this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }), - this.prisma.client.characterAlias.findMany({ where: { characterId } }), - ]); + const { character, aliases } = + prefetched ?? + (await (async () => ({ + character: await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }), + aliases: await this.prisma.client.characterAlias.findMany({ where: { characterId } }), + }))()); const archetypeParams = getArchetypeParams(character.personalityArchetype); const isNamed = aliases.some( @@ -107,11 +99,58 @@ export class SpeakingRightService { } // 回傳本輪應該發言的角色(依衝動值高到低排序),排除發言者本人。 - async decideSpeakers(room: Room, speakerId: string, content: string, now: Date = new Date()): Promise { - const candidates = [...room.participants.keys()].filter((characterId) => characterId !== speakerId); - const impulses = await Promise.all( - candidates.map((characterId) => this.computeImpulse(room, characterId, speakerId, content, now)), + // T43:excludeCharacterIds 排除目前被套用中的角色——她們不能被 LLM/自走機制搶著代為發言, + // 只能透過 PossessionService.speakAsPossessed() 由套用者本人的輸入產生她的發言。 + async decideSpeakers( + room: Room, + speakerId: string, + content: string, + now: Date = new Date(), + excludeCharacterIds: ReadonlySet = new Set(), + ): Promise { + const candidates = [...room.participants.keys()].filter( + (characterId) => characterId !== speakerId && !excludeCharacterIds.has(characterId), ); - return impulses.filter((impulse) => impulse.score >= SPEAKING_THRESHOLD).sort((a, b) => b.score - a.score); + if (candidates.length === 0) return []; + + // T33:批次查詢,查詢次數固定為 2(Character/CharacterAlias 各一次),不隨候選人數線性成長。 + const [characters, aliases] = await Promise.all([ + this.prisma.client.character.findMany({ where: { id: { in: candidates } } }), + this.prisma.client.characterAlias.findMany({ where: { characterId: { in: candidates } } }), + ]); + const characterById = new Map(characters.map((c) => [c.id, c])); + const aliasesByCharacterId = new Map(); + for (const alias of aliases) { + const list = aliasesByCharacterId.get(alias.characterId) ?? []; + list.push(alias); + aliasesByCharacterId.set(alias.characterId, list); + } + + const impulses = await Promise.all( + candidates.map((characterId) => { + const character = characterById.get(characterId); + if (!character) { + throw new Error(`角色不存在:${characterId}`); + } + return this.computeImpulse(room, characterId, speakerId, content, now, { + character, + aliases: aliasesByCharacterId.get(characterId) ?? [], + }); + }), + ); + // T18 實測發現:SILENT_STREAK_BONUS_CAP 讓「已冷落夠久」的角色分數被封頂拉平,一旦多位候選同時 + // 觸頂即完全同分;Array.sort 是穩定排序,同分時永遠保留原陣列順序(= room.participants 的建立 + // 順序),導致固定幾位「先建立」的角色每次同分都贏,其餘角色在長段落內可能永遠分不到發言權 + // (8 人房已出現偏斜、12 人房實測 4 位角色 80 輪內完全零發言)。分數相同時改以「實際冷落輪數」 + // (未封頂的 silentStreak)決勝——即使獎勵值封頂,真正被晾最久的角色仍優先,才不會被建立順序 + // 卡死;且下修 SILENT_STREAK_BONUS_CAP 為建立順序偏誤的一環,但真正的修正在這裡的次要排序鍵。 + return impulses + .filter((impulse) => impulse.score >= SPEAKING_THRESHOLD) + .sort((a, b) => { + if (b.score !== a.score) return b.score - a.score; + const streakA = room.participants.get(a.characterId)?.silentStreak ?? 0; + const streakB = room.participants.get(b.characterId)?.silentStreak ?? 0; + return streakB - streakA; + }); } } diff --git a/apps/api/src/room/stall-detection.ts b/apps/api/src/room/stall-detection.ts new file mode 100644 index 0000000..632cdd3 --- /dev/null +++ b/apps/api/src/room/stall-detection.ts @@ -0,0 +1,22 @@ +import { STALL_CHECK_WINDOW } from "./constants.js"; + +function normalize(text: string): string { + return text.trim().toLowerCase(); +} + +// 偵測最近幾輪是否開始空轉:內容高度重複,或字數持續下降(話越講越少,快聊不下去了)。 +// 原為 self-chat.service.ts 私有函式,T22 的動態間隔計算需要同一套判定邏輯,抽出共用避免重複實作。 +export function isStalling(recentContents: string[]): boolean { + if (recentContents.length < STALL_CHECK_WINDOW) { + return false; + } + const window = recentContents.slice(-STALL_CHECK_WINDOW); + const normalized = window.map(normalize); + const uniqueCount = new Set(normalized).size; + if (uniqueCount === 1) { + return true; // 完全重複 + } + const lengths = window.map((text) => text.length); + const isMonotonicDecline = lengths.every((length, index) => index === 0 || length <= lengths[index - 1]); + return isMonotonicDecline && lengths[0] > lengths[lengths.length - 1]; +} diff --git a/apps/api/src/room/witness-reaction.test.ts b/apps/api/src/room/witness-reaction.test.ts new file mode 100644 index 0000000..b1310ff --- /dev/null +++ b/apps/api/src/room/witness-reaction.test.ts @@ -0,0 +1,147 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { createPrismaClient } from "@kokorone/db"; +import { afterEach, describe, expect, it } from "vitest"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ControllableClock } from "../clock/controllable-clock.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { RomanceService } from "../romance/romance.service.js"; +import { RomanceEligibilityService } from "../romance/romance-eligibility.service.js"; +import { AgeDeterminationService } from "../romance/age-determination.service.js"; +import { KeywordMemoryRetriever } from "../memory/memory-retriever.service.js"; +import { MockProvider } from "../llm/mock-provider.service.js"; +import { GlobalPauseService } from "../llm/global-pause.service.js"; +import { LobbyService } from "./lobby.service.js"; +import { RoomEventsService } from "./room-events.service.js"; +import { RoomService, USER_SPEAKER_ID } from "./room.service.js"; +import { CharacterRelationshipService } from "./character-relationship.service.js"; +import { RoomGenerationService } from "./room-generation.service.js"; + +// T35 目擊者反應驗收:使用者跟某角色已到曖昧以上,多人房內其他角色不是空氣——自己對使用者也有戀愛 +// 心思的旁觀者會吃味(關係值下修),單純旁觀的則替對方開心(關係值上修),且都留下事件紀錄。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const clock = new ControllableClock("2026-08-19T05:00:00.000Z"); +const roomEvents = new RoomEventsService(new EventEmitter2()); +const lobbyService = new LobbyService(prisma, clock, roomEvents); +const roomService = new RoomService(prisma, clock, lobbyService, roomEvents); +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const retriever = new KeywordMemoryRetriever(prisma); +const characterRelationship = new CharacterRelationshipService(prisma); +const romanceService = new RomanceService( + prisma, + relationshipService, + new RomanceEligibilityService(prisma, new AgeDeterminationService(prisma)), +); +const mockProvider = new MockProvider(); +const generation = new RoomGenerationService( + prisma, + emotionService, + relationshipService, + retriever, + characterRelationship, + romanceService, + mockProvider, + new GlobalPauseService(), +); + +const userId = "test-witness-user"; +const CHAR_TARGET = "test-witness-char-target"; // 使用者曖昧對象 +const CHAR_JEALOUS = "test-witness-char-jealous"; // 自己對使用者也有戀愛心思 +const CHAR_HAPPY = "test-witness-char-happy"; // 純粹旁觀 + +afterEach(async () => { + await prisma.client.characterRelationshipEventLog.deleteMany({ + where: { OR: [{ characterId: { in: [CHAR_JEALOUS, CHAR_HAPPY] } }, { otherCharacterId: CHAR_TARGET }] }, + }); + await prisma.client.characterRelationship.deleteMany({ + where: { characterId: { in: [CHAR_TARGET, CHAR_JEALOUS, CHAR_HAPPY] } }, + }); + await prisma.client.relationship.deleteMany({ where: { userId } }); + await prisma.client.room.deleteMany({ where: { userId } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_TARGET, CHAR_JEALOUS, CHAR_HAPPY] } } }); + await prisma.client.user.deleteMany({ where: { id: userId } }); +}); + +async function createCharacter(id: string, formalName: string) { + await prisma.client.character.create({ + data: { + id, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName } }, + }, + }); +} + +async function setRomanceStage(characterId: string, romanceStage: "NONE" | "AMBIGUOUS") { + await relationshipService.getOrCreate(characterId, userId, clock.now()); + await prisma.client.relationship.update({ + where: { characterId_userId: { characterId, userId } }, + data: { romanceStage }, + }); +} + +describe("目擊者反應(T35)", () => { + it("使用者與目標角色曖昧時,同樣對使用者有心思的旁觀者吃味、單純旁觀者替對方開心,皆留下事件紀錄", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_TARGET, "小甲"); + await createCharacter(CHAR_JEALOUS, "小乙"); + await createCharacter(CHAR_HAPPY, "小丙"); + await setRomanceStage(CHAR_TARGET, "AMBIGUOUS"); + await setRomanceStage(CHAR_JEALOUS, "AMBIGUOUS"); + await setRomanceStage(CHAR_HAPPY, "NONE"); + + const room = await roomService.create(userId, [CHAR_TARGET, CHAR_JEALOUS, CHAR_HAPPY], "GROUP"); + const reply = await generation.generateReply(room, CHAR_TARGET, USER_SPEAKER_ID, "使用者", "今天也想見到你", { + now: clock.now(), + }); + expect(reply.text).toBeTruthy(); + + const jealousAffinity = await characterRelationship.getAffinity(CHAR_JEALOUS, CHAR_TARGET); + const happyAffinity = await characterRelationship.getAffinity(CHAR_HAPPY, CHAR_TARGET); + expect(jealousAffinity).toBeLessThan(50); // 吃味:關係值下修 + expect(happyAffinity).toBeGreaterThan(50); // 替對方開心:關係值上修 + + const jealousLog = await prisma.client.characterRelationshipEventLog.findFirst({ + where: { characterId: CHAR_JEALOUS, otherCharacterId: CHAR_TARGET }, + }); + const happyLog = await prisma.client.characterRelationshipEventLog.findFirst({ + where: { characterId: CHAR_HAPPY, otherCharacterId: CHAR_TARGET }, + }); + expect(jealousLog).toBeTruthy(); + expect(jealousLog!.delta).toBeLessThan(0); + expect(happyLog).toBeTruthy(); + expect(happyLog!.delta).toBeGreaterThan(0); + }, 20000); + + it("使用者與目標角色尚未曖昧(NONE)時,不觸發目擊者反應", async () => { + await prisma.client.user.create({ data: { id: userId, name: "測試使用者" } }); + await createCharacter(CHAR_TARGET, "小甲"); + await createCharacter(CHAR_JEALOUS, "小乙"); + await setRomanceStage(CHAR_TARGET, "NONE"); + + const room = await roomService.create(userId, [CHAR_TARGET, CHAR_JEALOUS], "GROUP"); + await generation.generateReply(room, CHAR_TARGET, USER_SPEAKER_ID, "使用者", "今天天氣不錯", { now: clock.now() }); + + const affinity = await characterRelationship.getAffinity(CHAR_JEALOUS, CHAR_TARGET); + expect(affinity).toBe(50); // 未達曖昧門檻,維持中性 + + const log = await prisma.client.characterRelationshipEventLog.findFirst({ + where: { characterId: CHAR_JEALOUS, otherCharacterId: CHAR_TARGET }, + }); + expect(log).toBeNull(); + }, 20000); +}); diff --git a/apps/api/src/room/witness-reaction.ts b/apps/api/src/room/witness-reaction.ts new file mode 100644 index 0000000..747862f --- /dev/null +++ b/apps/api/src/room/witness-reaction.ts @@ -0,0 +1,22 @@ +import type { RomanceStage } from "@kokorone/db"; + +export interface WitnessReaction { + delta: number; + description: string; +} + +const ROMANTIC_STAGES: ReadonlySet = new Set(["AMBIGUOUS", "PARTNER", "DEEP_PARTNER"]); + +// T35 目擊者反應:使用者與某角色的曖昧互動被有旁人在場時,其他在場角色不是空氣——各自依「自己跟使用者 +// 是不是也有戀愛心思」決定反應:同樣對使用者有意思的會吃味(對這位角色的關係值下修),單純旁觀的則替 +// 對方開心(小幅上修)。純函式,不觸碰資料庫,方便單獨測試。 +export function isRomanticMoment(targetRomanceStage: RomanceStage): boolean { + return ROMANTIC_STAGES.has(targetRomanceStage); +} + +export function computeWitnessReaction(witnessRomanceStage: RomanceStage, targetLabel: string): WitnessReaction { + if (ROMANTIC_STAGES.has(witnessRomanceStage)) { + return { delta: -4, description: `看到${targetLabel}跟使用者那麼親密,忍不住有點吃味` }; + } + return { delta: 1, description: `看到${targetLabel}跟使用者感情升溫,替對方開心` }; +} diff --git a/apps/api/src/schedule/offline-event.service.test.ts b/apps/api/src/schedule/offline-event.service.test.ts new file mode 100644 index 0000000..13f535a --- /dev/null +++ b/apps/api/src/schedule/offline-event.service.test.ts @@ -0,0 +1,101 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ScheduleService } from "./schedule.service.js"; +import { OfflineEventService } from "./offline-event.service.js"; + +// T41 驗收:在場(大廳/房間)期間不生成假的離線事件,日常素材來自真實 RoomTurn;只有忙碌/睡眠 +// 時段才生成,且生成前必須確認同時段沒有真實紀錄。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const scheduleService = new ScheduleService(prisma); +const offlineEvent = new OfflineEventService(prisma, scheduleService); + +const CHARACTER_ID = "test-offline-event-char"; +const ROOM_USER_ID = "test-offline-event-user"; + +afterEach(async () => { + await prisma.client.roomTurn.deleteMany({ where: { speakerCharacterId: CHARACTER_ID } }); + await prisma.client.room.deleteMany({ where: { userId: ROOM_USER_ID } }); + await prisma.client.episodicMemory.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.scheduleSlot.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHARACTER_ID } }); + await prisma.client.user.deleteMany({ where: { id: ROOM_USER_ID } }); +}); + +async function createCharacter() { + await prisma.client.character.create({ + data: { + id: CHARACTER_ID, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); +} + +describe("OfflineEventService(T41)", () => { + it("整天只有空閒時段(無忙碌/睡眠):不生成任何離線事件", async () => { + await createCharacter(); + await prisma.client.scheduleSlot.create({ + data: { characterId: CHARACTER_ID, dayType: "WEEKDAY", startMinute: 0, endMinute: 1440, status: "FREE" }, + }); + + // 週三(WEEKDAY)中午 + await offlineEvent.maybeGenerate(CHARACTER_ID, new Date("2026-08-19T05:00:00.000Z")); + + const memories = await prisma.client.episodicMemory.findMany({ + where: { characterId: CHARACTER_ID, source: "OFFLINE_GENERATED" }, + }); + expect(memories).toHaveLength(0); + }); + + it("忙碌時段已有真實 RoomTurn:不生成離線事件、不與真實紀錄衝突", async () => { + await createCharacter(); + await prisma.client.user.create({ data: { id: ROOM_USER_ID, name: "測試使用者" } }); + // 週三(WEEKDAY)12:00~15:00 忙碌 + await prisma.client.scheduleSlot.create({ + data: { characterId: CHARACTER_ID, dayType: "WEEKDAY", startMinute: 720, endMinute: 900, status: "BUSY", label: "社團活動" }, + }); + + const room = await prisma.client.room.create({ + data: { userId: ROOM_USER_ID, mode: "SOLO", status: "ACTIVE" }, + }); + // 忙碌時段內(13:00 台北)留下一筆真實對話。 + await prisma.client.roomTurn.create({ + data: { roomId: room.id, seq: 0, speakerCharacterId: CHARACTER_ID, content: "其實我偷偷跑出來聊天了", createdAt: new Date("2026-08-19T05:00:00.000Z") }, + }); + + // 忙碌時段剛結束後觸發(15:05)。 + await offlineEvent.maybeGenerate(CHARACTER_ID, new Date("2026-08-19T07:05:00.000Z")); + + const memories = await prisma.client.episodicMemory.findMany({ + where: { characterId: CHARACTER_ID, source: "OFFLINE_GENERATED" }, + }); + expect(memories).toHaveLength(0); + }); + + it("忙碌時段沒有真實紀錄:正常生成合理的離線小事", async () => { + await createCharacter(); + await prisma.client.scheduleSlot.create({ + data: { characterId: CHARACTER_ID, dayType: "WEEKDAY", startMinute: 720, endMinute: 900, status: "BUSY", label: "社團活動" }, + }); + + await offlineEvent.maybeGenerate(CHARACTER_ID, new Date("2026-08-19T07:05:00.000Z")); + + const memories = await prisma.client.episodicMemory.findMany({ + where: { characterId: CHARACTER_ID, source: "OFFLINE_GENERATED" }, + }); + expect(memories).toHaveLength(1); + expect(memories[0].content).toContain("社團"); + }); +}); diff --git a/apps/api/src/schedule/offline-event.service.ts b/apps/api/src/schedule/offline-event.service.ts index 899531e..599e80f 100644 --- a/apps/api/src/schedule/offline-event.service.ts +++ b/apps/api/src/schedule/offline-event.service.ts @@ -12,7 +12,10 @@ const OFFLINE_EVENT_TEMPLATES: Record = { }; const DEFAULT_OFFLINE_EVENT_TEMPLATES = ["今天過得普普通通,沒什麼特別的事"]; -// I-6 離線生活:不在線時她在活著,於下次對話開始時按需生成合理的日常小事。 +// I-6/T41 離線生活:日常素材一律以真實 RoomTurn 為優先來源(大廳/房間在場期間發生的事,交由 +// room-consolidation/memory-consolidation 固化為 EpisodicMemory,不在這裡重複生成);本服務只 +// 負責「行程忙碌或睡眠、角色真的不在場」的時段補一則合理的離線小事,且生成前必須確認同時段沒有 +// 真實紀錄(例如使用者其實在那個時段把她呼叫進房聊過天)——有真實紀錄就不生成,不與其衝突。 @Injectable() export class OfflineEventService { constructor( @@ -30,9 +33,27 @@ export class OfflineEventService { } const pastSlots = await this.schedule.getPastSlotsToday(characterId, now); - const labelledSlots = pastSlots.filter((slot) => slot.label && slot.status !== "SLEEP"); - const label = labelledSlots.at(-1)?.label ?? null; + // T41:空閒/半忙碌時角色隨時可能人在大廳或房間裡真的活動過,只有忙碌/睡眠才算「真的不在場」, + // 才需要補一則離線小事;空閒時段沒有對應的離線事件,日常素材交給真實 RoomTurn 紀錄。 + const absentSlots = pastSlots.filter((slot) => slot.status === "BUSY" || slot.status === "SLEEP"); + if (absentSlots.length === 0) { + return; + } + const targetSlot = absentSlots.at(-1)!; + // 生成前檢查同時段是否已有真實紀錄——角色雖然「應該」在忙或睡覺,但實際上被呼叫進房、留下了 + // 真的對話,這個時段就不該用假事件覆蓋。 + const slotStart = new Date(todayStart.getTime() + targetSlot.startMinute * 60_000); + const slotEnd = new Date(todayStart.getTime() + targetSlot.endMinute * 60_000); + const realTurnInSlot = await this.prisma.client.roomTurn.findFirst({ + where: { speakerCharacterId: characterId, createdAt: { gte: slotStart, lt: slotEnd } }, + }); + if (realTurnInSlot) { + return; + } + + // 睡眠時段不當作「做了什麼事」的標籤來源(沒有對應模板,也沒有「睡覺時發生的趣事」的敘事空間)。 + const label = targetSlot.status === "SLEEP" ? null : targetSlot.label; const templates = (label && OFFLINE_EVENT_TEMPLATES[label]) || DEFAULT_OFFLINE_EVENT_TEMPLATES; const content = templates[Math.floor(Math.random() * templates.length)]; diff --git a/apps/api/src/schedule/schedule-emotion-baseline.service.ts b/apps/api/src/schedule/schedule-emotion-baseline.service.ts index 608d526..11efc79 100644 --- a/apps/api/src/schedule/schedule-emotion-baseline.service.ts +++ b/apps/api/src/schedule/schedule-emotion-baseline.service.ts @@ -1,6 +1,8 @@ import { Injectable } from "@nestjs/common"; import type { EmotionTag } from "@kokorone/shared"; +import { PrismaService } from "../prisma/prisma.service.js"; import { ScheduleService } from "./schedule.service.js"; +import { SleepDebtService, SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES, SLEEP_DEBT_ESCALATION_THRESHOLD_MINUTES } from "./sleep-debt.service.js"; export interface BaselineSignal { tag: EmotionTag; @@ -8,14 +10,28 @@ export interface BaselineSignal { } const CLUB_TIRED_WINDOW_MINUTES = 30; +// T32:睡眠債活躍時「累」傾向的基礎強度/達升級門檻時再加重一截。 +const SLEEP_DEBT_TIRED_INTENSITY = 0.4; +const SLEEP_DEBT_TIRED_INTENSITY_ESCALATED = 0.7; -// I-5 作息驅動情緒基線:社團剛結束的疲憊、假日心情基線偏高等日內波動。 +// I-5 作息驅動情緒基線:社團剛結束的疲憊、假日心情基線偏高等日內波動;T32 加上熬夜累積的睡眠債 +// 加重「累」傾向(優先於社團疲憊,因為睡眠債代表的是更根本、跨天累積的疲勞)。 // 只在本輪對話「沒有明確情緒訊號」時介入,不覆蓋使用者輸入本身觸發的情緒。 @Injectable() export class ScheduleEmotionBaselineService { - constructor(private readonly schedule: ScheduleService) {} + constructor( + private readonly prisma: PrismaService, + private readonly schedule: ScheduleService, + private readonly sleepDebt: SleepDebtService, + ) {} async computeBaseline(characterId: string, now: Date = new Date()): Promise { + const debtMinutes = await this.sleepDebt.getDebtMinutes(characterId); + if (debtMinutes >= SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES) { + const intensity = debtMinutes >= SLEEP_DEBT_ESCALATION_THRESHOLD_MINUTES ? SLEEP_DEBT_TIRED_INTENSITY_ESCALATED : SLEEP_DEBT_TIRED_INTENSITY; + return { tag: "SAD", intensity }; // 累(熬夜債務) + } + const justEnded = await this.schedule.slotJustEnded(characterId, now, CLUB_TIRED_WINDOW_MINUTES); if (justEnded?.label?.includes("社團")) { return { tag: "SAD", intensity: 0.3 }; // 累 @@ -26,6 +42,30 @@ export class ScheduleEmotionBaselineService { return { tag: "JOY", intensity: 0.3 }; // 放假日心情基線偏高 } - return null; + // T17:以上都沒有更急迫的作息訊號時,才落到章節匯入累積出的長期情緒基調(同一層合成, + // 不是另外疊加或覆蓋——只在作息本身沒有明確意見時才參考「這個角色的故事整體是什麼調性」)。 + return this.canonBaseline(characterId); + } + + private async canonBaseline(characterId: string): Promise { + const rows = await this.prisma.client.characterEmotionBaseline.findMany({ where: { characterId } }); + if (rows.length === 0) return null; + + const sums = new Map(); + for (const row of rows) { + const entry = sums.get(row.emotionTag) ?? { total: 0, count: 0 }; + entry.total += row.intensity; + entry.count += 1; + sums.set(row.emotionTag, entry); + } + + let best: { tag: EmotionTag; avgIntensity: number } | null = null; + for (const [tag, { total, count }] of sums) { + const avgIntensity = total / count; + if (!best || avgIntensity > best.avgIntensity) { + best = { tag, avgIntensity }; + } + } + return best ? { tag: best.tag, intensity: Math.min(1, best.avgIntensity) } : null; } } diff --git a/apps/api/src/schedule/schedule.module.ts b/apps/api/src/schedule/schedule.module.ts index 77e0154..61fcf91 100644 --- a/apps/api/src/schedule/schedule.module.ts +++ b/apps/api/src/schedule/schedule.module.ts @@ -5,12 +5,13 @@ import { ScheduleService } from "./schedule.service.js"; import { ScheduleExceptionService } from "./schedule-exception.service.js"; import { ScheduleEmotionBaselineService } from "./schedule-emotion-baseline.service.js"; import { OfflineEventService } from "./offline-event.service.js"; +import { SleepDebtService } from "./sleep-debt.service.js"; import { ScheduleController } from "./schedule.controller.js"; @Module({ imports: [PrismaModule, RelationshipModule], controllers: [ScheduleController], - providers: [ScheduleService, ScheduleExceptionService, ScheduleEmotionBaselineService, OfflineEventService], - exports: [ScheduleService, ScheduleExceptionService, ScheduleEmotionBaselineService, OfflineEventService], + providers: [ScheduleService, ScheduleExceptionService, ScheduleEmotionBaselineService, OfflineEventService, SleepDebtService], + exports: [ScheduleService, ScheduleExceptionService, ScheduleEmotionBaselineService, OfflineEventService, SleepDebtService], }) export class ScheduleModule {} diff --git a/apps/api/src/schedule/sleep-debt.service.test.ts b/apps/api/src/schedule/sleep-debt.service.test.ts new file mode 100644 index 0000000..cbae093 --- /dev/null +++ b/apps/api/src/schedule/sleep-debt.service.test.ts @@ -0,0 +1,95 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ScheduleService } from "./schedule.service.js"; +import { SleepDebtService, SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES } from "./sleep-debt.service.js"; + +// T32 驗收:熬夜(睡眠時段內仍在房間活動)累積睡眠債;補眠(睡眠時段內完全沒有活動)後歸零。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const scheduleService = new ScheduleService(prisma); +const sleepDebt = new SleepDebtService(prisma, scheduleService); + +const CHARACTER_ID = "test-sleep-debt-char"; +const ROOM_USER_ID = "test-sleep-debt-user"; + +afterEach(async () => { + await prisma.client.roomTurn.deleteMany({ where: { speakerCharacterId: CHARACTER_ID } }); + await prisma.client.room.deleteMany({ where: { userId: ROOM_USER_ID } }); + await prisma.client.sleepDebt.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.scheduleSlot.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHARACTER_ID } }); + await prisma.client.user.deleteMany({ where: { id: ROOM_USER_ID } }); +}); + +async function createCharacter() { + await prisma.client.character.create({ + data: { + id: CHARACTER_ID, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); +} + +describe("SleepDebtService(T32)", () => { + it("睡眠時段內有真實活動(熬夜):累積該時段時長為債務", async () => { + await createCharacter(); + await prisma.client.user.create({ data: { id: ROOM_USER_ID, name: "測試使用者" } }); + // 週三(WEEKDAY)00:00~06:30 睡眠(390 分鐘)。 + await prisma.client.scheduleSlot.create({ + data: { characterId: CHARACTER_ID, dayType: "WEEKDAY", startMinute: 0, endMinute: 390, status: "SLEEP" }, + }); + const room = await prisma.client.room.create({ data: { userId: ROOM_USER_ID, mode: "SOLO", status: "ACTIVE" } }); + // 凌晨 02:00(睡眠時段內)留下真實對話——熬夜了。 + await prisma.client.roomTurn.create({ + data: { roomId: room.id, seq: 0, speakerCharacterId: CHARACTER_ID, content: "還沒睡", createdAt: new Date("2026-08-18T18:00:00.000Z") }, + }); + + // 07:00(睡眠時段已結束)觸發結算。 + await sleepDebt.reconcileToday(CHARACTER_ID, new Date("2026-08-18T23:00:00.000Z")); + + const debt = await sleepDebt.getDebtMinutes(CHARACTER_ID); + expect(debt).toBe(390); + expect(debt).toBeGreaterThanOrEqual(SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES); + }); + + it("睡眠時段內完全沒有活動(補眠):既有債務歸零", async () => { + await createCharacter(); + await prisma.client.scheduleSlot.create({ + data: { characterId: CHARACTER_ID, dayType: "WEEKDAY", startMinute: 0, endMinute: 390, status: "SLEEP" }, + }); + await prisma.client.sleepDebt.create({ data: { characterId: CHARACTER_ID, accumulatedMinutes: 300 } }); + + await sleepDebt.reconcileToday(CHARACTER_ID, new Date("2026-08-18T23:00:00.000Z")); + + expect(await sleepDebt.getDebtMinutes(CHARACTER_ID)).toBe(0); + }); + + it("同一天重複呼叫只結算一次,不會重複累加", async () => { + await createCharacter(); + await prisma.client.user.create({ data: { id: ROOM_USER_ID, name: "測試使用者" } }); + await prisma.client.scheduleSlot.create({ + data: { characterId: CHARACTER_ID, dayType: "WEEKDAY", startMinute: 0, endMinute: 390, status: "SLEEP" }, + }); + const room = await prisma.client.room.create({ data: { userId: ROOM_USER_ID, mode: "SOLO", status: "ACTIVE" } }); + await prisma.client.roomTurn.create({ + data: { roomId: room.id, seq: 0, speakerCharacterId: CHARACTER_ID, content: "還沒睡", createdAt: new Date("2026-08-18T18:00:00.000Z") }, + }); + + await sleepDebt.reconcileToday(CHARACTER_ID, new Date("2026-08-18T23:00:00.000Z")); + await sleepDebt.reconcileToday(CHARACTER_ID, new Date("2026-08-18T23:30:00.000Z")); + + expect(await sleepDebt.getDebtMinutes(CHARACTER_ID)).toBe(390); + }); +}); diff --git a/apps/api/src/schedule/sleep-debt.service.ts b/apps/api/src/schedule/sleep-debt.service.ts new file mode 100644 index 0000000..e42b050 --- /dev/null +++ b/apps/api/src/schedule/sleep-debt.service.ts @@ -0,0 +1,62 @@ +import { Injectable } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; +import { ScheduleService } from "./schedule.service.js"; +import { startOfTaipeiDay, isSameTaipeiDate } from "./time-utils.js"; + +// T32:睡眠債達此門檻,情緒基線/ACTION 權重開始受影響(打瞌睡)。 +export const SLEEP_DEBT_ACTIVE_THRESHOLD_MINUTES = 60; +// T32:睡眠債達此門檻,LEAVE 動因升級為「撐不住想睡」等級(明說撐不住、優先於一般行程理由)。 +export const SLEEP_DEBT_ESCALATION_THRESHOLD_MINUTES = 180; + +@Injectable() +export class SleepDebtService { + constructor( + private readonly prisma: PrismaService, + private readonly schedule: ScheduleService, + ) {} + + async getDebtMinutes(characterId: string): Promise { + const row = await this.prisma.client.sleepDebt.findUnique({ where: { characterId } }); + return row?.accumulatedMinutes ?? 0; + } + + // 對比今天已經結束的 SLEEP 時段:期間若有真實 RoomTurn(沒有真的睡)就把該時段時長計入債務; + // 完全沒有活動(真的補眠了)就把債務歸零。每個台北當地日期只處理一次,避免重複計入。 + async reconcileToday(characterId: string, now: Date = new Date()): Promise { + const existing = await this.prisma.client.sleepDebt.findUnique({ where: { characterId } }); + if (existing?.lastReconciledDate && isSameTaipeiDate(existing.lastReconciledDate, now)) { + return; + } + + const pastSlots = await this.schedule.getPastSlotsToday(characterId, now); + const sleepSlots = pastSlots.filter((slot) => slot.status === "SLEEP"); + if (sleepSlots.length === 0) { + return; // 今天還沒有任何 SLEEP 時段結束,先不處理,避免拿到今天日期卡住之後同一天的重算。 + } + + const todayStart = startOfTaipeiDay(now); + let addedMinutes = 0; + let fullySlept = false; + for (const slot of sleepSlots) { + const slotStart = new Date(todayStart.getTime() + slot.startMinute * 60_000); + const slotEnd = new Date(todayStart.getTime() + slot.endMinute * 60_000); + const activeDuringSleep = await this.prisma.client.roomTurn.count({ + where: { speakerCharacterId: characterId, createdAt: { gte: slotStart, lt: slotEnd } }, + }); + if (activeDuringSleep > 0) { + addedMinutes += slot.endMinute - slot.startMinute; + } else { + fullySlept = true; + } + } + + const baseline = existing?.accumulatedMinutes ?? 0; + const nextMinutes = fullySlept ? 0 : baseline + addedMinutes; + + await this.prisma.client.sleepDebt.upsert({ + where: { characterId }, + update: { accumulatedMinutes: nextMinutes, lastReconciledDate: now }, + create: { characterId, accumulatedMinutes: nextMinutes, lastReconciledDate: now }, + }); + } +} diff --git a/apps/api/src/schedule/timeflow-realtime-boundary.test.ts b/apps/api/src/schedule/timeflow-realtime-boundary.test.ts new file mode 100644 index 0000000..82c10e3 --- /dev/null +++ b/apps/api/src/schedule/timeflow-realtime-boundary.test.ts @@ -0,0 +1,95 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { ScheduleService } from "./schedule.service.js"; +import { SleepDebtService } from "./sleep-debt.service.js"; + +// T34 驗收:`FAST` 作品的角色行程與睡眠時間必須與現實一致,只有後日談推演進度較快(見 +// `epilogue/epilogue-progress.service.test.ts`)。這裡鎖定行程判定與睡眠債結算兩個既有機制—— +// 兩者從不讀取 `Work.timeFlowMode`,同一段真實時間下 `FAST` 與 `REALTIME` 作品的角色算出來的結果 +// 必須完全一致,即使其中一個作品的推演進度已經跑得比另一個快很多。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const scheduleService = new ScheduleService(prisma); +const sleepDebt = new SleepDebtService(prisma, scheduleService); + +const WORK_FAST = "test-t34-realtime-work-fast"; +const WORK_REALTIME = "test-t34-realtime-work-realtime"; +const CHAR_FAST = "test-t34-realtime-char-fast"; +const CHAR_REALTIME = "test-t34-realtime-char-realtime"; +const ROOM_USER_ID = "test-t34-realtime-user"; + +afterEach(async () => { + await prisma.client.roomTurn.deleteMany({ where: { speakerCharacterId: { in: [CHAR_FAST, CHAR_REALTIME] } } }); + await prisma.client.room.deleteMany({ where: { userId: ROOM_USER_ID } }); + await prisma.client.sleepDebt.deleteMany({ where: { characterId: { in: [CHAR_FAST, CHAR_REALTIME] } } }); + await prisma.client.scheduleSlot.deleteMany({ where: { characterId: { in: [CHAR_FAST, CHAR_REALTIME] } } }); + await prisma.client.character.deleteMany({ where: { id: { in: [CHAR_FAST, CHAR_REALTIME] } } }); + await prisma.client.work.deleteMany({ where: { id: { in: [WORK_FAST, WORK_REALTIME] } } }); + await prisma.client.user.deleteMany({ where: { id: ROOM_USER_ID } }); +}); + +async function createCharacterInWork(characterId: string, workId: string, timeFlowMode: string) { + await prisma.client.work.create({ data: { id: workId, title: "T34 真實時間邊界測試作品", inEpilogue: true, timeFlowMode } }); + await prisma.client.character.create({ + data: { + id: characterId, + workId, + source: "EXISTING_WORK", + buildStatus: "CANDIDATE", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + aliases: { create: { formalName: characterId } }, + }, + }); + // 週三(WEEKDAY)00:00~06:30 睡眠(390 分鐘),兩個角色的行程設定完全相同。 + await prisma.client.scheduleSlot.create({ + data: { characterId, dayType: "WEEKDAY", startMinute: 0, endMinute: 390, status: "SLEEP" }, + }); +} + +describe("timeFlowMode 不影響真實時間流程(T34)", () => { + it("FAST 與 REALTIME 作品的角色,同一段真實時間內的睡眠債結算結果完全一致", async () => { + await prisma.client.user.create({ data: { id: ROOM_USER_ID, name: "測試使用者" } }); + await createCharacterInWork(CHAR_FAST, WORK_FAST, "FAST"); + await createCharacterInWork(CHAR_REALTIME, WORK_REALTIME, "REALTIME"); + + const room = await prisma.client.room.create({ data: { userId: ROOM_USER_ID, mode: "SOLO", status: "ACTIVE" } }); + // 凌晨 02:00(睡眠時段內,兩個角色都一樣)留下真實對話——熬夜了。 + for (const [seq, characterId] of [CHAR_FAST, CHAR_REALTIME].entries()) { + await prisma.client.roomTurn.create({ + data: { roomId: room.id, seq, speakerCharacterId: characterId, content: "還沒睡", createdAt: new Date("2026-08-18T18:00:00.000Z") }, + }); + } + + // 07:00(睡眠時段已結束)觸發結算,兩個角色用同一個 now。 + const now = new Date("2026-08-18T23:00:00.000Z"); + await sleepDebt.reconcileToday(CHAR_FAST, now); + await sleepDebt.reconcileToday(CHAR_REALTIME, now); + + const fastDebt = await sleepDebt.getDebtMinutes(CHAR_FAST); + const realtimeDebt = await sleepDebt.getDebtMinutes(CHAR_REALTIME); + expect(fastDebt).toBe(390); + expect(fastDebt).toBe(realtimeDebt); // FAST 沒有把睡眠時段本身壓縮或拉長 + }); + + it("FAST 與 REALTIME 作品的角色,同一個真實時刻的行程判定(BUSY/FREE/SLEEP)完全一致", async () => { + await createCharacterInWork(CHAR_FAST, WORK_FAST, "FAST"); + await createCharacterInWork(CHAR_REALTIME, WORK_REALTIME, "REALTIME"); + + // 凌晨 02:00(台北)落在 SLEEP 時段內,兩個角色的判定結果應完全一致。 + const now = new Date("2026-08-18T18:00:00.000Z"); + const fastInfo = await scheduleService.getInfo(CHAR_FAST, now); + const realtimeInfo = await scheduleService.getInfo(CHAR_REALTIME, now); + expect(fastInfo.slot?.status).toBe("SLEEP"); + expect(fastInfo.slot?.status).toBe(realtimeInfo.slot?.status); + }); +}); diff --git a/apps/api/src/tachie/expression-group-context.test.ts b/apps/api/src/tachie/expression-group-context.test.ts new file mode 100644 index 0000000..0951910 --- /dev/null +++ b/apps/api/src/tachie/expression-group-context.test.ts @@ -0,0 +1,62 @@ +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { EventEmitter2 } from "@nestjs/event-emitter"; +import { afterEach, describe, expect, it } from "vitest"; +import { createPrismaClient } from "@kokorone/db"; +import type { PrismaService } from "../prisma/prisma.service.js"; +import { EmotionService } from "../emotion/emotion.service.js"; +import { RuleBasedEmotionTagger } from "../emotion/emotion-tagger.js"; +import { RelationshipService } from "../relationship/relationship.service.js"; +import { PersonalityDriftService } from "../epilogue/personality-drift.service.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; +import { ExpressionResolverService } from "./expression-resolver.service.js"; + +// T42 驗收:同一角色在 1:1 會出現的高親密度外觀(BONDED 解鎖的服裝),在多人房下不出現。 +const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url)); +process.env.DATABASE_URL = `file:${join(repoRoot, "prisma", "dev.db")}`; + +const prisma = { client: createPrismaClient() } as PrismaService; +const emotionService = new EmotionService(prisma, new RuleBasedEmotionTagger()); +const relationshipService = new RelationshipService(prisma, new EventEmitter2()); +const personalityDrift = new PersonalityDriftService(prisma); +const personalityResolution = new PersonalityResolutionService(prisma, personalityDrift); +const expressionResolver = new ExpressionResolverService(emotionService, relationshipService, personalityResolution); + +const CHARACTER_ID = "test-t42-character"; +const USER_ID = "test-t42-user"; + +afterEach(async () => { + await prisma.client.relationship.deleteMany({ where: { characterId: CHARACTER_ID, userId: USER_ID } }); + await prisma.client.emotionState.deleteMany({ where: { characterId: CHARACTER_ID } }); + await prisma.client.character.deleteMany({ where: { id: CHARACTER_ID } }); + await prisma.client.user.deleteMany({ where: { id: USER_ID } }); +}); + +describe("ExpressionResolverService 房型外觀界線(T42)", () => { + it("BONDED 關係在 SOLO(非 group)解析出高親密度服裝,但在 GROUP/LOBBY 下降級為基本服裝", async () => { + await prisma.client.user.create({ data: { id: USER_ID, name: "測試使用者" } }); + await prisma.client.character.create({ + data: { + id: CHARACTER_ID, + source: "ORIGINAL", + buildStatus: "BUILT", + basicInfo: "測試", + backgroundStory: "測試", + personalityArchetype: "元氣", + likesDislikes: "測試", + goalsObsessions: "測試", + speechStyle: "測試", + }, + }); + await prisma.client.relationship.create({ + data: { characterId: CHARACTER_ID, userId: USER_ID, intimacy: 90, trust: 90, stage: "BONDED" }, + }); + + const soloResult = await expressionResolver.resolveExpression(CHARACTER_ID, USER_ID, { isGroupContext: false }); + expect(soloResult.availableCostumes).toContain("居家服"); + + const groupResult = await expressionResolver.resolveExpression(CHARACTER_ID, USER_ID, { isGroupContext: true }); + expect(groupResult.availableCostumes).toEqual(["制服"]); + expect(groupResult.availableCostumes).not.toContain("居家服"); + }, 20000); +}); diff --git a/apps/api/src/tachie/expression-resolver.service.ts b/apps/api/src/tachie/expression-resolver.service.ts index 46738ea..9ae7f71 100644 --- a/apps/api/src/tachie/expression-resolver.service.ts +++ b/apps/api/src/tachie/expression-resolver.service.ts @@ -1,9 +1,8 @@ import { Injectable } from "@nestjs/common"; import type { EmotionTag, EmotionState } from "@kokorone/shared"; -import { PrismaService } from "../prisma/prisma.service.js"; import { EmotionService, dominantState } from "../emotion/emotion.service.js"; import { RelationshipService } from "../relationship/relationship.service.js"; -import { getArchetypeParams } from "../personality/archetype-params.js"; +import { PersonalityResolutionService } from "../personality/personality-resolution.service.js"; import { EMOTION_EXPRESSION_TABLE, BASIC_TIER_EMOTIONS, @@ -20,6 +19,7 @@ export interface ResolveExpressionOptions { now?: Date; isThinking?: boolean; // O-2 視線:思考時視線飄上 isDeflecting?: boolean; // O-2 視線:說謊/迴避時視線撇開(跟 SHY 的視線飄開共用同一個方向) + isGroupContext?: boolean; // T42:房間目前是 GROUP/LOBBY 時,一律不套用親密度解鎖的服裝與狀態差分 } export interface ExpressionState { @@ -65,9 +65,9 @@ function resolveGaze(emotionTag: EmotionTag, options: ResolveExpressionOptions): @Injectable() export class ExpressionResolverService { constructor( - private readonly prisma: PrismaService, private readonly emotion: EmotionService, private readonly relationship: RelationshipService, + private readonly personalityResolution: PersonalityResolutionService, ) {} async resolveExpression( @@ -76,15 +76,18 @@ export class ExpressionResolverService { options: ResolveExpressionOptions = {}, ): Promise { const now = options.now ?? new Date(); - const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); - const archetypeParams = getArchetypeParams(character.personalityArchetype); + // T16:inEpilogue 角色改用漂移後的 expressiveness(僅影響立繪外顯度 magnitude),非日後談角色 + // 維持原始設定;每次都各自查該角色自己的 Work,混房時不會互相污染。 + const archetypeParams = await this.personalityResolution.resolve(characterId); const emotionState = await this.emotion.getState(characterId, now); const rawEmotionTag = dominantState(emotionState); const intensityNormalized = clamp01((emotionState[fieldFor(rawEmotionTag)] as number) / 100); const { relationship } = await this.relationship.getState(characterId, userId, now); - const stage = relationship.stage; + // T42:GROUP/LOBBY 房內一律視同「陌生~認識」層級解析,忽略實際親密度階段——高親密度限定的 + // 服裝與狀態差分(哭臉等)只在 1:1(SOLO)才會出現。 + const stage = options.isGroupContext ? "STRANGER" : relationship.stage; const allowedEmotions = stage === "BONDED" || stage === "CLOSE_AMBIGUOUS" diff --git a/apps/api/src/tachie/tachie.controller.ts b/apps/api/src/tachie/tachie.controller.ts index 09de9f7..1b9cf73 100644 --- a/apps/api/src/tachie/tachie.controller.ts +++ b/apps/api/src/tachie/tachie.controller.ts @@ -1,10 +1,12 @@ import { Controller, Get, Param, Query } from "@nestjs/common"; +import { PrismaService } from "../prisma/prisma.service.js"; import { ManifestService } from "./manifest.service.js"; import { ExpressionResolverService } from "./expression-resolver.service.js"; @Controller("tachie") export class TachieController { constructor( + private readonly prisma: PrismaService, private readonly manifest: ManifestService, private readonly expression: ExpressionResolverService, ) {} @@ -14,6 +16,8 @@ export class TachieController { return this.manifest.getManifest(characterId); } + // T42:帶 roomId 時依該房目前的 mode 決定是否套用親密度解鎖的服裝/狀態差分 + // (GROUP/LOBBY 一律不套用,僅 SOLO 才會依親密度階段解鎖);未帶 roomId 時維持舊行為。 @Get(":characterId/:userId/expression") async getExpression( @Param("characterId") characterId: string, @@ -21,11 +25,19 @@ export class TachieController { @Query("now") now?: string, @Query("isThinking") isThinking?: string, @Query("isDeflecting") isDeflecting?: string, + @Query("roomId") roomId?: string, ) { + let isGroupContext = false; + if (roomId) { + const room = await this.prisma.client.room.findUnique({ where: { id: roomId } }); + isGroupContext = room?.mode === "GROUP" || room?.mode === "LOBBY" || room?.mode === "SELF_CHAT"; + } + return this.expression.resolveExpression(characterId, userId, { now: now ? new Date(now) : undefined, isThinking: isThinking === "true", isDeflecting: isDeflecting === "true", + isGroupContext, }); } } diff --git a/apps/api/src/tachie/tachie.module.ts b/apps/api/src/tachie/tachie.module.ts index 83b28ae..b71023b 100644 --- a/apps/api/src/tachie/tachie.module.ts +++ b/apps/api/src/tachie/tachie.module.ts @@ -2,12 +2,13 @@ import { Module } from "@nestjs/common"; import { PrismaModule } from "../prisma/prisma.module.js"; import { EmotionModule } from "../emotion/emotion.module.js"; import { RelationshipModule } from "../relationship/relationship.module.js"; +import { PersonalityModule } from "../personality/personality.module.js"; import { ManifestService } from "./manifest.service.js"; import { ExpressionResolverService } from "./expression-resolver.service.js"; import { TachieController } from "./tachie.controller.js"; @Module({ - imports: [PrismaModule, EmotionModule, RelationshipModule], + imports: [PrismaModule, EmotionModule, RelationshipModule, PersonalityModule], controllers: [TachieController], providers: [ManifestService, ExpressionResolverService], exports: [ManifestService, ExpressionResolverService], diff --git a/apps/api/src/task/task.service.ts b/apps/api/src/task/task.service.ts index 54a48ee..eb490be 100644 --- a/apps/api/src/task/task.service.ts +++ b/apps/api/src/task/task.service.ts @@ -43,7 +43,15 @@ export class TaskService { async create( characterId: string, userId: string, - input: { type: "ONE_TIME" | "RECURRING" | "CONDITIONAL" | "QUERY_ORGANIZE" | "TODO_TRACKING"; content: string; rawText: string; triggerAt?: Date; cronExpression?: string; condition?: string }, + input: { + type: "ONE_TIME" | "RECURRING" | "CONDITIONAL" | "QUERY_ORGANIZE" | "TODO_TRACKING"; + content: string; + rawText: string; + triggerAt?: Date; + cronExpression?: string; + condition?: string; + sourceRoomId?: string; // T7:房內自走委託的來源房間,供追溯到來源房間與該則發言 + }, now: Date = new Date(), ): Promise { const character = await this.prisma.client.character.findUniqueOrThrow({ where: { id: characterId } }); @@ -64,6 +72,7 @@ export class TaskService { triggerAt: input.triggerAt, cronExpression: input.cronExpression, condition: input.condition, + sourceRoomId: input.sourceRoomId, }, }); diff --git a/apps/api/vitest.config.ts b/apps/api/vitest.config.ts new file mode 100644 index 0000000..ad650fd --- /dev/null +++ b/apps/api/vitest.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "node", + include: ["src/**/*.test.ts"], + // 多個測試檔會用各自的 PrismaClient 連線共用同一個 dev.db(better-sqlite3 為同步單一寫入者), + // 平行跑測試檔會造成資料庫鎖死;改為檔案間序列執行,檔案內部仍可平行。 + fileParallelism: false, + // 部分測試需要多次循序 DB 往返;隨著開發用 dev.db 逐漸長大,單次操作耗時會增加,預設 5s 偶爾不夠。 + testTimeout: 20000, + }, +}); diff --git a/apps/mobile/app/(tabs)/_layout.tsx b/apps/mobile/app/(tabs)/_layout.tsx index bad4509..bc300bc 100644 --- a/apps/mobile/app/(tabs)/_layout.tsx +++ b/apps/mobile/app/(tabs)/_layout.tsx @@ -1,7 +1,11 @@ import { Tabs } from "expo-router"; +import { HeartbeatDot } from "../../components/HeartbeatDot"; +import { useUnread } from "../../lib/unread-context"; // Q-2 底部分頁籤:聊天/角色/日常/設定,同行動網頁版佈局+這一層分頁籤是 APP 相對於行動網頁的唯一差異。 export default function TabsLayout() { + const { hasUnread } = useUnread(); + return ( - + : undefined, + }} + /> diff --git a/apps/mobile/app/(tabs)/index.tsx b/apps/mobile/app/(tabs)/index.tsx index 3395e28..1a8a690 100644 --- a/apps/mobile/app/(tabs)/index.tsx +++ b/apps/mobile/app/(tabs)/index.tsx @@ -1,169 +1,30 @@ -import { useState } from "react"; -import { - KeyboardAvoidingView, - Platform, - Pressable, - ScrollView, - StyleSheet, - Text, - TextInput, - View, -} from "react-native"; -import type { EmotionTag } from "@kokorone/shared"; -import { sendChatMessage, fetchExpression, type TachieExpressionResponse } from "../../lib/api"; -import { EMOTION_LABELS } from "../../lib/emotion-labels"; -import { generateSessionId } from "../../lib/id"; +import { useCallback } from "react"; +import { ScrollView, StyleSheet } from "react-native"; +import { useFocusEffect } from "expo-router"; +import { LobbyPreview } from "../../components/LobbyPreview"; +import { useUnread } from "../../lib/unread-context"; -const CHARACTER_ID = "seed-character-genki"; -const USER_ID = "seed-user-primary"; -const EXPRESSION_LEAD_MS = 220; // O-2/Q-2:表情先變化、文字延後一小段時間出現,跟 apps/web 的作法一致。 +// T20-P2:聊天分頁改為大廳優先——取代舊版寫死單一角色的 1:1 聊天畫面(該畫面併入 T38 的 SOLO +// 房後,固定角色的假設已不成立:使用者現在透過大廳喊人,答應者可能是任何角色)。實際對話畫面 +// 移到 app/room/[roomId].tsx,由本畫面的房間清單/大廳呼叫導向。 +export default function LobbyScreen() { + const { markRead } = useUnread(); -interface Message { - role: "user" | "character"; - text: string; -} - -// Q-2 行動版佈局:立繪半身像置於上方 40% 為背景層,對話流覆蓋其上向下延伸—— -// 跟行動網頁版同一份設計原則,只是這裡用 View 的 flex 排版而非 CSS。立繪本體目前是佔位色塊 -// (O 群組的 PixiJS 渲染器是網頁 DOM/Canvas 實作,沒有移植到 React Native,見本群組實作記錄)。 -export default function ChatScreen() { - const [sessionId] = useState(() => generateSessionId()); - const [messages, setMessages] = useState([]); - const [input, setInput] = useState(""); - const [sending, setSending] = useState(false); - const [dominant, setDominant] = useState("CALM"); - const [intimacy, setIntimacy] = useState(0); - const [expression, setExpression] = useState(null); - const [error, setError] = useState(null); - - async function handleSend() { - const text = input.trim(); - if (!text || sending) { - return; - } - setSending(true); - setError(null); - setInput(""); - setMessages((prev) => [...prev, { role: "user", text }]); - - try { - const result = await sendChatMessage(CHARACTER_ID, USER_ID, sessionId, text); - if (result.availability === "NO_REPLY") { - return; - } - if (result.context) { - setDominant(result.context.emotion.dominant); - setIntimacy(result.context.relationship.intimacy); - } - try { - setExpression(await fetchExpression(CHARACTER_ID, USER_ID)); - } catch { - // 表情查詢失敗不影響對話本身。 - } - await new Promise((resolve) => setTimeout(resolve, EXPRESSION_LEAD_MS)); - setMessages((prev) => [...prev, { role: "character", text: result.text }]); - } catch { - setError("訊息傳送失敗,請確認 api 服務是否已啟動"); - } finally { - setSending(false); - } - } + // Q-4:使用者切回本分頁即視為已讀推播提示(各房未讀數則由 LobbyPreview 每次刷新時各自更新)。 + useFocusEffect( + useCallback(() => { + markRead(); + }, [markRead]), + ); return ( - - - 親密度 {intimacy} - - {EMOTION_LABELS[dominant]} - - - 立繪(表情差分即時變化) - - - - {messages.length === 0 && 傳個訊息,開始今天的對話吧。} - {messages.map((message, index) => ( - - {message.text} - - ))} - - - {error && {error}} - - - - - 送出 - - - + + + ); } const styles = StyleSheet.create({ flex: { flex: 1, backgroundColor: "#FFF5F7" }, - tachieArea: { - height: "40%", - backgroundColor: "#FCE4EC", - alignItems: "center", - justifyContent: "flex-end", - paddingBottom: 16, - }, - tachieLabel: { position: "absolute", top: 14, left: 14, fontSize: 11, color: "#8a6b6f" }, - emotionChip: { - position: "absolute", - top: 14, - right: 14, - backgroundColor: "#FFE0EA", - borderRadius: 999, - paddingHorizontal: 12, - paddingVertical: 4, - }, - emotionChipText: { color: "#FF7E9D", fontWeight: "bold", fontSize: 12 }, - tachiePlaceholder: { - width: 120, - height: 190, - borderTopLeftRadius: 60, - borderTopRightRadius: 60, - borderBottomLeftRadius: 24, - borderBottomRightRadius: 24, - backgroundColor: "#FF9EB5", - }, - tachieCaption: { fontSize: 11, color: "#8a6b6f", marginTop: 8 }, - messages: { flex: 1 }, - messagesContent: { padding: 16, gap: 8 }, - hint: { fontSize: 13, color: "#8a6b6f" }, - bubble: { maxWidth: "80%", borderRadius: 16, padding: 10 }, - bubbleUser: { alignSelf: "flex-end", backgroundColor: "#FF7E9D" }, - bubbleCharacter: { alignSelf: "flex-start", backgroundColor: "#EFEFEF" }, - bubbleText: { color: "#222" }, - error: { color: "#FF7E9D", fontSize: 12, paddingHorizontal: 16 }, - inputRow: { - flexDirection: "row", - alignItems: "center", - gap: 8, - margin: 12, - paddingHorizontal: 16, - paddingVertical: 8, - borderRadius: 999, - borderWidth: 1, - borderColor: "#E5D5D8", - }, - input: { flex: 1, fontSize: 14 }, - sendButton: { color: "#FF7E9D", fontWeight: "bold" }, - sendButtonDisabled: { opacity: 0.5 }, + content: { paddingBottom: 24 }, }); diff --git a/apps/mobile/app/(tabs)/settings.tsx b/apps/mobile/app/(tabs)/settings.tsx index aeb2c03..a5aed09 100644 --- a/apps/mobile/app/(tabs)/settings.tsx +++ b/apps/mobile/app/(tabs)/settings.tsx @@ -1,8 +1,9 @@ -import { useState } from "react"; -import { Pressable, ScrollView, StyleSheet, Text, View } from "react-native"; +import { useEffect, useState } from "react"; +import { Pressable, ScrollView, StyleSheet, Switch, Text, View } from "react-native"; import * as Device from "expo-device"; import * as Notifications from "expo-notifications"; import { fetchHealth, registerPushToken } from "../../lib/api"; +import { isVoiceAutoplayEnabled, setVoiceAutoplayEnabled } from "../../lib/voice-autoplay-settings"; const USER_ID = "seed-user-primary"; @@ -13,6 +14,17 @@ export default function SettingsScreen() { const [healthStatus, setHealthStatus] = useState(null); const [healthError, setHealthError] = useState(null); const [pushStatus, setPushStatus] = useState(null); + // T20-P3:與 apps/web 的 VoiceAutoplaySection.tsx 對應,關閉後房間畫面回到逐則點擊才播放。 + const [voiceAutoplay, setVoiceAutoplay] = useState(true); + + useEffect(() => { + void isVoiceAutoplayEnabled().then(setVoiceAutoplay); + }, []); + + async function handleToggleVoiceAutoplay(next: boolean) { + await setVoiceAutoplayEnabled(next); + setVoiceAutoplay(next); + } async function checkHealth() { setHealthError(null); @@ -64,6 +76,15 @@ export default function SettingsScreen() { {pushStatus && {pushStatus}} + + + 自走語音自動播放 + 開啟後,在房間畫面時角色的新發言會自動依序念出來;關閉則回到逐則點擊才播放。 + + void handleToggleVoiceAutoplay(next)} /> + 在房間時自動播放角色語音 + + ); } @@ -78,4 +99,5 @@ const styles = StyleSheet.create({ buttonText: { color: "#fff", fontWeight: "bold" }, line: { fontSize: 13, color: "#222" }, error: { color: "#FF7E9D", fontSize: 12 }, + switchRow: { flexDirection: "row", alignItems: "center", gap: 10 }, }); diff --git a/apps/mobile/app/_layout.tsx b/apps/mobile/app/_layout.tsx index 5d996a7..3af7e3c 100644 --- a/apps/mobile/app/_layout.tsx +++ b/apps/mobile/app/_layout.tsx @@ -1,12 +1,32 @@ +import { useEffect } from "react"; import { Stack } from "expo-router"; +import * as Notifications from "expo-notifications"; import { SafeAreaProvider } from "react-native-safe-area-context"; +import { UnreadProvider, useUnread } from "../lib/unread-context"; // Q-1/Q-2 根佈局:只有一層 Stack 包住底部分頁籤群組,佈局策略跟 apps/web 的 RWD 行動版共用同一份設計原則 // (立繪置頂 40% + 對話流覆蓋其上),只是 React Native 沒有 CSS,改用 View 的 flex 排版達成同樣效果。 +function NotificationBadgeBridge() { + const { markUnread } = useUnread(); + + // Q-4:收到推播(含 App 前景中收到)就點亮聊天分頁的心跳紅點,直到使用者切回聊天分頁才清除。 + useEffect(() => { + const subscription = Notifications.addNotificationReceivedListener(() => { + markUnread(); + }); + return () => subscription.remove(); + }, [markUnread]); + + return null; +} + export default function RootLayout() { return ( - + + + + ); } diff --git a/apps/mobile/app/canon-import.tsx b/apps/mobile/app/canon-import.tsx new file mode 100644 index 0000000..b2ba7d8 --- /dev/null +++ b/apps/mobile/app/canon-import.tsx @@ -0,0 +1,279 @@ +import { useEffect, useState } from "react"; +import { Pressable, ScrollView, StyleSheet, Text, TextInput, View } from "react-native"; +import { useLocalSearchParams, useRouter } from "expo-router"; +import { + importCanonScene, + listCanonWorks, + listCharacters, + type CanonWork, + type CharacterSummary, + type ImportSceneLineInput, + type ImportedSceneResult, + type SceneLineType, +} from "../lib/api"; + +const LINE_TYPE_LABELS: Record = { + DIALOGUE: "台詞", + ACTION: "動作描寫", + MONOLOGUE: "內心獨白", + NARRATION: "敘述", +}; +const LINE_TYPES = Object.keys(LINE_TYPE_LABELS) as SceneLineType[]; + +function emptyLine(): ImportSceneLineInput { + return { lineType: "NARRATION", rawText: "" }; +} + +// T20-P4 匯入章節:與 apps/web 的 app/canon-import 對應同一份契約與流程,改用 RN 元件(chip 取代 +// )。列出隔離區台詞與待人工確認的矛盾,提供逐句裁決/歸屬更正/指紋精煉後重試。 +export default function CanonReviewScreen() { + const router = useRouter(); + const [works, setWorks] = useState([]); + const [workId, setWorkId] = useState(""); + const [characters, setCharacters] = useState([]); + const [quarantined, setQuarantined] = useState([]); + const [confirmed, setConfirmed] = useState([]); + const [contradictions, setContradictions] = useState([]); + const [selection, setSelection] = useState>({}); + const [pending, setPending] = useState(false); + const [error, setError] = useState(null); + + useEffect(() => { + void listCanonWorks() + .then(setWorks) + .catch(() => setError("無法連線到 api 服務,作品清單暫時無法顯示")); + }, []); + + async function refreshWork(targetWorkId: string) { + if (!targetWorkId) return; + setError(null); + try { + const [allCharacters, scenes, contradictionList] = await Promise.all([ + listCharacters(), + listCanonScenes(targetWorkId), + listContradictions(targetWorkId), + ]); + setCharacters(allCharacters.filter((c) => c.workId === targetWorkId)); + setContradictions(contradictionList); + + const details = await Promise.all(scenes.map((scene) => getCanonScene(scene.id))); + const nextQuarantined: LineRow[] = []; + const nextConfirmed: LineRow[] = []; + for (const scene of details) { + for (const line of scene.lines) { + const row = { ...line, sceneId: scene.id }; + if (line.status === "QUARANTINED") { + nextQuarantined.push(row); + } else if (line.status === "CONFIRMED") { + nextConfirmed.push(row); + } + } + } + setQuarantined(nextQuarantined); + setConfirmed(nextConfirmed); + } catch { + setError("待裁決資料查詢失敗,請確認 api 服務是否已啟動"); + } + } + + useEffect(() => { + void refreshWork(workId); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [workId]); + + async function handleAdjudicate(lineId: string) { + const speakerCharacterId = selection[lineId]; + if (!speakerCharacterId || pending) return; + setPending(true); + setError(null); + try { + await adjudicateLine(lineId, speakerCharacterId); + await refreshWork(workId); + } catch { + setError("裁決失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleCorrect(lineId: string) { + const newSpeakerCharacterId = selection[lineId]; + if (!newSpeakerCharacterId || pending) return; + setPending(true); + setError(null); + try { + await correctLineAttribution(lineId, newSpeakerCharacterId); + await refreshWork(workId); + } catch { + setError("歸屬更正失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleReattempt(sceneId: string) { + if (pending) return; + setPending(true); + setError(null); + try { + await reattemptQuarantined(sceneId); + await refreshWork(workId); + } catch { + setError("重試失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + const sceneIdsWithQuarantine = Array.from(new Set(quarantined.map((line) => line.sceneId))); + + return ( + + + 待裁決 + router.back()}> + 回到大廳 + + + + + {works.map((w) => ( + setWorkId(w.id)} style={[styles.pickChip, workId === w.id ? styles.pickChipActive : null]}> + {w.title} + + ))} + + + {error && {error}} + + {workId && ( + <> + + + 隔離區台詞(QUARANTINED) + + {sceneIdsWithQuarantine.map((sceneId) => ( + void handleReattempt(sceneId)} style={styles.pickChip}> + 指紋精煉後重試此場景 + + ))} + {quarantined.length === 0 && 目前沒有隔離中的台詞。} + {quarantined.map((line) => ( + + {line.rawText} + + 信心分數:{(line.confidence * 100).toFixed(0)}%.證據來源: + {line.hasExplicitMarker ? `明示標記→${characterLabel(characters, line.markerCharacterId)}` : "推論(無明示標記)"} + + + {characters.map((character) => ( + setSelection({ ...selection, [line.id]: character.id })} + style={[styles.typeChip, selection[line.id] === character.id ? styles.pickChipActive : null]} + > + {character.aliases[0]?.formalName ?? character.id} + + ))} + + void handleAdjudicate(line.id)} + disabled={pending || !selection[line.id]} + style={styles.confirmButton} + > + 裁決 + + + ))} + + + + 已歸屬台詞(可更正) + {confirmed.length === 0 && 目前沒有已歸屬的台詞。} + {confirmed.map((line) => ( + + {line.rawText} + 目前歸屬:{characterLabel(characters, line.speakerCharacterId)} + + {characters.map((character) => ( + setSelection({ ...selection, [line.id]: character.id })} + style={[styles.typeChip, selection[line.id] === character.id ? styles.pickChipActive : null]} + > + {character.aliases[0]?.formalName ?? character.id} + + ))} + + void handleCorrect(line.id)} disabled={pending || !selection[line.id]} style={styles.pickChip}> + 更正 + + + ))} + + + + 待人工確認的矛盾(PENDING_HUMAN_REVIEW) + {contradictions.filter((c) => c.status === "PENDING_HUMAN_REVIEW").length === 0 && ( + 目前沒有待確認的矛盾。 + )} + {contradictions + .filter((c) => c.status === "PENDING_HUMAN_REVIEW") + .map((contradiction) => ( + + + {contradiction.eventLabel}.{contradiction.factKey} + + {contradiction.description} + + ))} + + + )} + + ); +} + +const styles = StyleSheet.create({ + flex: { flex: 1, backgroundColor: "#FFF5F7" }, + content: { padding: 16, gap: 12, paddingBottom: 40 }, + headerRow: { flexDirection: "row", alignItems: "center", justifyContent: "space-between" }, + title: { fontSize: 16, fontWeight: "bold", color: "#FF7E9D" }, + backLink: { fontSize: 12, color: "#8a6b6f" }, + chipRow: { flexDirection: "row", flexWrap: "wrap", gap: 6 }, + pickChip: { borderRadius: 999, borderWidth: 1, borderColor: "#E5D5D8", paddingHorizontal: 10, paddingVertical: 6 }, + pickChipActive: { backgroundColor: "#FFE1E9" }, + pickChipText: { fontSize: 12, color: "#222" }, + typeChip: { borderRadius: 999, borderWidth: 1, borderColor: "#E5D5D8", paddingHorizontal: 8, paddingVertical: 4 }, + error: { fontSize: 12, color: "#FF7E9D" }, + section: { gap: 6 }, + label: { fontSize: 12, fontWeight: "bold", color: "#8a6b6f" }, + hint: { fontSize: 11, color: "#8a6b6f" }, + lineCard: { borderRadius: 12, borderWidth: 1, borderColor: "#E5D5D8", padding: 8, gap: 6 }, + lineText: { fontSize: 12, color: "#222" }, + confirmButton: { borderRadius: 999, backgroundColor: "#FF7E9D", paddingHorizontal: 12, paddingVertical: 6, alignSelf: "flex-start" }, + confirmButtonText: { fontSize: 12, fontWeight: "bold", color: "#fff" }, +}); diff --git a/apps/mobile/app/room/[roomId].tsx b/apps/mobile/app/room/[roomId].tsx new file mode 100644 index 0000000..2cd7b01 --- /dev/null +++ b/apps/mobile/app/room/[roomId].tsx @@ -0,0 +1,422 @@ +import { useEffect, useRef, useState } from "react"; +import { FlatList, KeyboardAvoidingView, Platform, Pressable, StyleSheet, Text, TextInput, View } from "react-native"; +import { useLocalSearchParams } from "expo-router"; +import type { Character } from "@kokorone/shared"; +import { + API_BASE_URL, + ROOM_USER_SPEAKER_ID, + endRoom, + fetchExpression, + getPossessionStatus, + getRoom, + getRoomUsage, + reportRoomRead, + sendRoomMessage, + setRoomMuted, + speakAsPossessed, + subscribeRoomStream, + synthesizeVoice, + type PossessionStatus, + type RoomDetail, + type RoomTurnKind, + type RoomUsageSummary, + type TachieExpressionResponse, +} from "../../lib/api"; +import { RoomStage, type StageParticipant } from "../../components/RoomStage"; +import { isVoiceAutoplayEnabled } from "../../lib/voice-autoplay-settings"; + +const USER_ID = "seed-user-primary"; +const USER_LABEL = "你"; + +// T20-P3:與 apps/web 的 RoomChatView.tsx 對應——佇列積壓過長時只留最近幾則待播。 +const VOICE_QUEUE_MAX_BACKLOG = 3; + +interface VoiceQueueItem { + characterId: string; + text: string; +} + +// T20-P3:與 apps/web 一致,ACTION 沿用既有 ChatBubble 的敘述樣式(此處以斜體呈現),其餘三種標籤。 +const TURN_KIND_LABEL: Partial> = { + DELEGATE: "委託", + LEAVE: "離開", + SYSTEM: "系統", +}; + +type FeedItem = + | { kind: "turn"; seq: number; speakerId: string; speakerLabel: string; content: string; turnKind: RoomTurnKind } + | { kind: "member"; seq: number; characterId: string; action: "joined" | "left" } + | { kind: "closed"; seq: number; reason: string }; + +// T20-P2:通用房間畫面——取代 T20-P1 唯讀最小可用版,改為可發言、以 fetch streaming(見 +// lib/api.ts 的 subscribeRoomStream,非原生 EventSource)即時收新訊息、並依 unread(T11)畫出 +// 第一則未讀分隔線,與 apps/web 的 app/room/[roomId] 對應同一版面與行為。 +export default function RoomScreen() { + const { roomId } = useLocalSearchParams<{ roomId: string }>(); + const [room, setRoom] = useState(null); + const [characters, setCharacters] = useState([]); + const [feed, setFeed] = useState([]); + const [firstUnreadSeq, setFirstUnreadSeq] = useState(null); + const [ended, setEnded] = useState(false); + const [text, setText] = useState(""); + const [pending, setPending] = useState(false); + const [error, setError] = useState(null); + const listRef = useRef>(null); + // T20-P5:套用中時,這個房間的輸入區要換成「以套用角色的身分發話」,不提供以自己身分發話的選項。 + const [possession, setPossession] = useState(null); + + useEffect(() => { + void getPossessionStatus(USER_ID).then(setPossession).catch(() => undefined); + }, [roomId]); + + // T20-P3:立繪舞台(目前發話者高亮)與用量顯示。 + const [expressions, setExpressions] = useState>({}); + const [speakingCharacterId, setSpeakingCharacterId] = useState(null); + const [usage, setUsage] = useState(null); + + // T20-P3:自走語音自動播放——與 apps/web 對應,但行動端無瀏覽器自動播放政策,不需要解鎖手勢; + // 佇列、播放中旗標一律用 ref,避免串流事件回呼讀到註冊當下就固定住的舊值(stale closure)。 + const [autoplayEnabled, setAutoplayEnabled] = useState(true); + const autoplayEnabledRef = useRef(true); + const mutedRef = useRef(false); + const voiceQueueRef = useRef([]); + const voicePlayingRef = useRef(false); + const voiceTimerRef = useRef | null>(null); + const unmountedRef = useRef(false); + + useEffect(() => { + void isVoiceAutoplayEnabled().then((value) => { + autoplayEnabledRef.current = value; + setAutoplayEnabled(value); + }); + return () => { + unmountedRef.current = true; + if (voiceTimerRef.current) clearTimeout(voiceTimerRef.current); + voiceQueueRef.current = []; + }; + }, []); + + function refreshExpression(characterId: string) { + fetchExpression(characterId, USER_ID) + .then((expression) => setExpressions((prev) => ({ ...prev, [characterId]: expression }))) + .catch(() => undefined); + } + + function enqueueVoice(item: VoiceQueueItem) { + if (!autoplayEnabledRef.current || mutedRef.current) return; + voiceQueueRef.current.push(item); + if (voiceQueueRef.current.length > VOICE_QUEUE_MAX_BACKLOG) { + voiceQueueRef.current.splice(0, voiceQueueRef.current.length - VOICE_QUEUE_MAX_BACKLOG); + } + void processVoiceQueue(); + } + + async function processVoiceQueue() { + if (voicePlayingRef.current || unmountedRef.current) return; + const next = voiceQueueRef.current.shift(); + if (!next) return; + voicePlayingRef.current = true; + try { + const result = await synthesizeVoice(next.characterId, USER_ID, next.text); + if (unmountedRef.current) return; + if (result.audioRef.startsWith("mock://")) { + await new Promise((resolve) => { + voiceTimerRef.current = setTimeout(resolve, Math.max(result.durationEstimateMs, 300)); + }); + } + // T20-P3 已知限制:尚未安裝原生音訊播放套件(expo-audio/expo-av),真實音檔(非 mock://) + // 目前僅靜默略過、不會真的播放——見本項 wiki 完成註記;接上真實 TTS Provider 前需另外補上。 + } catch { + // 合成失敗:安靜跳過這一則,不阻斷佇列後續播放。 + } finally { + voicePlayingRef.current = false; + if (!unmountedRef.current) void processVoiceQueue(); + } + } + + useEffect(() => { + fetch(`${API_BASE_URL}/characters`) + .then((res) => res.json() as Promise) + .then(setCharacters) + .catch(() => undefined); + }, []); + + function characterLabel(characterId: string): string { + return characters.find((c) => c.id === characterId)?.aliases?.[0]?.formalName ?? characterId; + } + + async function handleToggleMute() { + if (!room || pending) return; + const next = !room.muted; + try { + await setRoomMuted(room.id, next); + mutedRef.current = next; + setRoom((prev) => (prev ? { ...prev, muted: next } : prev)); + } catch { + setError("靜音設定失敗,請確認 api 服務是否已啟動"); + } + } + + useEffect(() => { + if (!roomId) return; + let cancelled = false; + let unsubscribe: (() => void) | null = null; + + async function init() { + try { + const detail = await getRoom(roomId); + if (cancelled) return; + setRoom(detail); + mutedRef.current = detail.muted; + setEnded(detail.status === "ENDED"); + setFirstUnreadSeq(detail.unread.firstUnreadSeq); + setUsage(detail.usage); + setFeed( + detail.turns.map((turn) => ({ + kind: "turn", + seq: turn.seq, + speakerId: turn.speakerId, + speakerLabel: turn.speakerLabel, + content: turn.content, + turnKind: turn.kind, + })), + ); + for (const characterId of detail.participants) refreshExpression(characterId); + const lastTurn = detail.turns.at(-1); + if (lastTurn && lastTurn.speakerId !== ROOM_USER_SPEAKER_ID) setSpeakingCharacterId(lastTurn.speakerId); + + const lastSeq = detail.turns.length > 0 ? detail.turns[detail.turns.length - 1].seq : -1; + unsubscribe = subscribeRoomStream(roomId, lastSeq, (event) => { + if (event.type === "turn") { + const { kind: turnKind, ...rest } = event.data; + setFeed((prev) => + prev.some((item) => item.kind === "turn" && item.seq === event.seq) + ? prev + : [...prev, { kind: "turn", seq: event.seq, turnKind, ...rest }], + ); + void reportRoomRead(roomId, USER_ID, event.seq).catch(() => undefined); + if (event.data.speakerId !== ROOM_USER_SPEAKER_ID) { + enqueueVoice({ characterId: event.data.speakerId, text: event.data.content }); + setSpeakingCharacterId(event.data.speakerId); + refreshExpression(event.data.speakerId); + void getRoomUsage(roomId).then(setUsage).catch(() => undefined); + } + } else if (event.type === "member") { + setFeed((prev) => [...prev, { kind: "member", seq: event.seq, ...event.data }]); + } else if (event.type === "closed") { + setFeed((prev) => [...prev, { kind: "closed", seq: event.seq, reason: event.data.reason }]); + setEnded(true); + } + }); + } catch { + if (!cancelled) setError("房間查詢失敗,請確認 api 服務是否已啟動"); + } + } + + void init(); + return () => { + cancelled = true; + unsubscribe?.(); + }; + }, [roomId]); + + // T20-P5:只有「套用中且她本人就在這個房間」才切換成以她的身分發話。 + const possessedElsewhere = Boolean(possession?.possessingCharacterId) && !room?.participants.includes(possession!.possessingCharacterId!); + const possessedCharacterId = + possession?.possessingCharacterId && room?.participants.includes(possession.possessingCharacterId) + ? possession.possessingCharacterId + : null; + + async function handleSend() { + const trimmed = text.trim(); + if (!trimmed || pending || ended || !roomId) return; + setPending(true); + setError(null); + try { + if (possessedCharacterId) { + await speakAsPossessed(roomId, USER_ID, trimmed); + } else { + await sendRoomMessage(roomId, USER_ID, USER_LABEL, trimmed); + } + setText(""); // 新訊息透過串流推送進 feed,這裡不自行 append + } catch (err) { + setError(err instanceof Error ? err.message : "發言失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleEnd() { + if (pending || ended || !roomId) return; + setPending(true); + setError(null); + try { + await endRoom(roomId); + setEnded(true); + } catch { + setError("結束房間失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + if (error && !room) { + return ( + + {error} + + ); + } + if (!room) { + return ( + + 載入中…… + + ); + } + + return ( + + + + {room.mode}.{ended ? "已結束" : "進行中"} + {usage && usage.generationCount > 0 ? `.${usage.totalPromptTokens + usage.totalCompletionTokens} tokens` : ""} + + + void handleToggleMute()} disabled={ended}> + {room.muted ? "🔇 已靜音" : "🔊 靜音"} + + + 結束房間 + + + + + ((characterId) => ({ + characterId, + label: characterLabel(characterId), + expression: expressions[characterId] ?? null, + }))} + speakingCharacterId={speakingCharacterId} + /> + + `${item.kind}-${item.seq}`} + onContentSizeChange={() => listRef.current?.scrollToEnd({ animated: true })} + ListEmptyComponent={還沒有人說話。} + renderItem={({ item }) => ( + + {firstUnreadSeq !== null && item.seq === firstUnreadSeq && ( + + + 未讀訊息 + + + )} + {item.kind === "turn" && ( + + {TURN_KIND_LABEL[item.turnKind] && {TURN_KIND_LABEL[item.turnKind]}} + + {item.speakerLabel} + {item.content} + + + )} + {item.kind === "member" && ( + + {characterLabel(item.characterId)} {item.action === "joined" ? "進來了" : "離開了"} + + )} + {item.kind === "closed" && 房間已關閉} + + )} + /> + + {error && {error}} + + {!ended && possessedCharacterId && ( + 你正以「{characterLabel(possessedCharacterId)}」的身分發話 + )} + + {!ended && possessedElsewhere && ( + 套用中的角色不在這個房間,無法在此發話——請到她所在的房間,或先退出套用。 + )} + + {!ended && !possessedElsewhere && ( + + + + 送出 + + + )} + + ); +} + +const styles = StyleSheet.create({ + container: { flex: 1, backgroundColor: "#FFF5F7" }, + headerRow: { + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + paddingHorizontal: 16, + paddingTop: 12, + }, + title: { fontSize: 14, fontWeight: "bold", color: "#FF7E9D", flexShrink: 1 }, + headerButtons: { flexDirection: "row", alignItems: "center", gap: 12 }, + endButton: { fontSize: 12, color: "#8a6b6f" }, + endButtonDisabled: { opacity: 0.5 }, + content: { flex: 1 }, + contentInner: { padding: 16, gap: 8 }, + feedItem: { gap: 6 }, + dividerRow: { flexDirection: "row", alignItems: "center", gap: 8 }, + dividerLine: { flex: 1, height: 1, backgroundColor: "#FF7E9D" }, + dividerText: { fontSize: 10, color: "#FF7E9D" }, + hint: { fontSize: 12, color: "#8a6b6f", padding: 16 }, + error: { fontSize: 12, color: "#FF7E9D", paddingHorizontal: 16 }, + possessionNotice: { fontSize: 11, fontWeight: "bold", color: "#FF7E9D", textAlign: "center", paddingVertical: 4 }, + bubble: { maxWidth: "80%", borderRadius: 16, padding: 10, gap: 2 }, + bubbleUser: { alignSelf: "flex-end", backgroundColor: "#FF7E9D" }, + bubbleCharacter: { alignSelf: "flex-start", backgroundColor: "#EFEFEF" }, + speakerLabel: { fontSize: 10, color: "#8a6b6f" }, + bubbleText: { color: "#222" }, + actionText: { fontStyle: "italic", color: "#9B8CFF" }, + turnKindBadge: { + alignSelf: "flex-start", + fontSize: 10, + color: "#FF7E9D", + backgroundColor: "#FFE3EA", + borderRadius: 999, + paddingHorizontal: 8, + paddingVertical: 1, + marginBottom: 2, + }, + systemNote: { alignSelf: "center", fontSize: 10, color: "#8a6b6f" }, + inputRow: { + flexDirection: "row", + alignItems: "center", + gap: 8, + margin: 12, + paddingHorizontal: 16, + paddingVertical: 8, + borderRadius: 999, + borderWidth: 1, + borderColor: "#E5D5D8", + }, + input: { flex: 1, fontSize: 14 }, + sendButton: { color: "#FF7E9D", fontWeight: "bold" }, + sendButtonDisabled: { opacity: 0.5 }, +}); diff --git a/apps/mobile/components/HeartbeatDot.tsx b/apps/mobile/components/HeartbeatDot.tsx new file mode 100644 index 0000000..9c5e6d4 --- /dev/null +++ b/apps/mobile/components/HeartbeatDot.tsx @@ -0,0 +1,42 @@ +import { useEffect, useRef } from "react"; +import { Animated, Easing, type StyleProp, type ViewStyle } from "react-native"; +import { useReduceMotion } from "../lib/reduce-motion"; + +export interface HeartbeatDotProps { + size?: number; + color?: string; + style?: StyleProp; +} + +// Q-4:未讀/推播提示紅點=小心跳,對應 apps/web 的 `.heartbeat-dot`(1.2s 循環的 opacity+scale 脈動)。 +export function HeartbeatDot({ size = 10, color = "#FF7E9D", style }: HeartbeatDotProps) { + const reduceMotion = useReduceMotion(); + const t = useRef(new Animated.Value(0)).current; + + useEffect(() => { + if (reduceMotion) { + t.setValue(0); + return; + } + const loop = Animated.loop( + Animated.sequence([ + Animated.timing(t, { toValue: 1, duration: 600, easing: Easing.inOut(Easing.ease), useNativeDriver: true }), + Animated.timing(t, { toValue: 0, duration: 600, easing: Easing.inOut(Easing.ease), useNativeDriver: true }), + ]), + ); + loop.start(); + return () => loop.stop(); + }, [reduceMotion, t]); + + const scale = t.interpolate({ inputRange: [0, 1], outputRange: [1, 1.3] }); + const opacity = t.interpolate({ inputRange: [0, 1], outputRange: [1, 0.7] }); + + return ( + + ); +} diff --git a/apps/mobile/components/HeartbeatWave.tsx b/apps/mobile/components/HeartbeatWave.tsx new file mode 100644 index 0000000..9e9142e --- /dev/null +++ b/apps/mobile/components/HeartbeatWave.tsx @@ -0,0 +1,78 @@ +import { useEffect, useMemo, useRef } from "react"; +import { Animated, Easing, type StyleProp, type ViewStyle } from "react-native"; +import Svg, { Polyline } from "react-native-svg"; +import { useReduceMotion } from "../lib/reduce-motion"; + +const WIDTH = 400; +const MID_Y = 50; +const DASH_LENGTH = 600; + +// 與 apps/web/components/HeartbeatWave.tsx 相同的波形算法,維持三端視覺一致; +// 親密度越高,波峰振幅越大。 +function buildPoints(amplitude: number): string { + const clamped = Math.max(0, Math.min(100, amplitude)); + const scale = 0.4 + (clamped / 100) * 1.1; + const up1 = MID_Y - 15 * scale; + const down = MID_Y + 26 * scale; + const up2 = MID_Y - 22 * scale; + + const points: Array<[number, number]> = [ + [0, MID_Y], + [150, MID_Y], + [168, MID_Y], + [178, up1], + [188, down], + [198, up2], + [208, MID_Y], + [WIDTH, MID_Y], + ]; + + return points.map(([x, y]) => `${x},${y.toFixed(1)}`).join(" "); +} + +const AnimatedPolyline = Animated.createAnimatedComponent(Polyline); + +export interface HeartbeatWaveProps { + amplitude?: number; // 0~100,對應親密度 + animateOnMount?: boolean; // 是否播放「由左至右畫出」的載入動畫 + color?: string; + style?: StyleProp; +} + +export function HeartbeatWave({ amplitude = 50, animateOnMount = true, color = "#FF7E9D", style }: HeartbeatWaveProps) { + const reduceMotion = useReduceMotion(); + const shouldAnimate = animateOnMount && !reduceMotion; + const dashOffset = useRef(new Animated.Value(shouldAnimate ? DASH_LENGTH : 0)).current; + + useEffect(() => { + if (!shouldAnimate) { + dashOffset.setValue(0); + return; + } + dashOffset.setValue(DASH_LENGTH); + Animated.timing(dashOffset, { + toValue: 0, + duration: 1600, + easing: Easing.out(Easing.ease), + // strokeDashoffset 不在原生驅動支援的屬性清單內,只能走 JS 驅動。 + useNativeDriver: false, + }).start(); + }, [shouldAnimate, dashOffset]); + + const points = useMemo(() => buildPoints(amplitude), [amplitude]); + + return ( + + + + ); +} diff --git a/apps/mobile/components/LobbyPreview.tsx b/apps/mobile/components/LobbyPreview.tsx new file mode 100644 index 0000000..7837805 --- /dev/null +++ b/apps/mobile/components/LobbyPreview.tsx @@ -0,0 +1,518 @@ +import { useEffect, useState } from "react"; +import { Pressable, StyleSheet, Text, TextInput, View } from "react-native"; +import { useRouter } from "expo-router"; +import { + confirmEndingDetection, + decideInvitation, + decideLobbyCall, + enterPossession, + exitPossession, + getFullLobby, + getPossessionStatus, + listEndingDetections, + listPendingAdjudication, + listPendingInvitations, + listPendingLobbyCalls, + rejectEndingDetection, + sayToLobby, + type EndingDetectionLog, + type LobbyFullSnapshot, + type LobbyPresenceState, + type PendingInvitation, + type PendingLobbyCall, + type PossessionStatus, +} from "../lib/api"; +import { useUnread } from "../lib/unread-context"; + +const USER_ID = "seed-user-primary"; + +const PRESENCE_LABELS: Record = { + BUILDING: "建置中", + SLEEPING: "睡眠中", + BUSY: "忙碌中", + SEMI_BUSY: "略忙", + IDLE: "空閒", + IN_SOLO_ROOM: "單獨聊天中", + IN_GROUP_ROOM: "多人房中", +}; + +// T20-P2:大廳頁完整版,取代 T20-P1 最小快照(在場名單+房間清單),改用 T4 正式聚合端點, +// 與 apps/web 的 LobbyView 對應同一版面:進行中房間(含未讀)→ 作品分組角色卡片 → 大廳對話輸入。 +export function LobbyPreview() { + const router = useRouter(); + const { setRoomUnreadCounts } = useUnread(); + const [snapshot, setSnapshot] = useState(null); + const [error, setError] = useState(null); + const [text, setText] = useState(""); + const [pending, setPending] = useState(false); + const [lobbyMessage, setLobbyMessage] = useState(null); + const [pendingAdjudicationByWork, setPendingAdjudicationByWork] = useState>({}); + const [endingDetectionsByWork, setEndingDetectionsByWork] = useState>({}); + const [possession, setPossession] = useState(null); + const [pendingInvitations, setPendingInvitations] = useState([]); + const [pendingCalls, setPendingCalls] = useState([]); + + async function refresh() { + try { + const [lobby, possessionStatus] = await Promise.all([getFullLobby(USER_ID), getPossessionStatus(USER_ID)]); + setSnapshot(lobby); + setPossession(possessionStatus); + setError(null); + // T20-P2:把各房未讀數餵給 UnreadContext,聊天分頁籤的紅點才能反映「大廳裡有房間未讀」。 + setRoomUnreadCounts(Object.fromEntries(lobby.activeRooms.map((room) => [room.id, room.unreadCount]))); + } catch { + setError("大廳查詢失敗,請確認 api 服務是否已啟動"); + } + } + + useEffect(() => { + void refresh(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + // T20-P5:套用中時查詢待決邀請與待決大廳呼叫,與 apps/web 的 LobbyView 對應同一批次查詢方式。 + useEffect(() => { + if (!possession?.possessingCharacterId) { + setPendingInvitations([]); + setPendingCalls([]); + return; + } + let cancelled = false; + void Promise.all([listPendingInvitations(USER_ID), listPendingLobbyCalls(USER_ID)]).then(([invitations, calls]) => { + if (cancelled) return; + setPendingInvitations(invitations); + setPendingCalls(calls); + }); + return () => { + cancelled = true; + }; + }, [possession]); + + async function handleEnterPossession(characterId: string) { + if (pending) return; + setPending(true); + setError(null); + try { + await enterPossession(USER_ID, characterId); + await refresh(); + } catch (err) { + setError(err instanceof Error ? err.message : "套用失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleExitPossession() { + if (pending) return; + setPending(true); + setError(null); + try { + await exitPossession(USER_ID); + await refresh(); + } catch (err) { + setError(err instanceof Error ? err.message : "退出套用失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleDecideInvitation(invitationId: string, accept: boolean) { + if (pending) return; + setPending(true); + setError(null); + try { + await decideInvitation(invitationId, accept); + setPendingInvitations(await listPendingInvitations(USER_ID)); + await refresh(); + } catch (err) { + setError(err instanceof Error ? err.message : "邀請決定失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleDecideCall(pendingCallId: string, accept: boolean) { + if (pending) return; + setPending(true); + setError(null); + try { + const decision = await decideLobbyCall(pendingCallId, accept); + setPendingCalls(await listPendingLobbyCalls(USER_ID)); + if (decision.roomId) { + router.push(`/room/${decision.roomId}`); + return; + } + } catch (err) { + setError(err instanceof Error ? err.message : "呼叫決定失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + // T20-P4:作品卡片標題列的「有待裁決項目」提示與結局偵測待確認清單,與 apps/web 的 + // LobbyView 對應同一批次查詢方式,snapshot 每次刷新都會連動重新取得。 + useEffect(() => { + if (!snapshot) return; + const workIds = snapshot.works.map((w) => w.id); + let cancelled = false; + void Promise.all( + workIds.map(async (workId) => { + const [adjudication, endings] = await Promise.all([listPendingAdjudication(workId), listEndingDetections(workId)]); + return { workId, pendingCount: adjudication.length, endings }; + }), + ).then((results) => { + if (cancelled) return; + setPendingAdjudicationByWork(Object.fromEntries(results.map((r) => [r.workId, r.pendingCount]))); + setEndingDetectionsByWork(Object.fromEntries(results.map((r) => [r.workId, r.endings]))); + }); + return () => { + cancelled = true; + }; + }, [snapshot]); + + async function handleConfirmEnding(logId: string) { + if (pending) return; + setPending(true); + setError(null); + try { + await confirmEndingDetection(logId); + await refresh(); + } catch (err) { + setError(err instanceof Error ? err.message : "結局確認失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleRejectEnding(logId: string) { + if (pending) return; + setPending(true); + setError(null); + try { + await rejectEndingDetection(logId); + await refresh(); + } catch (err) { + setError(err instanceof Error ? err.message : "結局拒絕失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + async function handleSay() { + const trimmed = text.trim(); + if (!trimmed || pending || possession?.possessingCharacterId) return; + setPending(true); + setError(null); + setLobbyMessage(null); + try { + const result = await sayToLobby(USER_ID, trimmed); + setText(""); + if (result.roomId) { + router.push(`/room/${result.roomId}`); + return; + } + if (result.message) { + setLobbyMessage(result.message); + } + await refresh(); + } catch { + setError("大廳呼叫失敗,請確認 api 服務是否已啟動"); + } finally { + setPending(false); + } + } + + if (error) { + return {error}; + } + if (!snapshot) { + return 大廳載入中……; + } + + const workGroups = snapshot.works.map((work) => ({ + work, + characters: snapshot.characters.filter((c) => c.workId === work.id), + })); + const unassigned = snapshot.characters.filter((c) => c.workId === null); + const possessedCharacterId = possession?.possessingCharacterId ?? null; + const possessedCharacterName = possessedCharacterId + ? snapshot.characters.find((c) => c.id === possessedCharacterId)?.formalName ?? possessedCharacterId + : null; + + return ( + + {possessedCharacterId && ( + + + 你現在是「{possessedCharacterName}」 + void handleExitPossession()} disabled={pending}> + 退出套用 + + + 她的自走已暫停;請到她所在的房間以她的身分發話,或在下方決定邀請與呼叫。 + + {pendingCalls.map((call) => ( + + 有人喊了你:「{call.text}」 + + void handleDecideCall(call.id, true)} disabled={pending}> + 接受 + + void handleDecideCall(call.id, false)} disabled={pending}> + 婉拒 + + + + ))} + + {pendingInvitations.map((invitation) => ( + + + {(invitation.invitedByCharacterId && + snapshot.characters.find((c) => c.id === invitation.invitedByCharacterId)?.formalName) ?? + "有人"} + 邀請你到房間裡聊聊 + + + void handleDecideInvitation(invitation.id, true)} disabled={pending}> + 接受 + + void handleDecideInvitation(invitation.id, false)} disabled={pending}> + 婉拒 + + + + ))} + + )} + + 進行中房間({snapshot.activeRooms.length}) + {snapshot.activeRooms.length === 0 ? ( + 目前沒有進行中的房間。 + ) : ( + snapshot.activeRooms.map((room) => ( + router.push(`/room/${room.id}`)}> + + + {room.memberCharacterIds + .map((id) => snapshot.characters.find((c) => c.id === id)?.formalName ?? id) + .join("、") || room.mode} + + {room.unreadCount > 0 && ( + + {room.unreadCount} + + )} + + + )) + )} + + {workGroups.map(({ work, characters }) => { + if (characters.length === 0) return null; + const pendingCount = pendingAdjudicationByWork[work.id] ?? 0; + const endings = endingDetectionsByWork[work.id] ?? []; + return ( + + + + {work.title} + {work.inEpilogue ? "(後日談)" : ""} + + + {pendingCount > 0 && ( + router.push("/canon-review")}> + 有 {pendingCount} 項待裁決 + + )} + router.push(`/canon-import?workId=${work.id}`)}> + 匯入章節 + + + + + + {characters.map((character) => ( + + + {character.formalName}/{PRESENCE_LABELS[character.presenceState]} + + {character.id === possessedCharacterId ? ( + + 套用中 + + ) : ( + !possessedCharacterId && ( + void handleEnterPossession(character.id)} disabled={pending} style={styles.possessButton}> + 套用 + + ) + )} + + ))} + + + {endings.map((ending) => ( + + 偵測到可能的結局章節,是否切入後日談? + 判定理由:{ending.evidence} + + void handleConfirmEnding(ending.id)} disabled={pending}> + 確認.切入後日談 + + void handleRejectEnding(ending.id)} disabled={pending}> + 拒絕 + + + + ))} + + {work.milestones.length > 0 && ( + + {work.milestones.map((milestone, index) => ( + + .{characters.find((c) => c.id === milestone.characterId)?.formalName ?? milestone.characterId}: + {milestone.label} + + ))} + + )} + + ); + })} + + {unassigned.length > 0 && ( + + 未分組角色 + + {unassigned.map((character) => ( + + + {character.formalName}/{PRESENCE_LABELS[character.presenceState]} + + {character.id === possessedCharacterId ? ( + + 套用中 + + ) : ( + !possessedCharacterId && ( + void handleEnterPossession(character.id)} disabled={pending} style={styles.possessButton}> + 套用 + + ) + )} + + ))} + + + )} + + {lobbyMessage && ( + + {lobbyMessage} + + )} + + {possessedCharacterId ? ( + 套用中無法以自己的身分喊人,請先退出套用。 + ) : ( + + + + 送出 + + + )} + + ); +} + +const styles = StyleSheet.create({ + container: { paddingHorizontal: 16, paddingTop: 12, paddingBottom: 12, gap: 6 }, + sectionTitle: { fontSize: 12, fontWeight: "bold", color: "#8a6b6f", marginTop: 6 }, + rosterRow: { flexDirection: "row", flexWrap: "wrap", gap: 6 }, + workSection: { gap: 6 }, + workHeaderRow: { flexDirection: "row", alignItems: "center", justifyContent: "space-between", flexWrap: "wrap", gap: 6 }, + workHeaderActions: { flexDirection: "row", alignItems: "center", gap: 6 }, + pendingBadge: { borderRadius: 999, backgroundColor: "#FF7E9D", paddingHorizontal: 8, paddingVertical: 3 }, + pendingBadgeText: { fontSize: 10, fontWeight: "bold", color: "#fff" }, + importChip: { borderRadius: 999, borderWidth: 1, borderColor: "#E5D5D8", paddingHorizontal: 8, paddingVertical: 3 }, + importChipText: { fontSize: 10, color: "#8a6b6f" }, + endingCard: { borderRadius: 12, borderWidth: 1, borderColor: "#E5D5D8", padding: 8, gap: 4 }, + endingCardTitle: { fontSize: 11, color: "#222" }, + endingCardEvidence: { fontSize: 11, color: "#8a6b6f" }, + endingCardActions: { flexDirection: "row", gap: 12 }, + confirmButton: { fontSize: 11, fontWeight: "bold", color: "#FF7E9D" }, + rejectButton: { fontSize: 11, color: "#8a6b6f" }, + milestoneList: { gap: 2 }, + milestoneText: { fontSize: 11, color: "#8a6b6f" }, + chip: { + flexDirection: "row", + alignItems: "center", + gap: 4, + borderRadius: 999, + borderWidth: 1, + borderColor: "#E5D5D8", + paddingHorizontal: 10, + paddingVertical: 4, + }, + possessedBadge: { borderRadius: 999, backgroundColor: "#FF7E9D", paddingHorizontal: 6, paddingVertical: 1 }, + possessedBadgeText: { fontSize: 9, fontWeight: "bold", color: "#fff" }, + possessButton: { borderRadius: 999, borderWidth: 1, borderColor: "#E5D5D8", paddingHorizontal: 6, paddingVertical: 1 }, + possessButtonText: { fontSize: 9, color: "#8a6b6f" }, + possessionBanner: { borderRadius: 12, borderWidth: 2, borderColor: "#FF7E9D", backgroundColor: "#FFE1E9", padding: 10, gap: 6 }, + possessionBannerRow: { flexDirection: "row", alignItems: "center", justifyContent: "space-between" }, + possessionBannerTitle: { fontSize: 13, fontWeight: "bold", color: "#FF7E9D" }, + possessionBannerHint: { fontSize: 11, color: "#8a6b6f" }, + exitPossessionLink: { fontSize: 12, fontWeight: "bold", color: "#FF7E9D" }, + chipText: { fontSize: 12, color: "#222" }, + roomCard: { + borderRadius: 12, + borderWidth: 1, + borderColor: "#E5D5D8", + paddingHorizontal: 12, + paddingVertical: 8, + }, + roomCardRow: { flexDirection: "row", alignItems: "center", justifyContent: "space-between" }, + roomCardText: { fontSize: 12, color: "#222" }, + unreadBadge: { + backgroundColor: "#FF7E9D", + borderRadius: 999, + paddingHorizontal: 7, + paddingVertical: 2, + minWidth: 18, + alignItems: "center", + }, + unreadBadgeText: { fontSize: 10, fontWeight: "bold", color: "#fff" }, + messageBox: { + borderRadius: 12, + borderWidth: 1, + borderColor: "#E5D5D8", + paddingHorizontal: 12, + paddingVertical: 8, + }, + messageBoxText: { fontSize: 12, color: "#222" }, + sayRow: { + flexDirection: "row", + alignItems: "center", + gap: 8, + marginTop: 8, + paddingHorizontal: 16, + paddingVertical: 8, + borderRadius: 999, + borderWidth: 1, + borderColor: "#E5D5D8", + }, + sayInput: { flex: 1, fontSize: 14 }, + sendButton: { color: "#FF7E9D", fontWeight: "bold" }, + sendButtonDisabled: { opacity: 0.5 }, + hint: { fontSize: 12, color: "#8a6b6f", paddingHorizontal: 16 }, + error: { fontSize: 12, color: "#FF7E9D", paddingHorizontal: 16 }, +}); diff --git a/apps/mobile/components/RoomStage.tsx b/apps/mobile/components/RoomStage.tsx new file mode 100644 index 0000000..642bc73 --- /dev/null +++ b/apps/mobile/components/RoomStage.tsx @@ -0,0 +1,44 @@ +import { ScrollView, StyleSheet, Text, View } from "react-native"; +import { TachieStage, type TachieExpression } from "./TachieStage"; +import { HeartbeatDot } from "./HeartbeatDot"; + +export interface StageParticipant { + characterId: string; + label: string; + expression: TachieExpression | null; +} + +interface RoomStageProps { + participants: StageParticipant[]; + speakingCharacterId: string | null; +} + +// T20-P3:多人房立繪舞台——與 apps/web 的 components/RoomStage.tsx 呈現同等資訊,目前發話者 +// 用 HeartbeatDot(Q-4 既有的心跳提示元件)標示,人多時整體縮小排列。 +export function RoomStage({ participants, speakingCharacterId }: RoomStageProps) { + if (participants.length === 0) return null; + const scale = participants.length <= 3 ? 1 : participants.length <= 6 ? 0.7 : 0.5; + + return ( + + {participants.map((participant) => { + const speaking = participant.characterId === speakingCharacterId; + return ( + + {speaking && } + + {participant.label} + + ); + })} + + ); +} + +const styles = StyleSheet.create({ + row: { flexDirection: "row", alignItems: "flex-end", gap: 8, paddingHorizontal: 12, paddingVertical: 4 }, + item: { alignItems: "center", gap: 2 }, + dot: { marginBottom: 2 }, + label: { fontSize: 10, color: "#8a6b6f" }, + labelSpeaking: { color: "#FF7E9D", fontWeight: "bold" }, +}); diff --git a/apps/mobile/components/TachieStage.impl.tsx b/apps/mobile/components/TachieStage.impl.tsx new file mode 100644 index 0000000..f8278a4 --- /dev/null +++ b/apps/mobile/components/TachieStage.impl.tsx @@ -0,0 +1,110 @@ +import { useEffect, useRef, useState } from "react"; +import { StyleSheet, Text, View } from "react-native"; +import { Canvas, Group, Oval, Path, Rect, RoundedRect } from "@shopify/react-native-skia"; +import type { EmotionTag } from "@kokorone/shared"; + +export type GazeDirection = "UP" | "AWAY" | "DIRECT" | "NEUTRAL"; + +export interface TachieExpression { + emotionTag: EmotionTag; + eyebrow: string; + eye: string; + mouth: string; + effect: string | null; + pose: string; + magnitude: number; + gaze: GazeDirection; +} + +const EFFECT_GLYPH: Record = { + 臉紅: "◕‸◕", + 汗: "💧", + 淚: "😢", + 青筋: "💢", + 音符: "♪", +}; + +const WIDTH = 200; +const HEIGHT = 260; +const BODY_X = 100; +const BODY_Y = 40; + +// Q-5:以 react-native-skia 重現 apps/web/components/TachieStage.tsx(PixiJS)的分層合成與微動態, +// 沿用同一套佔位色塊幾何與 magnitude 縮放公式,維持三端視覺一致。差分選用規則仍在後端 +// (/tachie/:characterId/:userId/expression),這裡只負責依 expression 的欄位畫出對應的差分。 +// 沒有安裝 react-native-reanimated(Skia 此版本已列為選用 peer dependency),改用一般 React state +// 搭配 requestAnimationFrame 驅動眨眼/呼吸這種低頻率的常駐動態,避免多引入一個原生依賴與 babel 設定。 +export function TachieStage({ expression }: { expression: TachieExpression | null }) { + const [breathPhase, setBreathPhase] = useState(0); + const [blinking, setBlinking] = useState(false); + const blinkClockRef = useRef(0); + const lastTickRef = useRef(null); + + useEffect(() => { + let raf: number; + function tick(now: number) { + const last = lastTickRef.current ?? now; + const deltaTime = ((now - last) / 1000) * 60; // 對齊 web 版以「每 frame(60fps 基準)」為單位的節奏 + lastTickRef.current = now; + + setBreathPhase((phase) => phase + deltaTime * 0.03); + blinkClockRef.current += deltaTime; + const cycle = blinkClockRef.current % 180; // 約每 3 秒眨一次眼,與 web 版一致 + setBlinking(cycle > 172); + + raf = requestAnimationFrame(tick); + } + raf = requestAnimationFrame(tick); + return () => cancelAnimationFrame(raf); + }, []); + + // O-4 外顯度縮放:magnitude 越小,差分動作幅度越小;佔位資產仍保留最低幅度,確保肉眼看得出「有變化」。 + const magnitude = Math.max(0.12, expression?.magnitude ?? 0.12); + const bodyScaleY = 1 + Math.sin(breathPhase) * 0.015; + const eyeScaleY = blinking ? 0.1 : 1; + + const eyebrowY = -26 - 6 * magnitude; + const gazeDx = expression?.gaze === "AWAY" ? -8 : 0; + const gazeDy = expression?.gaze === "UP" ? -5 : 0; + const eyeHeight = 6 + 6 * magnitude; + const isFrown = expression?.emotionTag === "SAD" || expression?.emotionTag === "GRUMPY"; + const curve = 10 * magnitude * (isFrown ? 1 : -1); + const mouthPath = `M -12 6 Q 0 ${6 + curve} 12 6`; + + const glyph = expression?.effect ? (EFFECT_GLYPH[expression.effect] ?? expression.effect) : null; + + return ( + + + {/* O-1/O-4 分層合成(由下而上):身體姿勢 → 服裝層 → 表情層(眉/眼/口)→ 動態層(眨眼/呼吸,常駐)。 */} + + + + + + + + + + + + + + + + + + + + {glyph && {glyph}} + + ); +} + +const styles = StyleSheet.create({ + effectGlyph: { position: "absolute", left: 140, top: 30, fontSize: 20 }, +}); + +// TachieStage.web.tsx 透過 WithSkiaWeb 動態載入這個模組時要求 default export; +// 原生端(TachieStage.tsx)用回具名匯出,兩邊都指向同一份實作,不重複維護兩套繪製邏輯。 +export default TachieStage; diff --git a/apps/mobile/components/TachieStage.tsx b/apps/mobile/components/TachieStage.tsx new file mode 100644 index 0000000..f8e4cc4 --- /dev/null +++ b/apps/mobile/components/TachieStage.tsx @@ -0,0 +1,3 @@ +// 原生端(iOS/Android/Expo Go)直接用 react-native-skia 的原生繪圖引擎,不需要 Web 專用的 +// CanvasKit WASM 載入流程——見 TachieStage.web.tsx 才是那條路徑要走的地方。 +export { TachieStage, type TachieExpression, type GazeDirection } from "./TachieStage.impl"; diff --git a/apps/mobile/components/TachieStage.web.tsx b/apps/mobile/components/TachieStage.web.tsx new file mode 100644 index 0000000..5b4a6ba --- /dev/null +++ b/apps/mobile/components/TachieStage.web.tsx @@ -0,0 +1,20 @@ +import { Text } from "react-native"; +// eslint-disable-next-line import/no-unresolved -- 深層路徑是 react-native-skia 官方文件指定的 Web 專用匯出位置。 +import { WithSkiaWeb } from "@shopify/react-native-skia/lib/module/web"; +import type { GazeDirection, TachieExpression } from "./TachieStage.impl"; + +export type { GazeDirection, TachieExpression }; + +// Expo web 走瀏覽器 CanvasKit(WASM),需要先非同步載入才能畫圖——原生端沒有這個限制, +// 所以原生/網頁各自一份極薄的進入點,實際繪製邏輯全部共用 TachieStage.impl.tsx。 +// canvaskit.wasm 已由 `npx setup-skia-web` 放在 apps/mobile/public/,走 Metro web 的靜態根目錄慣例。 +export function TachieStage(props: { expression: TachieExpression | null }) { + return ( + import("./TachieStage.impl")} + componentProps={props} + fallback={立繪載入中…} + opts={{ locateFile: () => "/canvaskit.wasm" }} + /> + ); +} diff --git a/apps/mobile/lib/api.ts b/apps/mobile/lib/api.ts index 8d29000..a4d2461 100644 --- a/apps/mobile/lib/api.ts +++ b/apps/mobile/lib/api.ts @@ -38,16 +38,31 @@ export interface ChatResult { context: ChatContext | null; } -export async function sendChatMessage( - characterId: string, - userId: string, - sessionId: string, - text: string, -): Promise { - const res = await fetch(`${API_BASE_URL}/chat/${characterId}`, { +// T38:既有 1:1 聊天併入 SOLO 房,取代舊版由呼叫端自行產生 sessionId 的 sendChatMessage。 +// 伺服器端為同一使用者+角色配對沿用同一間進行中的 SOLO 房,契約與 apps/web/lib/api.ts 一致。 +export interface SoloRoomSummary { + id: string; + mode: "SOLO"; + status: "ACTIVE" | "CLOSED"; +} + +export async function getOrCreateSoloRoom(userId: string, characterId: string): Promise { + const res = await fetch(`${API_BASE_URL}/room/solo`, { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ userId, sessionId, text }), + body: JSON.stringify({ userId, characterId }), + }); + if (!res.ok) { + throw new Error(`房間建立失敗(${res.status})`); + } + return res.json(); +} + +export async function sendSoloMessage(roomId: string, userId: string, text: string): Promise { + const res = await fetch(`${API_BASE_URL}/room/${roomId}/message`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ userId, text }), }); if (!res.ok) { throw new Error(`對話請求失敗(${res.status})`); @@ -78,6 +93,25 @@ export async function fetchExpression(characterId: string, userId: string): Prom return res.json(); } +export interface SynthesizedVoice { + audioRef: string; // TTS_PROVIDER=mock 時是 `mock://` 佔位字串,非真實音檔 + prosodyMarkup: string; + durationEstimateMs: number; +} + +// T20-P3:語音合成——與 apps/web 呼叫同一端點,播放邏輯見 app/room/[roomId].tsx。 +export async function synthesizeVoice(characterId: string, userId: string, text: string): Promise { + const res = await fetch(`${API_BASE_URL}/voice/${characterId}/${userId}/synthesize`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ text }), + }); + if (!res.ok) { + throw new Error(`語音合成失敗(${res.status})`); + } + return res.json(); +} + export async function registerPushToken(userId: string, token: string, platform: string): Promise { await fetch(`${API_BASE_URL}/push/register`, { method: "POST", @@ -85,3 +119,618 @@ export async function registerPushToken(userId: string, token: string, platform: body: JSON.stringify({ userId, token, platform }), }); } + +// T20-P1:大廳頁最小可用(在場名單+進行中房間清單)與房間歷程分頁,契約與 apps/web/lib/api.ts 一致 +// (見該檔 T19-P1 段落),此處為 React Native 端各自實作的對應封裝。 +export interface LobbySnapshot { + lobbyRoomId: string; + roster: string[]; + activeRooms: { id: string; mode: string; topicSeed: string | null; memberCharacterIds: string[] }[]; +} + +export async function getLobby(userId: string): Promise { + const res = await fetch(`${API_BASE_URL}/room/lobby?userId=${encodeURIComponent(userId)}`); + if (!res.ok) { + throw new Error(`大廳查詢失敗(${res.status})`); + } + return res.json(); +} + +export type LobbyPresenceState = "BUILDING" | "SLEEPING" | "BUSY" | "SEMI_BUSY" | "IDLE" | "IN_SOLO_ROOM" | "IN_GROUP_ROOM"; + +export interface LobbyMilestoneView { + characterId: string; + label: string; + storyOrder: number; + createdAt: string; +} + +export interface LobbyWorkView { + id: string; + title: string; + inEpilogue: boolean; + milestones: LobbyMilestoneView[]; // T34:自走一段時間後自主成立的人生變化 +} + +export interface LobbyCharacterView { + id: string; + workId: string | null; + formalName: string; + buildStatus: string; + presenceState: LobbyPresenceState; + roomId: string | null; +} + +export interface LobbyActiveRoomView { + id: string; + mode: string; + topicSeed: string | null; + memberCharacterIds: string[]; + unreadCount: number; +} + +export interface LobbyFullSnapshot { + works: LobbyWorkView[]; + characters: LobbyCharacterView[]; + activeRooms: LobbyActiveRoomView[]; +} + +// T4/T20-P2:正式大廳聚合端點,契約與 apps/web/lib/api.ts 一致(見該檔 T19-P2 段落)。 +export async function getFullLobby(userId: string): Promise { + const res = await fetch(`${API_BASE_URL}/lobby?userId=${encodeURIComponent(userId)}`); + if (!res.ok) { + throw new Error(`大廳查詢失敗(${res.status})`); + } + return res.json(); +} + +export interface LobbySayResult { + calledCharacterIds: string[]; + accepted: string[]; + declined: string[]; + roomId: string | null; + mode: "SOLO" | "GROUP" | null; + message: string | null; + delegatedBy: string | null; + pendingPossessedCharacterIds: string[]; // T43:喊到但目前套用中,改記待決給套用者 +} + +// T5/T20-P2:大廳對話式呼叫,契約與 apps/web/lib/api.ts 一致。 +export async function sayToLobby(userId: string, text: string): Promise { + const res = await fetch(`${API_BASE_URL}/lobby/say`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ userId, text }), + }); + if (!res.ok) { + throw new Error(`大廳呼叫失敗(${res.status})`); + } + return res.json(); +} + +// T20-P4:匯入章節、待裁決、結局確認——契約與 apps/web/lib/api.ts 的 T19-P4 段落一致,mobile 補上 +// 對等的封裝與畫面(`app/canon-import.tsx`/`app/canon-review.tsx`)。 + +export interface CharacterSummary { + id: string; + workId: string | null; + aliases: { formalName: string }[]; +} + +export async function listCharacters(): Promise { + const res = await fetch(`${API_BASE_URL}/characters`); + if (!res.ok) { + throw new Error(`角色清單查詢失敗(${res.status})`); + } + return res.json(); +} + +export interface CanonWork { + id: string; + title: string; + timeFlowMode: "FAST" | "REALTIME" | "SLOW" | "FROZEN"; + anchorStoryOrder: number; + inEpilogue: boolean; +} + +export async function listCanonWorks(): Promise { + const res = await fetch(`${API_BASE_URL}/canon/works`); + if (!res.ok) { + throw new Error(`作品清單查詢失敗(${res.status})`); + } + return res.json(); +} + +export interface CanonScene { + id: string; + workId: string; + storyOrder: number; + projected: boolean; +} + +export async function listCanonScenes(workId: string): Promise { + const res = await fetch(`${API_BASE_URL}/canon/works/${workId}/scenes`); + if (!res.ok) { + throw new Error(`場景清單查詢失敗(${res.status})`); + } + return res.json(); +} + +export type SceneLineStatus = "PENDING" | "CONFIRMED" | "QUARANTINED"; +export type SceneLineType = "DIALOGUE" | "ACTION" | "MONOLOGUE" | "NARRATION"; + +export interface SceneLine { + id: string; + sceneId: string; + lineIndex: number; + lineType: SceneLineType; + rawText: string; + hasExplicitMarker: boolean; + markerCharacterId: string | null; + speakerCharacterId: string | null; + confidence: number; + status: SceneLineStatus; +} + +export interface CanonSceneDetail extends CanonScene { + lines: SceneLine[]; +} + +export async function getCanonScene(sceneId: string): Promise { + const res = await fetch(`${API_BASE_URL}/canon/scenes/${sceneId}`); + if (!res.ok) { + throw new Error(`場景詳情查詢失敗(${res.status})`); + } + return res.json(); +} + +export type ContradictionStatus = "PENDING_HUMAN_REVIEW" | "RESOLVED"; + +export interface SceneContradiction { + id: string; + workId: string; + eventLabel: string; + factKey: string; + description: string; + status: ContradictionStatus; +} + +export async function listContradictions(workId: string): Promise { + const res = await fetch(`${API_BASE_URL}/canon/works/${workId}/contradictions`); + if (!res.ok) { + throw new Error(`矛盾清單查詢失敗(${res.status})`); + } + return res.json(); +} + +export async function adjudicateLine(lineId: string, speakerCharacterId: string): Promise { + const res = await fetch(`${API_BASE_URL}/canon/scene-lines/${lineId}/adjudicate`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ speakerCharacterId }), + }); + if (!res.ok) { + throw new Error(`裁決失敗(${res.status})`); + } + return res.json(); +} + +export async function correctLineAttribution(lineId: string, newSpeakerCharacterId: string): Promise { + const res = await fetch(`${API_BASE_URL}/canon/scene-lines/${lineId}/correct`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ newSpeakerCharacterId }), + }); + if (!res.ok) { + throw new Error(`歸屬更正失敗(${res.status})`); + } + return res.json(); +} + +export async function reattemptQuarantined(sceneId: string): Promise<{ released: number }> { + const res = await fetch(`${API_BASE_URL}/canon/scenes/${sceneId}/reattempt-quarantined`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: "{}", + }); + if (!res.ok) { + throw new Error(`重試失敗(${res.status})`); + } + return res.json(); +} + +export interface ImportSceneLineInput { + lineType: SceneLineType; + rawText: string; + hasExplicitMarker?: boolean; + markerCharacterId?: string; +} + +export interface ImportSceneInput { + workId: string; + volume: number; + chapterLabel: string; + storyOrder: number; + summary: string; + rawText: string; + participantCharacterIds: string[]; + lines: ImportSceneLineInput[]; +} + +export interface ImportedSceneResult extends CanonSceneDetail { + pendingAdjudication: boolean; +} + +export async function importCanonScene(input: ImportSceneInput): Promise { + const res = await fetch(`${API_BASE_URL}/canon/scenes`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(input), + }); + if (!res.ok) { + const body = await res.json().catch(() => null); + throw new Error(typeof body?.message === "string" ? body.message : `章節匯入失敗(${res.status})`); + } + return res.json(); +} + +export async function listPendingAdjudication(workId: string): Promise { + const res = await fetch(`${API_BASE_URL}/canon/works/${workId}/pending-adjudication`); + if (!res.ok) { + throw new Error(`待裁決清單查詢失敗(${res.status})`); + } + return res.json(); +} + +export type EndingDetectionResolution = "PENDING" | "CONFIRMED" | "REJECTED"; + +export interface EndingDetectionLog { + id: string; + sceneId: string; + evidence: string; + resolution: EndingDetectionResolution; + createdAt: string; + respondedAt: string | null; +} + +export async function listEndingDetections(workId: string): Promise { + const res = await fetch(`${API_BASE_URL}/canon/works/${workId}/ending-detections`); + if (!res.ok) { + throw new Error(`結局偵測清單查詢失敗(${res.status})`); + } + return res.json(); +} + +export async function confirmEndingDetection(logId: string): Promise { + const res = await fetch(`${API_BASE_URL}/epilogue/ending-detections/${logId}/confirm`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: "{}", + }); + if (!res.ok) { + const body = await res.json().catch(() => null); + throw new Error(typeof body?.message === "string" ? body.message : `結局確認失敗(${res.status})`); + } + return res.json(); +} + +export async function rejectEndingDetection(logId: string): Promise { + const res = await fetch(`${API_BASE_URL}/epilogue/ending-detections/${logId}/reject`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: "{}", + }); + if (!res.ok) { + const body = await res.json().catch(() => null); + throw new Error(typeof body?.message === "string" ? body.message : `結局拒絕失敗(${res.status})`); + } + return res.json(); +} + +export const ROOM_USER_SPEAKER_ID = "USER"; + +// T20-P3:TALK/ACTION/DELEGATE/LEAVE/SYSTEM,對應後端 RoomTurnKind(見 T6/T19-P3)。 +export type RoomTurnKind = "TALK" | "ACTION" | "DELEGATE" | "LEAVE" | "SYSTEM"; + +export interface RoomTurn { + seq: number; + speakerId: string; + speakerLabel: string; + content: string; + kind: RoomTurnKind; +} + +export interface RoomUnreadInfo { + lastReadSeq: number; + firstUnreadSeq: number | null; + unreadCount: number; +} + +export interface RoomUsageSummary { + totalPromptTokens: number; + totalCompletionTokens: number; + generationCount: number; +} + +export interface RoomDetail { + id: string; + mode: string; + status: string; + topicSeed: string | null; + participants: string[]; + turnCount: number; + turns: RoomTurn[]; + hasMore: boolean; + nextCursor: number | null; + unread: RoomUnreadInfo; + muted: boolean; // T31:靜音——不推播、不自動播放語音,自走仍照常進行 + usage: RoomUsageSummary; +} + +export async function getRoomUsage(roomId: string): Promise { + const res = await fetch(`${API_BASE_URL}/room/${roomId}/usage`); + if (!res.ok) { + throw new Error(`用量查詢失敗(${res.status})`); + } + return res.json(); +} + +// T31:靜音只影響推播與自動語音播放,自走排程與生成照常進行。 +export async function setRoomMuted(roomId: string, muted: boolean): Promise<{ id: string; muted: boolean }> { + const res = await fetch(`${API_BASE_URL}/room/${roomId}/mute`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ muted }), + }); + if (!res.ok) { + throw new Error(`靜音設定失敗(${res.status})`); + } + return res.json(); +} + +export interface RoomTurnsPageOptions { + afterSeq?: number; + beforeSeq?: number; + limit?: number; +} + +export async function getRoom(roomId: string, page: RoomTurnsPageOptions = {}): Promise { + const params = new URLSearchParams(); + if (page.afterSeq !== undefined) params.set("afterSeq", String(page.afterSeq)); + if (page.beforeSeq !== undefined) params.set("beforeSeq", String(page.beforeSeq)); + if (page.limit !== undefined) params.set("limit", String(page.limit)); + const query = params.toString(); + const res = await fetch(`${API_BASE_URL}/room/${roomId}${query ? `?${query}` : ""}`); + if (!res.ok) { + throw new Error(`房間查詢失敗(${res.status})`); + } + return res.json(); +} + +export interface RoomMessageResult { + speakers: { characterId: string; text: string; score: number }[]; +} + +// T20-P2:通用房間發言——後端依 room.mode 內部分流 SOLO/GROUP,回應形狀不同,但本畫面一律透過 +// SSE/串流收新訊息,不依賴這裡的回傳值本身,故用寬鬆型別接收即可。 +export async function sendRoomMessage(roomId: string, userId: string, userLabel: string, text: string): Promise { + const res = await fetch(`${API_BASE_URL}/room/${roomId}/message`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ userId, userLabel, text }), + }); + if (!res.ok) { + throw new Error(`發言失敗(${res.status})`); + } + return res.json(); +} + +export async function endRoom(roomId: string): Promise<{ ok: boolean }> { + const res = await fetch(`${API_BASE_URL}/room/${roomId}/end`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: "{}", + }); + if (!res.ok) { + throw new Error(`結束房間失敗(${res.status})`); + } + return res.json(); +} + +// T11/T20-P2:回報已讀游標,契約與 apps/web/lib/api.ts 一致。 +export async function reportRoomRead(roomId: string, userId: string, lastReadSeq: number): Promise { + const res = await fetch(`${API_BASE_URL}/room/${roomId}/read`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ userId, lastReadSeq }), + }); + if (!res.ok) { + throw new Error(`已讀回報失敗(${res.status})`); + } + return res.json(); +} + +export type RoomStreamEvent = + | { type: "turn"; seq: number; data: { speakerId: string; speakerLabel: string; content: string; kind: RoomTurnKind } } + | { type: "member"; seq: number; data: { characterId: string; action: "joined" | "left" } } + | { type: "closed"; seq: number; data: { reason: string } }; + +// T10/T20-P2:房間即時推送——React Native 沒有跨平台一致的 EventSource(見 AGENTS.md +// 「Expo HAS CHANGED」提醒,已查證 Expo SDK 57 官方文件:`expo/fetch` 提供 WinterCG 相容的 +// streaming response body,`EventSource` 則未在文件中記載跨平台可用),故改用 `expo/fetch` 的 +// `resp.body.getReader()` 手動解析標準 SSE 分幀(event/id/data,空行斷幀),語意與 apps/web 用 +// 瀏覽器原生 EventSource 消費的是同一個後端端點、同一套事件格式,只是消費端實作不同。 +// 回傳一個 cancel 函式,呼叫者卸載時務必呼叫以中止底層串流讀取。 +export function subscribeRoomStream( + roomId: string, + afterSeq: number, + onEvent: (event: RoomStreamEvent) => void, + onError?: (err: unknown) => void, +): () => void { + let cancelled = false; + const controller = new AbortController(); + + (async () => { + try { + const { fetch: expoFetch } = await import("expo/fetch"); + const resp = await expoFetch(`${API_BASE_URL}/room/${roomId}/stream?afterSeq=${afterSeq}`, { + headers: { Accept: "text/event-stream" }, + signal: controller.signal, + }); + const reader = resp.body?.getReader(); + if (!reader) return; + const decoder = new TextDecoder(); + let buffer = ""; + + while (!cancelled) { + const { done, value } = await reader.read(); + if (done) break; + buffer += decoder.decode(value, { stream: true }); + + let frameBreak = buffer.indexOf("\n\n"); + while (frameBreak !== -1) { + const frame = buffer.slice(0, frameBreak); + buffer = buffer.slice(frameBreak + 2); + + let eventType = "message"; + let id: string | null = null; + const dataLines: string[] = []; + for (const line of frame.split("\n")) { + if (line.startsWith("event:")) eventType = line.slice(6).trim(); + else if (line.startsWith("id:")) id = line.slice(3).trim(); + else if (line.startsWith("data:")) dataLines.push(line.slice(5).trim()); + } + if (eventType !== "ping" && dataLines.length > 0 && id !== null) { + try { + const data = JSON.parse(dataLines.join("\n")); + onEvent({ type: eventType as RoomStreamEvent["type"], seq: Number(id), data } as RoomStreamEvent); + } catch { + // 忽略解析失敗的單一分幀,不中斷整條串流。 + } + } + frameBreak = buffer.indexOf("\n\n"); + } + } + } catch (err) { + if (!cancelled) onError?.(err); + } + })(); + + return () => { + cancelled = true; + controller.abort(); + }; +} + +// T20-P5 人格套用:契約與 apps/api/src/room/possession.controller.ts、apps/web/lib/api.ts 一致。 +export interface PossessionStatus { + possessingCharacterId: string | null; +} + +export async function getPossessionStatus(userId: string): Promise { + const res = await fetch(`${API_BASE_URL}/possession/status?userId=${encodeURIComponent(userId)}`); + if (!res.ok) { + throw new Error(`套用狀態查詢失敗(${res.status})`); + } + return res.json(); +} + +export async function enterPossession(userId: string, characterId: string): Promise { + const res = await fetch(`${API_BASE_URL}/possession/enter`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ userId, characterId }), + }); + if (!res.ok) { + const body = await res.json().catch(() => null); + throw new Error(typeof body?.message === "string" ? body.message : `套用失敗(${res.status})`); + } + return res.json(); +} + +export async function exitPossession(userId: string): Promise { + const res = await fetch(`${API_BASE_URL}/possession/exit`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ userId }), + }); + if (!res.ok) { + throw new Error(`退出套用失敗(${res.status})`); + } + return res.json(); +} + +export async function speakAsPossessed( + roomId: string, + userId: string, + text: string, +): Promise<{ speakers: { characterId: string; text: string; score: number }[] }> { + const res = await fetch(`${API_BASE_URL}/possession/${roomId}/message`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ userId, text }), + }); + if (!res.ok) { + const body = await res.json().catch(() => null); + throw new Error(typeof body?.message === "string" ? body.message : `發話失敗(${res.status})`); + } + return res.json(); +} + +export type RoomInvitationStatus = "PENDING" | "ACCEPTED" | "DECLINED"; + +export interface PendingInvitation { + id: string; + roomId: string; + characterId: string; + invitedByCharacterId: string | null; + status: RoomInvitationStatus; + createdAt: string; +} + +export async function listPendingInvitations(userId: string): Promise { + const res = await fetch(`${API_BASE_URL}/possession/pending-invitations?userId=${encodeURIComponent(userId)}`); + if (!res.ok) { + throw new Error(`待決邀請查詢失敗(${res.status})`); + } + return res.json(); +} + +export async function decideInvitation(invitationId: string, accept: boolean): Promise { + const res = await fetch(`${API_BASE_URL}/possession/invitations/${invitationId}/decide`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ accept }), + }); + if (!res.ok) { + throw new Error(`邀請決定失敗(${res.status})`); + } +} + +export interface PendingLobbyCall { + id: string; + userId: string; + characterId: string; + text: string; + createdAt: string; +} + +export async function listPendingLobbyCalls(userId: string): Promise { + const res = await fetch(`${API_BASE_URL}/possession/pending-calls?userId=${encodeURIComponent(userId)}`); + if (!res.ok) { + throw new Error(`待決呼叫查詢失敗(${res.status})`); + } + return res.json(); +} + +export async function decideLobbyCall(pendingCallId: string, accept: boolean): Promise<{ roomId: string | null }> { + const res = await fetch(`${API_BASE_URL}/possession/lobby-calls/${pendingCallId}/decide`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ accept }), + }); + if (!res.ok) { + throw new Error(`呼叫決定失敗(${res.status})`); + } + return res.json(); +} diff --git a/apps/mobile/lib/id.ts b/apps/mobile/lib/id.ts deleted file mode 100644 index 6d4423f..0000000 --- a/apps/mobile/lib/id.ts +++ /dev/null @@ -1,7 +0,0 @@ -// 部分 Hermes 版本沒有全域 crypto.randomUUID,這裡提供一個不依賴額外套件的簡易後備方案。 -export function generateSessionId(): string { - if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") { - return crypto.randomUUID(); - } - return `session-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`; -} diff --git a/apps/mobile/lib/reduce-motion.ts b/apps/mobile/lib/reduce-motion.ts new file mode 100644 index 0000000..f98c4aa --- /dev/null +++ b/apps/mobile/lib/reduce-motion.ts @@ -0,0 +1,26 @@ +import { useEffect, useState } from "react"; +import { AccessibilityInfo } from "react-native"; + +// Q-4:對應 apps/web 的 `prefers-reduced-motion`,兩處視覺母題動畫(HeartbeatWave/HeartbeatDot) +// 都要在系統開啟「減少動態」時關閉動畫,改為靜態呈現。 +export function useReduceMotion(): boolean { + const [reduceMotion, setReduceMotion] = useState(false); + + useEffect(() => { + let mounted = true; + AccessibilityInfo.isReduceMotionEnabled().then((enabled) => { + if (mounted) { + setReduceMotion(enabled); + } + }); + const subscription = AccessibilityInfo.addEventListener("reduceMotionChanged", (enabled: boolean) => { + setReduceMotion(enabled); + }); + return () => { + mounted = false; + subscription.remove(); + }; + }, []); + + return reduceMotion; +} diff --git a/apps/mobile/lib/unread-context.tsx b/apps/mobile/lib/unread-context.tsx new file mode 100644 index 0000000..ab4fa96 --- /dev/null +++ b/apps/mobile/lib/unread-context.tsx @@ -0,0 +1,44 @@ +import { createContext, useCallback, useContext, useMemo, useState, type ReactNode } from "react"; + +interface UnreadContextValue { + hasUnread: boolean; // 推播觸發的提示 或 任一房間有未讀,兩者只要有一個成立即為 true + markUnread: () => void; // Q-4:收到推播時呼叫 + markRead: () => void; // Q-4:使用者切回聊天分頁時呼叫,只清推播提示,不動各房未讀數 + roomUnreadCounts: Record; // T20-P2:各進行中房間的未讀數(來自大廳聚合查詢) + setRoomUnreadCounts: (counts: Record) => void; + totalRoomUnread: number; +} + +const UnreadContext = createContext(null); + +// Q-4:聊天分頁的未讀/推播提示紅點狀態,由根佈局的推播接收監聽器寫入, +// 由聊天分頁在取得焦點時清除(見 app/(tabs)/index.tsx 的 useFocusEffect)。 +// T20-P2:擴充承接大廳多房未讀——分頁籤紅點現在同時反映「有推播尚未看」與「任一房間有未讀訊息」, +// 兩個來源各自獨立更新,互不覆蓋(推播清除不會把房間未讀數也清空,反之亦然)。 +export function UnreadProvider({ children }: { children: ReactNode }) { + const [pushUnread, setPushUnread] = useState(false); + const [roomUnreadCounts, setRoomUnreadCounts] = useState>({}); + const markUnread = useCallback(() => setPushUnread(true), []); + const markRead = useCallback(() => setPushUnread(false), []); + const totalRoomUnread = useMemo( + () => Object.values(roomUnreadCounts).reduce((sum, count) => sum + count, 0), + [roomUnreadCounts], + ); + const hasUnread = pushUnread || totalRoomUnread > 0; + + return ( + + {children} + + ); +} + +export function useUnread(): UnreadContextValue { + const ctx = useContext(UnreadContext); + if (!ctx) { + throw new Error("useUnread 必須在 UnreadProvider 底下使用"); + } + return ctx; +} diff --git a/apps/mobile/lib/voice-autoplay-settings.ts b/apps/mobile/lib/voice-autoplay-settings.ts new file mode 100644 index 0000000..3e08594 --- /dev/null +++ b/apps/mobile/lib/voice-autoplay-settings.ts @@ -0,0 +1,14 @@ +import AsyncStorage from "@react-native-async-storage/async-storage"; + +const STORAGE_KEY = "kokorone:voice-autoplay-enabled"; + +// T20-P3:自走語音自動播放開關,對應 apps/web 的 lib/voice-autoplay-settings.ts; +// RN 沒有同步的 localStorage,AsyncStorage 一律回傳 Promise,呼叫端需 await。預設開啟。 +export async function isVoiceAutoplayEnabled(): Promise { + const stored = await AsyncStorage.getItem(STORAGE_KEY); + return stored !== "false"; +} + +export async function setVoiceAutoplayEnabled(enabled: boolean): Promise { + await AsyncStorage.setItem(STORAGE_KEY, String(enabled)); +} diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 0b4095d..9737281 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -5,6 +5,8 @@ "dependencies": { "@expo/metro-runtime": "~57.0.9", "@kokorone/shared": "workspace:*", + "@react-native-async-storage/async-storage": "^2.2.0", + "@shopify/react-native-skia": "^2.11.0", "expo": "~57.0.12", "expo-constants": "~57.0.10", "expo-device": "~57.0.1", @@ -17,6 +19,7 @@ "react-native": "0.86.2", "react-native-safe-area-context": "~5.7.0", "react-native-screens": "~4.26.0", + "react-native-svg": "^15.15.5", "react-native-web": "^0.21.2" }, "devDependencies": { diff --git a/apps/mobile/public/canvaskit.wasm b/apps/mobile/public/canvaskit.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f24115631bed316fd04b3fbbe943a179c56dc883 GIT binary patch literal 8076553 zcmagF2S8QX)dqUXJ(pVndlV-#sH2EDEq^A?Bqo{6czf?%M8`>HCcWpMVizlliXA&P zQ0xs0_TIaQV(+~dc;DIw#N^L=@8CUW*R@w)YwvU9y8ZdLJjZeT;-;lSHvc_`AOC%} z@I6Ynp(uV&WxAuHzymeq_uqeui<9eUm#7^b@)HdhA-B{P(3B)MVU()2L=fv*QRMIw zzW)~YR|5zMEJHxP{T4GdtUzm{qOJpjGO+$OTm0smZ}@Kr*Kb(MH`yG+Tt@U;Gy;D@ zn<)F1=6v@W5UeY*URtE~l2@#)umRr@(u7|<5>#Rcy+RvECM~Ei18U!5 zb;d(#BAzk~zxk%FhIzb9$+t9=(ESd`eTRM!M;sDB>G#>%TFmHyD$swmWG&aI<2xWh z7;?nyT2zV8U>K^Hr+W2}J5Q*#eW40@A2O1<&3%1Af(TB;dE(0@Rt8F-@dEwd9+M2VotBr=%^pafb<4ERPyim5yZuVV>eEHBF@ zFf;j<83O^jYKwGto(|02#!WDrT`*aq*huq z_B*tEQ#-59l@S|ANHU*D7f>M^Vl>lWT0>V`V-M7|v`FoRszzRxmS#Mr0=w#f(<-np z%&66Pk~X0SFl>G;ELnim&W6@9hjdb=g-Wu16GW648g*QxwmMgejyl4CQynLmG68h0 z+{oM+IAB({#`m-abeXk~rzAxLF%X)%ma010f|pEJNqX?G-yxoSN1F2;lO+u%s7!r< z17SuS0Byts!W^^7=hPBKG-DOg12&FEL8CD0-(8gq6N9i2fMWz&NGE}z3?B-BCWf_a zHLrXG!K2}fbuxa;JCH`!*%J9Enoq>j8Z401B8DcC5%E)A_mw@%ez%rGGKCmKLz$-3 zyJaFA(3Py2SWrthaF?5ikXK@?C7&@9Xkjv(K3E1n#Ek7f{W>5gW8K#-w2esQ)Y-^->%+2S zOt@&dTG3DmTxR|b&sYAK#$W=|W+o!y*{g|lOP~dVfY_^^TJ?vPvWQa)=0EsUyB={L zj+X>qDptIk%LTOvVXHQ5AcQ8FhMggLbH zusn`gDn(fq4#)~Az)+U(iYv4_;fR@dK&T|@THhdZua-wZ1_ShUEMu)`&@r{D#T0dl zCB!=vL6R&S+-qU765~6DP%9bdt3hmKs@01UWk9M^XbeTIR)sLLE;q#}vK0_t*G4eV z_KK@CLO7zk#q-_xZd_~JbC5-MxYl{1CSoupf{wq#} zmajP_?!V<6xc`omaQ{8GhCuv*6L9|{1Mw$Ljq;ya_g}c*qx@H{IqrXBlmE`f{DVtH z%Rjk>xc`eS^9iR#`B&T@aQ~Fk;QkpK(}gW>V7*3GHZk~SR<)}wb2n}fwf;q3>8~=FzjfpEX#Bf8{~z+>pE8(#$+b`93BQsjd@A>SCiive zM)DR6-ME%`809{b{4mQ8i#){IjcbGneU-IJkWb~>XL7BJTrm_n6|iN zGU#sI8PPfNqkDJ8vmV_U=+EWGp7P_1?o9T-mivAqH-0JCzLNXC?oPHZ{8sM!U3X?v zzn6#np*v&wALYJ3$qW5i?)!^8@~?8=-?}ro|6OkUhurv2`SCA#!Y9nr3BQt|d@4Ua zlOJ8=d4}#xsg3eHll(Bt4~vYhRi0pzf!VurKLhd(x#pDnTyo9boeQGRBiFq0!zTmt z%e6pvt`&v^^Wg*@`t za_u*A-gcHf#>iPFp%dtw4)&6DJf8wFv*BM zrNBulPSgpl0OL;rX8xI12+c57$a)L26+E?xycR7g5kMGtg(wQF1FMK?)|4&L>H?;S z<-AHzV4+k2D`Pqj2s)nU6$+jcRGg&X6e9iv0Tm$6iNdc0Xp|uEXa!9oFN%^{68Kgq zOM-|FPAQr&K}X*Zse-_%K)a|F1f?1%faO4*@s}75GCGPp zmiUv3+eiXd5l0%R!9-q(Wq@mQh4L@J7R!QAK}%RDI7u49^Xe3kq=sBE5Td|%ph46s z1eK2CRN^M|i4eDn7gQQB74#9i6-xC`Ag&VCO8&2Ez=O6c{`Lo;Onm2sHeefsPi0>7 z4p>8KC#qCx6)_P=Vc5^nr=ki#^Bih|n)FP-G73Qwnkm!@F-;H@P9wVD-vyOu=9+86 z&DDZd3GRWlph>}NRDcG$mG3r!>WHm4Ny7_LM^!4kov1K36GbJ&0B-0Z5=kLyc>Y6( zh`1mLEgOIrQb&cL6LpeKA!tNeiNp$4fh|ByfYw7+z+5GOOe`y;ZN?Z<3AD5Xil7FR zf_T*yvKy63i3Ne4^piA5n8;CaO;Ny5HLL>2DhQX>0$>x);178EDW6G(plI|9UaioH zYAg%g+sdo5lpVM6!|-S1()ClQHDOJkj z6&f8x23-&ZQQ4{$*|r9%q0G`~R1&Y~)^P|h=b-Vx2qd8i7%NC8U=mDh5|@LElph)Z zs)P}cY(t*cHiXIxDLR!3i%Wu%Qz#@A*vIJ`30lGdI`xZGv6+%@1aAC{6X7$^4c6+F zq-K0_vXU1@@*jX>SXK#-fk~n`9F%}`H1R)CVK~PrwCNnwL#Y(>pdO$(SQL@3+74o1 zK#E^N#u^=IIPemH1=yN`HUI{XupDW&q|`_l3#%qY1s>oW_r6L&NDDi_br_FM;9J7@ zKU70y^a5NM^^vJUq8*LI8!8i^HFV~&)3#ym`g0M1F z`|setq|)isoRrQ<4K+||5G5q1D)st?ybd}Kt=tKEG_YL6?a#)4(&&INHq^*F%}npi(OJ3h@h#R?g9jp4U2rsH&tCCLIYyFE)~jt zl$X?G-WUQ~R_L@q8lJ@hc|l#tB85+Xp+ZOjS1}#25?E5$1gaoU-9c!n;3Fgtc=t?< z`3RDd#D*G#Wtz?_8=@Kp+xQRi`CoPH_<Y*8Njd>~OV%RrI^qWSDex)0 zpo2QVF_Ps$?O}!x7}$ZRnFR$yr2J3-eZ=E8(~y*)q$V}Nm`-Xq88{xOiuf;;I!yDR z{*Zq2(TLZSJs|!!+ctd>S4P-kQ52|!2S%_F%8$k~o`OM=KBXwGh_&!XzjjBO|6MQ&1BIf{ro;oQkid|$01IA&ph(ygiy$dcOeQ}CY|*a*0ZI)=>Vl=n z)rwNO8ete}n+i<_Mko1iz5oXq_7ZU85DYXa#I95j1nrVci0cZ42B4uNTGCxgH^5Gc zRe(&GAq`SNOCr1uW&;&_^G>%6;Yme%B@G)i;|Zz2MAkPs6a@rvJQA;mO_e?L_# zXvL;ls6EhoQ-J`jIfXa@9|FxlT!CK!mST#Sf;z1&A~x|Abc5l}WM1$Kyp4{VckIwU_@1#&nI(hy#!RKwr2Nr7SUr^#{g zDGfmqM2IN=do(g>3*6t}l3Riyu{gS0U|jUoxcE*RbXBZjhsJVyuV>Y?A1 z{bB)*)2TF2(l_`wG~yeYHz0Kd0*yiim@sO1424F)Y2anSh2%HEJGd`Q*1(I9?@-|f z0$8R1Hl-+qbohr3T78EOO*_C*3ks;~|0+{-Fm~}Q4`qdKhCGlr^PC3xF4)0ogcME* zZA?Ll@=RS77Ljyg0Ew5N<;iLVrw2+9A{G_Y=lJuyDV^i>$RIRGBH;2d4;fEG_)vmQ zI!YYjQngy>y&703q=pJONHSeW6E}s_TEktyY67x(1j1BmM82v_21QT>CD;R=OUjTIDv}Jcp=rsI8gU+8 z4QYiMdo|((Fr^113i(2j(!r*NNCnV}C6P|TauFU=G{}swR;q*@2vknuQ;^$0Xi6Z8 ze4R_B)KZy@@lpyLI-Ct0FfQmAF&X*-@!miw9WqMMtKcS3(MVhq5;*<|a41k_xMAAQ zQOX13MEp%-C<@|lpboVA6B7w=2b&yaOYE7H7)7BH>I|PL!5dO8Op&S)mk!S+y{W&+ zr^8Qi9a3D{u-)IH>hn=u%qRSA2uCGy+h2H5aj+0R?G#h#Xpytf8y} zols2vJJ1cIz(u(V(n_RpYBi@|RB^%|c}`Ce4Eg}cP&7nRh*SbHq(mKBhO9wB{)nYk zSVn+GE0EG7m}=6}K2s`wnW6>7U<55lLZ|E$!BYHA10-R*U;#oN*^NqvOsc)Ey@qQq zitVNLXl;+1sy$L26_+BVAg+V|lo~=IDKCM-!7|~lZ&6C7CtZd1CsSbiiVYwJK^*WR zKoPrS1sola1ml4#GKOT30WF2RpeU*o4Xl-t6d;R!ECi&na|QQ^SoFX#gMY2xR^NK&GP<(7{oe9i^mHs9#{?DKvZuKEMa65vrSt=_$zPu&vRzb|6IX z76JT2u!C-K3P1-=aI9Dby8lb0AjtT`oRBV5!xT6rd}5pAWL^3%RdD9;nsiH}s7yKm zqlF2;9V0DHM@j>Ppk-UnGHz}nXFKmF~U-$$0Rr_xEf*`aDaX3P}DN~ zpdy@Fr+@=M7t$1MLx>OvrD~&54DBL5Sj8!w+Fe03#s*d0ZM5I0ZqCrBH?rNC!;7^rRmG7Mv&ICH;fH zP^u+`o)Zube}QBGGKTa8p+BA1!IzNVQE_O3D3Jlf*#Zds3N$A9a~KGGFIES)M6MaO z5lB7YPfSXZR7vbY)=p^* zZk+bVZ@#H&^`p-Q2m^@(#mB8${ru-38K$fK3@!-k&_!p12ttw~P4ki1tdJLn^1|QA z^?t@HbA>k>d9VmVI?zYNKxpNaQ+R}brCNhj5{ytuA9eX(7zb=yF$hQkBh5Rlc&|^= zDzr*EL{kW@5KzGzSdAnN7T)c}cjWno4I4C@!Y2=bb#W!@lr$*QdFwxybk}8HEPw@O0b$X<4|N|DtRCd zV3F}@wIhI8!*8W5#V-{jq3o2fP$(eRBB+o}!h~U#kRf~$D!c|B6%I|4Ocgi+$=+HL z?5#8m(Uf|mXgcQe-@o}kO6On4KtANipj3iXfDPhXsvnO;nl19`pN|#B z3BS^Opuu(swhORtb8k!Ig|~2^1}>zqlnL$w+Z`H@WsvLY5H4x+EH`PkWw2=<5ekG z1)FXxLYWj25oL;iaM>6pr=~3v^j1iI3;c!Ak%xskQmUfn(vWnCDd|E>Izp(snxr;S zaIMI}K|VNXfTMvQ7L-~f=yewo0XineKj;~|=Ts|RB9ZU(>CVcF8Dy4uH#aI-^g89XR1!s zI29*IxEcdKAq@Y3eFbgAC>Mi%AuEFT#nf4lG=P$)mc#~R++Y)V1wy=LzuxC~2z<&%S##(s30X*15_zZIO%%8Ay`zNE}kKjMxnbR>CYXS=#+TaNX zN=sq9D0y%yA$i7wR@gUjj;!>DlZ2Ld)xq=Kp&>*8c9g$FvPgP^2!#_DLJy}Ca0NJM z1enS23dDaMcBraG%t;`pG?TPJ19TeXzkXqpu2#M&iOrfR^;$~eh-Z{0$ReZ@By9dN z{wPV>Q7~0{L-6kx_A7LOnSxde$cX>1E|Mo$NYr2wHA9L1`vs$>!FZ@y36i9@?2@*7o0F$DzD(e5a zFzkZk-h+~h%@ORhoL;Zc|2uvFfF3=zjTAxH+E6CuG|63%T{ef$L3Ym}VM84k-SM&j zZ=PUVBv$k>eFyWvTRIu5XO0q!GO$dzzz~YXERQvqN%)I%7*uK9I6I#0;1c ztP(+rn90V}-DLdW5Gk_+vG5Dz{3#rfk>f{u1Zo4ZZwNYEBKHQYAFf%F-ayEr$d3Y@ z<47DbraB41>EL*g>a-;JQw#*W|Gx`{LU{@>fm)K!Aju;Gr41ZqtIP~)7r~+pkvA!k zYT$GO3_=2w&KhtWhTRyN0SF0G?S*q6kVA9<5sr?0=y;kq!%zf+5HT1hF;zyC+zN2V zF_Ee{rL{O$r7W?z*c=`e7uURba}Woeqd-X}PreL)(7`$;|Hl)YgiJ7ud<1+WX(KTY z+CdtEqi`(Vl8IACwh4zrr+tWK&`=_u^b#Qrb7%{PgJd3~!EY7mE0l@UilL8!4u?f- zysXU78uIeAGN~W_;84lTSOrkA$7S7YyA3>(kO+OORR0i)(vqc{08Qi(eQGU^9grZ> zvZT?pAAp_Edq8+*Y**>H2+oF6v`Im7q0uI{;Zu?k$dRkUzp`mahk*@1fE~2I=G6Z~ z!T^K7Rd5t$jkrK(QVeCL5I_^&TJ!PGIKI)ljNU9d7NC3w48my@y;>)`hQC7`dAU|x)3+=Zq*ug6g(O#%O@hC?VMgN!|3G6BOmCQf^ii?dc%M*s#CxsPJ0fT=PV zY^m9FvTgtY+I0X$oF6gk#WaQitzNqrQVw8%xj2l$0zi@wZ&-U#wo9p$gnKX&i>)N&o6rt4B=c9vB8T5yZL?Jl=kiU&lzGLA%7JDquu>VyPz% zc~Io=4iXL6u0g)|BNj8MK*+EO{LxerKYsA)gbiMvU<&H6cqk$m31froU?a4Aodhrv z)q3fpiZ}s)C#BPQc02+tHP z*IJLfmCTxUm2_-I2rB*s?FJJXfq4YE2)$evcy7R=q?dr>_aT`U*hx7Z&eCW_I6!0- z*x)kmQ&P@sm;5}BlL#RBz6Q!c$Wk8==7sm+zbQxNKZLdsT=G(EWhN^yi*_%R;^Tb@ zFd&g)Anrh$GHXDiAb=5c$o&<9V{^VxP$UrkNKT??g86bSup?>^l2{eR(q^Upz zRL~(HLyMGz(1ZI%YD&2?5g}jjddy*KKA%F&(Mm~ab zZlzMKP1e)4fKL4sN({wD9997h;`sL);yj)f1QSxQZAY?C5EUu3Z{e^Q>SUN;6arZ) zLN?J{$2h1vy$3_?NlW8X8F~VF1W&n%rTzk5bf8s9XEJC2rkF;FJzY3AA_Y#R1)#>X zFTi3LNpeL6!|Q|!juQY}q*x?C+-h5>l`aUCR-s7CPa&k}nk_#tjXW);w`f5=5lRHg zD3_HpYf*d`4QPL#Y#(Y)aSzER&;U(8_zAnDAJC;^ce;K4s`P_quZpji03XQ|9rEBH zMQBE27cfg z5(UzHytqS6_!TbJM}z31Ib=0ZPK0&UY;iLt)po*hu$fQ5U3c8T=BK87BM z1<)7>0~cPP&?LDZM{D?~=@m4bZt1WOMV(>~7F7#s9hG?g=hRG_<32pT4I!7zkb>S~ z7&S3HK@0?^z%(Q-%!R<|!66`rLGpr#fT6Nyhq012qZzD4E1WfgA7ywrWW$#}Ko^b( zZ(jf((-80RRR+>hyzW#|28cs=JfxPQlq%wr9$Fqml7qn65Ce%N0_`H` ze37|7d>u}8G~>eq+_4^#B$~~R@~|e#w9zLz(2Ggv1M3MK^`aG;fC80pv6*#G(obx! z-XU`F@`FqQ>WtkB4rg$R3m~Fq4i1^<9e_BM#D}kF`ttl-21%SIDCU745X7$O@}p5Y z*G49W7cmyx#dbrSL2nSTp<+&+{2plzIRe5G=9D4}9e20R?Z$SIR9PjZlKcP-5X6~` zCL)a@Gy4NgKpBAWLo4)(m2hxH{)mp6n1`VkU(jFxpNh>{?e&XyNdSa}8aqJcEF9co zS*5xN3P^rFlY#(tv9npsD`7knc`s(9rYf_32)5(K4E%Q5gDirU~ku;WLD~q)&OI%#~@}u@2zRzq1Urse3iIMTq#+FhIg&ya) zf_#`u_h$7){=XJq8;f(`x=Wb<+UV4})}$n^zWCaJkLp{y*B4(KV5@JfJ!qx|O?_+o zpVgP+^~F~sboFgr>WfAHeTf0DHNRe-^BS%EYYVJxx4t&7zA;)~ zd<|3SHOAEsP}Ub;TerS3rLI^{esWz?Qqrs5e=F)*y&5t1HF`^5Tc95A`bOe3({W@! zr0Vj8FTnmkFR@j9H>FXv*K5aeIK-&C=oqW^g1<$I4#xpwT7bh;ygH|%3=Q9B{)qq4 zkA8#$GYTkVhPa6$?Z$XJE?7r1WC+b#0gO^TkCNy`ur9ba4X0JX=EQzDa*((WktJd7 zKY1~p*^h4|n3&VR23bN#A*aT_Pi9WZJo~|T*>`2+5Gg(QEwIII7#~43#2Gz~#c-I3 zi8>?_z$Zob{>Q&fY1lebhi?azt?{ygw%f2^fm!f7L=4ehLfAU^R>YSiR=g{erm2?N1OZndX?=-(7cf1rC2CHb)cx%o2<-x3o zPtovc8@_^3;<&IgVW#8;%6^`L19$=Qd3}GJEDeO?2PFv4k}wmSVifgy#D!nOvlc^I z`05OrqU8K*3WqOQIjJq^!j~Buyeg7U#Aq-b4k8xeV2)6xfQ^4(2X1s=4+-OI6eQma0fEZM zMUo-DH$Qz7y(#!s1e>)KzVmNoHN{>^V8Z~Dtb>vioI|l2$w^B^96sVJZg38{4R)Al z1j3jI4iPQ*T!-R%DyPF6eLgjlj1j}(G30->ET_E|yFeSj)L-;DE^-<4>tP8Z@5WLv z4_s{no!hkyKmiq<)pDV;TG^y+7$C+wl>N#e$vTzEV158eXZ-~uFy z1yQ0|Pj3B2 zoDiuvEa8hGUU*GnGL#LO6*x+JSo|=BPHu4201t-}j_fJrqEjKfKOy$; z3n6xLV6cVPdP!gm7$9?ayG9$^4jt%R3jhF(YtVpONm(?p4VWn*5i3Sf&ei(vjfa*c^;;*BTDRN(LfqS zM^kXdD(Nlpr*+qAel^Wzt}0ED#Q%X`?pyAYl6byXYOh}S?oRlg|763GhnyBqPMh>& zwea^Ifb@?Z+_JBQfA-*(el7f~2U6@$(187Y5AGH(eAx3kOq242z0$s4UQ})R#Rl`X)a5_FES>B;xAUaV^}W41 z7fM@OENE0HZT#u2k1whgTh^p6wQNg$_|b-s>PJ0(>$!4Hr}K((ZN*Op{AB%yH-3Cs zx~duQ*5a>UNY}oa|JBJaSATi)H`ji&>DPmQJ*?yIFUEfHpl6A+0>9#(FQooGw|_qH z^MUUd_t@9{dCtt7+?-1N(r%Udn(Q;#N3%yZ9NuwmcAxALX`QMjX>ixPcUCH|Ce9=( z^~Vx5N&6GSb>)ebiPFTJ#EiuB#FRu~Vq9WOVob*YZ;eh|mWC&0qzp<-O%zJi@yGGJ zj<@31;(L>}rLI!cB#lj6iO*3KN|)jn;}_yHQm(hGicjdcC#f=C5wEB1MEr1kPkd{9 zO?+4TK@CQ^9>29Dp6}Y(eqp>MJ~uuk{;z2c%OK$culN2R;hmxTafiQR*>>2b}x24cCX2`*yY%nSfTU;7?ta5 zk_zHAN&R#+N!weFiC<{)yvebw6Is{P{dKGK+hX_Bb=?4X?JLF>206ZTmSLyo)M<=b)-;q}7hog2vT%}(D?hH$*NgAHAJ!v*(^$XtN zW$xeY&?neC*eiHjtO-;HUIyy%coI0?{&wJ2;AY@R`x}AlfvbU&?Joz;1darD2FkVT z1FHj@{L2HEJ1h>|_Ll}m`WFU{yNd%O+;akjQc<9^!<0aYG*nqAJ#>x>OmOB0DjXvN zvjYVwcf2D4zy_oG2QEv`{EK}vQjYp=`Hu$9`%n7^29Np=_{+8X{rmj8{X6}6?`-$K zkT&|)`1gFV+`k0nMg9`0)W6d;vf%>%!1p(1&-Rz}nBp%;+)ut5AK@?Ua6GM08XX_t z@8hrbJ@H+Z?)VC&8?j57ccLZXivVwd`o>xe2aYboS5&M>MH=GLTQ+ z*FDW$;Lhuq=f0>Kj^8kMVavhpI-Be5e&V|6I`67*9dzw*ZE)4K@0A8MD07uGUgDbX zDoB~`T97sVRo~qX!(Er9y?|fseBiw5ta2WAUR14Yu-Cc8xyHHJxvl+lCt+Ck8}A%} zwmbZ^22&dl*3>?{$xFuz$3w>rM}c_7cEB;mJ}_fZ`!YwBkSDB5S_bdBPb?EQbjcG2 zIjZgR+UE&3?bqxV?G^Sx_VbE9_Co1}?Ou~7wtKegwq5pul#TXjEic>7*-qIG*tXdU zr4{xv+dBJh`yTsZ+trL>+l3~J>@#iW6~|jl$dG>pwh^{LwsP&Tulv|uSPP{g4KAv- zr9QSkvfj7euvS@5Soc{AQcA=U3BTIEGHbC=EY$OSP=k5aS=K^pf%WyaVb%fG%hLHq z+fw^mWmyr$)s{Pa9raXy^je)bQ^zfOUbmdJ9I@=OY`~bhcA87$F10(~ZhmchUEAwp zsJ}E*o>!i+z+NEEx6iW|<3rZzmT8tkJf~U?wtHs2XI|9qx|!OKo41(Pnaj*;%qz^* z{33ISx!63%JgnU)b6@iU(=5|-(*skDX_9HA>8k0BX}xKu>9A?IX^3gLX_;w|sjo@) zA1{qBj7u_~881sujVszdG2S!wYjNIq(zxGPB5gNrGnN}y8teRgsd27xHbzdv$jQcu z7%|RxJZrddsBy4yfU&Rfx#6zilHs)Bh+&sugJFeXfnkcY zpDs^6tK&3r?saL@mFK68$SiI>{O6NfpY1%e_1(@#+HO!!Q|)I!F9^1K~^O(-VIuGeQpmWX7N?R4Tn%io2t6e|X@q?{D*!+V!I5*R;re8_F zkbW-xOnOE7$@IGZ2|peA)7+o-`st)}l4gE#esXDgNqXMLgFasP@wgwXPJj8)%8#pr z7a#RW8k;^@Qz{+%Xx_(1Kib$y9(%vj%}!T4o$K`EttW4t>~yfx@Q?C@ot>_{wXjp4 zq{*7uovJ%c?^K6TexrK$r$4OtaNG|F{(%qgeV8Zg_^=NCmJcs~xbDMgUr+ve;@1weO2vU!3oGwr8a@_=^Ew^!uW^=l!0?vTyXP=y{@Nm2kZ0v7U#- z10Njjx%Y#OJg{Q)#}YX z*7jJ@V}6gD?~UluAN3dAtAqmaZucwQFLgWLt)kntZWD6G=8Vc2kuyAJU{3#>``xO$ zJ?qvx=VrG&_@O*u=zDZO#%f2pP0ZQReV@2DKCyd#_ml4(k3Y+Km~}hnSo})P#hg50 zz^70DRh@k$`(pO_?8@xZ*~_w*W=~4r@&^4C2@{eI zzFU#KK4lZiCxKAe3h`(XBg>^<27-|hWw`5U{kcV_R%-kx2aUB+5wXBWX^RrAxb z3$w}gCuNtvQ6a5S(qD;~-{^GL6J3X7=V#|;_s)LN^+?x4U2k`N*!61H3ti83-Q9I# z*Hv9_Y8G}a>e{bsP2ytWLgIYlT%sy*HgT_Ie%C==?&CiT$G9uvl6ot!*o?b3D%jHSeRIl zn4c(SQ1igOGSZorGZQ7^dTCn6X^D}E5sAFSs6>8Za$-Vad}2~!VxkbEmPv&|A;uPn zLptIwF(8qf=$q)1=%479=$#mtcoBade;6N}=#{96zl`6H--$noKZ@Ur4@*3V-;Upn zUu$`}<)xMvTV7~+rRC7Xv-neF#(BcDj>{y%pn%1o3Phv99Vs5&jOR98qa56Eh%UG3 zjrjF=g+zTNVuh63w3A zGGJaF-w9ycL+hsB3twIbmP-U{tV>XWoC zt4yFgBTp#H8Wy-JZ^drL9>i|PN~Qa;yRkbl z!uWiHLZL)+HFhPICtQkMj9rMGkDZHE#m>emW2a*ku~V^=u@kZ5v174n_0iao*x}fr z*g=#J#P-MbF$j~gCIRQ2u^q8$etT?dY-6lEwjs7Iwmw!CTN7IyTNzss8=JK(wlubc zjb9vF6f2D_h?T@fXN}6r&&m@qG$A-m*#)iZO#|Fi6V*_LT zWBp=%V|`-1W4&TE(dy{S=!@vH=+o$v=;P?4=)>rP=>6!u=-ue8=*{Sj==JEe=+)?z z=;i38=*8%T==tcmXjSxV^h~redOBJWJrz9>Jsv$4JsLd{Jsdq0Js3R@-5=c>-4op% z-4)##-4Wd$-4@*%-4fjt-54#8Ziudru8R`4*G9{tYoe>8E2Ar-%cIMpOQTDoi=%_H z7DY>=3!){_L0QGo`O$gNxzRb%+0mlt%;=2h^yswc)aaCGVRUkIQgmW;d~{rNY_uRc zCOSGgDw-c1866QF9vv3V%^DgV5*-{J6wQqej1GwQjrNK5j`oVyM5-e%BQGM)BhMmF zB99}FA`c@EBKITrB6lNqBDW(qBR3+~BiABVBUd7qBbOoH7IL)WLsow zWJ_doWK(2gq&%`AvOcmdvNlo{SshswSs7UoSsqyySsGaqSsYmuSr}OmDTx$E=11m5 z=0@g3W=D!5vm!GiGa}O?(;`zNQzC_t$&pEs@sV+nv5|tvn8@hJs7QWfWMo8Scw|^) zXk7X);Zxz0;p5?B;iKUr z;ltrW;e+7=;r-!#;XUDjS-Zo#!aKt|!rQ~!!dt^z!kfbz!{y-(;q~El;kDti@S5=I z@T%~N@bd7o@Y3*-@Z#{IaA|m9ctLo6cwTsJcushBxF|d;JTp8aJUu)$JSAKho*bSO zo*14G9v>bT9vdDL9vvPP&JT|aj|k_5hlhuShlU4-2ZeLP1H%Kt{lopjeZzgiy~8!3 z>d?#3i_r7Xv(VGflhEVPqtJuU{m{M8-O!!T?a-~z&Crd|_0ZMOmC)tTrO?IDh0yuX zxlmQ;Y^XAHI#dxl6*?K}lhr5dMCf?vSg3c_kq2WoWuY~p)uC0Pm7x`(<)LMvC85QkMWNEr!q9?HNvJq9 zKQu2iCp0@$6q*&98JZEA9-0=K8k!QC9GVoG7@80o9~u`L8!8Bm35^crhen1*gz`ee zL&HKtLqkG?LxVyCLjywnL;XU1Lw!QML%l*Z!Rp|P;Pc?K;M3rf;N#$<;KSg9;Qip; z;GN*@;H}`z;Emw*;I-h@;FaK|;KksD;Q8RWU{&yJ@Jz5Wcsh70crth*cszJ4cr^qrk&Jk#M2I{lLAz-N2o|o+cE1s`+byz3ullDGSif@=D-R;9}rH;C$d*;B25O za6E7+pSQn@aoDNh3 zP6bW|P6W0E)&xq#Re>^LONZVqR|ZxDmIamumIM|B#%9e6%nd9EEbmzom>(d2HY+eQ zKv~!tWi>w|FrAgB1*Qfbr;QC11||n41fHfnNt+ay7#JTY2#g7g4vY$5?;98%IODJM z7j@Vt-tph`-|!a-*ZtT0SN)g$SNuZ*Ljr>W{Q`Xh0|NsBy#u*{m;UGeNB+TqUV$2a zwf~|2uK$VuvH!mRfxl1SssEn;lK-Org8!Vq%751X!hhU<%zwmx*nh}>!hg_T;Xma+ z>7U$TuYZq!jq+yNF8{a=V>*oPP}!ic<%kZ|?ejW}>afGV*?%o9zr)B5I~tVx*ZbG` z*ZRx+Lpu!Vu)$xVsS+MJH+lwkSnMZ?SNm7_SNd1@m-!d^S3(YDLW#fFKi@ykUn0)+ z&+(7WAL1X3`yhX=|5)0ov|j!i-+>Qa`sy;>=e{E0g^yx>p76}~)c4r; z$oJ6qz<1ww&$q1OUEhUvw|%#KH+}oW8@}tlD&eZ{itjR>7ulR^zDvGizQexrzH`1R z-&tRYrqXxXcglCdcgT0fSK+(h+bJIREf+6j63qvFl#3kj?f32T?e*>P?e^{R?eJYo z+wR-ut5I$BZSigPoy%PB+t{GI!D;nI-v(c~Z=G+gugtgFx5~GnL8)({Z-KAGSL~bT zo9&zHo8z12o8p`9EAq|q&GgOi75XOoM*2qh@_dtg6MbWRqkW@%6MXr;@xF1svA*HH zp}rx$!M;JhT;D(+UW^*j|GvH&FWJPVw3prj{O32yrOGHH!ru$; zbM%2v-ZJ4Se(RFT*dC%xc;fkGD@!Z*R4ynt$PW?kNz5>Gp}wJP$ngJ@-6!Jx@JP zJWJ9ZdLDUhdh!ICQ|UR4QL{3yc&dcUo=ct!p7Wk_o+{4`&sooHPf_MA&sEQL&l%4( z&neGw&oR$Y&k@f_&y}}Mcn)~>c@BB@diHpBdvGooAD0t*6Yh*;At`g2qt3ohQu7T;*8}EUCQQv&^&7v)Hr9Q|ejhS>RdXDe)}z z%=66k6l4};PVkKPknZgh=Xi=drP3_a@-xeXah^iYbH`Y$RE0je=Ls`C(>zl>Q#{i> zGdz<$&m40V)05Yv9_>8FbFbCG&X3)PJC6Xhr#g>rUDCO@bDn2fa)GC>r?=;Ydw{1% z80;D3$@P>8eUgTIMgnd%&J_oGmPx}rL(#fI^T0jIlke&8>F4R=>E)?$SG!-jpSz#A z^D>{fpStIz%}smce(0VDohTFTyYn+Isb98w(P~EL>75_*xA~Lt7ksYrj(b7pyZnHz zPZTFxK5sQ8WopX6w1u6Y@YVc1#{*ZFwo`JHEWp4E9y+HLoB_bvBL_YHTEa1Fmg;i7wk`>Okj`?C9_`-J^|ptT??Y`hX=RWV=z3;V+DgPV$^!Aa3%qlkXn)mp#dXBG(MpB&;&QHO@5|P$#+y zU8L`0LCF-?NY`lB2v?qKm}{tOjH>|srP4lekSo_U&^5r--*vvjVAl}WWKCZ{=;P|` zDiHg*`XtpjtNG{7XU<-(7tW{7VY-*j!_s}{J?CBL9p}&vPn?gPN1K#rt~lu=^Rn}j z^P2Ov^QIFX!Fk8ohO{foEOzcokyI9orjzU zod=xzo%@`h^uH#;|CY`JrTb3NMDIoCSNoU5Iy(6-XK z!nxeJ%(>KAB`k3+a+W$5qIH3@#98c|@0{nH>zw19?JQz&XE|p&XE>(;!c^y&v?AR&b|y@ zA7^i8FK12TQmIO)ag0eDnKscgDsz@&Vf)+mIqmN#$-199o;a>Mt~u^FZaZ!{ZaS_y z&O6RIsvKt>XB?G|(~eV)la3RPoY8ddE7)CC6IF8pmqKD#uF43deHCGRIQK6309TS>Ald6~|@A zMaKolBFAD!sbis|#8K>6;F#&4Om(hfhGR%tkz1cQ|yKI$@WS1iS`{C6EJ$beVl!){Yr}h`xyIZ`=*Rh_I&$D`v{E9 z!*4j|4zUlm53>)o53u*Q=h_F_*JhMu^t1Q1SKH3C=mie+w!gI1*j8t(&L|R|+m0kZ zv#rWlh4PsePf>e}AF^rNL-u@NyN~BxR=#7q4G6bvm5Q6TWf@B|ZrF%F*HFJ|Tb!{d zro+cDcw+Y#Gg+acRQ+kV?V+g{rq z+iu$~+fLgK+jiSl+ZNkq+a}vaTe)q6ZM|)sZLMvMZMAKcZKZ96ZMkikZK-XEZIP|i zw$Qe~R$`lPn`fJAn`4`8E3(b95sj6$)3zxYg&F-7B#VCf8Mf)RtI(p`$}(Y624ObM zHpMpCHq|!KHo-RDHpw>c!;-n53GHX zPB*5vd8ZqnZhX&r*NQicnmg958Fe`zo&469|8J>MF(_lNHaFw8^_KOf^}6+%^{VxX z^|JMn^`iBH^}O|*^{n-bwbFXpT46n9J!#$DVn9a!j7r6E>!6Hd)}z+F+T&?QtcR^t z!Xflk2?wom{{icMV49mz(U@@EYu$qpyU>rac6W>2=-Y+46^(aVcUY;tA7Jj)-qdWf zZnbW)Znkd1i1pTW*0t6(m{}#PwywhSCiZ39tt*KK@Oo4u`K+)mw=T2pY_Zh31Y;Ik z7gXonxJ8onf79 zoeC~avK9&xt<$a3tP`x`t>dg?ty3^^3`Sl_8)Y30-s2sTb)uc?UXFqF=g`(9<%L_{{Yj5k4wC9#*mZz4B>L-@RmWP%a@aBQ#zGY>fiu zEn6&`vEnAnn6!M z&a_)#DX|peInT08nroSDDYDFAc+CVoGb~dq$O0`DI4iG$v}kWe?*JxSCRrw04mX}) zk#pocVU#7`GSV{MGTKsL8EYA5*^8A%079PSh;o=^D4>*xxt2YRhgfr60qiucZ%r_O^`GA8t8TKUV+3{M>xfeAj%~e8_yze8BwJ{K&k|{LsADyvMxT zysX_3^U(Kp;hphO^D%RU`IPyA`M&v%`KI}r`KozQi(BT!?Jk(Bg!ATe<|^}9^BHrc z`L?;*e8PO$e93&#+{;p9erdj9erkSVE)#Z|Pn&m`x3f3U+ss?d6e~8H7qr`imi71* z3meVlW}VHn!`x9i_d z-q93@LxCB+f2oiPg?{G2=0Rr4^zk-99AfUZCYizZ>lhzGMzL%GCgX0!t~H|*L2%-({$Z*+;q%z#dOJZ)O5u3%yh`~ z)O66aUVFgw#PrxyEL=@`Y1(f(Z>lm?nx3cbGwn6qGu<)WGTks;Gwm_$HeEJdH0?6& zFl{$&Gi^0pFl{kyHf=I(G`%pDo6ecenogTGn5s?dOsh3A|JRzzOeC*0rlqDOrp2a3 zrc%>FQ;DhAG~YDOG}ko8G}}~U%5O2#bg}Ko7BfuMe3ektfiyWE*c1!XO;b&UrirHU zrg5gRrUKJ6$S+SAV;XH5Wtw7|Y?@%oGZA-&nFgDl8xObaW$KUmE!8bmogeOJ8jvLO zo8a9vZpyf8yluR0yllK`ykop&ykWd(ykI}{+u98vZ+_CecI!wbU`!!yHU!y~jk zG(0e@O1fvbW4LdSHT||>FYMu(;fCR+;g;b###}XAF`PG48D=QY87>+w8!j07VO8v# z3?;^e#uD+Q;RO1Q8!8PIhBJm!=tWLv=-akW+ZoEkhNFOc$goVpsh44ma#hk^!#?12 z0ImB0dyiqaVVhyAVT)n2VUuCIVI$gh8g>BQQbQTWEHNxLtTC)ceU)Loq1>?2u-woK zaF-d@8rGqNuTc!xlNxEYYQEI45Y&_yiVgD(^9(QEKBAm!n1hzthM9&LhUu(jnqjJ8 zykVSSO3R6c35G($WWyvtpi?c`kB&7I7)BdL8HmDs!$`vjL!RN;+t1z}ZWv}5Y8Y%7 zWXLu2GSqab?$X=P&(PP<2N(}D^f!#v-|h1M5ceL?QC(TuXx&>?lAt6g4BZH0o2vqP zu*Ypfi^}mG$4rTOe{0IU@uD5k(eJfXF%LjK~?0 zlaSuG&#e;3KzDnd-};Sp?>Xn5u+QH6?7h!Ep)R+(>$&5(?Ro5Z;JM{_;(6q`>AB&# z?z!f7%RGxb3q12ZL$gP1ndq6|8IQbdwc0b}FwaoW=FUSr zgFV-r13d#gMcMs5{XE5O`nB2Axv!_lQ;70opqfEv~xW-*F7f{E_cs#k8{rFM>=P_M>$73$2!M2XSt`l zr@2erGu&nFspwOQdy0FEd$fC$d$N0ydv52E?h)?c?uqUR?qc^a_fYp>_jva>q+e4G zat}oQ0q*{I_H*}j_i`7y8(j6SnVp}zp1Gd7`nc;{FI`1|Z!kQQGdlNnKXN^EJ#h`r z9xH$Bf)B)1#ou>5a2;%Su-#qP9oKEwE!Ry~S?3$B>#pgYuez?d$}%pyrggsLx~9D7 zx`0>>V&@P$>pFw-M_s2~CtaspCtOEdhh2wU2VDnT`(687dtHOt>~ZaO?Q-pO?QrdD zx81e3-8R?q7K7Ssb!~A?>b%jlr`>9*!4RrN)^>g)gZR|`q8{m53?BgnO^>+1g6}lRn_0E^h$`*q=*Eyd%pE;j8pEw^o zA33jKAH_rG1Lu9`J!h@+uJexbwzIg+E$2<=4d-=dIe*ppxYIG`*v<#rJ?r$e(-r4s z=OyPw=LP5T7B$ZE&U4PPjI+)&&eN#pQKwVR2c7PBI_cck?u2u1yW_|+s7-CBqsVi_ zdDwXfdG2;P=%jiMIQKjEIrlpEAkS{+F6U0<+2P#o+{WtJ>fGYo?A+ws=-l9}cCJUB zbd=3MGr;#`a#UhlNXxe)a&a8@|yvo_~B_p~c> zUh6d1ImbEMIm=n@oXPUda87qlbCx=%I!l~WoRg7vl5?VSyt8+k3C{DKE_A|9CFgJ_ z(XH57&kb`9W#J(R4|Wb>;eiMbaQ0{6e$KwmGo5H`^>G$Cdpmof)l;2Lb$Tg26Q7Dt z#6oAC_(FUx){70|W3iks%XlPK$RCQ38{&QOo>(j174L|*#arS{@rHP~)8S6n#cSeK z@rrm^yo6jA#S3DMcwRgwZti?mJR_bKiy@s(i6_P5;xX|k>N+7FLB7+$Puwf+5sUfV;x2KgxI^47ZWFhPTg1)c&Q93r*J+cuQQRO_r(#RmZR@l~TrI+; z7uSpH#42$nB*F@@ieD+N64!QGE>?=m#HHdAak02al*Z{o5ncu4s1O&3^TfI09K>gf zvqZvMxj0jtA(n~L#c5($=Tfn<#q`co#S(FfI9Z$|P827IK_94n3yM~K4#_YiTg zI7l2VjueZ)H?1u?l>Mh9y%U4?mO-|mUnvOxb3*=fG@{!%W=bT({bH# z#&N}Q*>TBn(Q(01<2dg)=Q!&)?KtH)iS|x727v>PI;!|%j^mDDosKvTI}SMxIu1CB z+w6Djb?kBMcIiy4#!r<7RP4CM#nNo4Zq2;!BOp4?^x$p>!@<9aIAK$ zajbHzbS!sNIv#gg>X_8IoL}Tv=vd&WaLfn9^BiRvbJ2r22+wwuIi@?NIc7R$I7%H; z9p#Q$j{c^8roN^=rrw>VI3~2~-Khl6BGb!`lO2;B6VcuT$9Ts$$5_W0N0-Z4zwcbu z@~ZNGRw)0EKJWjJXB~f6q5SU^N^DC1*U^rD`QPi5|E)s#zg<=S^Me-uRHyuHh4Sk< z14si#$1KgEQ_9M0rHC8D1a(lR9$8P+t#!hYrclnd; z+%|42w}m^Kvl-tvaT~b}T%Y%=x%H@R9k-UN;?{7(vR8AfxRu-rZaG(pSeD)A~l$*+xu&Y-m zv0Cbs6S)c8cy1gwmK(#3=0y^Ucz*Bz5Su*rM=Ehxn9_Bcf4f3Z@*{1W4~yxwcoX0us^mx zv_G@ov|qPhv0t`dwLi6wl|QjRx8Jfqu-~>nvfr>@v)}4?vm^cW`|7m4#(v&@*53cC z0biZ5pR*sbAGDvcpR^ygAF-dXAGaT~AGIH_@3;5KyV7x=eY$^+eX_4+g4kpvQk-XTW?!uTWhPb?XqpR zZL#gNt+B1Pt+K7OZL?8rOKgj6FLD>zcE0~2_eJhP+X5Tpv2B^{OzTS9QuGiK+BT2X zKiBp=ceZVgZF$G#9cS5|=9cs2NS|RVvrV_{;Ah${2-9p!jHR~Oe7&&YlXJ~C8tYUI z+{k8&jmtVtwUyYW*fwjoXouPc+Kw1%4D&k9Y*EEOZF{S2y|B(WBIiJ}4aO<07IduW zSoQIF!vkTBabd^R#`VUv#wueiH`zAHR&3iRpJ*Fro6>x&ZG>&OZGvsQZM1EqZIo>c z;5cm>r2ZEO9}tn^33wo^2GAkQfs+nxoCN0d1!fHxo^2=S&@6!a>sHTd2U&5T5edb zTdrBITCP|wTgo&SEH#$tn)8-(ma~>KmeZC~mXnqfmgAOVmZO#n$ScY4QEyFBBEki7WErTor(YyYZewGQW z+<414%UH`8lpAdsW$A0_V=1!qwiIa!Ee+;+b8pQ{bDeo%?hA8~=DGQq`6*JKm>-!R znje^ZSst73nQP7W&9}@q%{R=~%_aOb^Hp<&{C?icybA1`y=$(^yJNm>ev$V)?^)gz z^JR0TxhAhB?=1ceF%LFRv952uLfy+eR(?LW!F0$vtmDDf13Io#A8b9a<1@`(>z>wo zto5dsraif9`2*Jd*1`Pd)_u)=%thwj=4Ym-rX}XZ=0)a(=1b-?c?--H=K1D%=DFrM z=Go?1=5q5)^9*yDdAfOC>uKgv^Hg(*d5U?md6Id8dAxa?d8~Pi`FP%F^Cqd4BGxtU>01=Kkh>=8NVF<{I;P^EvZb^BMDL^C|O5^9l2D^D*;L^AYo5^C9y= z^8xdI^FH%l^B(hV^DgsF^VPf^=I!Qf=B)^AF>f|+GH)!!RnP%rcG~G1aFiF^ZV5-ZzZ@OoauvcrkYr1W^ zWx8UzY`SE+Xu4opU^;C&ZaQWUIscDI6v1yU1+Eit_ZUU`LS4}mh^QLpAv!*kqGR-N|Nz)0_cGEV~!R%?d zTTNR`n@yWcTk}eDXQ<268%-Nb`|{SC)|u9t)|h6sUTs=ss?k)KrkSw+#nk7MQq!jP zL#S#KHqiy-bCs24lUkH`;$@tmmE@pBRT` zzc4ORJ~!_D{bOS}f73WTcVgZ{;{)S-_`&bvT*^J;ggkh-b8C%vjdzf`NO>Fi$LHN* zId2%RBW+6aYsMOWeBOk-tHvwF%f?H_p)HEB6Xc@tg0aSU-gu71hi0EOo-v*_o-&>^ zo-iIqi6h3t#zV$~#sjDWdjgF6jMRg@fNYO(Hw*7Vc&Bj(3vXw+wi&mw*cM~o+|9)VbpjyAp&>V%QT z5ypG^7s7L4xbc}#Y#eGFVjOH7WE^N5VC-+~XY6b2V=OZEHuf@3Y+Yz8D1Ek z8=e`S8lD&)8y*=R8txnJ8EOr84R;K;3^xro4A%@-4Oa}84VMfT4d)E^g|mh;hEs+U zhU11~hNFhVhFYP7KV&#y*l*Zp*lXBhxFhT~>@w^yltE{Y z^e^2K<9=+6t2)Vs4w_%p(F{Wbk* z;goPye?@;;Ke)w7p}y@U{YCu=;ex(Ke_nr1e^!4+e@cH+e?os;-_Z7${-~a)dqjU+ zIIKUUKd3*TFX8v=_v!cQ_vm-)cjMsck^f(`(pRXUOAElq7AFVIZPt}*|C+jEaC+a8Y$Lq)G$Lh!Er|GBb z%k(#edHT8fIr`c9S^677xqhae=s!X~TwkmorXQ*wqQ4^y)(_GTM9&83`{Q{=n562< z@H9y^N!2HXry_lC;Hj6sP~V`d*S*x$>0aob>z?VJ>KfWU(LL4?o*wCr3lDV7tE;-BR5W-D2G$-9p_0U4?GGZk}$gZjNrYZkDcG zH&Zu5SEie;o2Dz(P1Tj?rsyW?Cg~>XCg{fN#_7iD#^^@tM(IZCM(Bp?igm+uLv=%R zgLQ*+19by*{dN6xeRX|wMY`U)GGT@=Qz#c^3A2Sc!dzj#P$4vE3w6D8PqdGJD0tHSN%!q-XBNyUm|HNTV0J-S!K{Mm1?2_v z3+5HiQQ9M5tdu--12`m@nXK zQ9*B(t5*TV3JV&NRHi;jv6sm@7JI>B&y&ws>}m3G@=LK+txRGl6;taki4I~ zm#k&Er1ZPV{mE6yL*2{y!`<&BZziuNuO+W0uOu%gFC{M~_a*lxZzpdhYmyg|=ac7> zXOoAMhmr@A2a;!!r<13WCzIQ{pGa=)emr?Bc{F(>xhJ`s)x9gZlR>b9#kME6vDj7? z+mhVOVw+fOV{!wFRVVAY^~rTCycXfAYL zW0Ip;cof1TlOtGoIKsurVJtip;UUSvEIf$8H844V#roq*zhqw)?t^eqvNsF&Lbx#5 zkYJQbfKG`z7Jh;7^Tab2ev0su#A6nIgz&?}0~WrI@V!JW3*SxLN!(7{O599bNYo@6 zvMwjcLR!@QV&ZJ88;NU)>xrw0SEtUdB+e%mcHflPnmCu(si=K#R|o9Bh;ECXO`J)b zPMk`V^D8^_kB^Mwd|Ique02Oo;&|d%VrKUl-H#@YBn~GIAqR2Q!NdX9`tr6E+n?C? zT5NA(&ug*WiCw7}=FW0D**B{D&IIkEsNoBLxg#;S`}V}PL{*1{-M1iI&TmEw1Q$;G zMt4LvBDOZWoF9>ebES#u#QMa##M(qvVhyWdRbpjgMPhlPGO;YNG_fSHII$?PFtLDr zt4PdF%u19eW+vt*<|XDP<|Jk$$`aGrw`qx9-3z-uE1;}T;NV-RY{ zug@Qq7@5F%y~OZDF;W({UDS4HVsK(mVqjtb()%a+CHf-0DA7C73-7x8hIoDaWxSl9 z7JnX}5HC&aiQkKtBqk(ACx#`4B+kX3#!KQC<2CVP@ji*O@hkE5@ip<8@gwoE@dfe1 z#LD=p_?GzQ_^tTO_zToh7bobR#h=6<#~;O?=2!6#;}7EZ@ufC?H-0C6BYr)8Eq)d8 z$N87zm*NE91@=52KNCM4KZP$R<0sxrdn6W2^%XI49nw{@n!L)__8FvIKC*p5TT0r z{P?{1T+}cpK07`uUXHXG@v``Iyl>@~#;3-o#3#om#U~Me~m^jgXRD48y zc)U11EIu?oBtAHPyE&x}iVuvJ@WgEc;(gmTqhsS^<6>iDV`6uaemiz6b`$UGv1_rbcwdfPie1F}TOK#_QZC_ zb|LT1*pArt*tXc#*p}Gl*v8m~7{Of~JC(mab}WBgY;CM6wkEbZwkozVb~JxQYU zR=)Vfi(eE)dq?j_?nP=Nh0(i_JCVA`i^$W+)yU<@rO1UyP2~A6p8uj(^w}>OA}=G) zBSqQIBI`2OWj={Kjy#Gy`$bW9zpl3=S0bn0I~O?{ITJY*IT<+`ITAS( zIT$$**&o>#*&Ept*&W#x*%{dp*&f*z*&5jr*&NvvSrb|Ci?#TximZ;TimZ%OMwUjF zMc^sy_Ou($)pUD;=i_dV@qEzj0iO4}-N*A@w|jWjcB{qnZnwL5-syG+&)eN@ce~nc zZe(_3VdQGJ^2p4{&=!j$vm%QkWs&KqwWeDQa-HvX9?x^#&f$5s+gUtMbvuRU$!;g{ zJk#wAo~OH=?lvt_8krg?iA;%1jvVMVDKa54J~A#cDl##$zuUfUVCujh7zw}rQcw}dx`H-$HbH-xLh>%;59 zYr|FHIpHAWkvhdRIlJMg2qVU4-f^bE6et2GZZg_ThR=7MoGdv?) z7M>oS7A_4>4VQ$cgeQk5g(rq5gvWu~V5grj9&cemvVd0_S zI$zm)kDJf^Xhfi2;C|pi;7;IS;9lTX;C7%kFzF{374<(I5FQd97#Vp+1S8@z;6FVMMJ3Mqp2UE zuF%WS^U$+U^+!+fSN+i$<%>{V=t<~t=uzll=t1aysJH)Ks5VsSf9bm$x)Y+hZ-;J# z)_!y=bd|*}hfaqsg)W9JgwBV~h0cbac0Gl^GodG4A9p<&IvzR}IvP3>+LUoPbSQK% zbRe`pv@f(bv?sJXv@5g|>DNQoSl%6>?V)X~lPl6AFkAioD4}$lDwZX^1JHgw*o55$n!qD~Lt>Cq;*g+7y61*Hd z7F_z#rQrGC>gE@Nt6E(MVozsqkLq0TZ1808Oz?E@RPZwL?hft>9uFQ39u6J~9t`de z?hPIZ9tf^zz9+adI66@M-uB?8;I`nF;O5}gAf40O5UdWa4XzKa3swc!1Q!Qa1y=-@ z2bTty1Xl+uKdB5Z3oZoy76oSo7X~YW^MkX4<-vKuxxqQXnZX&sBLDQ@wBUk|N`q5^ zCBdn|Q(Y$qCk7`3#{;^T%?Abt1p5d31^Wj31jh!8gQJ7vfy7TG&m$UI5;SHrt9ghSA2y*!e&FDKJYZ~GEf(I5_lYV6gc?N)xed&9Kb?6b}?`% za3QcMqb6`Za1QUYfirG4$KOa2WAGQ2X=IwhQFzSDS?rJ;=s_r{XIA#??5)cC{+Iq2{#yT4|2_X5|G|$g z`!D$~_-p*<{pb8={b&5A{3rb<{D=HY`NRI>{{8-a{=I&jN%9}`AMkI;*yZ2p-{Ifx z-{#-y-{Rlw-{jxu-{7zIulKL>uk}~?*Z5caSNT`^SNNCvEB#CTOZq-LUw=RU%=c)AW-tE>-*eyP&!738 z`kweMeg4?@$oJ6qz<1ww&sXca>$~Ht{qQ!@Z~1QeE`EN)cip!~b-`DfdC51U*?C`$ z@09PP?}YET?@-Qu-#*`7-)`TkmfL(|v%E9B)4iqM67OX1MDKX-Snp`>2yd}>sCTe;%V&qZi~nKcXIs3Ry_>un zyw%=4s`cJ=-nHKCpRMt(_OA4<@Gkd4?s}JbSAMqCyV$$PyTCi&JJ-A7vnAe&<_%dD z-g(|RUXnyOAMD-l-RIrw-Q(Tm-Ra$dy0&|_dAE9Dn|`+8v;ObV-u)^s?fG2y*;>S@ zr&XWz&U`bz=CjqQ@2lANrg3Vm+&9xV!$+Yq-*jK8539_+DZWX*iM|J)J@{;bZ@h1u zZ>(<&(ntG7`9}DL`)+-9>$76tFyBz$5Z@rA5A^l-_4D=h_3;(?3VjWLvflgB`@;L& z`^@{)`^5X0^=gswq4$CJzW1KD)_cc0+gs+H>K)}B=AGmnm->F&d&_&%d&7Ipd(}JB zJIy=AJKQ_OJHb1~JLkjYpIu?k%cy-KJ&xy@*2lbblJ!jMqj*bmZrT@Fe|5D+g?Advopb#6l zuMtHJUHB{w|78v@4naQlKqcZ|kVXFOfArAd7lV~5%9Wd!N!e4Cpp3xj_-rKcIzB5~ z!Sb}x@QUvQx!5Lw+gQ8sY7Otn0f?eHp~_Rp9fBe+L*O+WzUL_ft_zR+=nRMNQXBTIf-LTyw62b$n1Wa{|b6apBMfg-h3eQp|0L}!M(Hm^Pi%6~#C>$3uMX7EZx z1T{c#g+rVn!6YaF0E-B6phFx_@X~`igHACVy~2z<%>-ZOWH2N$1hYgIYN<+R&}2$g z6Vpgl6V6$gw^xl^i8S67U{ti8$NKO(o1sgLVF>8I#%4_k2cAN~+`KFxN=bZ|uI4qq zlXyhpJ0;^gWMX{B3(Ef@-|=V{2>(8NHTD#YDRESm#8GJRO^zZ0{hb`86tYqrg`TE3 ziiKX|s4U_rscUa?6w-l#w{lc^Y%~H-{QG5&MA0kV&FP zCjJb6S>HxAeDYgxJBhY$lARD&{4o4Q$hYgh9(3B zp)Q3VMw$$Qbv_L>dXUuNk{X%#ogizEFDli0GC`)E{h3AvA)ua^iSFR{6a*RJQGEyZ zo$EP5j6fwdoCknknprFRq9+qF5VRyjxg-fmyg`0}qf)5kvnJ)z*-7V6c3`t<_U}0P zcO7M-I;l~1lA%2w%^#MdyE64CUL#KuVZn%?vw9RIqpQG>dP*jE0?d)naO#oS7??7X ztR=oE5(u|Us3&DI3JCyDP$a1oX$>mEsr$W$;fRsk3EfrwhT~H0%Mq6lD0O>2513`Y zrS=I6zxxW37=%LbU(gBu8v+EPKU;nB6I4yrsk;5WeP5Q9!d45wz%Waw!OsE8)c+w< zbpTA%jzYr`InV|@Fo5wR%7o&@xXS)7f{f9J`&ga@wD9x)2eQiDGWK7sJ>&t5vfuQC z^5mg81%Bo9x(tnSmYA6!k*b&_D4bb;7L@DRP+^dc7^w z-(qHu_8=XXC+8i&i5y9qOkznw4FopgP`fDtX9`(gq{vGjVA7F^*5+5hC*vK+e-(bd zTtV<~Vo$PRII%@SBNu_AK>@VedoaUGqZA)*G$#NwnS&VZU?2hnQuecd0uY>- z@ogTHrAqOsl#!@{R1N=sQtebfmq2xRJ9#0nyMwgoqIf3;AES z2YY4(pT&5`wl3bqN1wVNAd{(95&vql6W?m<3!h)@h}HG?R-0NzOll zWzh#|vVy`iR#_u7bS1@sH|ZIfcxdB)GK`Q3NF$6Bb0Le><*=C{RgrBEcPGVLQ~gY$rwW{H2w;Z^FzStNvC z32lfQx%i(w)OR`JPm>It6W_Knj`*d|h)HDgZJQlw0a#9>8YS1&{9h z0A>5Dl)|CW#zW*wB31q+)HLV~d4%yuV~_QS1E!jYSxi!B#G#lxsUlfG;HihoRjm;M zxD+QclG;(VCF#rJvM-=jh-IO5RjS{ybQ*eSo#7JYNaizkV2NZoAb|&u0>)Q{1W$sM z#)D)?qzKHXRO3HV#b^fOoI&xG1d+saB;%<&qD+1Hz4uiLP*F7)znw(7+>y{INSLZO zcF-uPkjR;2KOt~BK_FzqLO`p;flAaRD1kc?Ug`mS9vKzXG1i7cQh6{-Fbfbe)$2Q8 zbf6!wHi%SND4vy2uj_zrp~7rU260b@0FzFk$x3wzZ{k^&$}mZ!PuU)s>U-S#&~L<( zg7nIjUfrdaT6%p7putaFz&&Wzf>`x%JApyuAwv@EDO2Bg4_rMW>wUx>NermZiJZtW zPT;D@LT<=}(kd*h%lvhF6q7Yg`?|eqJ!}e~TabOueSonq^wh}B+y|hRKo&aB{voF5 z0fd4>c`>U;&m8>nACz4VkS|GB8YNwN;=w@~K&BJ(D|%8r)cHIJQc=w+0J~sFF*A~b zCSWD-lUPs}_yWp}1WSTKln3}DolG-f)?w6*&r~;oDxPbQ_do+GQnxbo=nSGaD8Ouh z@!2XXV;iy`wkY?tn^XbT1^qrWh zi2qnFgIZ=8q}sv75E#q%aq2!i%=oN?lwAh)lO&QGS$O3G4iIo zrQxXhPo|8;(gn5DGZL#J`qzc;Q>cJpgdV|r11|x@9C?fIVL&0+H7O{5N&EuN!*B!C z>c0H<%H@HS9EeF;8!jmw)hI}o%w7CgHdA+#B|%O3XmEkOzJ*#Ne~|!HEEWm~Gwnjd z5b_QXet|iZEDzr$eo&)v3|+WP)Pt2Y9Yh{AWE1+pQjv>S*RuN6>@%gyfE~Fg`%+La z(-B4Ba*z;-RlB@m!B>%bWcOpmgbD|7Yj`_E&6(_^^M#CoA?*y5uoNpvhn;%FZ z^$*Msk@vaoz@4A)SyFuzY$F9>i%Vs|>WyXCWdEu;f-luulxjo+3#ahYUIpw8!mqTYCK>+@o+Dg?ypR|KG`$!y zKs|_GfCM_KyYOxa(+GUd!B;|A1cZoVG4TE*rO*dX{FJ1OfQR~?T1DhhugIkD>MhM! zc35{q-lq{SQ&+V?3h$sy#4S9Kgq+}xE_@e_{I^sc+98R?=K5eYdZ!%dP{cr>j#$;FXUR;Y)u>VR^jq6Miu^N|sae?yQVK-Nz-&@Wf7X!AZGo79ZVX+Q-p zl=vN!D#(X8bsR#4gxxnJHBs&F1RgRI;sw|N3MFgrPZ~uEwS*@C-T)=p(?eb;a$ex^ z)z{G7ki60-5EZ2VqCGMIq5qde4hh9zmcIr9YLe>Y6Ks`0UH>ywi%}v|zrX2`RJ!L6U}M88bgjO))8f z+)#ueSa|KRK!H)w=$V4?($q5r7gQ6^6u5_KBpr!i$vCg6XQ~~bBc%mAl8Hz&!W1s# zz+a=U?gg|nd659yBqf`Gsutn*N57*glQiu^?ahckpr{!WX)?diWI-$nm3#&Dm zqWW7Q^N-@q(F+&;sQ_a+2WHD3#mdt=$NVQn@szA@@I@hH!h$BZ2}BhwbP+%Prag0kkQEIFf?UYJ ztX=Y^!HUeoZ@)UIJAwqRERUxSP|62rN#xY?$jnJ2kkTQA+x%SiftZtQA?NT5n7|As z-6Yb~7rTIrx7sjJ7)s!h;4reF*=U7OJ=xl6a|pL*%f2V`a$s9l6Blg&~pZ=py(bX`HH` zfnYxzreS{rCaJfmSLE{0_0$xRTvl-L%d;h22rb3z9`Fa$fXI_;3*f5{cgaD9W?~m| zNuy_ApiY>x3(dOlpOVGefhdG>D+YMn;B^JlrVw*r`b?? zgTWiP9xdpXTX}_wvH${TF-ntVWGXWxM2aJruFKZQXf)A)0u1WsitLOx$|&(O*Nn*G zn0J(+)oQi~&Hp+FT~taY5y(Q#OZ)+20DV8hWc2GjV|3z@>izg4_Ig|WTjW^jroKtN zfCy-TzR9stNsK2>cw3q0;8oxzooC8l$wQ8FTIps2A_c4*GJ@g13332Db7Q0v8Bx;g z#HfZD?5|-Pu(h-O=PcxIC8~4cQU%T7SXz^&n#wOQ%ZHSLo)_gk5g`pu z5uPF#nJmIlgpfq52k0}2TOpGMSEit%!A01}5VBsc9*C1FPxz-=tgeDDi%C+j3VyYj;Tm#0h0x{<+i(m6hmh^x zLv79*$qc*An_`?%p+(a)maiqK03Tci#72fh1@=-ypXC&wUoD6jEmOn*lCy;71$plg z+7VIY(Jc8pB<6gDnOXC%$TdP!G+M4#3+f#H{gfmiFCM)AvftnX!foJ?yQ5WX1+7@H6BeJmzeng4TQT zvLVbMh%$wiB!~oXT>_?S3rQ+v2-zf+;O1tPZH5Y%C^0j6$3tq9$Fy3(aU?38^%il{XWbeav^E zYGDrmymKyn|vhFZ^zk~cpaW|5M zl-`C-Lb=F{&XYr;aZ+(uP*UFi`cvRr_+%aAJl8?dLD>QSWpwC}*&&NU_)pawk7muX zJLGiukU}k6;HmD=;k{OP(|@fyw2=ZGev*3sv~7pn4(%xNK0Q8c|3R}3FcwG|q^(S5 z0;D5k0+1+{OdXmbbfEC-%7bbBU0t$2B4Wvzsv%D?qpUa$laV(vKUb(;&+WB){}!J1v04KtP&aF6HmAA$$<}w45^iG%L{{$JhUlTJvs2cP~H{q$lLDq zyzQjCtKN~9Rv8=Xg&jim&Ur`Pwy)=HE9I?xN8X>3qmK1D&Fw@b9W8B<0_i_osmEMO z!TgyU*UTxe2BTx?NId_*LenvViPnsA6Ev0OvQb?cOvHZjD(1<-DlP%N_8ow#wgVWtbscq9Yz)kuW`JUPffoV5NOoWzXYbY6JTC~x&U@-lUl&P(KbJJ)G=0t*a5b|D8x0C6E+0Fp}s zNeNH~Y|baK;qEjW5=7|8t}aA0V$jAfP1={NbNKM#cO<@V!rcs2L*CX6psv{ukPbJl zJ=qQe_OA$szqhugBId2)3I6Ry@q~p2CZ1rrJOuz)=9Z)raaRkl7D*@gR`+(nz@>d0 zLYgj_5<1cv>8#o} zw;qn9CirbyKW#T)Y%pXi$th1xW?Hs4t^V&sUaBwyy|L=atZHDAc6c^oGD8{-%ihLD zP>SRcY0L}PFpZow@5oDDh{n7$jFETwJMxlXY|P7K$SY%mO()@jCWcRUpUGsUB$Kht zNsyD-hMh+AQj>f?G{Mgna+n#6wwennHo;Fd^?E}* zSI~l(MD?%b1g86=2Z_Hnsef&$JP}q#_{1 zWaL76Q;Lv|BqtgBf`P~E=9Dy-1aNxLajYJI%8Q*Lv>O#9lHXK?Z2Bs5mZhh!5a8ca zTckK)SzNL9=uJK zzXp$#a|(U}09q?!{&3#$xBmgfS;-c^k+n+w$I%;W6Y040ZkCyfXJxc%rD~Pkyj825 zR?1Xbi&iaP&#nHR;X~vG^O2yFT(xwFgcQ8wAtg_4Hk?f4B#=^moig9wlI`_^r0p=a zY3#3l8&fe?ppq6&9K>sjIB8>67k)lmU$53x8E9~HVL@~eC$S-N&!(|Li=MNAaRA?i zpMmn^zkxeW$A2olW-!N1qj+J9B}%FT@{3AH`LUu;`SC)2EKWd57k1UlyS@qeI`GRHXu|^sjX1t&KF&`iEhJR&G+rF+c>dJ(jN{ z$TX|5qg<%=Q;8#Ary+KOKrlfT zq^QDnRH8|Af?CFlwM=YEd^I2Y4T)vc2bGQ1GAx||IkZMYqX&MMCJK;Q%RIA|rADM} z9T>b#EM_(fV8$r$31c*sH)Sedq$-+P+t5VcmmYK;<;RmA ztbVa>Gn=z1C7*Q~YRNOvM0AlX_^}%wB3bH6$vu^By!o3wC)?r2Zv1q*apvqw)2JB} z%B<&Uc$zhBoN>(G7TRwxR!V5I`o+e^Vf4RZ7RerKf_Av4fApT;O81=SnP0zJ_*o*0rgkh9Cb&Z(N$zNVqInZY+0@QTPG* z3E47;nyi)#kc;4@)etN^sE>9LGJY<@HbZt$fTjpkyerwZKbLjKk{*_~q_&20>SMHW zN(oe-JXh12)-W;zykK{tzHtimQRYa3c?%E;oMH$yT9iazu{lt3r+{%%%P1NDpO#T_ zrDYUsj{=0vsAE`0p}F=8=#pW%5h-s+$P#2&;iM=hDmhH#13@!zRab7ac z)4ROXlrcjx_D~KRUkP1o=eHb|J?2L=gOWrNTX#zHEL(Si_@v40SE&qi$pM?UW8Fze zIWRzEszHwFEctAxFPT_;O0z8%*BFA}Cws-Ua5Tc0CcLGSr4iB{b*4wirwG%y$A2_J zV7E&nqzfyEr zkuW!1x*QQ3%#MvDv`j0%)=f50bRs548~o6VY+Jm)(Ft33R|SOZ)|uzAP9%oGTPJr z5Cw_w)I^I}8D03p9Mr|@8$_{6{;iPFxIt7w8$=b28$_{RilQ{$*#=SAzEIvhXc%|l zk8^oh05A*R=vYy6a2l8uC737^QuV0(>>#1Tp2A$w1#3GZ0Cn4U3>LVV?FPGL<7&DZn$TUvS)?=~MvD zV7N${{~K-Yqb-dr_CLunfpg86dsEM_8SJ<1Rr@mJ%I`A&%+9!$;xsr!HGS-afl$cy zxge^Z%xl23ogmQBy%ubv5dR6hZy0SjIg!_l+RUQeT@+|T{@zdc?2(#ma^?b>kw|GS zWdEB+*4`k)7BgV8*+@+@yi_AKSrq#>4UbP$0rKIjgh7Ta%Jcz;APh1r$Q|dQrES3o*#5m0DwB@UTAuys1Ifr?#q;Au9<$=d>hNXJ7vlJAAdN;*4~wjn4EhS5BdDsl7~rweIg{jA;ah-c1!Ye^Fm9e zHN+2~dPs&nmID|FkWVGVK<+XV5wem(ozP(>CrORh_b)6w-@sOanZK$r4*kJPnu(0>(x3G60g0zsAse(<0xsT_>_7&HKo4$xE6jmKQa{+-8Mzm(2{ zRxPWBbd!M=0D`V!VYU~9JGKmJ&~Fl_=sdfy1aAmRf}Xxo&mhwN9rf@I`p0UZJ-a-8 zU@`O;SZq(H7I+*7P~&Jg&Emw=IR;`JP#KtKji}9==PiXbm^hoA$v}sgz z;$u#gI=9kXGFzqQUp>*lL%M?NwOe**r-KS7MddvxfJ+QAaOsXl_AUA*$500F*pUB6 z;8(!eO%UlDd|z{Z;5Prl2$)U?-qkAPKlU z52ZmQREGyP9+J?+c}<2_P?J)~!6scCMGa(qP0U6BiNF&T1Cf(GQB3wtj~GFVn}Sl1 z5h5EQ15v&Y8TTJJxB}YJID+Xyuwj{x!G_6F3Lb=L4;!l(`!jL*OzOrjKn|l0#c78w zRuCJnFXGboS-~_QbptiPE-(UPr}2W7Yjh1Yuptb{NHL=4lAK6E!j|-ynM1xVhAdVy z38vH?O4K~?(|98h)9b1j$su;Z7-5VgAYJ5=kwhDO9w!Ixh;7x_A_~9}YD34Ii6t9z zf&c`M{FfRIr?WvZ*j??3G4lvw2o*ZJmhvrP&dfH*5`IAiiNb(Ai+186BTlelaPzQK zfn#bG2Rs1?EMpb3O_iATaG)71SuhC8&rC(!%f{j;K-&j1$@ZXacH(ys-!gIickD(D zFfEAwryekM)7LW5U2C}S3Cq1wpTX>@Yo9X2pApyL+9#QG?Gq%4bnR1CYR(B#y^cFN zcL)JS96~QJMLXn>?s3YJ?s4MN_)H-g%1+L1Ap!I_M+Hz|<_H|>NE@MTkcII%?s=lC zofuBo5lRK!ivo%84N%R-GBB?sk%v04_9bKyZ$of^-*Jo@L<4D>5IYZuVziV)V!Waz znCO>zU@s!7L{FG-?Hkbx@^BLBRT>$I5P|tcq$}^hLO^5cZaBIRjm?%)M5npI_lOQ& zMXE&f*Dgh4L?_cv#SWG5uuW4$2Uj&AI*X@>u8@e%JQH*m9PzV~1Xt=_!8{pw8Iu}F zVo@!falvQ>@*2me5|e)#X+%3FU}(evtBs>u*;Lv9(>(q_Z)#7{Fzh}$3`*3(Mj`E; z$w=RLr{QsKokf6O0tETQ87Rvh1TdOrYm#gfH3HTsU(!{gRRZ#J*xNWWcBzc@7FFMp zLd1f#2+~m_nRtytg{3rq$1z4+F@iXD2xKS3fA1k4pL=Ak@{a_^QzSDKirX7Qg@Q^0 zqaLUgpuE9HkZND&WQm)RgW(r#R;9wQXA@-Rehnly`(@9ZW*8={DkySNg(Qcie~rCW zqWEqU&y&d+4?<)ML^9NXO)}s~9RH+|K%B#v4R+z0mKr)c3UM?zcqHAtNaxG6Wa0us=47k&rm+awJlmdscV z6%%yqjtMr72qNHy)^-)t0dNK;-)VY)%OJ&*1Q4IZVQ^G06~OeEj$}}7^pm##;wl&k z|3n1z3>RI1I8cD;j!P)O7Kbl-0$~2@o;etfs1|~P&I){;qf{}Hr0GJvBWWmBOBD(- z;z5d#{FM=rhyw|U^4G~B^^*oHda6;PuPj9(1obU-ji&}o!vJYdvWF5$H8EQb?l5YG z)FvY{`ygE&hYcDsaS?HTig_u19Jv_>5;sU@15?QuqLTT*G$z-2YvoTkp5LiM9TTvlZD@SW`)*9>`Hl~|ga|r^V2!N6r2FT2KLEZ0Ym|fc_qeEpf zsDf9h7I^r@Uqdm#1N$gbLx^_(ZA>)7v|`&5q+yft*!)~Zz|);rjYEzHnu+e{An`0l zl*HB=B~D#S!;Y!5cVd(5lHE25ONefp#OMH5NcI*P>C9N++4!g1Cc$E4bx31~ zZkvQN7oI;tC(If6*$6(2f?SbZ)TQC_WMVdHQd9-$!Fnxqp60pe2#hae$ps$hdbE@d zrqLk@s7B=pjfb0Wq*0FWe_4H!T%LrX-jz5AO-sg>q_f!oz^Ed20ih)!LPt^3Dj4=7 zR3R}g30xry8aSDk38bflsGy(;4I2}{#rH0}&6Gqjbz9;tQq(E)L@LP42Ud_wipJ|~ z-zZ2-B;kiJ3koPSkeEHv8=zt1rWg2m2O5(&7um=HWxM=x5sMW}D&|-XxGw&zn~w%hKJV z@^og7U5SiEcW^4LXRvV}I4#2gK7CRQ>bRvhl3)d2 zBbp6@P%5-ZDl1-TY|z$S@*=>I4_C z{!SIf1Wuz<1J@E_)JnXTQeiavBVMDM(o?Pj>KV=sqz8PuqttC`3?hn@80$V;+@iG- zBAQf$kbxLYY$aY}a*=Kc0!>jC8+jXt6}t|VNnS^ z??6(?y9Gh{%D;tk?BBPMfJ4So5|P=G2Jso=x-3a!GH;qR@1}M^7=~{ZCbo3FEqtjj zIl70Fx&J_QN0LU3o2Cn(7txIF{laAGSU2XeWQMa_qkx40YT!oF4+?PgA`}l@O^uRY zp~wdXG=s~iV_O9X0Jro-$-aD$WV<@V(*E~oExK?(r_^nGE0G|MAJ9pfR)~uzI=u1g zY>Ey@M;VZL(wtKoT1=e5ZX=6?4KxNk3CkWyL5^P*AZ7)C23qK3Av%$#QgtHFJkp_T znLVdrzlgxZBaln%4d=}V=o{SSn7IK(DMvZV&;V1ZB(Ws$73!j&&r((M(hWyAg0Cb` zF)i-PfJNlOy!E$03@Y{Xq*)+FBm_dryp(-~1iJl{^f=EJDkZSsn4|3hZ1OFw9-(1i zUf}8IyP_YJ7qj9`7@k zzOGv6g_ec!V|_O11DH^1kRzxTURPZ}zPLQqB~eDI6C;r4ObGJjhgI%tR`pG}k2cRK z_kB7gSMKKwHr$~8V%Og7u>wmY_fq;{-#TDY&ZG_H)l9D1wvtr9VVbC3o-UQISDZ#0OhlA|u0Qf1^yM z`i9sba$;TPMNf8fjYw`Uqus6Y$i`!6spP>Y*dVa+M3y~fDr2f24K5`@fQ$rJ*epaG zUdq%2UwYG#U`tw+!Z)ouC*~u;MQEg|+5jQ)Jk-2?i;}|)*%Fi8*LXOwViy={!_Xo7 zp@-W?z3lsZpG+X+#Gk^TX6!+}&^LCnPlFtGf%ls1_x!Ed!7ulr@*&08DZWuWE19j? z!{6zHdm5z>8EmIC?fOwpZDPCR^zN}lwZvv=~=5;9shr{P#adVcFhlHvJE!O7tNM|2;e0&TW@E0&x2E}93wHx zWx`CwtbJJa$iY9(1yTRxE-DI+Kt|=s4(zFCwfIiFnF6bJWvNf9gK)$h4-&0`18ivLD}$jYRx?KhI*U#Ij%mDDkA71#etQu-ZE(wV?AD1<)OH>pBWrHwKM^a*#pQ z1Jq8{aBobug!GLh5!xUFJtpWX`moC5#Y5TPwn@UxpWSYef$XJaCMsf<`_5hF#!^U8=}i&$w9dAEXJ#7pf(TJKhh-i5EKcMd)@SR~Y- zH1#f8nu_aPk~lUhT&QNo{6&T`zibZA#Y~X4LiicVc(G3e58kWeBc9g}>tv*ix0pm& z-$QcIPb8l)1tezQ0K3rCLL!Y@R*ssAcoloY6iM7)BT*c}5tyHQ&QUJe205Q8W(*Q! z41A$gE;v9dIcB-e0Z}xMoSkJ0eNDKTB7rlH#*Z210?xsc!T>0z&C)rJLd`i2gWqOF zIzGsq<4At7lFY{q;K;@-I>|%=mDu`H=iOv|VFe@sGrvp&xpl$W zmiXEKdM|ujlX~{hADjV5EL6V2LEa$#+A3gsY?V4FFX=tLbLMZt}kghI?<{XZk%^kabQFOJ76T)(7vKWeo)2hqVV-Gij$9Lia5ig*(Svx`fMnz zCN7a83Hd;?A`?IR=NsHVNbZa8`shD++Vb@id9xEq8UyjSkAeR*V24s0(;q&2;D*$$ zHV|4yg3EQaK^T8meu(vb34$LV^nMRmRo`B20;$2&esgWLXo%BT8brc*Gwb{8%U<@V zrt8|~A(=gxTh(?$B#3Xx*vdj*6n&%~bl({45UNk{4?y_R)ZM5JqLacWz{qaBJf)XC z8@>GRH<=)nVU72>(9Q!QAGlj;vL`UC5p#cp%Nm*zdlH=JXkP^-LgS>+YxP>;)r5WV zF1}Oz^}P~A^}cd~?KM7jzpJQb{i`;~dTd63jfvhO$-`%nBNcuXyHYI+?7jb#X zPdqT)5l*Uk!zU)KvS8jwAe%RwoiXjbf`lH#pBfSyOBXI4Nu3d8jaR1Zq{p85gwq3h znC95>1xuTp!`m)$N2S1FK5!*Z$>V=9OBwdH1UrpzTAm#o4YB6t%|t6K%s#s193zANF@MvlTLwk+h8}VNIxVD9cf$>a@kL z2PhK8>YG5Cjao=Al`<5;A0}MSWi=NEInIrng|f;7nywsQ0DB53Vjlx(K*-X#GEgW6 zdp=}4EogXaU=?R1T~Lwdy{b)7>#yVvft*qlQM_}l(WD#UhC$6!F9;uzKE!{4hF#vd zV;sM)X`Hfou3pxFT?N>hwY+R4e1`5~!L}{?!4G>i(piERZvI1-I25ZDy)mVZ%bl=d z<(9DbK7mevA2Hqlk`=3zsZ(~#J2_IKCA{rOnDic9scTv=eRW*Aw1Feh5p3YJ=(l+r z#v5*eq;eBD|M^IDRe@HRz*VD{2Eh$L=ABLG-Dz+=e1TQud1-}9YPR6093l2ly-KWi zcN$(#>pV#~XUA_yg0uabb|k^nUTg=(6Yxg_7RN);W)gSE(`!4#4*UsWc4@H)B}#ZcRw&MI~6f817F})b005wlk(?FyM0GjP+v0Wt= zJ?aNOlT5H7AaXQJQo8x&Bm_>3L|D(6OKYw znqi$XTFTY^mm>0rJV5h^c(SEhEy0WwEJX5EVm5{4TsC#T$=vxN5kaEKymu z+tidfq2X&KChs)Zy)k!~UKx1-fu6R7j#mVh$QTqQPlt?fB6+1O28M|n604B^92&Ho zHk*6~1oSHjM^m#zF*O0{OCRMR5Ec<7;iQLTE*U*=Uugw!YkkQ+fKBoh>DR+a@7s zM550yXxHL2shI+f0b0LCiZdDl4JTE7SgLE-5uu;8I`t(p&69IZVwGUUiR0C`N4NPi zWlba~B$p|6S>s1TXvfzg64?#V_&~lkWxGpozxcTYX%sp`SX0L{nkju?Y_k)-U5q5h zO9dOz4N|%yR>@c~?ANYWMQu{0ZKwcesQwL&~d z5e2BjO_38sW$$`uhA0-7ux&~(`Zq4FEAP6?N=<6po61AmVYylLtC zSR1^yn+j?>s@Jzo-Kn5`B7^p}Ph>#on9d`Si>(!FLid)~)`&hd(UpYHTLI0$^NvqM*i#a!Jwa&yKddT=RRRXv4Yiw>X#Mt^MfQ$ApM;su+RZ3!P3Tg z0yGpZ0X%@lTLL4hq68iEa0qqf>eosb%uA3GsSQKZN`TzKR-QnrH%nmUuCxSfKdUy^ zilj(jKsp$#grb?lMFI}{St6q8 z^0eD+Mc^|AGHJQ-*0O=-v7}QoTYX6&&hDDg+@JJPe$W1-FE5$)+h|^w3uNVh5u@K_ zoZf!v9YSb6zhH@9dYs>3`yJV(QC1FVH(g4lxtj6FL;!Qq$mDIrF(KYyN2Xmfb|fZ5 z80<(p5Ss6j5Kf>;R|ndnAN!>$jFmzFv$1K!m}jRdEI<#2l%Q!GdN+OYp*lJOd5~6? z7DL_6?H+PhCu$o`Udov-WL`&(S$Z%;Fb*2J>U0l@D_qRpZpF4CK*7u`htYX4;n4h? z-}_8Y#`)1|GYQCs4&IT&1{Q2>BT>@yU?*w@hTWU4P>jy-=pJzG{MMDfm2_drY&tE( zMHy)cl~zB6F!36|PMGY7gxoY(Oh)TNQr=P<+!8iLHCtPLiAEkx9Wm zKqvwh%QdZfvaM32>GZFPLe3OT1WqgpxTY1H(=wtZwl+H!Q6?0*eh<(gziv4)3*AfM z)`?UZ=`xw}c09d*uRFd+&R?USEb+Tc1VI$Bf5uR0RmP%Ii!9Tlu*iOKPfhf3iFSq% z#*tWA#ByLk%1*lS zk>|1x*a<~wa1yiHK32OAutbbDtk`b`6qTyO{*=2}R@M$m9vu42WE^g~25SQp4d871 z%kMu$R*%bM=9RJ_bdAHjLsNMrX<`G5;zX7rGd|bO{M^XCCdtm{ zP_TguF3{HqNzPfI%$q78unsE9T2x18HZ)_(1`6c}UyYR((k>69CS?kt4 zbdq&XSJ^#MZmD}XG1^8nsx6hBcaJ1;>z>+pc0C0GQ<2M!sl0paqv#&{D7wc!W_1sj z&!|+oW1~9j#qAzqb(7AeB1n8T6^R?MOEHs*D9fm*YEJR9^5X&;s$fwJC zzkqpj+9Q)Btt3TG&`|Y71n|g7saw?O;K@me{q2&JnpPMg*2(OjxsFgb(~pTx=CL3Y zDb4s?JM(iRT}Lt_CA4bVb=Cc#We0JiP&y5_v zt|Z+hj#H3jSQ1xY&0gXOi(=5&#uF+>Wg|TpG(03mi}(9#?6?^X@Log3MoT^0nGmW# zh#Bg3l)afkW*1)BjN(%aPIv1-8uTt*#Q_j zQU)@kJ1Gmw$GQqaCkzw?PHNU~2G#6RsY%ji8w`V@GqbhEvwVh1j;9*YVJS=_@s5Dw zecQ-3wxih(!bSV769G}uLz)7`8hXHWS|D`KMsYrDK?;nxq~OgdPHSe6F#N?~IUn8P zjW)!Y2+5phHQNJ+8mm2@vScy?j$t3NUZhP&N)A*xhOL+q!yE~0&uMg-go~Wt%q|sE zf7_-gJKA6-Z~v&3yNTaYSWc_Oc}O# z2xU>?>vn3>IGH0NnP}>qi=2tzd_iKlNj+Ti4)-+Vsz=PS6%I>{cCC@%1Sk-GZKAyj z(YN{ujBFc|w5T1R_)V01Udj!D5Cuby7vFTBvUD9Mwd`W^)Fd(cJzP&JlYjwV`Z(d* z#J?tLu^w@^Tx(S$ts6w;aoG2o?1b(4o(!r~wbpGh({}zFKnWdjrMDlQPD>qjs&==Z zq2QCKEJdm1CJnp4xBikgeDZ74D$!ZFmQz!X)*3WL+C(-O8nXA!zG4Emb*xUR*e7XN z0--=$0i5E`Ql;p;8M(1O(@u{?(HUP^#Xur-ji-Xy+1NZ3y)D--CV5X<;gE{DGhZ4? zB6q!L@Mypp>Ql3q?N};?ohB0+#%4qinyU=CpE&GN(Q3)b0cn@&W#8e}Y!ackR#aA+ zvg0zW)eMV{g#YZULHj zezs4t_|!2Na~Y)qPVs_NM?1i^9kraBvIWjt0W?fytbqW+?ypppH%yGFbQaLt_$o@* zj*<3Efp^>uCL}lUOk>p!YBqhKN30fZ%zpPR!zCEnN)jCKr#TQ8aL^{PUtO2Eodrb= zp|vI`IJU8knW}&yF@t_$Xy44T60@9;P|KE;x|!ag6zMDp1Z2ajK?rP7Iv)l_VJaGp z-8OO+mF6}TP(8Dx?7H;Z5h7Aw^)BFkj#vcnJrB*urtI&!lI@s+u z(V?u?VA0G3rwWuNi2putCOjyAoNnE}3D!K>v0#MY zeby*ExN?E+!NnFs8hzTBhAt;i#LqdbHO}$}q!2A3ETv7BSQTK*p!os8MpCSSLH$%r z>J|%#8~~QJ1prMda{$<-y4ceS0FM)Z%GU`1n@IwIX_T|12_)tK&@mDbr>j5!m??+> zkaRWHQn<1@MrVN3?{KFC+IIXB!|_}I6pAHgYL(|{A))5gFB}39^a`+46LuI0<^Ky2 zC#|y^X65J6L)1V~2v4|DASsnnvrD7(T}X=(cfy+TB;1J%I7@69)x{Lx3;{$bAhzX* z0U)Ar0)!g7T$-j$H%$7JMnAOOWS}#a1>40fUzknRF!ZRM3%aIaxvE;@9SX8!V#wJT zkm`1@1`mECQq%2WWOJu!SQk<$dw@|Y#!ZChC*EyGSqOJqpHY`3i$AeE`jGEeuLmkN zOSGxXqwxx3?D=L@Q(we;il>vcK~lkyp5E~Kphq*Uy&|`YaW=RP1nsDrMTzuP{Qrs} zw?9c0%+R2f{}rZTsA>t5l|$v%2}1-{nA`%gOh{@9!!^-=0qiv%){t5kgPil6QSBP< ztTO1-B50%xN?ee+3X`mTm#e7a2Esu3~O+naHbDUL>OMsbC;XkqAtFirbgWsh~v*Bx~a})12fqa0~sp}#yFl~ za1r9gpN8T_f~ydo|HeZjDAp|u(dovFWv#2)bjt?Zh_{j8YL;s>*It=-2-zz4RahxA zp!1V2z7-O>6A+i1<&3D(cE**PdZ_5s~FqAYH!;vIlUIz5QZRk{Vs09}&W7&uA zth+-kE(?q-&%#-inOSIZN6Uoib!k<{J=mPk(h}9BaNrQv*=F6`sWxk5H_JBXCt-Cg zkv5xb%-b0rr*@F-N!-z9U4SIRRh|04#5Qj}NjjR(xf<%%bzbt1yP7$Tww{-Ul!xFh zqz&nGhim4RvYF@2ZYBlbsy9DDQf9cK%y8-K3^E9(zE{Detj0id9CcnwNsq|suX#B$ z8QV_#SbMKid8Y+hG>Hb7B=oS;KJ1V%FJ0_T`*f+zTBGc68MN608E%vGg_loSs>2|v zo`e+$dL+2QbTXIP*&QNYRz_^Gi1Uhwp)z97BH|+AoHAmAMXW0#eyNP$;1D&rgG1Eu zyfT7wB}BM`L$KE~yi>KBoRSkr8%+5jlV1+}9oUL8G_e#&d_0L_vve!6SOtHqN%(g0 z;Qd1Ap2T<0>G$3j{U4N(;WhKNuHD)}WXGlHSf!X;2Si%)i6E`bzzGOG2RT`;G$&u@LERS52LGX43BE{$m#Hwi;qLb(DIn!=a z*U&uMa|Y^D{K}a=Q(Ux+CbPud*^j`&MC>e&qUn0LuK^eXUjraMivBnjss z;2)wRpHu5Opj6FYbo4Nmt1QKs;S&9vzk+3&Y0x8w33}j#0GBzJv_v%6Dj;Got(qms z0GnQXu1o<$`I59--$@FbE#!U4K8Tc-HpX%+Pqq>_yh^du+NWf?4l9ow)SfJn15$!2 zrm~BD6y9QN$=(5jh!W?bdaZ zUO0_*Q4>ynsil`7ZQq0ns#*|GwGdZL=vB>vwy{4wPNiV0HMmCsSYsWpfOvnpV$bw_ z0!@`9_5JBkavWou%9ZDMi!?gn`}oA=CfCYD`2_y{bX6X#(p_*R86sq$md995(4nU%NJ@8AVSLsT9NyZ zASei3kg3(RH3pv-+|H)d5FbuNf7KgQu8*l*W#Ia38zM@fsWjcG@c_+7Qf1CckSA@5##;Tz<2VK1M8qMq zIZnZdSKu**x=c)92cFU`4>trGlI6gsQ{+I4fiH!W(85P50%le)OYuM%?QpaNwWLSJ z152sS?WE|C9waILJ9V8@a{j#q|)L&7`3Y3L>(S#v(9&L|}2! zNq^kkauK9Ao4|TSU~x`hz2k5NBd|V4V10=NL1l+0u;XVF7+4p98P*p=U_CQ=$b&g8 z!4`B9GN+{_swL@9j)T4;sAZYPu2E92V@}$nfjPxSJ8`n4U{0p=mr~kowWaXgMbVBY z+EJlD2kl_{t3J_S$!qr$&(Y4(4%!(wD%x3^(+-nOkTx}}+mpeAjJi3@shQZk)Seq2 zOnW+Lhe(7#!CCURW@of$2LVJfC9MfXN?jWNKgSwxf694$}rMdC(n=w-j!A z9l|v`Pa)M>)QdUE68|gOM%KJx{4HjTBt!!%zRHZ&p@i#Hrc!1+VcKUqhliZ;Wgqhc zU*bTnRyAFUm%WCy;Qi>1Mb4^*oTi4wz5{TezY_|t){)- zl2L0L*fDBiVARZ9D{LAzdw>~$tnt2Lt6Hj+$+vy#N&ti5n-2u>12NkQh8Tn@Ng|m- z{|uGl#aes<#RwA)k6|_ra${a+J}0;Pj90e2bVP?|!=4&k*%#m1C)GMK2wIdK6L!W% zT41N+b*nV3z@?sb8eZvUCBCy(N9rOpc!ksd+M=k!>K$bKx{e>2I=G_5Xocy$8i^~f zz{@VcfNv*d<55BiUc_r;yF`mQCeP?B&`L)K@#{HQu8qtqdEf^43VogFU!sS+W7uPz zdkiQ3+1P+z8vVh2eh_nN)5)Aok=?@o#If8zEukCP@#DQKyd_oiv%WNx^~RE}{_Z79 zno&=0yrgeQv_`J8D2dvj;>gl*4KC`o5*ObZkRyr*Em;F z1{^1(oW#aN!p=6wivn=6#=9LFW$ftn{Zed*!BEaF+KHKsh6Wl;%K83BS+>z{+E}Jb zLk&9+u9WVKprs45@4Ta)F zwz7uX;}Rwf5))9=4D3*^kP@a+-YbU6t2lk6d&STjx_iY$JeVAe#cwoEh)2ZXu{Gr5 z_bj3zZgDa%zdemNV*5hIz%k!zq9r zWW!?s!f}sI>F+Tjoj6U2&=y><8IFc8{t3o9e)_ z`p0S5jQX!C%e!Kp@(!Y1e-Z$=!K=W;b!CRD=gEL)15hE_n-7aOwfk)fKxQ@<4Y}db zGUs?i8Ljp-0h*>9*Vz)z>C9-z?d`H5)mdeOj$82FHw%|{wX;mmmu1@34v87%I~wkU z;mhQj0fdZ-^X}O9Y#;_PSZY*&T9O)38Sb9MU`R1W#>0pLh!~5Dil--6l(y;x| zMh4E0P&=F!KouCumK$r(OFg^mVed>2ow*is&M-k@lSqjH5-Nu!@hvagH2W1IN(v@h zkY9Vdk?@YOZ*Ug-Z=@R&^Yf_QW!|@s$#QXINU4ySQI{Aa?Pselt?OE!k)R~aki9gJ zwV1ixFNBnCn-ja+bE4)Nae-Mf65yk>nL8uO#_J0{QeAYQ?7dkm|1fk9&&Dg~PUbSL zJk-Fi`kF`c4wmif!X2zLCF)?CGV>0`63RNMyR(C9*#{n(dN4Q*+}l|k*Tv#}B8oiH zE_?VdF?OS@;4r|4PBN6&siVShAl&mL5i=4%6R zo}Qg|09KxXZkn@5IZQX%DvFWWDUvRto3ihM&fn`tKY+Of=Ho}pBYs{GnWs92cR>U! z<7F8>gMW7#LUa-VHV+FDfffgW__gM7@oVdDY$L3@nXy42R&SHI34`}~&@wRCUx#Ao_gnEk{@x#o6#o%zYl+F3Je ze3H?Om222xB8eLIEKS_mXHah7TXYVC*P0ruVlin$9UP)t9HMdb9HPrQmjl*E>Rj}( zV0kVm0Zd64C_8q+UNzj)q3XM$AfJ3mcITILWc_II7#iplcqGuX&!QBVmjgo!hQ?>F z>V@^+G87G1{zE5Jq4;xRPp%lFo^ljc!Yy4G;-?lGuJ ze}2uJ8wq~=KbA@wkU>S0%WdfJ*j99+k6WC&Z7zWn3OiDB$SEfjCJZ(zL@@M+^|iZl z9-i45*e0$p{%WsuYuOakASJ!1t?b*KzPjqor3@jjz*t~N7@0!uFfYMZyY9VO*HE)e zl(yFO@Ip)ZMRszz*qcMS3(1-b&cVRNx_j|Gd<<3pIXYz4lZNscg6^?ay?74)|NV^h z;XGB_4wuF^x>%hF$#t>nXv`m-F1DI|{F5lyrHhq}a9SWW9mb~!q*uEOd0^BMQ%w`Q zP><5(Z^cZe!?xPKoTdD!WbZ_V1g&!iCG-Ltvra6gt+WaowDQr+U*UlkhnQY9>s+m)@GGwv5?U6|d=ls4b~n^L}VeVJx zdo;M>^w5llk@=rtW`&q1ntO#*hUbMh6_W%lZB=YeOgvR=E;P z@Q@&Y3L%uph9z@3txJ3ZBbwra4f?0Voc5OpCqLw%vwJATz?wCULh+ku+NHE>NZYvt zH_@negIFq{WDK#nrGq7-=_*vR8;R`k?yxf>K*S|MR+M8(WNfUk?506i&1D3e0jfa} zASQ1#MiNqZptW*Y>qIBv8t*vZmHt*CQ61E*Mem>ZyWz zNV8zHKt#-(3q`KXZAvYeZ*6erS_XH5evzmwMfJrC%YVHSh1&e`%(GYN-#*GvnXgjQ z(=pOIaiw%x$vZsp)SCPwea2^_BA_0d5>9{ zFx8>)d9D^2OH^?pdlk(533j{{qao5TJ=AxTm;0B%+mdiJyc>CURWi7bg_NtC7C9$Ub% zGcDZG9(x0~?e;)Td3$0CWxq%gUv@}^PvwPAQTTaQIA_~B8-%6h>;}2RX4yy89vxGo zPp&&%Y=%NNj9Zt?XblzW7~5CgOnTM@O3!+4ouyxAO5Sq*;TwACkOd~ih$Ubsc9Tr7`k(@L!=4O*8zAs$CT=lp6XU7_0Py5W@Rw{E> z4_<54+l(Y*I~qx5H-`GQ&0&@X9?94&^IGL3 zS2cNB#|G4x0Ai6mZN<+pIPn)HFPNgpVhH1)5mvfnjsH-D4hbsdm*^wL8!BA(SI?K@19 zK3F#CgGG~WIkYM}Xx42VO-j)9>11AzJtQ8(>R-zOE>)pB84LGzLCDBf;*Up5Zi`<5 zETp^zDtQKK%1)N?u*O^7BRAbgB>JQ0K5hXym!GJUZR`pSyleCx4KhlpXz`5jpIOVI zIGsE83>5z&w@5HhD$g<~j~^D4pc9nFF@dspSrN9)3f~R6&gr4qThPXeo<%Xlqo<9x zFw7Vr3v>v4z5CycHon3h&$4F|l*M<*SLu*>m64*)oI3prz)dlNOz`?oG5fseSBXWZ(V|KKmVnh8Jqm-DQ*RE}HZNP1=hFVWA2AKf>(yxx+N+ z!)22`Tr_F=rsrgT$i~HtCNaUF3fJtnS1X49n6qClOCkejT;$STzt~Q-4X8j;-qB2q zi=UeBgX7G%T!!TZN5k?2p0`Ym; zErWB%te>Sk%DC?d8bHV)O(lL)3ssQ|#W^`4+EHs{&%+g!TdA{nmvTkfJA)_**@)bn zb``H%)Po9Oh@q6M{MkWHrGj0}>6r@}TU$0jB%e*RgI zI=Y@EG2jh!gY6j1o)wA-u3C1(v)%SP&^6DiIOF)Rpke*%UBvkG@sn(G^hy!7bhfP^ z``mY&3aaDGozzf;60y`3ZovSdx9<5tSgF<;a%H8ZFO6r7YJ*CY&k{BBufZ4I{+p|K zjH)wS@+4p8SeemDk*1xySeF+u^=!B0#+O!SB?Y0ilfC85ssxWxcfPG+i};$nN`3t& zI^&nU{;zaMF#G+_RwDCRb>yK4*F1(X@O%G=^QZa7fbd~VS{Lw{52&m3K%a10u+`~O zt~x#30+m#>&1h>Y=`?ayQ(qL_9vjTx`&2l;HpKLi+;>6$KMS1e;0L%cd>&NMh0jif z@4vNzm@}6@K_UH`U649qJp+F&IDfyILPK!FS zZ{e5`qx0gZ({~>aox3hgA#Mkr>q)i0j#4mm`@Bq3CS+u643n38QLz!H;|fhH zt3A9vYj?)&c3(-D+wFGcPWj|;)HXZU zu(deXKp(O3xHVxPyc>9Rn9)t5XYl4Q05RiKkJ(90(ueQ~mPWu5${~y!@jes3uWD(y ztk1Qtu(1toKew>4MS`Kmsyicr$zS`7gxZX17rxQ_pI4^e zFi(11$WeEJ9-~5$j9jh}e&wvXWkccW-ZD>FFt^zaN0(mYU^vV~mFW=KOr##-^3kx` zGm^z)JOuW%uhCm*t%RAw(eu%t1zPaP&q?Lb7_p&|*iI((50w#v7UBG@5fPOU?0wQA zPdPH5Q|q7nL%ZNf$AOt20+ETZB9gUc@8ZA?dir=@jf`Rm7{q^w{n_|~4a=)76H&E2 zb;#%359FU;m^cp9>n6zMXs$7}Ux>u!<*;Yg5ngPSQp? zUmVs%_$f{?DNwoC;N}9NADLUe+W3V%)$GT5=cKp6r$z!|OB>JMBSJSsGGm$NVYz?~ zbw>{DxIPJ|0zUlb;&W41#QSMi_U-$8gAQ=I)H14cewJ!kx4hX#j#|iP?s)KXtnts} zFwBFkri6;R+^H)yK{!rn2LoHgp|rthm}v9Ls3ZXa`9*8(PB?RBC!7ijgz|PLkXffq z3FH=yvFtGivwFgoj9?V%pMlXcON`?0kIPdWgbGxyg)j;!y9AKSbSf4PelwfqNHoy#{ z!cD9lkUpDD7!iQR`&zMxPA(_K_aO-0&zn6CE_A6QSyK?dk+i(m#_hIItR)mk zDe}@84dG5tjl@ZtJV=%8#On&vpX$DFR&QKb_Qpo_Mx&!QjY6j{RrKMLkNHn%y*+7Olbbgr=igbmD@Og=bCLLl@r86hF~n zDoO*bm(4=!WhGiKnMLHjV;8#pO{xj*LFr%_?TX|Ou@k2?rFJ}nOPl8B8LdWOjdQzt zbme1$Q;>)|!VC%qV*PB9Fs2A6CR~^`hnavs-2iY9Y6J)~TIxYjHLVOiOOXKENg@VZP&l;4SU5yq$tTQauCl#`ViQ z66|%vNH(1-!H$>&J7U$T$27ias*d7T-AOJuYVuDmm6 zu0=fjYyEp|G^&3~u%_G+={iRkEDJkNo3WJCk!pyqhS~v%tdiXYIpAO}-aVpFE%oJd zT%LSCiUVo*koCf8h|v~xm*^lgBTTcfxWXA>%9o*xFfE%SMatO+EIjVAgo-6B1j4Sz;@O zGG}CSvMx64nY7ia2|hgw&5oNDWPbZ40fTgx35Jc3S7!14?QO zy_%$HEwe*?$lMUlk1pZJAwh~`uRvGB&?WuW;nAhD=G}$DY^L>z+UL}NRtH8Xk}q_Q z2Te1EmJSK1NlhPzRZGph139la|M10kefNPIojYiwsqD`l!7M5Mdoyk=DXKlLbr9Q# z!wAaey7?R2(b!|64bF)t4lGC+V z51z)#@IsADcz(5$9lz9*amSor#E`AH4tbC5%eu2st_FW`a@SgxN zS_GL*N^KS`1^+&@WPKK!g|R~)u9;@hm2m{)4Ra|>N&*I_hUPq;%3u{o-@`^;P7ByM z9*xyM^R-ENp1~03khAJr1ab@|cJkgvUFB%m!5o{q1qh$hDGRWvoSt-Bu$qBYDifk^ zq+yEUoBKrc;BNM8Fn(u{l1Mw&UN$N2nzjJ~o*QrMTf*@>@reCTuQguJ-zvASHWAP?h5X!lmg& zMh$`ui<&h2f;rCtQY$!$pUs>lfEike=p@plxyI|uMbwMA-49TjD-0k+K|DG#eLReQ zKDXNpm^?cF8FD4><-};`zF92vjrXqd8$qK{Ys~i-a%+u>fwR2*OI$cJ;C0zwjbGor zb~R*&r`f=b)QJ`^#dgyLHi?xZS)!duHT2%mBPQGZ87uuNx4bsan4E-~zR% zoiuEXhx;7Pp*(8@kbUXTF-o7WoelytK^l9EqwGYdKzi!k3^i#qkbv1-)ng?OtR*+v zApq`dAu%HS8v;ZQ0WQIoU6Vx1eLC-b?y5bx>_X-8duZp`iq-j+E~EU66`d)WP}#2l z(f{K>J$s>hhgRi@Nuh6esGfb(%Rj!y#~0j(C;9q)M{g6n=n<2>{#_Mp&)S4x40ero z=iyqFwn=jvI@O0jm{ z`E0iHk+*XfOGi5)NNH7W_qDrCH{LO$!B2dqo{c!jXpU=wfb&g7)ckXyL zp?;EMNu5xaKre1@_t<#F@4gAGM+d6PN*A}kdu)|{o=VN8el~+D_jothDM9B>Xj9K( zr}UCn&Y98|oJ3fb&DVMdNCyW=P7BV0H~hhS;2`T9>p&?f4zk*DkaapP5@f5zK{zo2 z2MLXXEJFS-!Cw4G{{9>5^RvF-S*-Lse}aBvK5QYU*$xGqrR_9jrH&^Ub46Qk7F*8U zfYP$P$f}ORf{S;v8X7mA=R|QR`2aa-mOf-*-x!Q#HR9M@?#@{|E?E6SE_Yq+1IOg> zck#6^PL85)25iDQVO5iuSKN*)2l#gPil<=tkKh`Za02bN4GfBtS9^X6@B3hDT(z7( z#N{67F_4h}!mh^P3mZ7nPqvU`vH(Bn(sZEgD#N%l+ro6f%F<~(RkA)dG%0PnUFXYv z^!_%kES;FNa~}>sz*`VNytM~yZ|#EBd28ngtS--;4RLJ-#3dvh5W{fhK-^V?9TsBS z%Z!!->n74q-88(}?jzwo>mZ7Li(rWozoo~S{*^q;8M=L4l6dB#>i`}pF3R7hg43BV zTsWux*f;jfH@a}acB14`y{*RM$EkYLma-S=l0@tHvFJ8G40rf9$g%u>E??WD9nAe{ zWjd{XDy`W~@c!$pR{y0*&0g54e(I3t0^R#dCYj~9KW+CbwX)xxgs+^KtZ?KTZwY7n z*Xw5|ng^2Xp5|HIom8d?^j?OJmf%-iGqlmm|6Y~UuNitEx-a@wt`i70BtCb&a)FG~ zzp`NcCaYU+W2Pnk`4eeHTc^+wSGhv35ail%b5GrUJ{vo~F_ArpwUgXcuQ(rf)l#lT zKl00aoot0BwvI`!9_)8+*Pa8fMw(nr?8k2jOxDEgKwJM9EyS-iJzhn7{DGk-l*ey; zKMg6x9X|&@xL${w3JnCQewN371m_!uBa9bagk}biQNOE2@3<5!(7e8 zN}s-Dd@wS6%m+-9X(h?Y3uPlLa5dAd4Zo3J%~T)uf*IE-@bwJ*Lj+$k-usWf=VA2| zgrk*8b+lG%jn?ap(R8%q&kIIJ_5XZ-&z%!EJlZP%ipZ|6?$Ib}j`sBQj`sD%qy7C$ zMwc!f7+tn(`RH-S4UQgv{EE?`p_QX2oREx;u3Gh+BHyt;Pn@0g7e-~VLnmWwI+DLO ze?c!*E_)62$|Lie!!9f&j8`6nr7jE_DqffJ+KMtBM4#ZIk0*>*9)zuOVao~Ql?P!% zF6=nMc;!LZ@h)tTFkX2OcAN|2?gG8?AdKq+1?m7{yz(GysS8_17_U4C>vv&G2;-Fp zVSO$P3mLugAgsrQMTGIngRsbjH3{RD2Vq?W))Zg%fUj0DYTj8FT(?APP!YIw1RS9iuRVPvOl-EaXO zm%dJ5p3|I6_?7{XF4}HnsGs832PAE$YO&bY{Y+gt>)W(3#Wsf&Yi#FhgmE{O8-r}L zOAMtJ4x5uuh9U60NhwcRX@C^Pt!9gu$J&(IxIN3)*h?Cu2{HK)>tRl0Cq=$Gs6d-S zw%AQ-nijc@FR88Z8k1*us-MbH4e-&WH2A?e!(*FUyTfwK!6AFD-V>~x=+wf2(^zBi z(?g_m(t*1w*NZ=Ua`ZaQ{ch*OAEphOgEaY^IwptAKnTd|kOH&}*S;P}6f`U^F`g`> z{P;ns?a0JRnGQAZ5MoL-~j=D>UlxOa+OI@WKh$IVpOt z)jdbq6uz7}LC+!6p|Ml&y+_!|zUCd~hKZI(!pinE%ubkSRdfe?VNU{chUHswa^*Bi z9wCJYoVU0ariSfVZGzd1WCYh03?hQDZJ07OC%}0?y}_h_?wc5kJ{BO~p)8WEnU_8G zMP~OYkfaUR9X$TG0hj0+B9#8UUM}b5 zAM|o5FaM|)q>$_zdfCFuKk4NnUjA7x$Qs!<^|FzdZ|Oxn{%yUS#mjf}g0PZ(S1*Vo z*%NwM%gd8`SUMdK^mlfFt_BUJO2tA$S)UvniVC)d_aR2O5j>>)8zzQ6t0e= z2NIu!r&g8+wRI@@lk|Va?L12;Jl-XXD3OpNqKyRU>s0zMBX9gzpQ0^DLML28MrlgV z5RyTXUM;#XhVr6oohU?%Zbs+fE>jU7!?A`93Qv!0w}b(^5QwU{`zLj{pv0WbAf@O+ zAjVp6;Cn2OY4;uCD=(i_ z(&x);QuGJ?lB7^{YjZ&;Gv$8O?yCb{bxZ(5fuXVMqY~S16lE81Qm`tm1AKFo*3069QYo9jY-_ff=Q^IZIk=13=pGl0LdgAc5NO>JzHVHLDS0F$xUf>Zwo7p zy|w_Sq9XhybVy~dn7Mg$GGz*0_-KPBCG{rNW4169otR%sg@X#S%%`iV4owcNFYld- zUIZDdF~YS$>7W;)G*x*3$tsf)jgC^}09G$zgPH^xI=U@_wvGl|{Zxq_^=(v;$xpmA zyoUK4cp)XIMZN4>07OY;1g3!o7v;;;28%s`pyec~)R=7QwL6_x-!vHKe)(+bHLu-y z-GqBky_I8K!yy^VP2U<>^2H?O@(1HHGlFLD#DK86H3_?e&)LNj4l2@cPCy-R)JA&wq>R%_2uu#ih zbC0u(*VC-qjbT`Dyie6Q*$i7ZG|PUQzDkhiW3j? z;wOK>N|Y1>u{a^=uO$=&8)%>k)m1()T{=gDo1>y$XM_nz+2ikf0vZ<)2HExtIZ32? zwXDv%#?I$6r<4*u8O=hs)eUOG0%f9joP}8`$hdx+%fn5RV3v!l1v2 zbgGk+e0&*XX<(yA%Rd`E?jVmEK#APReow=Teub5=h8j|~<)Ky*3?t3B+sGjb-8qhN z;;;=oGTX=mQbAieA8&}#$}q;K|LIKKE!WQ^xU1?X*C#=F<+t{x`NCL5kERX?x(mR0 z3}ETZV-P!89xHWZ>iI#^0&mX`hFkR4^MettrsT1@g{v8r$t7{h4sTIPyIy)N7w+;^ z;oe*x11$`(m7RU4=Le^@mg~{rzEd89Eq3!%rd?9KuC)Rb^4;WeYU)^1mE1hd z=c(y)>~nQ`f zw@h)%i#VhoE?^`sR$Ra0mK1RaM9Glu<6f0CcO@rqDR#;=L5=otx%etwQhtIiMsIO9xz*RS`iR5Hoa!SE zH%cxJagO?k6Q|WdZ z;YDY7l_>g>&ls_>FCowkY&W}b-UzlfBP`Tl7ei;TYmjTO!}9XM9=O5Ic+_AgUPCu< zgI$u6*kftxpO18LRVOl}wgDO#OQWHhiHz~jH}v6;Oq}4OW9a8Y{u@;%(8)ldGAx|H zJkT`>FQ@nwhJHWOA&>y3EG=n;GsBJFSrr%e6Ypf7W3^_cCVr(8)oV2eaY(3| zGO6Mv;UddPLG=r+v7%d8udBLDH(gpU;AWf42}~fM1UJ|7%-4U4jeja8m-%Pu2j$*6{)sC}OyZN@nqf_hTpFZbpK#ixjv%k;q`eP6YrK4SO+I^>sg1RcF_-s7coWqw9%Fo{rDqMmji3xxMFt4u#J(i%T zZaI5%wJGhwXv<@THX(}7i(0->uXS!MGkp2kD&edNszAyGG#{MNDfF!r7X|wGb_E#k z&wi*QQ3CT?W(U(u$hWKi`+ z3S}S+&?C8)({elTnZ^#)byOOfWK~UUheCx4ZMN~paQ?WPwb8Lt z4fQf{J4+Ejkf21+fPl?zEcTs{7Zkd(RS5+-jbx6ySm%KGLQ^Ae5%2|Fx+xN%9J5)~ zl-Q6W8Zu&KsAZ1IF5_5eD2`%?YkHD=e0m5nmdr!qHQp~8jOw=N4Sp_4Bhn%*WsPek zWEuhjfn?mE!m82ah4B_bx#I?a6l6cc_Xn-z?ZB=?=3(M7{9}$+*sT_p2HT7~01^@6 zRZcXruJYo~;Y!4h?(OocrV06003fJnm{ch*9SgBfb`GTFT03K%@p7 zb?&=oSpd+er%>BSL5F+7LwNcTB{a5cg=8_3jS*u9cu)lcP)ajNVs(iiN%b0uVZI_-Nh)Tsuyak|2w)EPRdxis!u<=O|!;EG1q~7t7 zOL3rLu;50*wBybu2l~0JXO(HaijbZ_c9MgAPwz%v*`TQ+jG-ABSfg;}2$z%E!iR9I zZWG;9UB1v^a9DNNl<{Vgr-@~GPFo?nZard+v@H8s!9o|;p2fF@KGf2BSdAELX;eU8 zgCL(*&`29r8rvb6taYsUT-{FiAmIh#O@&yXrpOcgJNAZ#P)Fytd&5?3Gdq9L$f7`@ z;NOg4L#7VefFec;E5_IW<>@U_BY%v}8r}fF?<&8X!__aT6L3`$9?XG=Q2TrdVRK*3fCo z8nTAwI@`=WLDHgMjlaJ{G}4T+4O0Al&s^7{r_A>%tQ--FY3)f^aTB|r{c)ErW8|NO zp%fAfw2pN{9tt*9Ujd*dL2Wc3oE!}N8lC=8ayT zvdQ`hm)Ozw6#N&NNdg6FKOAaSR1uWtwrt#VY*R8vW&MfXs#ozV(hX9{K} z_Qbx~XLonf=kY$u3k@;OfrpyKK^*=9f~-zB`+kg+tiIXqtyhMYIH?AYrD9+{y+krd zT0yg&z0rMOvSAmFy!y1@2Q+Do_lQJu8U*-GsPnV8=J~A2k8@_;&u;6;jRJw(-=H1< zV0-OCs;pf&i7cn;VRRo3qv%g_&2@Q@hpKJ?d->{OXJAq%$??Z*_1qj_IqRr-B=~{v zdfDQivQBwgmbFFv3GUs%K-?Sur-#f|a!Nd;)OC-QOMX=-2w->}r*Dhi^n zh<`M%%JJrWd`Vg}P%V^HjY6(`nB?ky0sdtxPq$#_fUWVqNHo}&>=kAY?>loeWRpx9 zrutaoWw)Du0yIkCe4FWOOaLXr8RS%Na5>Cj@;}NRg`Gy4C;u(v&;AIHMNa|`5F_2R zF|@K1L9FXK5riaRWMex!hr+c%O?Uv(F~_gAWWjP!&@P8OZZ0o(;(D}LTTU~ z)$z2>OWh7xS0s(VD@Txr5y7d>#uXvOg4<49B3s%RCfkcx{7?+ywbG#AWha?4-akMQ zM9=)-1pH6nCSivxpql99;-?UjCBri!HQwQs(g84SNlJ%A#f}77W}v_(+Mw9tfRIAV z2g@=sSW=%lKJRW`&2pEN<6~J99?Yld5ZtIio1k&65cWJ;H4f%Sr@|#&DYkUws$cOH zM^akL8YAafthlw^62%_<_|Q9^+_+jhB+&W>!$WLhQ%p4~wFd6{J#o zAOPtto$^w92T?wMT2^G#oGIeVLSTQpFRbrq+*r9`qi26ltS|Ui;(sdb*AB(fy{TjY zmY{6fC;fZVrfsTwpGuePP5U+_OO$8;(J!k0)XFt9hx72gwSHzLA;L-h-j{ADvo zz`b)PCUMB&A|^K_%}vGExs&F5g|<5ppPesoMQA(-FN_LeaYz7JWTFq{Xn%mIAvc{9U)%UJe}koz0W> zwgG*#O()T&Jf?0MY9*(i&Sm0ggAm*S;RD;tFaU9Q4wBxY<>O`y#jx590UEI3?=!M` zQPzQhHcI^8FR%h|uCvsCNpE4vn0Q4AMa>Uj$HiWGSN58zskdqG&t4C_*Iso6^8@Da zrAU5byD|f|to@0Om^kw;P|tK{Kg+Wx;l}q|>)mwLe5|7!1_IDF#Rc`maAX)06h}y-YqUvRJh@sJqmQ4 z=bg`GF%XRRDTe4?PDFPNrA^Sfz8II`WJ}hn1J`C>{O#;D*AYL~YQk>2=(q0dZTIww zX?15m`PRwjqiw|jjH=QAnL_DfS&?_pS#)6(!cc$spI?aSRRHDI+u5(WQ2S$zNcC}^q z#_zu1CqFw|VRY9Ew%*lz<>kqzt*1mO?jPs^d-iYR!*_mq^8Y&hw_dnsKS<;vWcx4mY%r+I7e;*lwk+I@dL0WNd zQKm~MN-+&2I6%*)-}t0Q4VYS+K({d9taFAusj?`+Xu z+LDdQ9Hcl48-y7YnMy`MJSwePxFLX7JGUH! zOLUGJ>T~L6;e-s!CyAKU<|{qM%{Xp9*>f5W?2KiusKNv<8>MSJl}9%96jh^rg7|IG z=4r=i&|;&aJhqsb_OMV(!tHRXnv6}HbX697<26aR4bjzQVbL|NqE%s}JzTbb839tj zqS&8Ak%1=nzh;Biq?K{d0YBPCq;1RiEYMoMEr(1z1#EP_XeOdnhGh>UrUIt|U5G=k z8toOGJh$-00J&g_7-%{VXt|6LP3JD9yf((odJsY(1~ZpU$Wy!}B^}6Yq+G>YqM25M zbeaqoA%w*lE@~}YSPec@3u`x4uJ>;Mp?;Pal#+~1c_S*4)Ssd8S>t7rwgYV_NrRJO zae{Iu?Yd0QfwWtXm1%UDNuXUx*X2ngXXFWG)R$gq^14>BABo2lyNo;s^L z=b03Z9>{i`LYQj~ia z#3~SaGW85X!hEF|7>(1lGo=!FbA`mJJgG}Ra`pd6X4sMVr0Tg=ht)Q<3EJ1z!uCy5lX)ktbbLzd8EoX<=fJ6k!o7T2)MkJw46 ziD2j$?N!(#hTB)N|Mxp}DSR0949P6qTtV3h^3iEl&+*V+M(d34L7q~0!mPy)FygQo;rl!_+ZUMlnXl#xi4M1q$OlMhFvcH7JmMVZ;jNA1mIX(Keu4xSRPs z*pWtVO8iy$j#QV#bbok8D84PvO`^SN6`jIFPjI$&w!*D&ThtTy9Fu|~o06FsYVCUb zS&VIZd;!6f0!(7uGNYi2biGYCTlGoB9TsvEPtu)lnUVwD6iF!(e}85QtMSbCJYtP( z;9>G-`ry>sB-KO{YxmfAbrx?2FOBR3HV;jQ20=r*>YN;H41~z6Tb)T-s&f4QJ{~=q zn-e6sBOW#+1$i%2+|I8$hZ?I$6c|rxV;)hJzyawTDqMF?NVdx^Hm_s@`bwnCCo0wl zR@59+$)@N(O*I%M>AaZyjt1-{TBmRiRWRQBPQO~wpZ)rJ^Yr7s^Ir>S|F{ebf45`o zt)u)Ir5+(%GHAk-SjnC+yAkGh{;s=*fPW5{j-`gT;p%5M%kE#>WPbJ@dHPR-_8UUX16qS5bGg{HL4Onu6nE%tD^MLkV7L1 zI2Gxw|3s6CZe-LerBjhI25j?d#0|2wusVXa=^z5?ys4*<8>jZ6R-rJ8O#&yr&n?)o zn6-#$R<`u|jHtYzFfZtSSCAs$1tZkdy$!aIP2GQJ1=}^u9MS9je8Y|Af}K+VPKsw) zH#iy8beF#704mBYz*Q%%+-4+PJx@ZCt#!fiPrKs1+FGz}`@Dk0CWm1{qn!dHt4U`l z6}HEz31t16Y6x8XlCpN^DFd4?Dha03HT`(*5J(liR!M5l&Af>`l#ILp)AM}ePZ z-C{zB@*|OwMtqi!IAxyEJb=P*vwqIg^2%qz;N8|xq_tahnYLO1C3=Fws$%7o?(WZuQV$ z@HQOQ8)63)zFa?L_rLo|k&M`!gYhhuZOab@2z<@sG6Q_3GjuZpVM4 z9j{jxf3S=ffpXvsQ((|0x>1*=VR8FwxB+aC0P7n10NsTk6Ju%Q2fsO_W?d~`+*t8y zffi)~&n5c7J@5yeWSg5vFuFuAuo z)$ykH*JriEWdNffg`KY)JZMvg@n$x;kVT8`)qR zq@jV6vJ9^mRiTIMA_|$pPS{Xuv5lqUeGFujkQ$XTxCTUbZi2H4(1!45q*OzjCLC@9 zn#yF>l%XmTBBCSICaFuK*c8uYo4VDen&VCQNT1mzP=77LjGa!ra0nrHW}A$mUD$&H zbyk}+!dYXXXIo^07^!r5ppH?)>>bqG{EjGK2#_wg$(XVB5<=tLNOFC~#wc{HdR=mL z9TQ+@*VRl)qZbz2%sO3%&6?}FI_LX$3+-(x~@jo zxegJ<&1mVr0qCxWjumbO2yDIV39b=0%hX2p!H>^kO`T&(9P9{VN?WW(RYx=p`GN1^R;A?g*flH9iB-yKy-m z)!5|oOoRUOu>pj}F2(}JIJJT)ixo&-)iQ%;F;T(T;~)E86d&RTfetf*M*Or%?`XM^ zR^yv=^@$0&%(c#jfv3cjAb!dj!ZhN~bM-dr4c1#?kt!zsk-Wr7v`i&}$~}&JHa1iP zp^D)2l1qvSi!!PnN6fy79c;>7ClT7Kd=8$f>(GWhHR zS_p%4PH9B>f&A>OvFOzvYXpsA{tm1^UFUGzT9!iBu@(lb&UHlMvlbzc-QOfY+a^Om zUj6))MkCHo@=)Z|`pbp@PLX=m0k7xLLLs6euvN6=|A+tdObrlO9BBnZyP_e|W!*}o zlg?y`zXzKduV&rOb|ilNDWrYH7v&@%~Lal5lEoWT!LPx>Ivb;7mR(8dpn{&b?N3qrgz~ z(!fVa=oSEhR_{P{%ZTeKl$*^od?9O#AbUOQ1ubLV_FdNWfJt4+O)rElzWx{%L@Y3D zfhS60$?M-3f2E%l74@Itp@NgOnbc&K)rtQp-nGS*tn zV=#PMiU9yFlxfx*QY(l`J3Q0alFOEr04(z6j0Ar(eA6Hvg{GUdbIWiEv!E5NOIJaT zS-xpZXJJ*@>0(*zF(!;TGBD`vijlYm3Y%@+fUBi8V99h(p^iFoM9>}O;bkK!zyV2a zZ~%d6SKf?|nEYh&Xn1v6*}~4Av>?~Hc0*utl@W~Jy(6u@TpJ=~Uvgx_2eDrK=qfE? zDY%c-rqU<BNlOtJ6G-f=r94O&IIe7_GKLhM)UT!tsNgCdh|CyR-M!=V z@VZROm+IO64!6l?h7L>pg#MHw&;Ckd6%Y|uB0;cw|0c7nhinN9h<;qoMlB~he zxLm!1$}oDr59zoD`oo@TC~UA&au2GR_Q;-o`;)xk6Ur1Q+5U%(3HX#I&m;|t=L1hE zpM2Phzl5upCtMC^lqdQ(HbQ|;rDhMQ<0(iU6@K87qfWC|1&dKT?R)g&C1LZ%#`S>) z))X4qihvckT3H~90GfKCI2FNKBTj2<=r{&l(9V(^{p;AobUD)HZ%LPw8Mda!y)|9BE>L;#Thjs66ek0h zS?vRqHf6PAJCz*g0+$wnTO*DiE_Z=T6liehrkrJ$8{PC5f!iP!2rI3PhEqNVR4dsC zN2}sb0Fe0b74C779%p#x3C_`QBt2eNKG_Wm>j*mjh2V;Z@ve=$4cZ%pC4(Sr|1m`}>%AP_k*w#*E9@am~y@N(T4dyG|e)%z76Jl;41SErykvcuZ@U z4Zm3Dv5;u9r>2+4g0;nf%ZA}-u!BEfZKT@$Tm?4L-z5m0K5R8a*}@)<3^k2{9xjke$Xk10_)Uw9w&klGZ!DjqG$lN}WtMDD9@t;HS zS82%F+no$_cjPht{_#=(y-Bnu^d_!b)ZAMhr>>%#sHU>U8`gP7-sq`Tjp26CW8W#~ z4eS;*;)C$GTH4#=)3FJ5EDv-joK69-&wkH)s0tbQCdfGHNNw9I`2A=6(u5|MC!2)I^xLmzy zDK1sOXmE*q!Vxjp!UK~!d(fC8>5l~?6tq%u1FNA^{KOCfvPH%kwj5pnEvhU%HY|%9 zYJjOV*i2P)UCVInBjD%7PbPHSjt7++wO&xROOUA%*;)na_Go|n|ucrO!J99-Cn-LghZR#z;|X}OZE+HMl)!ta9+0-0fTG2mx@G2!ws;0;WeF0dIUFHa_>d5 z^W;a|-ZsdxUp>I?jCF)Y5*mLh(yA$AubE#j-Z#K->>Qld*-bntFu3LpPL_{0IC(BS zIFrbY%08pYvpqQn7!n~;`9V*IT$l~6DfuCq5G2gl4p;%nS{ywv$!l8)qfEJ~66a>t zt7K0@eI%vDgB-yUUH90)UE^(HYJz*}t0_*!JA`QLcxjf1FCmrF+#eoqlv|uNs z&5m>YamWtdXmdqAMR7LC!c|86_;AKn35*$3V~->TqTXN=Cr1ZQp~FHIA(36FuWWgg zYLlfW7?i6s{-VrnXv>nVT`oT$2H8|4y-<~ zkXea-hAGd?XIRBZ)PLhN&OarIB2zMXi7q%#mfi9%wjqU^Qzk}!;&-z&rVKHxAiMu3 zE;dSi+;n<6lBR;0M4lg1>=c~x$!2UFv#;D4|DunUX#EPnUrMVkD_@e)F z%LCKzPGvuS00e$5OWLom8fu3>*baa2%Au#B+a~o@_G4<_MXBNc&))mT*;!Th{?Cu| zYtD0K<_QciGUJQqoQ}PNCXm)tVn8!b5<)Oh(tgpK+XgN#_4ehRp|6?{sC_jggG5ZP zlwuexTKZ)`G*qERMa70n5WHH;t3|)s+AD3-O8xRx)Ks}%RFLocv-WTm zA2&bF^K1WDd+oK?T6^ua*FM-8n(riN6b+uZ9n5&>uVbiNNB5RG%7^>2?yajsI=Nuy z|C>s9SI^(vX?Dx%-cnZiaDUdlb!BOeDggQag3GcgCk{k(2D%#DMz8w7r|l2;72Vkr``$^MtGabl>lFs*c;b z3*6Rj{xWkHF>BW&agjcD>D`6&cJr6)k1V*eb3m#o{i=P}x$m!Y-(RbcExcQLDv&|1&hR`Hl=ErZqe84`)N!(u)}|HME!3$#Q`+jzSV5*Cla z^?^al+76E>@b?#9QO5D~EsJNwjl^B4@q@&49%779vd%|NuW#A*o^+2)G<%$h<~1-D zS7ktyrTHJcO8@CwF+OB2c_q(-{PU1KNXUQpOIoPRpFWHtI{Z$Q4*xsB&KOq7^u;c#e$FcY&Yy{y81ZIC%< z9-{Gt^h%6pntB++8bY*xv(gG7f#%_H3I>wf!#MQOlK-p|ty!^mzxjv9`NtZsCE{_M zKV7#j^*{&ONTXPc?`02$Dh`6>Yv+r*2j;Wj)=uH0eR%boh3YIUz8|@7-t}xa-{G~- zb@)Dcw?i2I8Sm|+6TDC0Yx_(!W4``G6xQX8I-pn!h$G^=MiedeBGe`AL>OS{BepcN zTA{(56_GbH8_@X|f=dY$rNrZGeG6oAp@=9qr#r+i%Y?Dsh;HS7%WA*M66v4_%QMd< zQVY;4%|Oc@PmH6ypEeJYtU`1Uj0?;@d6oX%30jq;!i;BC4}ReraD34a%|n6G3+{B` zkOWYm zlTn60fr-?Flm(#2oTfj5w9U-9kvyWEif%B~8380TPm2~F-`Xr_AziCd8XD%fC@alG zeiI@wN0$k%60-BiDb8W@r@}0*Swz%g1HABmdZ{~QMcyzu4MN>mXt*gU- zU|GO&D9V2bX7VuomgZ@3`YFbfOgedlYGisRq$9nCwfo#Wgy2oIUAScO$R&?S8Dk@o zVo-d<1|j1Ui1op0Pp0WoAfAlT7)pj>anvb~#E>4Sl?kx2KDn=nc`?4yPn@gj4o5}0 z1au#4Eq!}cbjSlP2ezh#Tf1OdKL!m)BH8elsEZ%sBwn*8tLcd!d-`QTE01e-y>blu zy!7cRS}b>6G^gL-a9M(F1|dkUzBJk(T}8TU$mP)YhD?K_HTl=RHw66B$}qe8_p--* z!QZEAgQ@ZL*}#qMhWg8jYU;9yM83QafAvE@`5jlpBRxew-c#J8MR8e^l9YdQX8?}K zGJwXON@BER_DZ&`x6;BOf0TW_KV9m0k+nB}@_R%1I9ogE(%?K=V?|J)&BT?36_=j< zlMXQpaIv(&1+-e?VuJgk%}cp2a6!1V5=ZB7KOypq(|^LFyiuU0i<_m)FlgKI-Woi1 zl)1o;Dl0Ie$_h-Wvfc{V_tU)5<7>r2d_j5Ediq9JVQm&86Gc4HhqlS-g;>M808Z{l zBu1la!=V^Lfvga5dIY;7%~jlHG5oq_ra>9UAh-`FkZ?Zt*a@KF!wC~g@fUvBRRdZi zwQKp_AD&$b#!H5vz(SOntojGIsk=w#qV_6lY{G$l=YPM2XdK7w2kwG)e? zC>eQVl3Gr6c-1CUMwi*wA8U`c#}JY%!f+2J^FWPSrUf|VE{5#&g7D|vI9 zMOd{3G%7$)If-NI#*p*r5!+KnD3Ck$U0AF-I>DAQ6eWqfmQ)h%C{MNs!mlk-3L8*- zDNKz~{As?H?9%&Q4k*wTlK|#QT14Q1;+Qe{2mG9wO!)_@WC{gWmyim?8dL;`qq+HI z+c0h>`9Bb~oHio@ZLVU;Z0{RQo{dDiE7SL#oIF-RmNq0y6*n+Omd4VqP~mmS+=cp_ z%4HWMfu4*^2;Sa5t!FioX}$KcVcj-lFPb2vt!On|8rrdfMFIiC#qAB&fiOPEn&ym6 z&G;K_tyGya0A}QUWUgn)J~FeDb03)p^yD@W!(n7G=(OgP3?)O4L1&Oho!iWzlicA! zNFKdoXA^T&Mc=dwP0t2aMicG=2C|wWWnx6v@`XLg>6|AzNJ`67SKBH+%52{wl%N4C z{To&Z#Y<&G&)dX3mknG%);f2A5E=MIx|V{*oa4T%wGj9zUCR$7 z6sJFYiH7ZjhElJYg{&M+0ZkGFonf0p+v(vY8o)mFAp+IUIv)!@{ZXWxb9azC*mQCGl0S>wbaV=TM_cQNU@cHO zW@xbzRM8Q0Mb;yjC00PhGKB6UO^ZQery*WI9jq_f$t{3LRy#ca2z3Q;YRk&8IQ>M?ayQ*>w6v zbJ!yRvuNvE+!1*IJe*+D8;Cn-(h=h#pyCwCH*NF*3fs7o-+#baNGM3uVRaE)E-30y z1>AG0ZThsn)7#EU_~C|ajbflKw{Z$`;9UyA2&*D&r*SN|ju%bEtZ?X~c57B`i%wI% z2kfehS?RIOIvLU*4D(l9pTC;C5YQ)ocV#ATviVwX@|!C&L&H&1e}b?X^Ot{GEgG5W zSj|wDObMJ0>RzH_s~FkB!B5tJxmU0`lZ>r0CIcG8T|8CWz1?W08Z`j(VC=otN3a5j z{bC%{<{~^_g<*6R^?)@(cN2P<;o+|bXv&sH>WDbG^y}S&flGnHk4r3Ep7gYb4Axrf z!fO64+hG*ih8FkR-P^MG+v6ndW?gXCThjBmH=#WXgsmVf|1h(obt}|3@L6|TtIngF zXQT7zF?2B00I+I8{6_i@y;FH0#a0KUMp&-r z?ZdC@<)PT+z#u=Nb-4A6oP4c7>3E`aY{ylFEuXsm!c4vT#njDZESnP|k)QL!eo@J*FoopR5)!Kq=4EibtA*%{TP9TF=d$D>&2qFju02xJYuQ*K!%)--7)uHZ(GFl7$qtkcl?C}QpK;!a zP_6b)v2J}?C(gAe!aY$8MkiuwUCu8-uX&DNN1z+Zv6kd--3Cr6jOLp`$+0>^9ciOW z({~w@Nd7*Gs#g|f!g?PX6K=;lc3#|R zAXuraLQoynXQ5vTW!=tgQHgLsrwqokCj3Qdv#af$iiCaHy~-(zY_j}9k;If7%bH_! zB&*Hr$z3EnJEeX0I`J1RfkA}TL&Rwip+)Bw#D(gJmf;hDL6=jsZ+F&si{)%dgl6=2 z4FxQY8UjocMEZ;ak$f%vjC}o#X8us~JwtmtD##n2C?jzGRZ&Ak&~}@u68V_~GMk%? z+b~B@=s1jMFv<@(Rh`3vbBP(VCOQMT4pC#HFQrAQh=#wGyBIm4V+SdlTC}5DBUPQs zg9~D6)$?HjV}RSNXXIn5o|Qx~WaYGtwsCUVM|gfMK37527L4J@W>D6NM7cgYxPZl% zlv(ZW@F6++IuH=2f~O3AdJkp@xVgbYeHBg5ImyWfKYf>`{V0`=Rs8QciUYGcu>==6 zj^okT*&u+n&`Paar;1<6E0&CB@Qg~5B#h!pQmqZtF(mVW!`9Cog!zjffJw0o#s7|` zOv?2z2>NN1p63nc+1XH6dUT&eYAlF?x~wyyCDIKxIcra>qBYII?wqIR@9T15P`$or z9RM#9=$1aQ|QQ)m46bqyC4`y9x_y;P2C;10z>DpWfh2FKf5bC3Ab0Nq#HW!~K z(?j-aP8@MsQK;3--D|~JTXtv4!0LU_mH6!LwHMPsZUO+b3oF}rZ0xXa$|YOr?zPV; zSGr?+nN7U;xn(P}NGE%4Su9dfGUWy5O5>d9WAx7owQDlEcO;iae=kT&KS+QbqDfgGGd*YIj%K;P;>RS z4~pUDKm0gbbJ8Ec%wPeU&ht|C?|2feS6Z#K4v21~t5{}g<*REH*Yh7afLBYcP&Y^T|C#Rut; z3TifGkyY3j?!^XTtq&WQl&#ycpmpFW|5`Aee|KL&F}6-3GIX>iOv_F+;V zAY(IW0K>m?QO5vo!oH8|dw%bqxKp#R_1oBi_Q44ai?@IPmi6+Ff2^J!(3UEpL#s+O zJpE9^a%uvI9>JK!@!SoW3CT|w6l>r%U6xHLznxn01N>@!}PDt$7-uK~H{t+cQ zs6^q|(ttQHG^kS_%kR+pyWM-q0&KRT=K>N#+d(%*3s5}_(5Po?Ep zM*31cr-_~d64AM34NgSdd6FwCqA1@*QaG4NQKBo0Y~rt2Vvbp>)tNO^p^RcSDVRVT zaM-Zb4DYH$F;RNwnIO&*eP272!kuNh2oK47J8riXp+my_zuj{CkLAFHw47ZHnvfh1 zDTF#2|H1S&TW1LKFYW)%)fP>jEr5UUbvs^i-RQD)7yhI@Fjd?fqIcP}Mz(qKU2E%G z2SK^sg3O9f_oLPG>8%5NEuXW>t$HI29-go+n4uAc=cPN0ZPxqqoroST9W@BG^n4grFdsIEI$zO`zpgf6U|ElPB~E z266uIzD&9!i)(R!$9kNv-gejC{o5GZQQpw;!DLE1M!YRd#*EyJvgu&^XVf!!m5mQ; z%9_UBPE*TOBu5LJ{)Iq0Rv|TQUuRrsK@K(40`+SxV_?n7YqI8^&VVg(<-@PZ;&z0g zkI3`nxj#7HYEn#k=d&`)8psH%tI0M9PnDq68fe-C?uss*d$c9h%@sqIY?TUciX9?f zH`^Q)D`(Kyey!rO4Ie%D+%|ucrjz^_&67E;7_$qsPrwHaPc$_BEMLze3Q*=RbNm3? z%Op=^)l`wDXYOg-H{=jnl(0b;uv#K5dnp$n1ZJt^hyR~f36?OuDsIz6MQU2<(yibt z4qUtlA{rp|i_t$xk8)v+P^=m8J(G|Ah7&TBGA)6h^WFk{l5T@$1Lo|l60$r6FPW&n z(epBMFQGa?MpG`;WmUk6zb;~Xj^8A+G7bouWx-wwmT8;YJ*vYdN0ZUp{CN+WQ%n-_ z4a`9^5*cn$r=uwbg8)rU?PjZ`OwO=t6Wp3&PC`Lq=gR*!%?1o>JM}m#F=q*R(5%X! z#RIJ}1yD5i-ny?|T_yi1XC0R>NLb38Kc5!Bv+__{WZOOVjcLU~Aq7QH-yV;;u zg7QQSV>QWE9tdURFykCjVV{K5 z7J@9briS_DH0L-tce5lA!#kW^S?( zxe5B*GcuiiuGR*Z%4(V$<$`N?2h@zVtXfb)MVYWBIi$#-qPr1wtKE%j^P}BOXr0RL zmg3vx?pDa(%if)H7C5lGb!SEETDpluwP0)Tdv8U_<%)Y!!Un@J5bGJ=d)+FaYW-$?Z+gcrAV z5or%fBAfYDSSXMp=3e3gYv3ueGkK3^o#p=Z%+?u$^xBH8T66YI909~i2{VF)2(@~lgSFtq(nXvTmg@&#T>fhHEa zP{1F{L*l2u?GtZTcy?%u0?i1NMCdhk=V zXkd3m)13pXV6zfcj^RnsHVdNG^p#6a4Os6i#&_ShbM$SAGs~ALrj)zIC$l{Idq0C=-S4~VqKAgjGB&ejF~PkED7myEKc`^s1c z0jIxyF276u6T#w<>dgDX%QTmT@MVA00W1mAA7H6>L4f~T6T2W3-tz_mt4tt`!kRW2 z6>kGnU`g3a36E`|v$(yomYlU|^T0Y9Vl5*t4l01+(IQaggf?Jz&3>SnQWVJhS)d2? zesuOi&v;!N`eq4zHvFuJ?uA|}dk*F78s|I#k8(snAIcH33s63o4cZ&S;h>?sqk)5X z?56ZcH?W5?dCp@25}6F4{Rs@ZgIC=q;v}smS`54*t^A#rPve$SkQDub7sBE_gWT3} zI`oVbQ|)eL(+3r?SmAoBrNd?sV^%QJRPvnXA2&} zMOSQ#18Pnnei<;xyBzl@wLVJkRsd)*SAX1KasdM$xjK5q$JbspJ9{>6&G1}aaDrR; zMhlWmorwM4^HNGHI%xmPAbFq}Rd)}|EHC$|s@Q`?nBl;Tt4%Gcyra+&XJ>a`joxJ2 zQnB@{zPdAr9i6_ZtXZ!8Qq8jaXtj;pO!%ppM zlWG3yPU7og<7RMS*8B9!=A|3?@7bPqQ)Z5Ma|y01ph(~f=zVepRC)@?VwT7$Bk`vGA@s^^u zxZfWCi;~L;gYpAq_D-D`&%)l#Mfg2zX%9@g$Azm|ljdk8n zpBcUyMjUE^rLwD&f?A#P#S8jJ-@;uxJHza{=_~>8hzDY)TzD5v9V}7|?&_Sxcsh}9 zOR|;NCiT=XpCD{nC{YUV)OEwToPDeUOBZHJY+)y)hTxbPF#Gg6g4R_&`bTS1EWvL2M z(*!$Bi(Gvi(3OplU^qL)YSQaYLDGkUt2aw|(dt#ZCKFt;X7ygiM|cg@t=_vwTD2ZR zdthS2LmTqvvPT4=rLIt6s~011RwZ_kLP|M`NKNi0&ji{MSrxO@AR;?U4ftrt?-bcj z4@?dkDykfyYhFOsfEHF*!SYv3gWjv-_7Nh)0|C}5O-IN|Li;%6ji$!`uy@fUF zsL@st>520Pi%3r)4aah|DqxORRKpwrHY-Wu6))XN`48i%vT9OxvdpU!DUt_`=wfj|j(Obw7Yo7O)5pQeh zbqE^XO2TQ<^A-*B^lxoi2=da;&$TQQn&R+oN+m!B-YmLWF@@8q;qhxgmWvxXu=o)6*nM@8eu1h&zZo8+k1&B#AV)2?2n=>p`R37= zY9)@J(&xn)>r&6FXT4OJ0ihl;>lp)VOVSrXHi4A5dC z>cVM|nhB`TqrBA3Du62qY>1pyo?c_J0F%k72B0&y^N}z78<$-oc`8&_@YteyBVPof zVa6$*Ems5@Xz?AJ*<#<*;yaS&sPBMtE&qjHSGkM~Gy<#rYe*c3fs9(G(;q&`XfZP_ zKdQNSsZ0_J#oF6flt!OMG+r9)b;?7GG;-b0m=i~#J zthE%F*@g*KQUNDWxX9Wra>qt4MQWRH*S51ibrPvgteed))7$Y*1KsR)@9mjC$KxT_^)?{uU&itl{c^SoP6!)8$HWIVPkWD4XFT2bc z*y1vP6Qci8+piKMp%Gl~Jkz1+Ky13dxXSbWYj%tLMKeRE2E>K0)f)p%Q@%o*$A3^lYnW_V$GT^;3UR9_7iM$z?T0W1mz zqN>bLvUB1Ohkh;ZwOZ?x-sHqKT##Jx_;8Oalb`IGD>d0wLOiCumdhMl({I;NQq*)! zmo)#CoRA?Um)~uAMOMEo|MuKRKJvCp(c=fN$ZD76pLpbpH}2FUUu&1KM1q$0T7ub# z=4ZB16QwlTt(f3-d=hoSPT2Q`n*dc1AVy@$D}04*J3h15oT&n}j!jbn1u*xWMp>2) zfr#ZiMm>eHC*Kh@gOcO(<>E^Zs~RVEv@PGZ zd(Fn`&8jK$gfYE?QnYMG7gqC|Vq!Gp^ZcStPJ6?|k=5ys=$Fap=9vEHdQ+@^ngjrZ z7aM#S73NKEFM*`yWEh8{?TN+zpsqH z8>WRw*xEku_Fj2;LwOl&U z>De&D*e@{iWPzERVppHTh%AgSV*vol!c61KzyUXn7R?4vytOB(G|^5J(McX0Pm>}W}`O|Yt+ zhn`|V2D7Lh9y#fF>qhC@2;X21<%u3^!1$ z;ijZma09|UV4h;>b5F5NiAYbeM^LjSAO+m6HIsuP(!-}ZdIcMzMGAWK1=6d*eD2_g zD+?CX(khUsz7!6${A-?GS=<)Avg|FnsI95Sub3nYKc43>-7ch@@f-%aO8*+oS&EFS z=1bYvhpPSeG^TZ;uT5KrOy0r5zT#`EyV}@)RgR8_+~_!@(eVXGWzRM`9(p08qmQ3I zwAknXitgxmxH~$&&@(zn)5Fgnc5p8`I*#V&E6EB@JZ@JmJ~|%qqeJxnZja+V-=Y~L|H+AH_(@U<->_vamFn-gcd*^)i0 z+@F6ToUKpp&o9Q=fTGLUZtrron|nALX?o=T?GElmIor{4|1D(g&W#@PxLqjt=RIo^ z00nCkevZ%DK+OweZ4M>J6#RhD75s}K2i9iDDOnrHfrog&JZq!V7ZLn-Ku&LlobZ!3 z$q!AWf9EAX=XWOTDH?tjs!4}t zX`0pTapUAk)ATL%f?3_s`thC@GEVw5fIW+iliA*JvbQ@SZ$sRvW1VAxPsP$RK38;C2l7R_<_>3FzuCrr^^)gYA-s%yRg5vc2F_ z=wqZ=7GNQg_93ABTwqQ>bteOJJwWx&1|B2H^@8hq5=cT{y9Btj!Fd4(deorfIFF)& zoBJ!c*;i1qAcIRz&Bl8krJkE`M^FfBu+LQ2LX?TYwQT7iUusr)8SmwRKp;AKev%9G zcYgPOw>Z@@vB?v+rvpiF*ge_efdWysynwbw+gb9JK8XenV~Z-44tM_ zdwXVK?F?k?3`%P!ThsN391hIdsf{4Ac0xw7c48}UN3e4ieY*Derh?7l11@_fW_XsM z*AEKeWK}VRy^|tj?_}^776B8<4A(Cl)u2PJL5F%9l$jjH&sTtyY)52@@ftc7K4c%| z&4VBgd^||@7;`d~nuwLWA2;yPtL6t{t+CdUo#i4iORNrC>7f_X1_k;dXu8GNi1Pn| z6Ga`@8Cru#h|=FbfmWo~IX5WVwQN{Lxhu>jmj|KVc->s6(FGy|(ZK)?ea`V5l)n{3bxo5xl-PfACXopdj-{bBD z9Y|yuDoj72)hGpg&F}RI5l3Z0DrHU2l?3H}m$h>%^pH=>if3FACoi2d+d}mrLzSl9hVEI>L#QjCA5B~W9u=@&k@p%d9T!K~F}+yP4gpHgUXi-15hjR3I_8vWX8314z< z^&12TI3Lk<+FNeXzfkw&%j_3e@Q}SCtCR~Yu~<%AvK%1QBc4038WvcX#u>}O=B<(5 zgyqzr3tUCJEGKb`EX3_8nGU<2K$ey?jPdwI78%ZAI@sunMHaCSb*-07+Tgy_!g5z> z0T1IHhUz2>E6w$AVD8vgwH`VI1U~S$ww}N+ps16Gu3`be9p^F0DH13org<^K*%JBS zj2r@4oMDfwwoFz4ZeWac%&d8yO3#B_A!YFLIFI-yOdled<&lVyb{5aOtF#I|Bk0|A zFIRW&_8#4R?Z~T5BVqwssj~0+y9MSFxUZ*2ZUL<40ZNwPxDeH^5R`ykFBYtBW)sLDZKO z_^{-=Zl%~r2^{LoyWYAAUDS2$MA5Yq6x-9aXR2#Ybek_gopv%nRdRXJho37yWcFdy zeSpy@87B&C>A~F6;NO?YFSO*FTyjnU)j_6|$i_ka?Ci-nOP4JTZV?|8QDZvLUc$*} z&K-do<;+6t7*zEO%#%;^WXb2zF39-d(6LaCTIb8{VTPvA$3rbmS@<2U@cE)}^I4{6 z@C-}DRPmm$AY$MWj%Y)umELlq5ry;;aFgLX1j;&ak7Cch+#T4x?~rdINGZxndy#6b zh`r2$z45FJiv>7<0K|sy7e~|XiEkj#jv3xSVaG%$Mk*TQQ2>bnH+x^?&7>BzL)RWO zbwvj#0v^;^h~wmXVCs3#N%q}<2k|ii9#|$ADzUKoq^ro)jT079wJjFCQf4+3#SpP* zdzTF%96!HUyaI$tU%Uc5Kl-q2{o`v;fgL*EX}6A8T+{(I)}tBZ$P2_G9~n92-~MNU zq4lI7NRg===IkRRj^C?eu6*~5`BSAzFRt>*v1^6wCPJPan&=of(r(jkvjS{ z;UC&z3#UitbWYr#oruTl{$3CoqC`2T7n-q^6fFx@ur>0L;5?A{lJm?R2^!Q;ibW@z zk!Ng6hP@$yb=lx9#7}WtZUr~S<(5OPiU5frXF?`x|suHX-_7Srl zBL*Nc779Wd52px)35D8}_yHtkfNy7%=y1Yjz<9F`?J2P{X^I#LJQIeEnY!pYhWwN8 z#&~J)@=`0~owf`1Yh_ANLb}`_wIC+S3d58TA|DKsUolMKVF8qQWc5P{S1J0igwpeS zZIrA8)>E**|0z(yn&dG>S+FL49lrbqGwlQ>Dky-3RgQ?7*fqZ)++Vv$n@-^8-&uX z&3=6ia`JRSh{DYZgml=|B`okr3$yl+Q|?uTW(@VBB}2dln--Fr0=xNK8#RoQ?HWaa zjW%a^Tcg-zXOo8|Dp7~yP$OHE)F@uj8@^Eh(AP`8QT3viw2P|j2|4ph;)3~_MU{|0 zKS&_-sbqi&b%q(k$;@zBl3v$#qliJSvCfoEV;zK;9OoVTx+TZE?A=l#pa$1 z6S$_cZLWr%42#}CP zR}>zq0<2fEGoZE+WJ{Rpiu+2hSg#yItXrm|#JbHpve&sN$IM~?#nFnB^a2}3K^S<= zJLnH4WIjTg@!6wgvf9&z8;K)csMweY9<7T@E90$gIB34z=wAcd>3SK)hv(S3YtzzZu`&5^|jvosQ({ShYMg}~#r z#%U5x4YB%17H^q}9R!J5Mq|pBEsl1RN=lbLd&wp$e908+OD`D6i$`BG*&qNWFy)*_`8dq!4v z%{vRkPAJhDmZDV~AbCV-!y<`bmAjNUw6*pe+ceB>VG}tJ4xxuM{0JQ`wD5u{&-y`O z*bF;N(!2zfBG1@{U5eM*%udH7GN4lQ1&v$yzaM>?EJb3nl`)bSd9sW+CVy>1JhX$} z#V!9d789)(5JY)n$L(hqIUPM?Drs)G9I|o#$9LBAA{IdJu@!tRBPch7L_N%9JEi{v%CBexyOAnFBs?#(!KWcXF!Il5AOHb}k^ zMzx(T=gVS6dif&H0%^_#F4hq#gk#KY3pM(;PNRskQQPiB=*rr)=H`%3sp zOIf^8E{fI%XvJy(dR3$~`Z|Yw%A{9$v#v$+$O?Gw>Fk+IaUCdz3SxTeW8zOt>~(PD-Sn~VS=#^fxg0c%7M-v7#PPUDQmW4NX_X+WR;Sx z<(5q*)G#59Q7GRp0`EV|qj0!)LSKf~ITetwX_)}*?&?Ily;HLThWq6+XaW&{z#D?M-qfxAV& z>78dlk1_rm3eQFg0uUQ9ODjSppHA-?rc&)^Ru~ORQ9xQ-A!F@D;I=i&0mnO8miPG7W_QL5yS*KXx*P0J6DkCH<2#$ix=` zs@a|PADN`0Fy5-xq6Z!9q8_&v1-GCJPNlARM&>KN7;lGT(t98mXbR^xYo^$XvI|6- zOpWQINDo614X_8g+?uTi8+`_X(9U7627!1I?Z&D_6|N_McIewgEPp&he)iI-%t$U)En80c}Y&ICISUEG@rlzU$pih z9vr0i5aVzdDgTvvp5=FZ`_<|7XCxz(L(mh{t=|GHW%2D8c5}sqgQQNsmoEHuiT! z-<9(TWSA*dbJpDNqVZ$|Q~703fhPun!4})HHi&<{f?O3=efXK0krGmDJaSvI$aD^Dn9EAonTmj_diG=4JGLY^rx>(| z6>e_}DVN%2EMwBLGL(CT$JEY!YM^Fg9d zjPHl}>5iGAt-wt4!#^-5pfF25dGM8SDk0LF{W;`CqT1@IEwxk5Q?*a~g2Huy{W-GQ z-voi3EbrdFag1bwUHC!#Z~+bGK`1;p4sV0dfI^8yjirOMTTWS?wO0_PzFxN-j7&_2 z%I+vUYVMFeUE-Vt85Y}>a8ZwJmtIoV+4AwSkW*|N5 zp+*f6iC4wVVP_>{Fl(lNAQ1sjnfgic4H*pYV~c^_;$H=z+_3i->K9jzAqO#cjjSHl z>e-Cn3NBHmfoQWZT1Kcf?f+9jj^fk_zUZYdtmvbN*`IYc!vw_1X)T>GNb_XcP9J&N zNQXAAV$Isj;5KEEYQoF20}L?vPwk_NgAY;IyJzg3_m7i8T2-MYOWx+goPrj##CY4e z!Upj~kswSM?Qqc7!_L@KZ3{TEq`e-Hq<4tg^hJ{*D^Bv>=1B0Q(}UowKpc#_##uo_ zel||v*rkyyQLfPX1BRuE)NJGwYfufh+Qg>w73o!x3+_))eG@XnejHc=__s+m1|sth zu~f(dZ(yy(XvV|IvFv*iOVi2FlX@eeb@;!%!Yr{QX1gJz(7F`mlA0hoW++V8U2WpE zH1`+WEEVN2fPQKs96~p(xr$;rp-@vA=n@_;iV=5qTf(@Es_>7kWe~5Pdx~cWnwI%O z;iOb#XH$ThDk2$`?i6ssaibt6$nOsvw>b6uG25Q54iecx%BzA`CCL{x6EpO65CG#G z(5McI3_MCi3NS-7ohLG7$~u^mt!L3;Za4u&frqgU1_|{abPs~Krk{5s+Soo|}s}U;~vT*Ud3 zWH6$7-yk>LF2ZM63#fr?#*(QQIcGx7tv(0I=UiY58_|B|Byb{!856t+NgvmkC`6{& z%FsojM7dDIrOY_?K-9}MoJ%R?oZbsmD7-}G992h0@Yc?7@N3_Ek#3(w+Vf1Mnz%(d z{}K1D)>a@(4kZzU#w0C=v0a@7FAr-G!8CKf#+p&N?1aIJdn#O5d?x7si;RpgVARSz$!`)Vi4RB^2AmpmIYaUD3FY?(mR70YNhIyoird2@G^0qAH^3W8f=H#cbi_9a1 z5NQ)lQLWN+Xoo)@RBh5xnz4&ut|4+bDp3C-!_424)lmiV0Uk7rM-Wm06f3fdxzw z0?0>EEAXreeo>dR&9BQfY1CyJHH(q81-c-gVZks8cd(#5z}YU=u<2IAEvmAjgKK7C zT*ffk*4XOBF^bPjCr}cw1sdIqL@aBQYlE+bbKrZ3sSS1QYaxA{)i@obWO36 zTQ(Xcr(jkj_aV%s$Q$GqyTsxRjXCT&N!o)*xUxxK1wV30z%g?ortrxCFPPrmUrl~- z5uRW$n7xYGEcTiR%N5MPv@0@S9)`O}LQn3Z4KdN)VogoKuP#K8<5>#(@YQO0aU1UH zRQV1f6=P00c2Wf4(~88{1@+RICtbXU;j2~VH3*O(xfc4~8G9uXu>nPJKt*ibLwK5~ zJfMR9r6cTY3XXN)yoF+xTOLjk9Bfl_{tcZ_Aw?6uAiuJ(JZZuXrXU-`seE~#Uh=Ly zkYeDFPd{KKypG`I^E&ULsIEMsBFg_kM^u=#O*NO*`Ew|ye92Z@aW+K(LRnq!xfUvc zSv&`5bgQGyoKrzF0?w^)Fd*TKlfRf%lnUl`%z|(W{iXGN2UdixAVE;HG7Gzn(aUSw z$a!x843d9OEs|Kog%|5!_sW|00)dW#7XU0`8~rLt=2A{_(EwpX9XjT6(%kd0LvTR} z-#b65JMtxeQk+r1u+2hIb7cmWX`>lJ&K2__4|Ni@Z%C-+k4VcO{9Li!mOI1^qadU; z^ICHYS*!}HtEj>r7FH1* zyNcSS-6|{`s5KrVAfwpr-3eYJV{EK56q6S*d<6npT)tZ?m_hoT3Oc&XR&+$D0m?w% zvm*JpxFSjys|bu9&PtbXLP`l_MGrRSon) z+kioKxAi)C-b0J~<+iEd#&Mp{cFv4B!_-lQL_YJwv- zDGC3~(=WhrGzie37@_=Wx}k1UL*ydJp@_0h%1}wdHXoFEsiMxI?@9??5LS#4-;Vrd zs&0C=z=Le3=(|jaGOWWWn2J$HL3&FSTG%nQZZKk#ep`!~wqevhgAEdqf|FUiw#MbM}PH6~&- zRr_xYQZ|N3NtS-ZUNMzUCm`?BKS#X|Me=GaBVJ3Hwe;xns`8V<*i=hby%DfaZdeQVA zR(Ajuv?%Sku2gGhGw3dOSYx8|x6IH>@?GF9q)r47#M1|rlIKv#;oDB%W z6DEx7)z!;_Iip&ufqj5h1KUDq&?-JD!9)F3-6Xx2p3RS{iZ92g>LIGKe)t+Cizhv7 zBls(ntd4j%oMTc^-%ygHl;jfd5B?T zSEH53!;)BJxDSomo?pk48j2b0Vqgv{3P2ClS2~TXS52wJcy?lx3!5`3%5p z-Ku0wacfO_z=3UcAU5G*p9S8|O{J_;Vx2M#8VbbtmZuUs7Prsh2O}~1?c7#1yOvZn zETxdrj<9*C`r^-aHS_$iZ1X2T{1_`>Wn-7+OMC@g>EA693NCZi~H&j8S|x< z$O2x0FrWuYP9GX7c!(XsVY6dHzdvFNF3hoD#t0$%7UaX=H#V9oJgre1LWcLrwB>`N z$=8S%(noxJ*WW>gJK=2-55l5$Y*0+CAOpvrGaj@s!jTw3s4?PLoSSirX4T!=F>36W z{0!2M+o52A9M2iUzEmw@rJtkMOyx_CgjP8T)X`c;q#kn&EZ*qEiY)w3P8)NHbWlYW z{yMLyvnQi83vE#cmGD~Dx83p(vQT}5Q>9xTf;wz@NE&Bf{^yVx`6D#oRYtc_kXs+J zlHzrN{pnpGDi)1`z%3AEaq?R>mnXQY)A?O@YW8xjZrQ;oO+MbZjTJUk0hwAm+2V+b zfo7*S^sJ2w*TI_ngAb|y#wEP@pNTbuYsyX@oR_>aw!>v4>O`SfARycP!GCu9bTz=3 z$T7;ctqR8DseJaEXY0Ru(h)ypA?U>%;Z&JXiu50J@grdbW6mqKKQFJOcSN!+7NU{V zww0@VVQNn$=NbDt#y#d0XuSfxlJCBZ2cl8PUce(4^N8Ar2m8)#daQyI<*n*Sxp<0- z1vn!B|2;3gY(!OTQ3yp)QU!z{c#Uz5vYU@gVA_1MWL0;b6rHM0?Lb|(Wd~JbD~EpI z;{gCBXcpiYTBY;Y*f{F=oMOZ{RmwYOd+#VlT#z&a>+^K(%;YcBCvFPkSTC5^z{KnU zwMWZF4+Ix*rYyG@#L?O83&{6hI`IW&u!kgAICIS+o}7_Pkne(3b1$i+=5h~r$s2wS z5wf%aZnUz^&vJHx%A$`$k}VaL>1~fKxRsKKjxgh#Sz-(l53&&@%&aY`X=S$DN}tU* z;}E54iwcWfw8BgUBGKvepA@Xr=aU)=@xnMAUpL1LSA{FMOaKEh@KrAzAZ{bHAnsHi ziB$x;Xis_lIjpS{QdTL7l^n;UC&a*r>S3j7aSAr7#VNp%% zx+m4A?@@@;!ix0!V(!tD0GZOsMG)T9jQOtfW~F%3?A{4x0n$&?x1RjDmLHO@Uia0DcHkR7<(76ul9(nS2>Z^w->RtP_wB}Qp?Fv0Bv1fni-T2L z-NDqH8N&`a0L!l)w#^*%GJq1-fchOhfH^)T|ItoCKiJr~?W1q@` z&m5$TnDYXwFmBHBc;+ASH)p!npTqaRNzI2JJcTHMg}9oc^RsAM^7g9naCMDXR(={g zVCW9lRkgf*sZ_D#Qf5KapWfjP{6W@mS_iXx<67bi78V#bsKLhbj_ETIxG}t1if8EZ zxq|EY{GrpP)fmclc4;=|UqNULB!b$BD2ngThcE9`FGE3wJ;Z8sxKSlVD#-|z`G~!V zJxq>I$9ZHm!nlp_r6)5-y+aY6=^6*V`KgS zdtpx?3-WlkOF_ZANpXTP2XQ&HGG&F7?O{L<`S-8Opq|Uw2x112IPWZyp0TnlaOwZM zrT-1mJF%17H&-x;nr)5a&pM8zdaRNkS*DA~WL%8?_8)#~AO37NUuGML@*Vc;8fEYWFOb18RxJjm$reK z%G!x8jrNce;&2nqZRIp1Qf&L>5bj6d32R^=Vm09ocwzcL)Ts-WNP7Q>`q=xwsS%1f z13Bx$OolHK-zMMHc37ptPhs^lRaJhYkURj-&PMbD)`r)OZ9h9?09S~Ft_2Iu0@X{? zK(W?woGflC&ph)q!P}9;I%DX!Pz;&Y<0S1Dxo~T|C7JD+7L9wOju-8cQQw zdt1J-04T+y+vb)vSZjNI4Q7Cs4Q9wkQ(24NQAdt+DF;a)Dlqknes9y`l3X11W6UAG zOm+;N_8k*Tyo->yr}wLFydSIg@S_n0_ofDtr638thi&zgT5&5MivCh(eXUSHEH8#`_f zJ!^W$ZX7c^O=XdRCZ%cWzh;-A6FC|N-{<)*i>%8Svl_eVi1nN;rA|wa*RC`_nMO6V zHIg=|jZkNo6Y1z4_kK}MM7~~5M9z{Hajq6EnvXRXaiV6)iP$8echDl=TWmh%-Z)XU z+px;|qnHsrxZaw?$rSxv6~M&`W+Z15Yt6rA4{^X%(L>F}sIFO19rn%sru4FzQENv@ za@IZnnyspLTg5r>3uQ$OZG=D$qB-{d^tY_zZMtjQMXXLy;DZ<+oh5oBx`t*4B?9>{!<@BrgQw zI8-kKxobf$@xM^OJ^)}JFu)oc1(?R&LZDRb$Y8V>X3QvAj=rA(GmOFE9r?SjiZ2sZ zB58)~dPY~shf((oM`|?BUH0(5TU0fsoq8e?%Z@p4q`07zWdAl`9_WF2;+Vt2!#t5= zpGDPwVHDv`}`x&XNe*-Wt7S;>EcE?^#`F0i34b!m0c z6HI|iUEL`z`*m1=mh44g*^X1X#W|s`{qJ=c@6_$RwIBJcbqf%PTCj|wCPXVL}bp<9v3Ga z`)95Hi-f^~S*xG7FbH<@A0t`T*fy3m-GGqN0l2a=>F0`e1xuBUVVf-{7y_zNcr|JE z_8bm~(hP3#Cdqzrd_~}SXaK0XUNz}92{}!WMTWK1-xdwpwJo2$Ds-*!7K)~`D{$P1 z%`2Ok%_~`3Z3l}({lADMb)jCslANMTRK^WQsf6}YY&XDe*f(>;wqI)OG#_(GLTnF$ zwbe1CI3o)-mgN7fgbin8Ve;Z3J9;Tp+K!}W$M^6*YQWA z7meL$jTKW%Yq)rz}D=s2w6>&hcn>AUZMV49l2?xK*9L-L|ZteH0yzc9P z@K-6B$UNK4EgQELnN67KC|4cNrb(XQZy6V~u?Y!}O4d3jcp3DU$+qmuNiUS?!>sze z+MmVF?HV|zML7@|mo>lVLkwhJQCPMufu3KJ}dCH~@td}Jx0|Itq&O-8`Wbyai9Ic~_zy^xc(=5)4s$?p!LTdzNV1?&ptlLltym*q* znLpWs7>Swg0)w^{3@2b48HVRW?;rLXl`19)}3$Z_p&f%jO+?m%1E^K?r3Ic zdBB(B{nuyvLn>W`OEu9&&0`^_@E=&STdU+yiyFl2A7nbWuRdqUmB1l>VvWzg@B!^X zji>UxA3R6@#g^Q%BskGB9ta{SVmG--OK?0=F8@;Xjur*ePt_P=Vfy{547uvbFf!CJ z{Z;2tN*Hs|*bZ5J*J7jT87kg=(0IeSQ0$rvG^g;)FEjCy74O*c0+Q=tb6i2dBpSv= zZ)((%fE`O=dH^KI`>ch}D92&z!Pq z%&yjk8MRv~2s~@MEx56$NO#onpn)dr!gtyLd5R45Qg?h-K9m&s8nU;I5|+ZF5aHoV zBeJv&%egAyInoE_6LTgf283ZB)t zlL$teykVudjD|aRh7NYpsgHSS>IJ1wn#&G1=F}rifdQ^+`8TdGUaYlvPe!}L`3Nej zo2wG5p?7MWSU(}sVD7G?tXJtRotJAbHE?-pG7pbi_mZB`OEzd|i2Ii<_tLFF7cb>c zNlM(h86?F^R-yG$7y68Sdh(UzE;IKi-A$ea&oe55Y?d=7UTjE^W-^ZS&}fm6xao-@ z`DG+$(Uknj_Z-no089T9-0>R6@!P*Ul>Tn3&4KK^lEX(}A7!1Rz~pzLaChZOC!=Dh zu}dQjXvB4oR6J+~j}v0LUOcAGVvNu=aKVdslz$sv^k0wS3;wGTQwuMOZn;F=;`Wy$ z`>Pzjt2RRR+UzQbkw9E<;$}SO^Y8qZKnwfkl}Th;Jzl?ef@A=n-=W97#aCmts6>Y5 z=bstsW3fKNH9eXF*ce|*w=^uE1QNt}DNNh$5ghgr9}!llg2_Ps9Hfz-JeLX7NG_A@ z0bN?{Cafnyyb8E>zypy4P`I=Ns9m-!a0=dQYN|psDU}P1)rMNuIk~71U z;6*EOolx=_Y? zGb9HTc_iUc&lEDYx+G-ag-szsNTMpm)a*e7Fy#voL7|wVg^lEqNNx>`U!3>c=3d3H zK*6THZihE0pwk#`EqUCc26)F?ngX?J52*%;iGRIt(-XLx=OC1uMQ4WWgJz03ZZ#3K z9)<_DotrQ9u!5&yB;3OUT^YWk9BA_7U|*ZjR?O4{En0c}IlEAlq@MP*;Wf%%d}L7H z6vtHi+G3jIGihI240E9ksCP-HCZ98_SA?s5Z8S@R1#l`(!2(m3#TtsvEt@}$gJNCA zNU*!j&T4eUyWQHZwtuW4gT#n)JEU1k0gP?_a~%FowRgPngRi!)sHUXUc*&aP$* z>)q_?i*z7Uw6?SLFJ858?Pou6?dls3t_%1u{`qh!Js5wIEKQdMJh&_uk6DuW_rAAG zGO&1(OMd;=Yegwqc3b=UC;qgAXZF=|6y7)*o;nHt$L>dg=b7`aTLd0L)(Vgy_>YyT zwaveI|Jf8%PXsl8CR}5Y(7t_RYUX|WM0@)V`WDHWP?m7ktN&^hCDfj+1Tth(b43xd zkuHK>dwo1)YGr7Ve3hfopdLD2Nm^64MqDh$8M$uz#E*V=wHn#cr#H~-*phg?26ct^ zvp3#9w>EhAJvm6>>ns#*my5?--(S)`G~Hc%-yeGDArw{WS$pyOr&o)v zV9l0dHJy?H&fMA$f9ON6o-?SXUjFhQ7*s{N3*In%-@dg+PCM(>H>M9(*Jg*_{px+x zGL<_3deWnsuMM8recqgb8r-+<_k1<`uJaIGH1<^3mZIRdkM)N} z*oh9B)bGRxdn5WGenSZ`1iyW+^nFECy6h*W@5}KOepG{+kEWgw8bnp+QDb}AU z3LWVQm5bO>ODSBhwVP6txES{{5>)MqMrc)=Wm%$ zzt(6IwtXP^d7FM1*EY<{Z5(Wfr=lZeuoJyVz7)wTP7`XKp%SA6#l&MLpjj*7lsi zBNHrrWamF0N2k-rqEi)URQ!|jUm;(*aGP#_DgAzOYKx(=*r&S(PqqDEH0;L|z%VdT zk^bY$3`%bWk+m2>aoMV%Vs45hgqq#~gklv)Ln|R92$VL(*hkI7CC~(+imx!!y_$+D z=@CT{0EOBHur!FKY-bci65>XQBqffS+cpkxUmn!#%FS8BPGRh07fWb7?m;*UJq-lP)*gfP-lDD~(J2HE5|9^l+T zuxfI?TmHgQ9pzeqxVX_kENH-}^ZphA9Z^z%Zg$z{2RemnCL`btbm&)=^x@F>LWESY zPlPh+L)~IIfEH3#K?_sM(q?@XA6*Z*Vr%NrpWx|a8*xLpzfg=)keq#|dtpC|;79>! zl}P>KH=pKiuLVt6Y97U|vrxUzNu|Ybm10?RVX=3S$i?qJ1bT6&H* zZr_e|ckp}}0fwYjqQXfBl#Z2tgV=x;MrfV8oZ~Jl+=b{`+Hf-wV{>`>Z2cEAlw+L= z7;xopQ;=V{8LA#!Oqa96Us36+g3Xzo47w@fP&q2hny-jfa$(*=WTLDktDM#g)EwST z=u^i2Ebgh9`-FOkXeKKKJB}udREpy|6ZdkdkQ5M3tQi19)4g0F!~|K>Ucv_4hEs}| zl$FQYL_-DdFT1C860$KtzOxu}LVH*j;?3()X)nBOn2z1s%Ki8nPLq-P99&9yS~2 z@49waMrJ)ky$@me5ZdZp@wlBoVwrR<)o7-G^lWN0!ei+L%3YAbQrmh4RI1(YZbuZ5 z;hUa-BG=q1A@-N(zvko{=$G zux;!dWRh)Dk{a6)wC5{GE+}`Qg*Jd0w6s#hFIZR57u4Vznpd?)CP;rD5uX#m2%_VL zL*f1w&f;zMQ)nO%9mTK%Lu7*RyN8%;m(d7`PfC+2!uvq~d344)`>b`gFV*74?uKJ4 znER!ikYoZLa0qwtSr_>?AGW`TAdHtr+1h})%T}y!FO9~z4+3{T>hI;aFoBd*ALb1$ z9T}IR!^Dd$yz=>|Ub!|NsSKvz3@OVzr&}HT7X)+rq?Iz2;7z6;Xa-b(d5lBl|%ItpEHhIz+&y)#QtP_ihdd|r_i-HMR(5?A!JD`tYeWD0D z0Al4~qW8hV*%TK0;aQj$Z%NqJ27QC2o4o4wtAmhbT@p;5qDeiK(GQmvw3CFgJWq?C4 zAsLQtr6~pI;BR#!l%Ef8GZVu9ceZWXt|_^N`O+9a(;Iy!U`>Xpj0UBgc8-l{0tJZ7 z3<@ga?Nd>b`~vAq?UZT>`9yb09p(;eyHYap)5G+V=@ZF|c$Lo8R0xEHsBF$?E96nG;R5XOV@ zM-~UhjUWJl`>!A4Yt5I1ITN#vlV8N}$Op(_i}LXl&@#|yg%!g~lQ9&U#WOoZxu$=x zkwbQ*?L_dPB)PmI-DI<*B>I}2jg(|V7L%_vs3?i%vE#-{vSqw(NisiG@zjc^BDhah zn^8$@QOHoZ#8O>rXoWz7umvbmu*%*A7&>ku$Iqs(!krm(*nEXahN&VF}Hsv`Ga~~-{nKlvUt;k8FLx7cU_W%zHYdpYQmRQSfZv@f=!A;a6UXubm@$^W9h0Zs6W^-YSE zcBT1O(AiN2^Bk>g4P3Z*LmwKX zf*o;x7bUl2D_uT)s{f zcaK}wXT%%|_LSv!!YrK6f?GR*FXc%6HodzI$bwt>oo8kTa8}!qXP!B2#ciK7Qy4Oe zq}I_CKl`?;*92>3VY6$Vsb9T$tXn}_nX^{kT*oJgJ?u74I2*C8&7S2F z#-EBEy+=VLwa~uegG3LJD*%TRe|?bbglnSH{NnbqV5`|f5LvdQPXzBXB}WYa7B{dA z=%4l8x{u4 zT+e+4P7JUBvnrUf_Fu?wv;`9xDhT0EQ*A*7-Av0v%(Z9me&Vf62fHt0Q=QwP5Bg$I z$uMqcxkb6npl9*S*;s<-V&N^qF=fne@`#{Ry;(X;w#rOo=5ZW3fF#%`;~1+5(JLG|&kU!k=F{?E-^JcZW1sChAnxj5@Dvl}e6OBbTz~A<>P#DZsU#I|AYk z`i06v2t|xW{iR&Cgi_8rm_&GiCh1mGjfS9^sVLhxPj{6?kx)ZDWbQ{&1?sa$Pf#uupQHjWmdXg#qJQFlj z#}H=B>kFX)E?da&I(Snjn%0|jS*WOIWZ_|}7FKmyE&UUm%cysIn#t-65tZZ=LLX`f z-j#)S?dnAPvk1Yse=KL7J#7*H>$GcDYalemUTzr@WML+Xk!J4(NXB2}&G&oQHH zWq2mP7nWwH0MZKSi5QYn$;*OZ=;y=YeDpAk`FGSGdlg{udWrVkk}b}gGeeaq2sGFM z%t%(4R(U41cy0XC5wlUCFfT@t{E{ig0@Dm%my3(?5VWn4vLd)OP`1qSwu(B7UrzGr znyrmWF_d$T_-8(;8!V{8k^sYi(-TKUEp&fnm1aEvqrlL~L8H+a7-%#w#>bUPwOXsy z>tTpJQ}BSj(D^>{#Ds$;!3AV^!4t67a@CEu738XBxUP}{pEfN8n}Z%?GpLeAXpWY?ZK@nN`;}uyk z2PpX@y;V`XKlJ1x-XC)A3K#E>FN*hvI<+7V%N4m?jbh>sN^8UvrXONB?{KxJJIDte z_a_3a-9%Ati4bendzk=oRl$R*`KW6Ri`A%VJF?p4;Ij_Nj?t@(EMY^$*d;r7mqm`0 zoXjwFYHOA5w8;vV#+`+7-KaAX&MLs+-X{TnWQX#a`@3eU2DBZ`oPDa##5zknK+$nJj!}5j|hJa!& z?oyObC|c4Kq9gq%%i`GL=*oy_gS>_s)4dU>iq=Gm_Jo*R6`;kyoPQ6;tMrGs2k0kG z|Ahm$1F{iv_Ny<^Q}LhO{|6|xghcYm>I2?U1j6y*)hrfx1vc>3k-dw-D?5HKymU?h zFBH&{&=b5KRNxJtH@q$^@y8hRKtDQG_kl zwjk9MsUFy`R8uobgcn!bCFBT#HaZ!qR)b0$^8LQABbzjq{`8MXXo_}@Yo?n1;A3L* z`R)Hiapq>6->Sq?k&(R1%bEy3?ZJ@?*#FPo+rar%mG{2;<^MLb|1-0bOp*yR!2bU` zJx(x@T$=+iMl+iP2ojXja$0T+lwRqnpG>YF6ET<1J%J3EV$^AyCPU>Y9z&!;721H* zatdmy+)7)IrHUnD_&G`cN_WuEKDlQ%vA5`}u}_?y7~_rEGV037DCg6kP<`k)f7f}xQuLsU#tbh1 zvkxMvffcoCqWl?i<$Phe7G@nP7}iB5st}x~mh>=v-n+}EDd{go$$L^KpE(}E3XKK^ z64G7*n8QnO*&_&VteUp1x-E(%A0 zh5k&63oTdy<{SQ_!3VU}#WeYVYyck_e^v570f4xT&!7Af0crl!b7BAi&16Kfj{30P zjn#~zoc&>EsR#8%v96B0^kv#(%0ywC{{@wd7L{cAomL6MLnYP4Dml3|_O2)Ed?nx#mCV2n$j$D_R9CTg`eI!r_vnj08@RSn_}@~=)}oSe zUkOu#N-UXin3eqRNCwO5+7jen{2QREG`4)WqRq9EM}|r{veEb%3^|IRnIRwKqa5-f zKFT2<;iDMx*U_kN(6}3l#$E4+oJpVtE;{D-2^wXw59_NO^W*v|#{4Eqzpdv2xeIe3 zc!P%&CRM6s(LukztK3I?xejQL>#G>_1MoKaTd8KhUJQXJLtoJ({->yD(SbkKRrF)N zXjjn_`YHzgPL+R_(IbkJ2)4F1(5I7G^;iiB6X!8amn2oTN8`>b=`chG~$ zurortGSQMQB$PEwL2F00x=04VRbnHI$=PsIiPuZ~}p+|@#-5s;7`F|zp z!)4NAq3;_u7qgI?K9-b@j-5{P$2*(9wX^x#I-9?}qxny$DfiK)$ICVyFPeY6yZKKm z#rsM6RGIY2qWMqGX}&WBc7*ygo4>BJ`RhBIzoE1Fn>w2RteWyLZTfuKre})gKhxd( z=au3^B>i%k^hDA86LXq><(WhO%FgC<{k5jD!UU)S0EogK};PfhtGZMvsy z(~+Y2N4lH;h*Ertqz{)#j}^^7RyN;(>n7=jfJ=lKQf4~cWkG)ASIrvU)_iGv` zu_O2t-OC45#ptLElV|Wns}ODsCoj^A83a@816lNd-F^@?35_4fD*m&Qq@?pFXza92 z^5IHU+gGJ|`kUFEz>#)R{B%3T*N~ncpx2_`Y#U}J(soz78g&YV1-2-Xfn$ulIta{! zA&SQ@0!Z?W568+*P37~tdDjECXN~=>2C*?GMO;A7{#K6#RD3}1e(bLU?I(?Q6Aa8S zAq%q}iSWbBv}l-Rqe9b`r=zLL(cPmOay#uqeVYOLd>uzuWW~(17d;S$8gZ`OJsrgO zMUNEau)5oBy!p)+?fYTIOkJt$Ve^QE!k#u7se1m(E4cKc=OUpTU2Z40(>;0Ld*JqV z^Jdm4fk+d$(oZ(#?@Pv)uSf)vKneq4+AsPB<{>K8}=Z_fE!$M5;gFNOte!g zgwD@=Ar7m1!6eCIoOOh*X-0EHyV)hPHAX{aH#YqcygpK1(SHb&pF~Rli6H^bj3nzFb1t?jzCx|1JbZ;PA0F3IY(&w8sY1sv6xW zi$M;Q-`BQ#AGHzy(V{h!R>IUWd6-(=4yGnpwLl(X(>ook-(L@4+a@N8khLS{P|Po?rK;5&n$j* zAFXhkTdWe!%_Xd!oQz(DBUsEV&HJUZy7rMEdu69OnZ-(@v?vhx*8Nxb%4~<~)~oDd zwHN`4$q3bTE%pKl+BLgM4S|M4bWBpWy)elOiA(_FBt{iTUNS04YG7t76f98N<#HnY zaFfD?=u)%Emiu<(q{-if2vIRIKyj*5&a{W>$D*AGSb=}>d80l>AzbVReS!l1bDKUT z0g(k>89FX&QR#^hjIb*c#V$&$2FlY-3JDngWjiSS;(-{)3eGwQPRn3*^-Ko3n%!RpNT z+w$x>?e4jxX!IryF#(88-&yfN5l`K-;}b?HOwOlD;qU&6yXt_~lZ-E+TLR8S@Dq?1 zl86l)_?mnzbQ(ld{|pk{Rx3aw9<d)mULI;ULa(G>Y<&Md(P*q7dFwvvg0lFmYyKSd#&t+YbYGcJTH z!iqu|Rx5<1{xn*$6qpG283c)L`AYtsh94p+qYMM}5cE^hSh~joC|hwbA^BVwhB{rl zZ%c+fnQX}RZQ*=L5Ntjqnq%LbYtTzTo9uBNhc*zgTbyzU8Ba4867n)zbDf;V6^_1Twe`k4AV$oF%45ymV1<`1=_^y@z)sdx;ufQt#pjkUOf znP71y?ge;{>2{;Yz>1*A^bVnNwITpc{5`}=ABvVo_9)bS5M_n5F^ypfv=y(}( z+{bt-TTnqDKMmv8h9DBJ%->$|J=>*x|hM9PcQDVNDhW! z&&{e;AOhKB5Qq(F4aXwgBhZsmUOpggA@> zmEH|Dzk4>Im_>8EfjNwRdxOj>v)Ts87Hp-C12gD41`NS5Qkg{M1v z$B3qXNk~5Vvm4>^^5^&K!JTVnx00W*&vtmE4Mgw0yB!|Q4_Lw@j7NC%XnxSXc-^XY zV8yce$dN4iF#EytvE;coKX;e7mnU!AxB~`o??;b*C`m>rK961=LPqn)9yZmEbv#J_ zct!GAtuyMYNG3mXUC>LjWah}`!#*mVwvUKIBZqE7lm(&QZse5bcqYvD z3xms=uaXlB8zSc!S|%v?;@E*F5v3(#`fC-3y)G4rRkZoA;AM@+Y?h${!3h=a(@ZEQ zW|~3gEoCrSYZG0$;uxtQKl%H*JC{Tszd2gEujbFAFViaft^Une{8;TLFw&D0pF^NJ z0ov^AA4r!hT{gIU#mb>oXAO^>ea^XA;ug6cabPsR9gPJ`ffz@9fdN|2ct-1~&9KvY z5`)%r2R1Xv7Gw3jF<2jst85vS+eq}VtCivD2FEF2-R=g6 zDM28I*pzycQiu&MQbVH{M7S|Z3&ym?e}PNbUfEdJPzPL&yU0{T?tWQgN#f2{u56Juib&A^$ zxUS9yiqf$%cjLe{GdI%Eas=4cdDJC_5l|60hITCi4@PMb(6tt^@uE%OwrTtK?EbBX zL|Zpt9xop4gVV4oJXQKFyRet-Xz7q|X;08R2dIn%)fYsZR>RFd^RXiM)fs2Z;7ssF zyQCY%wVl>b-auDifV<-K_Lvn+aZVo(XNZjf6R6#Deo&*l+&iO8Fcn-(p*~b)J7D``O%wD}r=r%NM<7gO9p<1aa+o7y z>;*BWu0HZpTyufEVNuM%w?Gql)3=N{6p^%St|CKlm}7XP#e_|>T2)wz2zTtr2*_hL z6D9IA9P*IAMDrQsp(EN-G|v`oW_Mf_qq&wT#>$Bq3BxC<2FBWw}xtb_b|L;V(Nww zGh#uc&^bYZ;E*C~i$&@{1>l)KXYXQ>&BY@7p;Q!GOm{zH)u2xJ3NRug%fUk1jWM@if&||f7DoR=_4e?ri5sN!C z23U2#0m{b4rVA2r7bFDs5(q{;=K^6C3}7J&>Z$JZoB<4sdY)M(jJiDaoTv9K$wki( z8m)mYtf+Tm1&dUP71B;HYC;S##+Z7!#YAaJ#Apa6*lL$6$}H`IAqKI7U<40*v;qZ0 znQloD``80qPn&%dVw_o~*da!(Knz(28)Bd1SGmVn~SXCMALQ zNUSqCk8*tBAuZ4pagyJfrig{WLg=6wh+(TDu4DxSzy5S02D#1gnI?zM?i!COswu9P z1w@EZtXNRZ*$iqyH8mhijx)=|FnPoPMclLqq15ba#cy#aZ>bjcPzO0#h*;HEX8l6# z{*ER6P&SnHDX_0AaCtVMz=5v7RavUQv@39sgAN4tb_K3r@ChuI3uBPfnvx50t8}PU zTIYn|f`-2bxS)04Q7*_v2;WZpF&^sM$O&~7-N_A&&f$jaXm;>@Zb)nW_qibh!uPo$ z$7OUf0tS=0jDWeZ?cfBy&ke!0exDnfyMOvVH}t*84Xyh&aYJssJ(PV598pn3Cs*WF z>rSp{)%O5bwEjEF6`9x-jtCNr@KwK?4{iC=fy>4b#Ima^c<$LksCkli@;zgo@A-G7 z6i6HBu>i+p;>aV^l|!`=8Avtw;{cP8h_@^f$ z0D(4wFjQfJgoSXqCJHhE0Uu%74w(4I3$HtO`9w;q!b48db)ke8fyuqIO!S~Bg}57< zLJ6Lx5YwRu)R|p&`Dd1ib=2?jQOda9o2=exRaPchitdbcEoGPAuU-D~`FG?E?Z{C` zl+ye|=rQm=#);C-zz+N|-%_ zLYlX_RK!vG6nE($ei0c&vcX{2KiEd6VaHA%qSevx$>5Wyn;GBxleW_2VJy zQfC*`0h-?#G=IZEbLtzHnNX=rrbT+6(H==%Vaf}PCBW7~!|Y6m##x1=6H2Y0T{@xp zG|%c?8wIU7L$~o`C7l`Nih(1N@B1QU#w2mT=}I}+mC~$uR5a^$+6w8GTfl_^G7YBy z$~4;nREX3FoMqG9T;X}51}ijLx(hJlkzLvtj(N<S-L3wsOLS^gLSeJM=T}NIKvuzxNPtR^oIR&2W(C#E-eGZ>EG(yHlRW++DhKtL zKCL9j067|u#~D}|f3pU0ni?;lSjS@O%^40ICYdE5mWO)tA7oKWA;))By5(BOv@-E^r2cL>#khaB#CLy^>zkyqG#wN)CVa>kj4GX&8MA@fy( z=d5cYZ(W0ie6Dqku?p52NX842FJ`{xVW>y;&$Fs&xCL>!zyzVL>BkIGcw+ZBizw&& z(g$7&=2<_#n}q+LO{8V*@q!(LIzmy$0w~`Lpwqv!?k{uOH{rJEx5I6Cl}X(x`_%k+~K$ZWcI-{Z6mhO3g8WNE~To{n7H_&8AH8Zy{`>{Z@xLRcimu1Y!o{MlcsQ zfe`ly$$SAMEtGlQ1mesxMTQuK4S-A_{4!I8ub1NvGl3A%oP!^&<)DHCkSN5cVVzNG zmM|8Z9wAU+2Hm4-?sGY8z2+2A3Vs6qSs30)Bq1lfvgd1s(@3G=W@-?NjAxz#<{+|_)xtj>_0IrGXJ zI~oWa9Oj@E!A>Gq?6Save@T!55Z#dB&?x*ACu22_i=8lJ2sXu&A!3XS6;#JrXm(N^ zSX(^*daA>;)WoWa&2xrV76NbYsZJ!SgN{hEi!)g@I7K#>{P@kKQ5|9jIj+D%n@CMb zFI=cXbvSFO))r=}v{t!o!>*VP;R3hWO1N-lnW}E=VftL3#Ml{gYg{?*ji5SnapzEL zkonMQzAAF^Z;Ilm!{x$m6s3Ev-~)R0GCm_N`4>8&m_OYUN+(U&dGAXfdMPg8^sWg8 z?=F;G#Og)qk;NM6?gr%S<=>O3wjnwMS3{1Bfr%hYKv z?$>sSI%e#}=Rpu-f9P)q!|dnPzZM+f0-tUiu|w6GWe>hoZW8@0lRWkXW*O;qmCh`V z+D|ECl?u5H%(JK&kM0G&6**O0docZ@N^3c*TqPS!4^&{HmS@YSJSXL*B~01(@}>kx zbb}Rd3g4f4Qb*1^^%kCI|JD!(L(p!-fwH<)@7PP_qwMtOBk2+8&fyD~KJX4L;~2Ur zn~OOEfFGZ3uS{=kxS6Wlo3j<=48FDDCaPOMxjALI`(9~}YwX6v4)KI`S>MYO8c=qR z3#Zn;&)#?M3I3VvJ%sV!D08nl!zr$XxpybDF0?mx4rk$obDrrq_^)+3GW)uxBdT>r zCV%av-Z!PD=V@#XNbhuH99rZ!G2nG_oi54Dno?B+vce}Wqz|pb;z+bkDH5}zXZZH$ zL%;Qw`E!2Xc11cDI1ti?-!ARwQ!Q%r(>6_#o=w zVcIl?j#o1PI3jgn%`UXjrbiAiBF--E}6X9Eh)IwXOo%H=`1 zI=F$<)0|{;+ZL77)}ou!$xIwwo>5sKHRrB%WmknF@V|a4)S)U@yuLWUOLfxeN(C)N zB?^sv$+oP5C?}G;A`C{j+A@ZTXODD2bVLqvaP#E)Cq$Mh;%vWX6#EmWTqfXOFPDaAqxainBC~qE{a0K+eP!4N=vj%M} zI`|S!Sf;wNBhaTjlIVOnnmB!;tpi`CUZP{)3&;PQi`QL>Q!lZDw(7b$*?QqJ*9JfL z66JG^$r}^s><_*qNxs;Ks{0~2M>vjKCEOIy=ElXDv+uaxy-aTY$%`?rF?NL@y;u-N zd_|aET(YqCyLGifj~s;DgI$sQ zg&gB)@mb|?R^`&P#}t9jkRy8HLgfB3L3B8aNr3lL6xbW0yYvhE*Ya-N@hw>)s@KWxqh@R0JZ|9I{zrnmg&Wm6wMlyNX? z%isRan>SA%x}zPrHyge~?fxwv{nG!nd3wur@4jvGmgj%uPd8`rmf^nf&C`d$tPlV2 zidQI0=-zym`j)?mM=3hs&z617eadpl5B@ZT-0{-~Udh3oEy*Q6_{!iytXgpKUh!x~|six@CZr2xmQJU)p zjko4fkZYt%8_X0mL_z&q4t?RWS4@Nc=ldFMZ`ty}3gDu_9Nz+=U3BcDD>Knt zM@4^Jbl{`Indqh!zU9CF0EO1J{Ne}pZdTzxbH@q*MB!Y5L*Xtu_R*D@Xr1AVe01QW z!;g0U0a-G6=ORpZ4PvQfZ>hYV*;@mrRzg2~_F^v7 zOkRm=Hu-sjyg=}9*QC-zErr^8$yQ(iw?*dQE!k-9zcM3^fxB%-m*{xQLQ0{~HLOmA z<-w&Q?^=Mlz-3o*YiL#H_x$=R%pc5};O(KmkZ6p#YHq|P&HuY=+v_^oCeI{ln*@Th zT*Yg-4iUC;tGBF-LitZp*D?zo?F>wQoYv=K={q={ZFe$W$hu+IsJ-P#cp)9H6M`UiWdab02rIU~4iln9djtPKFW0cxXcQP#(o# z$8;YL21RnbIEY)ZeDL+CgSa`+{9ef_NcZl_bqy);EJ#+3r^*C_)oJ?Zy>?adO_$ld zM3xj@R7oSB6jM07_{|R6G*6iB&X`qCh#M~R8&flfhQJ9P!MG+R%)&LnfJ0h7o961J zVhM$~-ffqG0r`;-z>c1KG~nWGSCAm1(paWk_q^{cwV6!jr_8s*N@+<4<=j&ePpy$_ zTj_QwM<-Df!QFd~>)j=8l9y;TJw? ze(4_NP<-vEUMr8{IH7*@$a~(~h8sQlA^O6)jduiIxv-Ks!@Wne$kvOWsEpgw^CRVAB6M~cUhNg9{(eh z4B7c5LWFJ3QzFq81O0(VwWg5Myvx}gDDgOEZMIiP|EIhaa2HJaKC{9T5ILfrela>L z0+|^Zr{1Ic8do{66shD1x=^hfJ9l}wwFOP6P!>I+!zTuOh)nqxg3J3DTp6d~*+vh# zL`9EdBV&DtZ1&(B5XEWCUAXPupA?PewE_pkquFj+NN?72m^3|yvu2hYp4KZ6N3GP| zYXg{2&6l3Zgbf%CIC9wmA>G_DU^kUf-D(`#3X$~2B7&(WS8$V&RcT{@CQQX)VrssG z0ivW)wnKt#huB|iw4Q7FS}@qHNPTjDRm@0#EvRs%Nd>$PaYdHLd)Ua3@WuiBEanyA zdzeK#liv(wDh_-Y4MqXvA1W>h)5gFr3gv=@4_cc+#TD+){ets6Ci2)Z5z$}UM5ILA z8A6F>53WoWHMl(I4lc$_8c;Qct&N|UOeS_P<;2wV6sRaTJ#5bJAYng>=Qp7D_>)DW z9uFO1V5I_Qi5kVJ;w6qio7*>8;%PC{G#hI?J1*B_ zEe=30%KypTt7vH$KBcm5bM}DDZd(@R$EUL$YXi}7aKtWy4btC+v(e%LVc>zg&?Grk zVT(+$&_wyPQ>)zSr85U=1-C-EwS7)_JZ{a=J-13p^?D4-{xlv7vChNQW*U5nKy=>Qo(%U`4_E-iX6g-4SL@;AX7}6)kwm1szJN%QRKEG#9r} zyV;pTXnrOidSkoF;IPT5;_h`qCkudT7PmsfRk15_jKBt5*LE;+GoUhDF;Im96_6uu z7pP!8yv4<=!!GlKikXmwt~WHo!yIzq0o4hLSwJ&nH=wz+ok=y*bWQPTKu(C(1-Eu+ z5Q>=9f&#cNAOVXUB0nKI4^)SfCz^IS0DEvT2L8e!N4ARJlF|>shdEnA#hIXRKt9!<>pHAl2ZCPqADNK32h=`Q^Yq%s=>8g+bUD_h#J}_< zipD(7#v9V<2Vx!lO&=7J%X9)%sH_QIBY16V2g3^6Mp!VM{sS8lMQNhI0jVw#*e0X zO=k=>lmNlTi;L|eCKgP)Xoa?ELH<`erjdNxg8Jm(EMZ3$$#e?BC5<2-v9eI+-OOnTjtjSB@&|f zZTa04cJnvLzxw%NwDDd0c|Y2n`LCRvpNg5d`By&u-`5Kh^Q5=T?yo%<>*gV+eGJG zA?a1(MeSSx?EbxlS6UEhhdO5&;<+t?692Dikr2-A_=6d(>kA|NJB77+Azz>=`>rd}Xv@>LlhR2e)7;4&9WXh(0fM~wdOBK&cQm>Z@2Dq{;>CRc*~r=`0VTjf z-d^-!)QNX2DTG!@K`B}*Nzl+7sZErR&J(t7PBolHbT#yv1jP*tGg_UNUdy<%#X88T z^3Zj_IvAB56rofH>5yGDZa|pTa^FcV3K4q8x$mSUodplhP0wk3s7}sFM<-`h6Lxjd z@Yt^UL6^stHc0;%7++% zVwm9$sAwr5=aqI7()Pn_!|GY{Ui=g4rYtCjVU&h&`!Mrw0w8)|=w@`$F3K??;#zrtTUm z0}}b6dV0*HMb?grzPvbIcl5~1tW{QC z<0uq}&>_-T;xS81$OffrBwr4_vwI1g0`6&c!W+h+(t?PI3PRWNlN=^Bxi5)8tV~-* zbzSMQh!6M~eL!RQ&<2hVZZ`HiOFr0d@{zh2j>q%CnxtghOTve4HsE8#Vz})9PLKxZ zE(@^V%>BJwIc5r5BSEzaq{_0*-y(>vm0?8Q%5Z|?WGX@;(Ucne_6U$t!LnzqJlv-5Eo^F|b|4 zt-}RD)2eBznhzMmE*lAOHOSw67a~o_^{-Z<#?5sP51jsEM?q7Vk5GXRn$HS5BQ0;} z?piYV)g7(=tQy^{A+zPTe~TtZx?fj?5!^58(+^PlS)M<*<<`l`mrr{^0w>#ul5I3U z{*1{7w@e0;7fvUVW25J_vZfCqj1CgsCsF_2(c+pSbDzp`%)&$SX~Upm_q9wdeu`W3 z!d5>R(aickIL%rS`S!I3#2^gfUDleH$;OZ}-Q(I}JV?^dX^GQM2JL}|4!1Cuuq1~b zBjzI~gVqvC8dR5-QqYoYsYGSIS6H_XbOjXMY%k50AaAoX*Gtr0e!9C$)}^Z4rSZ-z zXQk04X)L|yzkx@)b||Zw)EV*q9qlCRy%vP!SdQfV$e0Q1Q%FAx9plq0t#sDM4L7|c zaq+dEyqNboW%B>p;dUK!1wjWN7Lxh*ws`rYzZ0hB2qcxYO2&blT`lYWpG)YQ1Z550Xc`U&NDUeLxUT^bYLnbA1ko-XuaWM;X z&~`3P6A+#srY{dgW=Ur{0m?A%uL7+ouI-B~8eO!gE(x;>qs+aHT^NnIw{@nMQtXBc zxnMfrFgRm4J^_d8t6Cjgd|`0025n<-Aau_wrF1v|<&gaj_t{)2kSf7`pWrG=N4;d} z_WN`}{uBZrmao;(RVtgeu?R_ZrnlA6PP^MmZ#THx?RmS#-5ExoCMj4$e3P0z7Tt6~ z@wQi7zlBXgGf5T-1bX`9;<)xR@-SBF058cmL&S?6nk-|UP_ZF<&v-Q2%pVaSDSDva zQuH(|1flL>(o{|FhN6d8ly3P3Hs)GbULK-I66kfY3$i{OLqkn-#c_@LU*i}(pL*OW zvc1-Olm#TPAzZ^79at}X!ZcC4Oj;n^7lF3Dy%5KT5+U7+sL%|K;XK$U>JWB63#i6I)tg`k7UCN`40XB4~ zA$cFzk^ZsPDaySjk9J=WT|=Om)!tz1ylO_Ez;dPqkf)5F?Pa}GLAKDM8Pg_!NV)bl z>dcBHs>^z##ULjKmC|~Ma%F;bHMFZfg5(vZD%DB}h_PZi29Rh=YxZA#vOU0R6Qh8$mHn;BUj7txa zcdJX3XvV|`-ciWA@+crOJ20c50*NkqH)fgf~i{;Sxn=7nQt~%aaW{ zIZaC6Y5Np1Z*PT+ja$ad^bDPmbyiVU^VM#Nxk??}xx+7RSGPfBlCVOtOaTg76J0T^ z6iG{CAL-RGDmIFSSKtd8K(QyrZ$-`2qY z`Kc`UFaBflm9O2Mywpz-NTx>3uCG+vK=!fdL_Bjh=yU4rQ&onOn+~aw-ZOhhxTF>& zznDa;xY!-qDf4b_!OG>%t1{ej8}$Pbcc6dntR3xTT*{P3K z6QEScPtudW!X^w0dC63O!OlF|)58CupF$2f^JN~pQh<)Ho!T`hWzMWYr z1}Vq}E+-yQTp$a9dW)YyHjIe(sL>HH8V65vV}9hWb9eku7_{11?f%veurXn3H!=Qy zV@G861GltVXb5C}Kg6RY-&^+8a9^~EN`ri0+m80CYyfqm4ils~J8b^D-H_5ex#@xYRQJYYUUqGEa68nPbt>lFmHk8`sIH{Z81P=K8jb^tfB zP0e~<9;(wTHwL0FS%z`Djo6WMl?g~a0KoUQGa}Em_pG(I-TIL>Do9L)vlW6>Pqus~ zJzX-9_3zwy|3!`4DW}DyO(c}?QP5~yMo9aA=P1BM0Zj<<{wpfCa6R6Tq3_uqeLHZa zdQp&2vuex8XoB57ifv~B;~Ps%(9ASoUPg>V5XNC?IS#-PsGI}Q6?`;`^T4OK6FvaT z!G}lC8l3|s+0_6hDV8&eUI0v^ME853jT)FF#Fzn7ufWt>f{EmSDbqx-Zn8C`>RI4f zx-fV$4;~0Gj%z!>qq)+FDT0@%ZnnxqD?q2BDXOg~2w)H7p!!1VGr#E%1tGg6xJWU?LL$GwOMj zD&PQd{jGWiM3eU z2)Giq;W(FRPx`AWE9txOHgQ38rDRKuLPRy%m5O%wRHH7H6frDG>7lAf%Tq!6p136f zfhYhhUFY70E{w_f^!&lE%C75(nqo~kGcmU z_tFv>!F>M6r%aFs!;sf^IUx-8rHF&JQygz_s9W6|To>4J|uUj_j=s#vLD3MF?qZdw%#=D(L|{5T#S_9+EN-!j!D*To(u>cXCA0*a+aQu@kW15*kVZQ}jL!ZEi9y|1YA(wF z-aUu$Ll(8pyamFiG@dY%t^UwqmF@1+<9^B*AkPY8mp+-&4mSqsW1XYEBj*k!pPxH84r2IAFhz z1PX9-;FG7}paS>%z$rFOHXN%75*s6efT;d#W3oD=tz*$u7O|ZO4N-v#*DxQ{Kur_a zU_FdhGKEPKrXTCIxyXU}pNkxC=%|yc zh?U-`GJAMS|Nov<&VN6FSx_*SK@Y;z{{^^fo!ta8e(znfr24~t0-z0w)qtlT@1;�{eM5enK@*U+LoBEB%C3v`o&E!d2@7+!oGzqa zsyS8(EQ^MdXDU(b&Ph+Y70MJPTY_NnWzw>uHQ6N9P;mI|*9+ax6UwAM)^8L4P1o)lyKwQ9hSRAVc?KdRS3o`~k@r*TbRRZq%4FKYe-psxC4H6#X> zj2^j!mPTqJCA~%#$!JK(Zt`p?^ie}))Cg}vf50Hv6p(QCdZ2|Nq~;(5{Md3sQ5%jdJ}=5R5i3qiYjjA-Vc|K$_*iTo%U2Oais zV1-9hyX+|M(N*&lv3Hk*kFmG|NT9@$^i%7rA~6?%lfRe}O()KK!BJq8<2edi6tqG$ zvY746Bh`)hCB4yXnRDpLPRwRBEPb#MB&+CFv8L`5aj`Ezlsp$A&4jT-d|mY$4F>>e z+qB;0h|ySNgwF<=SDUYP^w?SyYBw?sNWX1|=aI`iq#M61vW?g zq(5J6DGI#a$>TZvDtsk8%bF?9FtDbZs9(hVL?F zl|4n4zUAy>e`u$JG`8Fx3SDrT4o%58ACWL>pZiN+!U^PJlan{`YR^kyh9BUV>n-id zy=^M__hQ>v#q%$JrGLl2kAhp;)qCNMM0K{Yn`2vZFQ+uzgZ^KJ6qLnJi2WhfKLDup zH}HlKMkgIifK*dHAPh3@F>N0|G2D*K(1w27io=JIAOkKR(vKo$DT)lh5zP~pDh!)s zp%XGil+`|!)jnnRRAi>xwz6B1(!rc3l%<4rJgtw{S^jnf2N@Q*lNW;DkiMsGjT6eU z&iR%>IMrZl7L&a!IdCO&J(^kr{iTTQl*AW4pY?UMd~c}1R?F6D(KC!iNMq60DBAU% z;B7wosv`P&MLTG)e=MuD1NP@}Ft4LSH_htMUe}??@P&KCX-ijhkdK}*pgA>IwhOPr z)+E8ox-6)85L!%wk49pf{Ix-n*Y_kt;F+)|GqI6@DgBeP&q}b>GldsB<&UeZ&|VNc z^8rshELg+8wWXPt8pI|77{j?kC;&|9CHmQ>r3&^z?+Er96H0BXC5Ju3SS*)zVLqP7 zZSC4HsHR|)q~IyM!yeAc8&3gF>EyQRLVN+ArP68rpuz*H6>~;CQW`TKCOEM`%c#ID zy6TAn$iu9aIN&e2CXIfSjW_ufk-{C<;>pR!MgJr+!|2$xRdvuX(GKTiQ!Wm zfUS(Mv1-U=TIyK#AT-P%J{4mf&ppfJ`r-g0;Au6hlO`90c$n>1xhYJ!@67rJ5UH^hS_f5|8tw**`2{m8;t$Zg>jyfnP!BL3 zRxTZK0E+}3gZ`-Z#$gAO#bJyl$=jl^4q0VUupkioPDk$Jih;aV^0F{b@pF&-OJ@c3E&%1?(8j0BecsSa`JdN@zx_ zP}Kt^R}!CyGL@J(!kQ>8lRMcsNt_G_)3-FZU>%rigCQ}TJXjeJ1C5I@mJvv5TeD1`!AgGHGw-R1ra{k-o!b_6QRT*9xp6i~ zb77;@AT?B?&#WRUU*9#1P+Bujz*9JFWgkFMFkhku_4K3X(ifV>WDt_*00=Go$hi?X zELpGD{zLfYc)lpa;|^6FYfOoy@SDv;dQhTfD^srNjl9p(VQn%53~ zBMUzAD0C>kgjHc{5IloaPbTaL>oGi7hRS`yOKjOR;$rox;H68 z4Rcw|PsDJ$jEb95BTLvKiP^`gMf@}p7`?(rKWVQVlE|trj-QV?zwnF?VQ=u__(Xj7 z%i?DVk-6pL_S_i!jy?0^@k#aq#B2FDrVTW9Md}M9tv5O- z11DA>p(UL_%tr^?(cP>|cy}QLtj=l@PmM(LR;4a}{aZEctPzCsxyi^0Eqp zWyBcugy7Bu66C<8F>60^57>zw^OK{-4z+t((tCA&Wrd;`=S1RG>&Zx4*G;fg5b0ya zT}(C;1FuqK+e&0lQB=FiRJ_tE)!TOUkb*XXtyZ3v<;oT99vY4uQS?b1nfyc)Jy!G3 z2N6gfAht)GhTh}Lhw-Zd<-ci{&or#Uc9-y^R;ca}fbruHYFVlBUnEY454C0iYg-0Q zcVrH81d$P`Hd#0rY@e`b8)u5~t)tcz<#W89*4wbL8j*)1fj5=|R2{al#J7G#(PyPjlmpOJ8)Cn(0O^ywLkh4KArzKS4U(8zchJun`U4919;zNgbKOM2iR409irohePT*n%OB$k1+G;?X zATRdg**lk8&OFwr`hBleqL{lYD;9{bQ5>bgEh95XLFP#Fdm~TZgO(7;UlMV*; zM&X#Bd!GLgCb$Ag8PYv!g5NEtppia51zGh;jF3XCa%DzRZ&xs4s=XKDMXZOho&M8U=t|6CSB7|5MX(OV)}U) zX&$myV8zKI=3%UPxVLj2Qc_k7sdV7wfZ7PjaMSwS16J??#9Gwu0AP}|g#b`?v!q2< zj%Cf*ZOjV^4o{k9$uF^GZ5TqxSSj2|X4Y}H+A<^c7j%s-|n&A@JW{sOV z=Z%B|lD)FWl4Z49n+fmgXeq@;?=+ye=^zR=3)vC}j|aOPJJ03NX<=V88S4BsZh83)F7{fZ z8iEutEFy!EL}=1v@tyxUe!57Q!HVRc_8%Np^h0#~)CXbDpP)@n7W`Lg^6SG^kBy8Wrgpjo((M$u|bqJF+@wsO|`;D5o*!cYL^=%f<^TVC(p55>o z+OIJnJs0n0K_u->oYdTBG*g}=alb0&OV*B@Qh$vq+`b#FRzw4dk>st1Vl~IZ3FH`B zhoR+8v{cJ0G9MD^tK=*nH;X0vSOY?h?~>eMjf-8^t}B2=iwUOWqxt3?mSdD}>jp|O z3xY)uWW?5xZlnm6_+iARxq{bN-lA~(@C8FSRTEWbz9y=+f>pa}gIThYCrGD4=Wl?3 zPDNv=1gv=IgTB`n-|Myb)Me<-=FOl$B;2OirHV0BW+5>ZY6EYYE>S-)joIVS5V$%b zkwc9Q72DBzcGtpbgn?HHoBTXUt$9o*hpvcgBusRF)h}@HdVbqrD}>za$O+x% zI3c}3;n)qQcAGVcro(nn83*BbZ-^G6M$%o!d{T%>GAp@9;!wyY>v|5fp|*_DclV1- z3{|rRqCcPoM1|!&dLu&DQ}IY0#NW_j2jNc6_qdbuy$n-BRjW1_N)~Hgt!iUtBt%fN zET-W;*yxjtB~me|#b^`62X1YM@$2M}#dr}IesPJB^ukWh;{XKb?&5iNWxbk1a^k`1 zc{TfmTZDXpjsS?V44a1{1t1o~6|v|F#L%iW&?+aNLCYjkzn-PU9}8)E?Y$^HaIa#=2_?313+}%Mx?<^&5I4#CZ)po3yK*+OzPX{~7}v~^ z+)tRoDJ~>vV_Ds-m~}U(1k;MyhG59iMnHDrPd@yvnrU&FOndTyUG0FR$sPtAixxlu zvGH?^V+PtU)i_22Pjx*QM0G*>M{NRl!GhsaLs%Bpkvh&C-U&Jmr94+P21(3p#M&d0 z5~jZ%B{~jG{zH$3b}~N;lm90U8`_$mKyd4XB^fenb_0*Y2eX1b9SVlz_K+sKglrop@;6=1Qjz~@Fp>ZC<-0HD^&7nYr^^Hy zMs|-7C)@>JO!}}$AI_u?yV5tfL-I`0pLWq4Ru^-A@0XEon*Ko^6~e5?eCK5iIaUJ@ zGM^9g7s=$02FoP_SF+o&o+?v;{6Nco>fpWBm6ZyF8w-F7o75}%0;XpqDBu){Wm`Iv zHiH8iwa~tn7iRk`W^VW|aZ_GsgsQ5P)AS91u(%g6uMIlCXR_3M)4| z;x+TDv(oGP>(wBvNA=itDWdFXdz$L1t|J;EX`%>Ny0h~P_A>^8Q(VwFoOUP|LONGEo#r7@$Zd<23TXdo0Zf7 zQu>)1CmuVTd1wST1`tm@)F1|t58Q0f-}LLNB6zs90qP2|Dy$(5XQf3^#`rkfF>gMw z)2vLG-6r%E$4jS0=0mq}X;Rn%Dgu*er|*GQDuY+dh*->H9Ac?-c9C^l6416;wD9IO zXSTvniq|xZMNetU160V&0e0F7P`*q*qv_XEz}1;Y!N`Lc2xA_)OHwI>gNQ>ajHDGI zmf%td-YMNeP)M-P*3Sx8)17B&V61v^7-VYd$G77hXC*s;s#F<54~Q|NA%@d1j|I?d z36vij@buI2QNX)d<0(%iS`fAxIqUIESCXFs2b|mZsB|8hbjb~un>6U zvzy#uQn##!SQAPSr7p;dwjG&B7-MCiaj%?^1`t)77$P$sB2X5~-jzX1sZ0z+itgP( zV#_N400Nhn*%2iFUx?vDRUWvHK)0gNKvhevk3^e$Bt#c#(|R`Ab$dcCrrX>O1~iu%$-LJlE7d!#mcY0z23>|pm@HSnKZ{GhBKgw=$x6jB%GNsW!f6V&#*X# zIb#z01UdGlQF^E5oknnta0-5##sS>qaz`l+qSB0!b3^|Gd>MWjnUGzZ3QHg41iSbH z>>T|#>8qLkA}7!>iEW6Yzb9m2RcNze7M(Z5<$9o%A%HYOas&y&*LHoI+Nm_m z2c_xJ`9zvKAKhgvEV&vA>15CDKG|7lTb|X;Pr50D#Fh2nfs2yh^*N#cOQA6z(YP8Z zhwL%{;yq%CqX}-hp*`2~g^P9}wz+4QN*(%PZG4qukbz~so->W>Cv<$+Wyqf^?WUe} zc2fgMzFwpKsi=kLQNqkLDOaqSE73{e>PejMilaFOrfL)fKxrH1F~rg#7;Pvv29i3+ z{ObU=;8*HZX5*5+SnQ+;MK%V=NR;>{C#krHP|bJn)1Kh8p79&p<8|(Fy(@TD!1 z`n<5ULu3Z7PS|SC>tUOzhZ}=4gDv|%ftY=;9=2ay%@$6IG8;c&+o0SH0wfl1v9nTT zAE8MoxH9kNhpT$pY49ciV<$`ufo=Ivt62r)zpDU|u;`dEVw0ha0E|RO`SUt&0wK3K z66J|=`O|SMMaMg+(Z4(p zj@&HP$+J=*zrHrLdL!cy^#OU_67UB@!t+?XtM0>;s^>*(+!yuq@;15IZWI7vMBRI) z*(9-esfaoh{!nWfts%5uB@ME>A~Ze3;afaHO}AOFu_|t_P-y)SCt-WRO){e`m~L}r z&7ng$sUpdGh!t9lX`EW6grRRgFIv~`qY%O{+aPRMk{sp5;7exS31RG)@s7o3J?rOl z2@a`N=o9CdeBzM{2UyCxlnCfBZzFix>do-KaOhCm+IOH5_{8aQpjMqA_>E{r3%7Y@vscv^nM9YoT8#Z z8cXFfp#xJ~_oEd1TCscBGPsW+?9sQ?aF)HPhMu`K^p`bMrpSd&q-vN6ji*{TX{lv$ zJds{IOe6X;Hq2T7b;B)ovjS%}K==Rv(}I8#uf%+PEj!fWJZ-l8P-_Tit~}H_8&J-4 z8>Z(DaAC=mp3AdAdnPzDtImM1&vj{;dvy16xkEPV;E?MeoCQM;2rJW>K@}$9FnmS< zLb|d%I~(W$$C=P&Q?0}oUBJ%O$C*Axc^8IzZSb#4GFPMyfkN*R%B)%!a1)T$P=z zXNhpL5WsiBJyy&`hhCvWuj`8ea2B*0Q=CnQt(vCR8E6SfJhXHNE_ip2d#vghTaVJz zP_-IBDPIF9%{6Dr0ZN}UMIQ{M&(3B-S59GPldWQ6uE-1p7__d#MhMpuZF9!_a(82~8BR6Fqn_7*EjM}asu)IvCLh{S;75HNvk8f;j5t{XlKz)}jV zS%Dg+{wb}U)kEa+1@bQNC*+c}o>=BABaWRsFAzu285hNn8&rgLj!z+=Y?bh6Y!kuIL$01{UQ9t2Ntf4iH7Rs<4 zL|_>1iJTUk*ZXG7jk^ytwe?H(Tx1g~YxdfxLP(Xzv$DY$0Lu&#xT^o_c9Sc_!v(dl+L zCFC$C8M?fcmbYv8!N{c#4~x_?Zv{eAG?2I8dY6EZ`C7}>YejQW9^op!!nkmp&y_Bo zUNG?A*UHk~)x`@yVBau55UAP%!5Lk#-l%kFRXhQCkP~$wc|d7A&{#+mYYlKbtJGjsgdT z;{6jZ;K>I?`%J0@idV3N#mX1hK@TKN;YwIhhH3pa?6+x7d^Na~a1T0cB)ucv^#V-sED)#ioPcN5RVfn=*Jb)1cBp?45fw7N|G zl|IONuGP*O$J=0=hVdL?ZP9b2&DsYN3f%NXRUni5+#q3O$?7;G=KJ%56rjs+d#)Y6 z_F{!RqYw-|wZQ88S$)f?Z?979HvYmUAD8x-i?ycgzoA!7I)D(eBH1|kGrNZlTG#-zWCz8(=&?T$9MnKjfzaT#qyxQI5 z$G}+%Q_*8%u>%N+%0v_Ry>ORw(chU&%wrX3HWi32WFi4!lq@7kexu2`1!$Wyfd=A` zeu>+I{4*hLNAnZ+Zp@GU%0{hoJJMf1pQ@b@GsySqn$A<~vz3YTpGHqx<9BB}Mmo|^ zuKdLNl@o!(FQ2b(PGG#ryqjwVDL`aBi&1~(T*@BN^B7b?=zBiOWC}H*FD)?YAHAN@ z!zDEs0;NX|01&eJPNpBUDL?-*A>C&}cZpjTbKyc3UuMT!c-iU7i}POA;MZ%wim0fJ z;sEPHQAjHnidwpG)QW|pMi!1bXW^*Pg`>t6jyiAQsFy4pwSM8KjSEL{LVO`WeJofw z?zb0-Ll(GTnV(uD?$e9J;do@hGM`x_?(>VpeQ}Yvzg{E`yN3naf@E~TI60752-g3! zNZf6h87!3Vz#?&PTO{u17m1r*B<`0MiPI(L3$^p;B606qB<{XN;*c#bSl>g7#67%7 z+;1)t_mM^7jxQ4T_#$z?y-3`XU2!pl+R;$f2BV>@*f2IE5-neM365iIqs37#BkCBZ z2QZwr66@qba%C9a5<#tV?3-+d72~(-f!kZrMS(NW_deU>2ild}A<)Mm^b-#p*bhI< zvUa1tQ993r#&db-iW~tYi)!tDPtT_ zvSIp%hXS)$fRS4pAgndpgo|-D!S+t@i&#(FE{`ostX*W&f@}5)9F3y80(ZSU&1;DH&{M1-P`bQ?Xy*b=)$_V`m6qGH@-H-R%-! ztX;N5(h6&yngTx-+5Qpc1DFNLZ%IBclciSVK%fl_e&%$7yZR=|;q-OevmdyYgZVBbN0!|0OX@UW2K7r@n*Gdv9P$>){&5mKvly*Fm~ zIGTLq)L9eSVMrsUen%53x=8Gc1}%Fzz+j2hmndloRU^~S=Y{UwV9Lb?oFgbW7a1LK9 zGY(%V#EJl|iN8uBK1SSodWA=k<5u%!>o;`t+HdH1a~nD(q8OVGRHxG~bi;D$3zx6& zjNE}r!iFq`nUpupI7$i8U+IzV%m?Lv`uWH;iqoc<93wEW_5e2g1xL^@%Gf`U@5?d@4*_5^7UBM8oG58Zckk8P{Vl;&`^Sz!d8TN_DD9G)9LQrTK6bgZ7HB zVfMr$~5xeuLoj-ga+C$Zi@(M~e`g z>B>eJj{Tik_+G9N%0uq+B}5x+2yk!uv<9X3wdNm1l~(n6_j}5=>GK9n#h$y{oIw+X z3*M=ZfXjxsO${KkrFgnA?CuGcIfknxi^?*7s!zg(csv>>cU|X9bRw?k|Kvw*xYz+B z3xX4yX-Z!a6%;RAtwirt;BgKnZoYv%lP{efV#x>5VMmus4Q{lm;Va34ySqT)jUS8a z!J&Ujn9&#J9SEBO75qb6r$qV^}9KLMO*_(YW;3x zA=SH~6qTcF8hiOd;Cc7avecjMZV+&AK6S_A1v&TPcdVa{n(M>_dI@{;oj=U#}k9?>-kpAvU(aeY$6d`mTxQ2BzDf?P9 zh*ooyRk~r1Jw^AP+ywS8%1QEoqkPO{w?EW0)x;ju(UJVK5;8z1E@x9n;E49mvh6aA zqi_UV~qB#4Z_6p3c+uJjiQX{p*Cjm3r1+i zs&!czIE^Jr1f2q76eSWyN*U=|i%6jFE4bk>fM)<4{HjsKkwS{Lc2KtyY*SWd)k&L; z(_A~QM>Y8o*cx>siXdH1m};$J3WWsmK4=DN^oLcF z@@c8a8l)#wtSg#WZQvgw=>)ffK_=7VS_UIC1O8-zZG*W?NL>H0HZst(?dY(*!?<1I7MmuKTGGH2 z#Lap=xf^EREX49XOYB;aCw$9*WJ-7Y;3k_x<*Ep3}TL%w!S$~Gt+RI4ayFB zTRCTcgiO&J%5l`&iQh5DwZjl%deUDv+e(~jh~Mx4Qo*C3oG}Y{n9zy5H7^fwp{p3~ zYV!6od<^1@F}0w$ z94AJ&bete4Tl>gY+J}-+Lm**%7ACjG-dGM}HuYpX3zi)m6!8+gpf{DS8pJ(2OCmRp ziqs4h+2mzNy!{B!MX3@YrZws%L$;ZC7v+x8k^`QtD{I8TWuJ@Vnxe>7Y_tSw4Ca4H z;MZg>+Kb$7yX$6`^{nHH$y#)thVm-o{1PnR3tdT`iX6tl)Wu@z+-QmfyT*?J4_iTE zvrM)bmOc=1`i@P3CYf}0ocGXDg798lG<;isDMwTSfDQGto6KaWtkXbIUX%A9c6R>i zGL8iC6}$@7J(ELLW9xY!Y8|oS;P|APuwk+aNKzb6MtOh&(>VLIMYSTrV6yETh1gxr zHQ1gQFUpvAr4>n=ot7=7HYEi6@iUYVNVsm+(>( zB>-CZGlvpG;trrPW6>r}gDiR#^h^7TFh0a9L_$|V>(Hm zA8;uM+|L{RH91K7OJ_0rBhCIM52WaKoMj1Y8)TWRIPJayTtu;;XeB{3fWv||#o%At zZCU9{dN|SG(N`lJtX$9o!z{yPAsPm$u8n337r7z)tvIX+gYWxQxg57Cpqw^=RWC#U zIwSu8ZutQcw87C-I+*I^nODV5>yayyX#& zzEfK9`Myb)}(&teXiL%gBL2s$;C^<_1kd^AJ^*let`26<84EKntBLqYR-GIv3-m zP(!|2j{B)zj<@;13yb1;!!rwQ&>Na}nxQwg!(&+toVa~g^NB`y&cm(}lp%ebPrla- z>A?*X-Z0Vh=G_(Zh6{eky29|MI_lmsbIUI++IoPnh-)N6Dh;tM#*wpw$l~N{p-okm ze};~DTaIj17;&z%ScZhA8LF;aBMr64+Kj3*LlOVL1mYs~9XMJ*lBq??WO5|djtF$z zl^;Ji05R5GIXBv3pfySMHZbMgDcX_JpnrosgE(kUB9Ht4v9>c&<)kMQ?mb?l`e>P^ zq7kr}sW^v|VhD`9xV~$aLvKG(3wymLvR8{YD!|M2~veSi2G z^C@PPXzsV`R*5V;xY<3nqu*?#ts>U(qMn(g$URhCidz>@p#7d9x9r9UUuk8c;=cH81hCA?fkUQs8fc)#^7W1Mfv~WuEnKcr~7KXYZZ&~ zzr{(O6zOz@#i5~{9=U8E3zag7njk6XHRklCZTk*RZssAdvmkW>GYVs8X#-+)w>f|U zBfsO)ZXKMn5BkA}OgLdosv85{C(Oyqrq~p<7!w5H z4$l5WoKFtxkUm9&f^PlkwPoJhyb*-`Zcm{pEO~|Lk*uFp4YHTD{TJn>3d!T{gI!+d@~Y z99q?P*6>J@AA66xjIVDbzn@nc&H|(X8tvwNwF@IVqGSxf1=Fvc$q29pZA#*>oO_UWg1TMC(BHqEHe$}|L8L*)@4$x z%XC(fKV4>es?0Q!f8A$NtjnZWmuXd!KT~GC0s%{O9{jiglS3>oP4* z^2sBGr|6SqrosG_&!kwFNwF@|V3HpwGwtWiVaZ57S#f|+tjnZWmuXp&A1pIX6`AZ- z&vEpik{MleYek$wAkIU_{b8zEi&YSus!rDg`T8CCiLdtSvYU`EY#+bKqUabXI2)UK zVATRNF1B}Ks{Wf%Rv~7_(O>v%@b)n5$D4KBx0X&VkEa*dX5Ve;z+x14xcD-4e zaPqH!+w}as`T5i7%`;!??9Ed!4d1!mEK_gPY}Xq#+x2Eik{>C1b63%uJjmZtNk1?` zCdIl;iglUNB)_lBbWfQnWTkhR6zei6)@6d294j;3UuKH(xB5(qb(s|FGWA1&%1jRz znYvNuw$lOj>rJ0}qh`C_sM)SJZ0DaWd-KWpd-JoW)0=~*zI(lC zsyAx3>y4W2deh4)SN7(q`FnHw>GbCKu>6+2`P}@ydE4pq zX7aZ0UT^+?_TC3h&#Jojeg3@vX5N{}6EeZb#QMDN8S6xol5@-@If0sa5`wXy#9s99 zsX^0Q@8|Hz&|VTErJn<4lz>!2jmc1{P3;glhPKe=Ahq0*l2kn{o`W`}v{H+8RIWE# z^+bzp)D-Ubx7L2%dEZGQ!GrDjoO37eKL7Tgwbx#It+m%)d+mO;Mqqnu1h%(^kUPgZ zt$FJ7t$FX+wC3Q=|9q|KQ)>jaw?<%lYlsPRywjSmpT0G_&Zad-c6PVsQ}ch6;;^CC z2yAbS!1mVE(4;!8dHVFNx&5qKb4zz?ezd~9uGR=_Z;inA)>KjP?kZK4lc#UZ`_85{ zGq?WpwWg-l2yAbS!1mT~lG1IR*6ifYbkAO0VE5UyX8PU#e66XfH3HjPBe1 zrTC7`I%1oAd6IjjY%?2W@~G_~wsc-R$_tDO#Ur1dT?D@fdnS|CV&7jfqs}JDZ~vbSI_ z&h|)lnVARjNYiKRNRb6=rS+#hqWwvQy~ilZfCc%r%b$_8wCPApf!_@eF zLrdG9$red@tN4UW?$Ns;B#e6)M{Vi4<#CVY1E#|ml#&SoY0RV`BS~@M+e3!bslGg6 zXZpH`KW)?CA?khzo8J9Pqx@3DUWJOHdM+5gd|ra_kbOKpH?c1OR$4C26GyN`O_}Hv z7`T;q>w=3K{%A67*rX+3q@}nlaGgg4zU#l?_dRdQF57UiO_D{T5|Y3T+I+ z%HxG(Jtq=|tToxb#e60!XT2`Y{!#s`^jy;HSFpT6X6e;_*=#FRGJ9ypQRMqnv~JJb zt(f8bpJyvg8H5yJ)!KWAaJf+RA>#6gT3II5es#OSuSof<_DJSxgrv)bEEW}h3{Rzm0O)n-txo3=p~5rHISWYb1pe`_reA+v8s zdvEDgHI4sv$Ma?HtzpKd)qQHIct~@AyW-%1Z$;UkG@5TT1Cw$Pke3gl#6(mdxp9uA zAva571D37VQijDO;wouPMefdd!gfNfso1hl^J$?leuol|@sZ0?Up9+45ZeJ<0UGDO z%*NXeF$z-J+LR1|T4f1-tgH=~A1kh@s(v18!RimMROKpq%xroie;Y!yg}T}d0+k(V zBP|cht+r5uRf_K$={w165mbfSkQ~!7NH}7!X3Dmf?K$RobB#3$F1>6o8EG~@o@hs` zVOd0Dra%pFN1ROKMvs_Vp*eALt(BeWEA~nV^h{qN7Og6tp=1oPczVJ}vn?FBtYvR8 zg~(PFil@X|dHDKQFEqn9%O1t9ulYSo=*7-(kC-Sl< zZmxldLYh&Cf_~aw?6_`g!D1GR0PT2UJK=fx&|vLb^sGK6aF}(27L>ry^&S74oZgmq zY;F<%m2@fVW^~&kEq@H){4y7uMRUQi^%x6RX)7U=#Q?F;0txLtSy#~Ald>e2poox_ z9%f1fA&w}At5o`!gjBx0bK~% znZQ4MeP4kySgYwLp1^ugGq?$#VXfEj;w`j{i$uAligDZ3+C!tw&!TqK=m>c|?59bH z6k#$VjGAx)5^|y%yYhnwfIw{M=`O-=kkr0eRvF|(pc9wqChlMh7R!wt%UT4iTK7;X z#gmwu+&A>KYG9a1))w#;k4XU|$4RPgGc+z4Op|e%S|bzgty-m|a7AJO1j#F$HyA_e zNKy*`8jiD#rO|+ddFVYb3H>3B0m)kdDMBD1G*K9|9xC9pI<_9qP_0aHMdqjleSGN) zU%2`gIz~NW{X?)F?=3F$mVrInLstQz`o=qoehEEvm3Iw2r+%X6OrQrS+I5P`o7$V* zpL1W~fKy+GJHwY(rdQ^bSF)Pjd}zOJHs<|ow4S~=3V&|{QLKXrU2034Ew7#Oxu<-6 z7JZ!li^}gS%jafp`9G)pH3?Giy10#Ef)picG&}-=mj_NHQdi{F9~ajklpngi2CeZB zc?lhl*}TKbEbCfTIOzWqyEkU(Z*Qw)#SRS)^%YCcS}>FSo5+fcAG_}?fu>sAhxPE? z7TXv39SiV8$k00$Z+o+nPRptVVv#RR_<(t1S0om^;-;Qx+vZd_3%|B4VvW!rLsJ7Md6R)F8zq z#e#{Uw3<}O3B;-sN)ljs1-Mj?UPQ~H++xG)BXH6yoo80o3OjuRFG*7p#j+W~|VF|0n&PU8+24+&^oLQQqdQuLWv7G&+ z7T3&KL|q>7lG((c!6KE0Xi7>W_Cy*x;0JY{c(azk+&-(#rxLc3*cqPmc@@1JS8w6{ znu0TfadZ=PlM7OA_sb!b$U!=w8*)-rN40`3-{$O3`;2MLCKX+hl;&GrMW-Z$M*jhY z{fC~VWU(D0dv9Mm!qc19#cZ#>bep>|ZfR*TxrkY*4j(`}96CmBFpb+@)VAn6oSNK3 zlIyR@2|>-a5uTHuZv%c2U&hW6Uevo^Fv~zOKmuEQYUG%tghaW1qHClB7r{|G!U?6K zC~sWkfDmP$IL~AXjTUw!yHH(-6oCF3Wq|8Fl&PM)I;W#Bso1K6G z9Zc@$J5%`B!XTIquZ4I{g?$WfpoZaI4JbxX%ZefGk*D_U#qYCykegyi;s3$3h5ggy zl;-WKGS9>LQ4F;_3>+rZ9G7FI+C)jUPD$TkL#6f$6z1Al;4&!<;WZ_e3Q!GNBLafg19EZEO+yNmyc`%^+Ws%?ifN$$JrzE0l-{MpNbg_iOtZ|_?R%}?TVtyK3o53JrPg7d}5%iNTQo~5xo%^z(eIG z(nfFG%2Rcxv4zGJTeotq8mtXEfYn0l+Q8?w1-VI?qXSpdeNk%M-A;388m9}6GKHNT ztvTLl%AnA0X9*e{%CHe{#pq7r$vcC-Y`y~OmIkC=;WqS(+`G&+#o{t7S3EE3954*& zC@I(z6jFh#5vMrtdecC=I=Ok9&>72SusrzbDIN(<^lF;C>UqMgt}sq%mr<2VUuecL zru%TLIJ&u5r@g?<4(yOj5o;9b2epY(h{8c|A6=Q}5Q4)V>=^2)_v>^&dX=*ZL=)(8 zKsa&lJKFI9m}R^+zR7#_ijn3#70qY<%f%qfEO1Z9EMW71bUl?vez+Toa&yP5H}x8B<}>S zIZN5JLWIOLFfLwneZe^?3`-IFvIy>)KxhfoYoY>F@(qX4Yp*NdX&eX^Q4Ddh>CpsFkpRgD5y(T|TpN)yeuBTK_-}fiAE7nmTTX@~X=wfYE>liN? z(MY6&P#De1e*Iswb`Ga=%0~Z6oPM_!>2=Ltnl<4BM+ZZ!MjFIFU^oI5VdT*mdXiJj zDVWb#2!@FY0vga1VrqUizC`?ht05C`THus+vUkAo$Be77-Zy12a~aNaL1UYaRg8^t-y2cNAhpS)H{Eb>XU)J}Th_iQ*YBByhZSV5fzV` z#jB3*D0%S7Mz4i+LGn`Bc0ciBa?n*-!NC-~p&TiHoR2IxIaD}j)Yw!NHmSY$=u=yWa*8^?g~+FgMxg{mwuLx; z@@6DZV*=kNq-O%mt>L24k}0BJ6E<**Nvz1l_3GJs2xHF+n=&AgnT&3N@)3q8zm;Om z*86TdKtv;^D+;AWQ{iY!>C5W*F;Vu4dE$DwpBe(Z?M%Bl;8vDnSW-<`Bq|gtckvO& z6)mh5ANG5ix227JTdOFvFwFsG}rxQnzt^w)B-8!)CZ!(78LOb2q$S%ifKx<<7Ku>u^%L$(FiMD|C*j0=P{c*3X(U zavPhAr%HL~qXsb9y8~en1aO8SGci<4t8r3^Xr@JgTk}@>oDj`a`c(UK3}Xm@tqG+$=*9GMBSyK?8`R~ zMxn&AZK~{K^sv3%qb9JY+2*_+NX(-o-ezD72 zQBCZ9S-_ms$BD=ztMDL)Nq9hb}|Y7D>-`8LFhZEIE~= zlUb6s(nZo;r3Z{q+{4YOfD5DG%(^Pa?uQ1o_c_~j22xzNXxqPDGc~nGC8tO&DPPD2 zMM;cJH{(OG$n6!wih{0}L>uInIJGvuBhYQM3!-i4Os=6YSQcscaH!qiJ4pJ^Zjf}w zhnKm-%Phx;YJ35>M|asqIxV=5-NK58#h)S9zy>$=}=uOYv^hWD{ zI2N()-cMhCQ3nMbis&@o>N|x+Sg>bU1Or^>8=WnSDCw=!@-PC8e%~aPvo4yvlYPP+gr_}2|WVc={dMieYlH}2?k`5F7VVkW=@=miA9W<~2)z{5n=1{#w6Q|jj zSn`TGymBgosmwAM^DOCNFz#t$EVp6|#+y6Flo^0VWn3n_fly1Ne@%dmLq+feeVWXg#h`N6A$854KwO6(LNa4l(yLUr@pIL6EgxlXd+^>fu0}&Ht{z_HCU%4 z32a~CbEhv&mQ%KU869YNOZKaY7r++Vvo4@{dw}@FL%xf4Y4iyu;C9r{SaQS-rw?{* zD846d$5eM`yyX&1vKdT|iB7>53~7*3y7NS)W*OT^#zuGy%4Y+XA6VA>jRXXCtaHj3 z0%K_MgN+X3zg;wy7fv@xeKE-V3yn8wTRgPM3x@tZOFzPnCxK5nKMy(1t9cIFi@03$C&xBhqb!CfiT zdh}AWl#qIKexHn`9ZwTpX)`&wg*sbYEZ=n7zAa62%*wr%lyu~Lk zo6WBUasf={OX>s}_C#-f&nD0RK{w3{(nYPdd* zqjoW8^@zUBw3IzoQAsjj4tRlNE!TRnC2lXi{!UwQfhJzav*rX9Q6__TWIC#)rI>Xx zR$O*J1wkuphit2a{Vs;K6kq<6O7`~&fdfr3%tbHWr`s7S@-(p(hU0P4&k6&BF7KGc zm(ZyLHrVok1MNDerslV`xx+?~{oj~dpOy)k@2%2M-AWU?7kV<}<4yfmY2bd9S&6}|&E3L*?blHd^ z{ZJ&HbFyLt8-$TI4nCUB`*@D%66VxN_Gh-ZC67C%GBRQ$g)NoZ(#Qe47AThuTOc+|l=7%5^w-2JB0X#jA3xI5c7-^W)7xQqv@oZQKvQMAKIvQ+I z5ZPt1utX7B8$heYYMK4U5dm;$dH1Uels0P?`0xIPnE7 zYpFZS&GHfio#E|L!50Ww#(GE_=R5tH0ETGUJIg4cRik47si?~2r2c2EkzQ06rNs$G z1;)77$xQYdB7dgE{gu~fNe{%xizs)?vvsu&mj)!FZDXYg&Jp5eEPQBX1+HyNHS_>h zM!IV4dv{JwUaQq0qe+~~x{HmEkI98brhH!n2uLLzm&s`4=Gm4Yn7oq0G{ioPw1 z=v^gtfFh~e5u0p37F|Ms?XfaAB zX<-P=+=z?MB_JSr%~q?EVH9t5e-!N*cq1(l3}F!KBLfcZlzkqPCNRo4Om~>0kV-?@ zN-jTbel0ACq^Op$8C$W!{lx27?%k$>HFU~Kg+6kqXdhCPYfID3T`uJqd%s?7Q4ByB z&=TYZ0sV4%2z=v!U?3?l7-o@`c`O)CZ8*4!l&6Roy!z}h0EKylo#5*6?bH-sB>~TK zS4n8m?2w%0e7?H-y*R1gr1gJk(GB`ZahSolyq>Tzk81KVdDtBL8iW90{5CLmgAl!6 zBaC8g011r{JA}vVy=u^V=?5@&)rhCTr!TLXJ;n}PnA+pouf5^$JB}2>2ucRh;E*zf z%?1mu&EO|r_14Nw@H{#yPv0_v=wYrz?a`Vk-D0fDlPRC&j!*4*zkk_-BM4SleZ${T z?}W230ULS0(M;!*A5&1QQ)oM>xHZ-(eO#kRB8HwQ6_)1h=cNN2n375X*iA5LBw_;6 zaPwXkEfMGH`G?S#s9WA1D2~KLO<@H#B*|If9&777Fh6poTHtyCRXuGB6RZ?K=_w~s zsc&FsXui)Z)SIei`seVbOdig}+oW;9A-GluyGHt~zeT+6>P<}n%bm1f@ zyZMYif95SCCowq3Tdye^Z~y4JcTP@TIF&uoFG!EDdNh#tWs~sg)zJ#>w3%Umjt1JN zX#gk~G2q48p60c#N9fdMn{(`?5O^u%u(Wc3w-#i#>5yQheq6$r>$F`j;CxYagG92^ zJkAODB3#QOcf|X-+V7a;Z1y`QIam4}bE%CUf3x7gA!OSg%=BP#I~>Iaj@-@oq`?Eh zY!{cGw^cnR?MiFG-?5I+i9>4QW%6o5XJgSxj~iA;M+H}v8IZgd(?{%SNwR8XdL-N~ zUzt7_ZpT)p2g5BbxF_7wgy~qWd(Vjnl4yFkn~b{R=MlWloQ#D(Eo2&+vL})PA-XIY zHz97$L1Q$VS+u+s#zqKHLWi`_BjD8-V7WAqx7Feq`Q7M|NHL(p9$!Dg__}|UcD97? zILGyV0_DZKSf98-J3{>KGIC9j>x#}N4hQP}w9(e@bOM2BMLqGm5LBXFI7S3JX{(5V z0J%mww2uy;C;#D9jEpEn z2!_J6Tj=nhygDjUt)ZbM$%(kVU}bU})TgIiNqcx@G8vwxllH=u$q9K>Eim`M+yY%z z^M&%u2^u^~QZ>7Mv2-FU0xHu;pfHGRVJu7p)!t|#Lb<&6Oz-6Bru!(C%Spo4TlRb7%^xiT@TpLap>0LaSwFG!5uhwLEV zYR-vPM)b`KlDqYtT~pJ#l6B+COfT8=PvKx*RsSsydH|;1N!XU<6FSC2X>!^8)zyf^rEUm8m1} zNn;u>Yz^J0a&hIOa`$4*bJSwf?@hU}IR$jFFBTn1;O>h-#Gq_NgZUub1%4w<24QSW zC?71N3Rx~jF{4ZJ5gJ!9=CldV{V2sb=EKlqTP>bfe_#E%x0mTr^P)_xt`wf*6?j~_6aM8=A(_`=t7p}nT{3*7xG{B(Ui_4 z^ppu%mI8GL^FX75tI_RTayX%MCpmu9p+2Cq*hMmj1?n5Wu(NpnP}GKR$iRRC(P%d**FZ6zJJuRP zrJL;cy|=aEMBf%kMobFD@y@N@9OJ+*U1$1?fuVb7W^1Q>6*B~1i?T1h5}0=s2`oa+ zHALh8n^)$wWzi;$dUFN8OxgYR3YA#IFf!c4C7+N}cD+pBRidnBO@;s_POvrv`v+@Q z3^u1I*V-SaHk&w(vB_AS@;b|t`2#j?jJ5J!C#2Ibewj{Or$a%ryB7=1z$TVu?T{O^ zIhImF_BC51#Rhem99t1M^GKZxB?;~xkkLHQua}higj%jCXstNfL09oe=T;ayLX(RJ zXA>Umd@b(j+$!NT=kJCVskt9g4hC@7}+7Sr==CJori z=l4hLc_HO=A5#qP4z>Gef4e!B9F?z|_DUbPS)ox~g04Gw-sW}AumLt2ZL1OZanJ0a{--tiY zP`>UNEDqpKq`5+bnBZiZypI*O;&%p%-ySS}YY@Utu4mo|AH?%iT<{W3*vVt1`Q5?d zzQN+&LEh?HG}4qKA}sPqqA^h%U#Ok3^qjHAuH}wMbs1OXs@{(~Tvbzn>^KS(?DOfs zb4_WNnl6F0J5`~tbMq>0JeXJWl+J?_*k#l&I*b^0j@PnVv{E^qXlL`%ob)mj{?mNf zUze*ic?yAJC|v_zKI*l|PKc8euUNV$tobrMF!3e^1T%kJIwS27(tOQc^2k%OX<1O- z_MhK;yf3NjsA$TjP2V*jb)Rt5(`TQJZf^NVjyEz-P0W!vd}#NZ7dSqdB)h4+pPbxr zMc%)0L=-|(e>(3gzbI9^Sw4~OO?mgz8%AuBmUov*No9I+zrhMk!kc`jEIuqzB4?O= zbXRjl&y#1XbY)W(cKme}eap^`mGSUALsif;%I_^)Dz}8!^vn*DalB^>KX^WKgfrFYG>%jN6GG!k8Yp!3kKss~_^VzDZU|N8{}FReWi0e^Mm#se4x z=S^e}i(95wQzDnmErJ~q<5LG700|WUU30ctbnwbM@>tBo8Ag#{N!yrOT<=ow(zvn>wdj9q{F%1L8|mtX?l6x_WE#@5&7BZ zQu-=t#cNHGt=Xy=ls*Y;-WtXWh47diWxL^$bQR@uS*{;&vLxN0PPuPqvsF^fBrw2n zsIS$ZU~pX<{qI&sNF{5gr-EY=cyCkj<+tGm2Pf z0l`mZCX1pGHK~B?CjwR@0gYJ3<_T2 zDF7tn)SDcTmuQtmLTYD3^N)v1@4K;`zUjUjeO&l!I{fDDw=9-o<%6@OlJu}GsZS^* za<6Ru9ozgkgDAd!|O^@=pL+k_UZ&go0y$RZNeg_ZDirgYp;{>F99a1 z1@tMa$yUl6yU^3p?8y1ZF#KrY32bz57mhV~|7F_K-cndtj{;@Gi@W zQSOi&wVthSZNY8`EDL$Ep5O-%UpiHOR0E%6ZvZ|~gn{|cYEI&zrv>Pv-^GMy5Z}0U z;^BvQH}86FJZ%%(ci(CqXSDy~$o`HW<}jZ9#cs-&p) z%9k{5x0giWFM9hQO!LP{$ot#1KMJHOW_|JJg+CvNV7W^7JD|G*^SDk*%!da_}~*-sN9wp#TfO)$2DeJ+YASUq+w9_;s*}{D#>P} zD(1*kt_>z?N($c>HD`aK_?B`Dc?V>qvl}B zdTQ*Kn#%!kmWG=#eQq@0l{g2eIL|?+*^c>CxPo7z-ADlIE=|NxnCsah2iv+BKZTml zEx4%BKrNqZI)|w6rEL0@exv|9@)Pw!1wzo`U|My8gTZxRWh!93mwZYgR-e|oRWuq~ zI9bLfIvPB@Mg8b~i|HEDDBo)Inm)#b2C*xcAC4(cigy?rZN62VB^&@2 z{9mX6%V;PW%VMYGvF?(UtOGejvq{*B7Cq#&lR-eeH;ft4fGNp?pGh)PrnI?7Uyasc$~;EkZoB zXUaLX;C*k!<0>Hi-wLg(Q04+&Xx$36PZ(JAfLbm)YNuTAT6oYK1hAC;7pPphR4AkZ zC`(_+atAc(yj&Y~FBH6JDFtzF1aB41q#F;I7p1Z|e%a5aPOCY7YldI@#7OVpm&tY6 zZ^KOvy~MqTP8C0f_YT|25zoelfuGUur`6d#>h!P8M zAT)qqA)-4uIP)llu0HTRFiHamKOh}Rq;sD1j3RXjy|X_HK8fVRh>eHLOx#(&3D=0rhxvT7uGHyJn*hF&;)g z3vQJVf(-`jtUl5*d4{7WgvZ60e2w87S)+xRo>$!SPFg`PX8*;QAjoc8IgAb~pd8V1 zYDZQ>(mzIet?$qJ^g`^Y$6Fo6mEy;?WbYetvXU3Ox-l+3^-;=KC5g@}P*0iv>w7Ci zeM}VuL#I`xv;if+A2oiOX=UL@>R(PJ}>PUs7!e^zJv;}g3_8V+(mU9+mLeUJ?f(TLc1;Lk)sz9cn zMT+#s6+Qz{;Q{58YQw{@9v17NjCZBNabB^)d6}u`;B?6;dTig;vR#Fjap{S9dcX?A zw}HkvPeLMAdME5o=?40|U{6Z1Sjw}Nc?4!lV^6wUE;m?vw`!#(Ntzaw;St7qA9GP+ zDkG`Z5j50fo|GyIMgM~+n)1dvCFh;mEc};!Wsata80lb;x!)0UWlVz?DqK!!7=tmo zU8jI3T1jB%xJUsS9A?PLwY&`LXyC|w7G9ATH*BjGJ1BPO0qQYFb->QLI<;_RqxM4;FhG^JQfpVrntL2D5|pcSWbDMyCj%}n2Nh7&wp_LgKkfkRucHXJG8-&qvs!wKb1{<-xksGpc-t zxzqge6SsQbmKrN2&(#)6O)5w}M^O;!csKTx>c;!imTC*QhSgANa+*?2QsNUc2rN~j zv?9*_u7<(*T;|#92N&{QT~0XwF|bgB;3&)AGBLCh+_n_Uu;$EeJg{U~5LuXXsp8-Zo(r5CWddPuwD;hzS|m z&sF_iiY{+IVOGwuJ`fK;9EFLsAynhQ^lT$w z)2cjgrw__PIlt$@gMQK#-JEJU{(g|5>qB0$xRkL|aBXT|+0Nnt8fPIqt(gKtCM1!yG|KK?gtshZ%jfJ9p5B_O4i`yKLSECd8@ zWg$v%YkmkF+&U-36K*XCL55oj_=^YG4Puw8qhI0)hrMgLoU<~yn#=r^$!0D9b|n|w z_cj`BRy0IwAP=ktV#K}~NR;a-BnnfeqVh(vmYZBM^@q^}KHJd!^Ik z?477GIOXVPbfQ@F^Y|X~MvvtviHmQUM{c?`d#{u+#zyu4ZZs00_arN$jea}LEqaiP zZqD{R4uwczJf^GUIj3^Ygm>Zyw0`(S4%S+l!_(oCwMB&z^JX+|UY zskA%}jG@HmvmQ!^Izvg#EQb;-H^yZPH~vRJFzhwns|(JJ{5~G$_h z38QvQKeKdVW45G|O7Y<5VkR6ANd=ZYbO)S$aB5Yw0YxAgFCK9mqjh}J3#CU*m7`zI z#JXN!eBZk72jLrp{vdpJkHH@#CaihdqQ*HFr^WY^F@CaVhtMx{5GwQH8nZFt$~CyR zJ;Z$!Z5~+_T?WSxwn4P_ruXWjcx;71rjvG`*Ju>8AKaDC+m#&_w?GmLLWyv^zrDw6n%VR z>Ysx?)I6sTHMty*%c8Hx2r&lVQ(;^lJ9|3$euqwqM{tl~jIPk8MM+JlL$orv=Bf)I z5POH2#Cu?H?|XIgZ{OOkUjQB1N6otH1fb6cEzMiDUI2r)FE9Y&Z%6XVr(lMDC=?!_#y6eFHe)m~lI>w8B~?w;C%4L-z z8FC=wW7F2{G8*}Tj8#);z~U+~VY9L;s$XUHL`M6DphX%!_k^KPQ(T!*^FohT#Zpl^ z$Mn--sgOXoaucw}%i?$FW42t;IB*9n!LY=gAFER-kJS+(lI~-5Dt4@n2~aTnL}#2m ze#$s|Ox*;E|HiHt#wMG2E>+0C;60jL^x4XpRY->Z=~c*sCikR5zRwXJXrf1jJZORq z`7gO=8tenza*xkv&4<-IA7^TE!20R=F8YyStrTTWvm%IZc4HkB&Sx?PRc0ST2oEfa zULy6ZnCYPO$$u%7-uW9H*2OUU??CCCnQzYws8I79rD}3ODaz#0xP>wHtaOCG2na<- zVDl(CH@pfw!?xJMzB&@8fXPUwG`3;X4&F0FhnUKkYeTwSdO`9O)F@?k6;deNvTq8q z;WNt@mGPc#mGprKZEfckf-<9cPxJTDcZ*XOwHo23x z1{P8M~P054vA!OW+=m0a^z$-$=o;e$6P;sGtQFaNl&1!rpmxH9J z!JAm3$t0*IxVg?l%cft!cZ8EBi8O8fAiJ;JiowV<>lN46lyA%Gh5#zN`xUJUau-kT zDrU_pVLU5fpm}E0g{rtv867M{>4o6LE5C=;n#UQDT6}^nN~@W+ zWMj!a`1Cv>c#gmO92rowtCez>kO0GzwTO`-Nq# zwfQ`HjH$;3?D6X=_MT9z<{0b~oGo@*4+p!7o$fA{lhrt1qs`c}H6TV|@p4)ePpUu3a3u8R5x~0> zbVK~9VnVr%pM(#Dga<>ygCyLogaUuJCo~R`7nvPF;ii)3J&O}#mJB@|W2QQ{sgyhl zaxm@#H!>=53sAdBiX`;0iVx4R9{BW+)t}%xOmhoJ2g23rG0Q=fc^y=WyZB z*mJpX+Ug=M98>yYE*zAykPAj7HdbKyC|<;c1-sPz$XO)I{u{T62^L8+&5q$=n&bre zX6xprEr5NkRxAy*t1TUiO z5RL7J; zSWRxtA{?t`$G8PKK(LEr>pk_lk9-@+JSHZdt1iaKuswaGI{kSy{pC&2M1TM58&F z+#9faH#80ji22F3`H3O6qR|AV7j!XfllRAD4?tM`Hmf!yrNs)DMj{uX6+Z1pQL&+6 zNb^1@KZ6c^21-Myf?tcDbCq4Z2cZlgTi><=i)TXL1yXcg1j@Hmu`va~)ZTJAD5l`|V zQWs0h+npP=KORWg)1FdA*P=ksA z!AUbSSq-)B)_Wk4dY4yMN58Bqv&h@9VU-#R*qtWZZKkCxArk_o8js13{l7cfqEZB z*$Imcg^K{_Vi_+IyNQh5G{j#;C3a)|!@Lp^?jkCv2vn(}@C`;DAv`rEWhLprvVtZ0 z>>q~Kld%L(uiDU>;9kL0v?MOxSTpQX*Be zl*ipk7z|S6)K!1NB0sZxe_u zH)|A$=ITnJwZUl-UoV;7_MMngWn%&7|!VWw)6+zQC zn|~~_6VH+5Td>Z~rXDR*=OTnL=-*P0h19vF<}5ug8|N`EdwEalRU!3qOHI%jPknKj z8VTD~_J)vpd_s`m#pS85C{u6r)DJi$SBBJhNGUnv$dkXVOuo4%`PCsg`*xKazfwn^ zvO(8u4(tQ12WlYHKEOcc_9H2^AT?01#W-)WLl_=IhCa^#rzeBOlIT!`3-wBlYoby* zGt%%Tq=ac|=zC^5WT+kk6;h67QfLE0!*9lP1!~m{-aLj(1u?EwibZ5W*XP{7orw** z%E10jX&Gv9_NiuefXD%`)K4|#5f5xlVifa*pN2;(cG@-S?d7qjCuJIM(*mv%0VOGy zv$45FI4P&aWYu_}d^dHP9bEj-Z+Wz1jky@qf|E=x(7szG#d;MCC7cbE!865;^(OvmWYC=jx#5z7hmK6hk{TT z90C@})B^|1$G)-6h8s+LA(PH?3m?cN7Og&T;28}tLU^a}=esP$RPbJ$*49avn2DSh zl>$FP>ohq8BXnf9xRNiGa3ZUpcjV0z6=Bej7d#iSKT24VZdSZBE9+_wzBbeqShFh7 z!`|cCR#x2cdBT7(*x`tNq9M&!-RwyiC15hRcEKAp@2LBMN+F^IjWTNqy5mo6sg zfybDFAhDL08<4QHUIq>kdOFM*GMQkkr-X(^qSRV-Q4o2Va>)4~OT+{MqK~yrZ3w|( zcMB-!XKT`U3Qt!cVq1C8*UPE9`?D(1R7i zRjaO)r)6AvYFVUjt0VO_M+Es-y#`PoAYtv_vWYKN*L(oHV{{O0bCM}L$?5R25>5T{ z29Sng#Er=5AeScr(J(%Ut}QHYtJ7#fj*`7ahe8HBV)lH^Nh_ zJm-SoRcw+SI=K*ti_dGrge0)qSOz3P_WqN31*R0NF}5_~oMK%R>Wqs`@s>s!D?C*Z zQe5h?moAGWS9oe@lD;(RqqDj6&z(9Mip z?<|85bqXRhbSyH<{Rs}uFpiwf$}kRWc5Xu8G62tbf|z#jwz1^O;`0%Ff!@*SYfKj& zHV??*;;+$Wjr{`^G8e-?141l-Xkh3?5L))hesNookZfB%1dTmenLD0mnZ^|u)6L>l zn%^44*fxq!z0_?W21IH+P&<{|fFRbCeY4JBgI1vz_>;6+U{llh&m;pxtuNXS!xh~? zAFt4ThP36zb`4N5hhIg_H+BN#*ye}q`&vL@6fT9YNKk20u+6Sny2LR-pBDS4#o~D4 z5D+kcVTky^2zS;Uzna*VS`)Vk>-QfiJtQ9I4p4o|=zt<3CrX55QOU*^#E+H1En&)F zTYn|*BtqILV^RVkg_FYmlI)>`C<9)D)S%~As@N?(O6;B=A4;P*5%%m!>@iP9R!2Xc zC$M6cs$bzaAA^!$;C6hd)&E=bO~*#tATcvD5dy^(aAa+3C9kak(+|zd4K1O!#!v@P zu*%L`#AD}Ssi_JozVk|ZXeRRbwJf#)*rn3Jn%_&}8fR~@sRHdK*{eIwtDVvnYqMSP zKAl3;);3X??S`Qep`2v_&HTswlKVyb7VKCAA)TN_R+Uy@; zIi^hU7Gf6YjPXtiUL>pNDaQF#6j8g%cT|KL&J2V+{PQ}|E*`q;;>iAH*6jaSJ6WfD z4x-9y59Mj^x3u#u(qXSOE(eyST!4T!>S@%UXsVtpK=~?Y+McvYjg*;IG7vsQmx!ch6OMiB&WBBP0h=h#Q#nvRXB?jdi~M6X{&S9<=8KU;`iHw4#iZ`VAfUqq6g(k}|;D_(*D`B&OiPw5v@+RbNj zzj#WS|0=)2c|TUWUr1>;pTSp5KzK^SOmY17dD*XV|IKoy?*kqE)-*; z`@Iu%eVWeD^|-DxH(L~YA|z-AQ+A`++weOIJ*V%m^N(lP`sMo=<7`(= z;wewps|x(VisZFh3y?Bmia085n-%ZwO;0Qjj!I)B9xz}ni>{Ecq*Z@S=rh{0I=Vu} zG}NFAaQ21?kD7;fs*%V#=$y@8*s&;#Z8s{+ykscpn1n>GX!3FPhullHY|t_BNd zCeowX=U*v+N6~sVJK-o2n&5cPJbl=N+OP?A*hsugmKjSbupJ4F*@zAR87asV?Bq*Q7>Rc*X`; zhtt)!1eSDSP4?Ybo0fGFIF|-0mWpWiujjN-(?0FRio8GUv$aTkHZubVpH=3}>RG0B zP$)eBbve<5x7%?s7j?iAo2`SIRb2bFwEERT%_V5R?Uv%J&wT2|Ni}S1YaW7#$h3mG zsZbbFt^27W-qs%6!rWr8`(<*vm+9P>=+2smpvY}$59RY*z;T|$*0!epr>T$HltDT? zQGDv2q2bI=G{P)P^g!?VE(!V%c(Z%c7WUZi{TbLsnL@LDxrXIGsT^7bF*p;+PFz0M^Wjvi!Ov84ntcd1Rr7@STp9Mw8uTd^@9l@@@*M zmI4o$(j}7BhbxI@(C=%@wccUnBSCcUG;5#*z{n^2k%e%JLls(H5R~Zi97Cd$V~gpp zUTFK}%?7oRIbxjMUR#gn%r*v>2mo=z3u%#B}55sTI zE2^3j#%5G7_@MN>Ilsnm6A5!L16tN=@|q4F@Z$=y_od*DucJYJi1zH%TTpFV^w3Tx zw7awNiX^u^oXn5H^XQv(^b2TQlIDuj98nsEF~djp$3i&^Alg4-_{jcR+=r?**$~*I z*{tVnvqX6%VAw*H7VL98C*ld(CB7A4qh$Lcpa4lLgk~=B6!4bbni&?oH7|?aMwto< z&&EWt3}Y}&u3~>M!Y-7~Bjr#fP2vcnVnCfv`{)KuF%nRU)MU0M%Xp!7LZq})wn#M} z3TYIn_kfVZB#g^g3-2s;nlcG6)uG?plt1U^m2a$ph1G0RmRGl$FsL(T^)#fmB*b z?OrB3b&DjQjS%AAo17IJ#3DD$7^C1Q+N`0F$7s{d<}Yd*6N}){jiGgB$ymvNL2sn~ z62=f=z|>IZwpl{V5T!|!@2?5jGO~GSFcN!7OU>Q}`;oHX<(Y|4=3ao|4O3d=4=6@c z85n7PwVF0>V$<3A*5 zkvGJPlsz&WT0y9RqH|6>OgZ6LuVB|4fylAX?fM={(m|m*=cBF@Gx?lNwfp_mo_2F@ zoB02>JIV4WmNH2O$i0Wc`a;%P$T~db=V7ejY>|Pzs*r6+Z_XP^7HtafZrUb=3NCoW=TJQ>fk;w1zGC8v#l&4FN9%8K1c-WRQ5 zeS;#@If*3bJRJl(g}G?Byjf7*oMSiiqm1$>qCwf1Z)1j0H$*u@h%gijIX`-Vvw3)( z5WSemF@S+3=8HulXouXKI0VaP-y`r)a)QyvBq2Jefs7SjAOrbuK3}H6g`q}OlL~H8 z3wtn$kPPfy51fiV`-Owi%ZJ`pEcB5-Uv|lPJwhbtddp0=C?Nw)j1~BWjajy z%hI`$@pZp&VA~o|7c+kjmD$BeN{n!>8d>*$opbZ*t4Ou(#lQTz@|x&{qjI7vhQwF(swO%FmvlNpMh?vk%}+CStDR@a*bHV>5*}s zrSR4^&X|bKd2W<^`q6>sXfW8wtRMxqFOGyJcR_GQd^?yl9mn*9OIkWa8x9+ipj(VUZX$mf^%|*m6nrAIZ#oP61^DPQjCTd$d2Z|M5~o9P2U{G z=$qXnhAYIdPMf%_Ky=QU1Xr-qC;0SHD}tB7yDmsBLw4^ZlKX$I!6fag3@b7+0GUif zSnTwK$dxA@-_Z5sd5G0tci6VIz`)&Ni-xYd(UnYQ?A_9pn9b~N#Y*O;c6ZTAivUBq zi&rKWd+9(SBk0}3sI%@nJKTZR%-T4wz%;W17~0C_2~6~jPY#loZ~DN08|Sy-))QtL zwUi+DvYL?46U-DZ9$HKPYPC~q0nDbg*+7l@HD>#O2g@r~0$|t2!Q=vq%y=nHqOPaUDb7QoiyU2-ftr!+1Xq>$C?d{|`qHML3`_=;O zzXuD(6~C5F*uJzw-g_m1Sb=U=zOF6Wc+Ujd9Vd;7}+V(Sb~iTI~DNZq9aAj zG`law!gzu*=0_+d-~+L=9@J=ZNw`kpnO6|Ds9EGx{AJ-@9YYS%BAzS*<2o@*x1Ba= z`5;&2x`Z5+*V+U!E#CRAosDZ+Y07Zt&iW%yuWJ+4tg@|`l629*Q_}ESQrxu0 zRw!sPmUOK?qt+T=F@VKhi8@l920)fYFe*LffrD{cxsiZ4H_b+3#vBHYPSz#%qdX#5 zbn)$ve)2I^&ysOaU>2AZZ6;?qP~E{|CiRFZUW(#ZhHSNi+RnUPE&Fw|{>-o+btV^xaog?Rin1r!{I%;_jJyb$Y;W*Dvvm;M)Wo(>L^Ynib1r9I zxBd=Qk`yG4!G2`Zv_yK!-Yzpn9P*;u>Qbrc4oYp!5K!2<^l zJSwzj_r6L)NBo#&a?>=#Nph%ECe;R{TbFaCPR@cP2r*P`#WVozHTzAIQuf300?rc? z5<8k>qQE{Y3euo>J?3y*KF@2cf)6zHr; zk=$ZNWxAEM-fb7gNQ~wmrsmp12S|>;9TL+z2lO@DS89?-oI`{mY|&$sjFaHZ@qsCc zOb{liy5a*vE1mejl;Fg~J4u5)+1^UHU^m-7;p|W_fiS_8v>9aXY-4~qH5g#XiL(cc z8cqjT(gm0xxSnCjG9xh}n^J8ZI0Nl}49FBPl8DDy1creVrWvhJfaQBq9H$a3BbDp( z&VLAdE}sWmR~z)PpgmL}yM(oYGAbBL)}3>6zQ&*x&Oo2$s_}X2 zUiGT$c%6)snpYD;P`D%@m49^I-PhiP^+83i>;LS(x@c+-{GAN1B14l>Q2J}OAj}D- zQ`iYClNN&a=yuUZ_hM@R8ot!uG9syJu>}7u(x=ee7%q0F2D}DcF^QRV`g^YiakeaN z5UglNe2eo)8Wpk9-e&rn=42AaQfKUja&X1#JX!Z_!SzB_=n^I4Vsh$k6kM(t(xi1E zy`%%Qquk=#TUlxI6ANNaHysx`@JcP=Q)X6RmKF*8SKrQ$pNi=~uE)al>*0DlT%Qit z6XAL?T=ylOZ#rD>4%d6a_1x1EXC|r+(>nFqYk#K!HT%QQnC&P7yt3!TU zc(W^9@3d?26v|D#$nA)4Ee~jr5DQdJWLzqKY4~M;3$8Q1K~@F_V-~iyCCRf?+%hVT zox3Ib^F?<1bhte~{z}Z4;OkiO^>f>VY{Z04Sjr3IuYqgE4my>o+r?J^XQ-$b@1gn; z+{!R7>ZYG^A6>YmHCXHbTK6?$K0?b_G|C%hwZTJ~VgbEfVTFM~%)-#X>wUq@h5)HK zfd%f1KM~@HhC;QZXW8q**i_^y-&p*Rr0h*XX(X}sogeQy*B*DBD>bfG^x68Kh+?;Y z*liz-Os4$J)VVZ}@rKu{C>B>L8Ytw+;Dr#qgd=u%S1a({9ci|h1&DPt%Y`tC{v3Ps z9DgTD{Qd2MfWxR4g`ZpS|D*6!6hc6gFDeO>138yrjA8ksc+a`6#-3Nq=jpM9;GqTCm)lCq z0Q?bydn&N-yAG(cfZAKYlrNwFHBN~?#WSg*4Q1zb(-`~+Q%;-8)cQIZJYwnPxKo)-ilP2Rf*t}<~wT|!5oxC=qH6k(w` zR9{PjLeo|wH^ySC27|_jpSKEsik;xd0=Y<(;)(_9StunVI^zaq^oJcIeVyR}v|-d$ z!T>?2cIXTrlh*(eVz;Vk9mFD)faym)`%>E;pID%MkcmIiY(@_0vZvZQPdcGhJ_w7x zFxUn3X$J4EFnCFR+V3{F9h(-@7f8;K(nKT^fLw?MvYEzEy^=<8 zQmHT_9MEbYC#}9BS&BmimoY{Qmz;SU7krp<_8}8v8n-|0aBkEZE;H518#OhRopzEH zfIEEItg>qr!!^9D^HS?&2`?F~twF7?Q zv%8`SWipz*R#gBr{*b6Ps|5qj^RMMy&$kwh3qg;lV{#$G2+ITQWJ=dX?J5U`BsT$B zgleu=L=>`5jdtIjc48miia9C3ZWq?z?0E;v#S2sQ6!Xl-uj&+@tb4<* zZ?D}0SjoxgeqX>nya%bpgzl;lR%zDVe&}Hp{LEvYFV>y-&IiZwnZ09=fWfwBpkKbZ zr*u|{c~)@`8&ZbbO_p1GmxRcDAuy>F=9PY7LxA19MT+V!h^VEdVIwCO)iwJJp6oSb zqZfEp_=_ES@tk-{d+?N&c*+~QrrN2>7pkltiqi|jmFiLXX+T!WIS?RAtJxd|lViG< zuP+PCry?tzMV6H>WObKs*iv!oL!sj;?6oRa$L6(tH5+_d6uv0hydG-cB*$HOjWu>= zqUtBM;p`GUp|G3RvR<(KZhfQ```RA+v(l&Rchfeb11rywzIpw&ZDH-4IuMASTdy^_ zGk~(4b!&1Ig;H$#Rkua`$-@q_E%2*S9H{%~Nq>v}G?n*F?QQkL1Vh4dJm8hVr#+7S zXm%6`Th_UqQIH;LN4=xKoB+E{?sruoizYAEf51RX!bR=*oHgc;gAO1eCVH=;}UAvH8KB* z7w8aPrl%MXk9`;e;vanygCeTr+IK!SIk|hf-@@gueb;ArIMS!}_^5eT(lIw{_ZV`- zjD7ML(NP|tO0tUo?u_MkLS=k6#aZt^sckvBVYkxHxjQru8?c@tCU>EYANgQX%=}tX z{4rNrG?v`fKflj%%ta#pEeHdmOp-(bNO5vVDfFsY>FSC zOzXZLqa@w2B4m)3EtacL7z|Eo0lq?vO>=O-DR|4a1p@lKNojqyK!lNlV4_EWJN%YC&+ za}gU&Ts4~PEvam;vuAkX`DS?Z`DQqB_8HWI2S{!_8k;+z(|B_zM)A^$TOKWqK7as` zMUeMXyyvpZqklvk5Y#*mMhDwrR5L~T#K&Wp4ikb}_QjVq{~$HHwB!no_RK6kD(lYp z1QMweGoRP;{>IA##t61sFG|F#HtE9Ya?5jjNK4$++HK zWBe0wcU)DcMNJbf3>d^e(!9xbBO*Z3BKj$ehzSKD=_p;rUSS2mcPWDn9APn6`}e|W zU6g;V@~A=EJf1gmeWC?gEIKqt)nlAyzoK1a%qQJzh-M=zj&VB!Zyr2E`2ZArpD!@%qV6y+(*RHUzPM&0(Qfb=a zq5dcde=)N)+SLI<+xdw8@V^7c~SIo0A4KPke8EPAx8>}(8j9+dBwYp z(LAOngwNTVXbFw<%-iv-x(FMsPn zc8L;+3twYx%1d#H;%7N7GZ#npcieW-7|`-gBIg)^y|uKj`=#Xjg>oxQmW&e!rQG_! zmuuK)9v-!fRrN;DbpfP(F-W#*JFjl!&FW~3(xEGn03HsjBjybpYX_&90QP96GSdM$JD%{F06ZR8vs7Xv+*(jI#I0%EI^$ z0W?6f2hb3^MJKOhe_qKB(7lc$4LRY)c0;8h$-HLvk1XPRq1w^r!vGhQ>Np0tPGZxP zEge^7ixrz-G25uYzJW=KtLbV=FCTRzVArD<1Ti&S`S&7~LhzJ16zYlkq;;}iiwE>q zXHXbMBncwz-Y8RRKzCB>LCmlGsG;8$@Lrfb_Ov9W`z0CRex1U5fXgYNNLXI)6w-Oq z)#lBl>TZIi!C6FmS?p}c5+Hr(DGA(BzqJZ57$Xgtw9cHI#`Qu=>auw{*{YLO4-zfi zA8klD()GC&hbnc^JVKyJfstcxPeG)dQ;x&x8R;ETC(?Xa3Qxv`7|5c~nmv@=UL_+t_yxXysGP>H}ng7QG+VD3C-!RQ<}lRwDrm!#A-@pM$KPY zkqo*F!z*IQWtggK;9W8>F;tHu{n>IRBT)T{gjo@0Vx+_0Ta3T1gSMZo8+DE)PsU0& zmdwQMLGa8Sx}nxfLBRH+@%C0fjRlFaC0~ye(ef%2vMpF*M4TJ^RC>56QiZ4^I*7h% z(HYx&?Ht5l z+pln_&3dE1ufGW!#>C6kPxT)Xr?aYm1|(<|;><|sM-Vv@WCBP65(Yp5ZmS>#Bn-|X z0pAZpLPEfFmXc`lf24J$JN%cge-rF z#Y{jgDuJpJgONU@dr+O#AtD|}#_}d|(`t5Fxtl)n+ypM_YSMdD0R5`+zsrci^Flqs zR%c@}Ncnb^k7gtQp{zE6yzCnaZYBD{0fFr`cBWpTVbI;5vxs518e)oAO8t)$~ekq}1AW3Q6H8VjGC0FUEDIL0F z999uh))Nf#N=r1zO~z(Nn>@oUbdDjfl&Xq%1X+ybQb<&s#KwUzr4wbks*0Uvkb{|_ zIAzfshS#2ar$tNwTPlaZF4ESj9@T~Fo}-HYu(dcrEpY1}T+4|w)uN1Y_3?r17l0)M zcFZWIb}&h7IALXZg3@=q(VII5>7x-hnHFsKtqD?*{+lqGlFjkcSF+@=HY zAJIS<_19zefV;hVHMa|{=Z5@xaX=3A?0a*7xc|@W`UReW?61io1WT3SqBAOySMt#3 zLfDdJ(R!bH*yp9B1B8RjcOXmdn8TP|%Z*T4Q_xQKCRUcDY-1YX>_+I4}hs39|1cKs$F^kSJ50mx_k)#B7Y_&PY99M+t!3=YM2gwgZxGpG-~n=VEDSUI9bfjcV?BLYI?w*?mgv*YcU23rR} zY9cTvB!lQ2C0J2R6ap^@#^q{OU9+Xc z1!G-!rx%3xRdghRv98TI-GXtB*jNvSDcB^VWzWm(LRx`jte27($p~UeJSt7X*&Ata zS{uyv%m)vK^~K0VnhQY^P;E|zVu%zn=>fBNH(ADT}O<>8!Djd6(rS75W^mUCAVbz#G zz+FwFq%QojUmKrr*Y!-T0ahVlIWy|5sEITtx5n6}kbhb5v$F33_)=-+fNv`vz&sbp z*0EhW^^XwAjX6*vUAv)VCd7zgz}b!`hO?+nBol@++L1kKESHm{?y>Bt^T5SOUEnv7 zed9cCjDk!x5_uYB(vck{RRh)on)rxdxlcsFegz*;H5(2cC5)`}zi1Z^n<55Iv|TSl z^xs`u-Dmtw=O3b;PNmPK8CS~DezmC17(nOMW)Wzmm_cI*9Kbm5mCkvub`D?>33^z7 z>6x>-aW@OF{2R;sB@6KA9jd~3K(ER}WS40WYoSlj1xn6|@+{A2DdJeSzfpHbJ~dt3 zp)=yGYoCi4XXWA<=Qdpvyq>v@Vj{X+JY{ZUZQan*Ruhd17tlMosYngG(bcdUB+6ux zw#(IG`nS;OCaI*RU7d`pqtL_5%x`*FB6bw?FepZybviu^Evci2S@{pD71R)@%q|7B< zVoDS8E@jTF5?x}dTbYAsyOlX`uNI<~hb|7C|w1w%(B+8}v`Uof`78?}R$&0#bH_h9| zmCZ%EG;a%&k(uhPDVS#s%04WhUYPEkb!eZl)=|H8yS&|4Z-gxu$vM)`zzF)km4!B_ z2|$koWL{ZHz?`B=`3DXPMhudi>46LpHk-S#)bnqUtsv<6&1poaKz^#jLxU$LekDl+X){uj&9>KEEP#%N30B zTJdkp!=pO{ww0GE1ooWrFkCI+q*p@0aR>PmG*2SMAlif(0#}?JW{aqT!C;fHg|W>b zlQ(QdFBWYlFn}!{Lm-mYB_T(?4wYAa3){GvQIv0SzLkW2!V^fekMmWvPgQn>3PcjyeU53nki=w0E{VWEHiQr)2+zIr9p(|0XWHkv z+=QMXF*4jcU)U~l`{YF z9gs%K$w{C!OA%YFa0NKh$(^yU;KxEl^{A>-JoA70Ks}$8{+#s&%d(@JW!uCo453K(bFFtE|eZ}C{dX53QGU27f6>( z0Mg!Wj~}1dVT(n zHtHoyiuQ89t*UW*46kIis4|K2v&7~DE6d%{C}1C}yH<`lr19;0O!_MzM_%srZ;!j5 zsJh7h=h&v(D=_HVm7-`?K+HtOFlD~sIO{j|eBZR=$FQ1{yw z|8`^NTj}RY`{n1##r<5xNF^(c<5U-opCKkkL$;nhA98i%KOP56N5qEw!NScY^+JzG3t2r)>Iul%?#|uEU zsW8fhQG2!hPs7RLClXd0mpEA+`tkTBQ9u8ilN^ehPx*CC`8J0_z}cDkzP(pon8lZ_ zVUjEhS%fN~vRa&1!lbGIP`KH3N@$#^nagJ3Hf{=XUK@u^1b)rog3xJq;uFQQJN<|6 zXJ?d#9QFQzk#?MZgLB(OxNU{E{q6fI>F4_$o*imOS{5^IK-lMZz)xzP&-3RCBn%qp z&y(6)&F2a9vtJPC@l{1o6$8*zXTGWyw5cSYqWeS`Lw^K+p)ceM+G?WQb&?un+3536 zS5N%ZBP&oo+AP731v7q;c?wbCz8+D5AsfM+ecGbJR8)tk&_i|85fwyk3|roRc;xo0 zXKVQhFOb|;cE-EQ+*kO!bLBf>V@~k@5x|Cpwu&P9Vv<|z?xa4}SPg3F+iNH$49wN+ z*7L`{Ovan65XJipT|f~R3FW4-jC(G}AxKsUxGdv?D2e=(Ga9A4M_SBo7Is}$7jDs# zv{SCn#5(K@hGDh?Lv9>b z2$Em-t&>nX%v~Tr8Mbv1WaCy)#IZ6R31qd+SXvdA;UT#_v~3Ym-R<~d-dO|9AJeRZ zBNT=TBBPv~5Kw=*J&2a_$umeT;WLjtFHn~FN=D0);;XCe|MMiv@O~c36D5QI+%k>W zM?HJ!AoX+4F!rV7C@<7hI*af}iuA5V@@&W!ayfU}N~1O!lF-B9iLnBe+NJ19gK-!U z`Vcb-o&o#+ySbJk;=4$?M$V-GiGAUAXid)tMqaPm(P;ty6zP155=aP$I@#raaM@bx z<)k$dJy|1YmCpC0bAZsIJi1gt&|>mjzGiJFjlMLAD>d5Gx3{b8HALnne{yTsdrTf3 zmc?;~b`1KUG={2jO6yEB(Sl$Gn}VJNBvBB0t5Mz1%DU-u%z-T1XVJnCB`9!HMIvaM#D}6P}@$@a7&XvNv2TTMpQTU zN(NU`ks`|rU9c{g-lSzTLq81Z`e3F*1!fj_Es%rR1`5|9Y4mhPMdHM+^bH(Y3t$tR z2y@~bSqU`TQz`{u=)<*D2}Mm-1>I&7D_@clQ&ir_>#X5Kga!^cdTIGednsx$QYP%6 z!jUkBA!unQ2}#vC8;GKFa>seWoulp-rE{1ulSHi+rTb+SbLJKFSQQ##Q^ctG(mu0Y)c`Y|%&mR*tZ5ceT(|w7i2`2cxfHDQ6Emx?@nM z)rP)i!Q=F8-VHSwNZTj0f=w|b9r2QZsK2DAOV?YCXf+&g28KF!{G0Mg-?A-v$V*3D#m$Zg8hgSur}&i32qv zvH@~d3Y*+%3S-%ebTrb+h{wh@0Y!E^Wc}RXontj_vKdTN0ut&%xw_B?T{7!N%RA7D z>?x6;ppQ&DCI-TFk$EI1LR&i9MKTDXGJuMb9hY1iMU5*$+g)J*RE!klZ34|?kpWL& z2f}`yNGIG5=Q|R9N9Q~0nkvjE*Wq@9-gYvwTGuI)w}Nh;%CxqAj(|OO7c5nbl+mSQ zH}IkkKmg08&4k?1xC&B&WmdIUJg2S|pOvl5oBZpY?}65Q7=Wc)Qq9pC=o?Z1u{w>K26Jj@Zi zRDLhh%x7k}dr6poW$TaMUa^z7?uE3%{Cn^F&ZwT3&0etVyx+8bbxL_duqcc_974MV z@xby&N%5_(Ox?G;o2a*vuYYgDHNBO5_dB0^hgI^`)~nZF{;ioymlZcX`6pKLlCqMQ z^d#!7gdTPR&u{kb!4PC_{J~2BdVDM50?sVZdazDX3-*Rr$CzSydtl2c5yF1-s* zJP_q|MG=H6GL?(2`JN61+OSV;F59{+UZ4)u>k}JMjI9bCM8gE24R|f#;af)@oorAH z8Zbh8h0K9QaUhvZ@*z8ZQjKT*>wa7`t8Z|yf5jZ6&!LPTXv5H3LNKga8*(0|F0l6)oNlk16|59WfW~?TxJU5Ra15cGQQ51`?7{9OU7}l z>4#&GB9e?PZHbzoA$O93BdgWSOT3b<5-V6glIW{|oB-7_xwau5s?PT_4I1Du#n4>- zYOfVIY6cGC{ODC=uOfRz$oPUP-;z~99ooQRm<9b2&~VvM7Kj^w37Q&C6WfZf>2GA* z={;S*EC_i`He#i*k&M>NX@yqwOElK1K~5#^5Q4)9Uf=B8gA(W_-92Y5cL3P$$B{N<|&*_KNd3B=& zVRV|K`WFPlMU6^3HQb7?f}24~Esb>g2L23;=pU@`h{*I$6Jgd!e~Ax)+zzl#Ix^Su zUucCHC`ND13DK>o8_Q(*cD0SJmgv*l+2{<|XxA>5HNn3ssb{cM)Qr7k}BhLPu1IQ8bQwIcDj){AG%YdbWz-n-jf)EPpR1gmLV?xBAYcr-FafAA1RyTbHZw$RD{~?v&m&8b5B@ve2kDpo zT}crIm?j?xxQ*EyxSEGmXW&&S3U3pXsfhN){_q~l(vRr{Vfdo-+mR+y>3)8OyV@v8 z0Hpq{(CTO5(RnBiT`8PClbah7kxk1(_ciC1OH6kZQ3T#XltF2M%evo>^ADyoYV{P@ zXwlTD6!jBt2}(;NM6nA!)dgPIoBeXJU)I?r_wsEOFaX0(Y zwQE@_(lJJz9D_Ey5=%|r51Er=YQ+t0AGx<@3v&+c`YoF0ID=9B9z9%%Dg!ESSG&Q8 zZCtIz;liLoAzX|X3bXO23*IzIS}Uhv`J;`$g@btqb%McO@jLU5nn02YbQ zlzXApX;z5)jyRGqSE+!x{?z1xm3WpXJ`XXnjk6__oO~`JFVV-jN_t|zA+H{E$%rP@poL%*!j0GEef45F27`4V>zNu*4+R?PbD+|z&2gBV}7l4zG(QWRjTk8u zLNnoF=>}i73DXb!dsE2D8%6+8o-+6;%4lIPfg*iN8A8@-)f7!kb@8f&cx_YXa-5)H zhqy-9!~@`do#V8~CnEu+^HY{yjhNVr@`)kVDStvbm9HqbW%*T@>e*z2{MZEpep;gr z%9IEwQc`0r*s$o!5Sm19rw74!)s)`$Fe&^nCN`LaOTNXI=1bP-)aAMk&Qt1B*4+8d ztKHp)aipganll_<0bqSK%wQ9Rsd3Kfp(K=IO26Im;GCz~tMJ1b7>R*?+E%c_WPbQ28(wNzRh zWMLwU?G&a=bcNMoRto|T>Was4)!I-&Iabiu1%cePHOGTltNDZwK@PIgj@Px>cdMSO z43eU5svtVehA6soK!G(VrJj7Uq*7Ito2aL;SZ4agf?%n{2*V2h zQcmO!wYHVJ ztQ|6|M@v=E3XliF!=lF+t5Gb|(q(2HveddAUe*dNxtoPZvP-b4u7=nw%4bvvqLMt8 z+Cmpv&T6$i65~(y8|dI0#)H+oTz~qn=n+W z@|7(ESRe#1ETkt;ge<^7x>iK?)V)UBhrnVcb{nSB*d$?X^B{_ODELQmQIY?H(8iD? zFa+{FF=Sd{?Z7T&Gp(S%J7v8xlqi&Jl9P)5b0P2f4$FaT`m`*{M<@zDhWl}ZOx+)7$o zsmlpL?oS0Cod?1ugO)U7xTEyhTJq7b*JFj`&+L#=t>REu8EgU6URJAf+ ze6bP%fz#wNAo649;+aONL5f@82S8aw)X`B-)JM>TS<4u;$!&-8>^7*0uo5X zyU{vkQ;d4Jq0x?3=XF;2+1RjFZ?41Ixmw4y#=OZJ={snCZ%RJ~$LJ^0W(fAsl0!(F zWl^CAjXv`^+gRLr-hY7Y6s$ZMUz(7N=&xlqOGatqo)=Ac#>)|4$S8sCf+rlEv~tHn zzrL5NBve{0h>y`>wSNnCG#b05r}$@1Ssag&8o0!lDYL{{ds?BV6T?km7A^~lf5pu{ zjxaGqfVT`S5>h^{I1V%?z2RRP5ExI6jW5y9g||vWJ2t*ZKj+_yaKj2;qw^S`A&SIbgA4-u>}-LT+Pl}*nKH^_Y8Otg+w zhNmAmQHxZqdW1fize<~TV*CX?6mR(%x18_FwyH1f%6};)LxzNcc)3)bc(_@kJZE*- zD>pGqDX<9TqR8}pvo#CXSLK&!mFqo3G8?^6s|%Q`!+hTXZRGmyZx7VZgd-@7FMUv( zm}ynis=Top&LL(Ya>EWOdy|umZZH6V^=tIn5139q*;yeH8-+z>wyv-szz-0Of#uaq zatD(NE*cK5jMK$ftWaoB_6D1b1p(PoTvmaiY(7?FBoI{cKDm#RlhpZ+PrTID`D$zA zXt^JSe+{I(FpPSOf-9^(%bW$(A9JcRzC$v)m9rfjF)g{K5hlfGu_ZQIYH(mK3;{W5 zmhv76O=`fgcy$J0K$Flj5c-%U2P7RVIHT3h&^GLA}b{Y>aew#D)X01z{3|`wb_aexiFb17f4&=VJ#rSE&U2chEoCGAp|gv8eup)%m4ot{sTUUdz9H)6O3Ruf;mvr$U@OQHsS7A~5=gLHhcRPc4Anq|h88f5JcD#{>n+(%V|g?5#PuPufUg+}NJKT*9d)C5+y?~|l1R43Kd4pf}P&H`1mJnEw_ zJODxdR8`bZXSOEN>7Sls>#$UXSWir4(pXJ(X-g<&mItliZ?v){^^RU=!D_ZzYi`y~ zZyDH=_ew%EO7Fzew1ovZ7Xa{>sZ&-7c&*N-55*_2b4U+1xtKXr%!gG0AgaXy>3Vd* zW)tKJ*$yyekt=gO3JlJw@=TAlAH3KI?&p6qD!hu5R~xgG$TSZI`tnk1b0eZkzEI*N zToHknJisQDOQIclz8CF?B_;3Bg5WFIw=5($4cN~-h!D3sRUZh%uMlog`VVy*o&~`- zkgWncQ`)|o-)yMQw8PazfF&gHiEU@R&PTJSQZrj{xbs|>1pqQ1OMZU z&gR&Y8BS>Z$_M-LVJ6 zzznx4{Uvylfi3CB2)ZMY2J+wwS{z?^Pa2jizb$`9VZV%!MSO4`&&PqH(9zE$DfDbz zRk^>VUFlER5?Qg|*j2TMB=)$hXT)Y@ilPE0&@ftB{;Ai;(WAjy!0CW-NQ9i2 zt6XsE7~m2md4mg6`TAC8}^s~X^!1rIm*_Z z|2XGlc8^WSvnQLi=Md=^Ir=i=j>tTXdxthbzuy)?6SW*!L0Vvz+0$&lq`U+xBTo>e z4<$zz$%L^eqMYUE(34Wy8q%vuYo=z$O6v%V_tBEBPc(%2ZNmA0(n>djSK1f^1o(0s zf!-xX*~6l&$pZmC6vCq+gjMv8HleRYJN5J?;T2=__y=u_*x71Ta-28`6;?1!e*+`P zhO(LX=N_>ddu1bQW;1kCOMh4wHvTzFvHU2K zL<{82PS+EzA7@DPV95Z0@U`6!x%FrL0NW_Z4sPyOxSWPOq7YeS9OScb81Y1<@zg;0 zHT0zfg~rdJix`c z7((YMAc7(a@nS?m9Qfs6&Q=w%vJ|;r!+D0JQxOvQ^Eu{9IQ}5h_<*^pSUrdp-d14& z-Ba^28nr#1qonG*1nOaeQDp;js1uM3rC&AFQj~((i(_lDHUg_?VI0jTjM;}90Jz(y zjWLJ~s*}Hxzl4Aw>gZSA2Rd%x4pip4IKB|@4pN8`f$DH}{e|g2rzjkTW#|Ty&IiDx zvT#E!8O;q$C2H}R!jU&&i3`K@#PDj>qoH73l8H(LA)t%pp%$PhsuBC6#W5u->OzqJ z=>I#B`TCJc`d3Gj)P}fE8Zp_tlldq15Hll6x9NK&f0C6L0)FMybhpS;-4Ider;^_C z3V^b07=*eV|1k(g9O+O^f4tlDy>@F&e}XBkr|Em?BP%3o`r|a6Fs*V4>S=omP5~jo z0mRQ|k<|G4ktZ9fiFL!!w*#7S99_)Z*!m$j^gRb<+LIl5D3-oM1K=~rk1!)-%qdTC z6|dflp6Ed37daj|;{C74VrS!x0$3H>ZcguU+7Qc3Q{ciQC*S~OHgOEq0#F0&{Zuiv z^HNSN%0juvuwX6xeD;&5vX2U+KEo=$(Qd!Sg#J`dc9C|(dqPS=q5%YM zM$m2+1iLVVr8|ZpE(a>1w`_@508%kdBKPPPg185)BG#k`Xop@69*?xjwO~-HZ9BCQ zQ&M!mFP6Qb^s|ZW0ms42unj?N1DUk9n_$bofr~;1Sv!DG13?yeOPW$@=BRBd-%t~I zMT|q@i}skS4+KbRi@=bD?`Y76Ks405ubgkNaAVc|169JdcVCF3D0+yErCR(9=w**{ zGs60@2Orj*eseg-G?gXtU~RDUlm{lqafo$#^DEBKitWs`*%52u_ZjC~EnjOKR5=B% zXTmdDoEl-6ybUDJcfi0UdN5ny@(^Q+)9!lX1FeV#+0J=04$J@!;*%=mVAjf#p_7AD zFToNv3uA51pivM2nOWbe$%YDdqypJmYPQl>4vhFRVgbK1Bxew?4+aD)s)-fV1V&L; zrY5Ril!1VQaajV9+B--;q1t9{telTwX$_0 z!5%}UcE z<=IVY*hUbsnDxl_^fiSd0`DY8(}*326eH$G55tL&o-F~O+8r`=4hUA4i0C{j^7@7gd5)KeBopGj#z^9w4Yr^g}v+-0BqYd-Z-@F2bA&gFc)hrl>c!DG= zu?|dim@$81UFhW_5IP9n!##99faF!QSGNgpm9SRIbsky*im%F&H#h^q{3UQVS`SgB zTWexlw%CZlEBS03q34c2xKXf7H;z!GK+K3pt<$DCc5$=4?bK2Ilf}{wMyx8F5k8>M zK?FasuO5Aj^_I1g;p|{UtPTirX6HmX(SoEv&IM9THLmB38NJA)^!b$^Wc!ICt1x=_fMqIOT|`L_e8LVi!s?5TBF+EqgB6d!=IIx8 z(vKXR9<@tnF1{MDQOJsRfG^?_6{Lt7c7meb9OrL{{b7|H6CEdnkqHKv6TC75xg`rG0Ht=1`O#k zxnkF&s8tIBn~)?l;DSo5$yLg1;@OSiDuj3o$j57~VUd+}8-}BXp)?*>hH*eEL#w$~ z2J@Vjp;2sAhSe8Zeb1RzzDdAYu0q&ht!b*h1oipqt-_&3!aU~Wta<`mQqD{)B+|f2 z{xzFdsJ%R=)du5yp-{kQP>1nRs&pGiw{d7pIUEeqJ8KGd-^gEz4J`_TAka#V2D#O2 zvJlEQd6yATim_6h#&N^0zA3F7X{2P38as|y3VS%1F1RJzY@1PelQHU&LNh7AQha^L z=+7DE{#407Pfsuxxd)5&Vub>5suy#yIB+3_dcmj^jS>Rc(HUxs7=m5!@+2{;9qUQy zH3RfoLW~kf_Tz$=Ckcoqs{{`SQ?=}C{U(87BTLbXv(O;?YBj6ay+Wtvwpq)u?#?Dm zGcTI$&@wxWT8z?yU@;TrxKC;+{JNa=G4Wt=1hEFNeMGjwvbP{noaUpl;EVJ;&?mjQ ze6^HUG8g-Hn|MuY2E-GRfHT_8L?echL@iaVkJt2tgF5(V(N-0=J7?(aIPb?1o*^ndj3}&)J z)+f@o%v`i`3!#VE49{HG69xf$qUFM4r~p6WO8#n54YaBCes@;G`rU3ANWFKWd3BHr z>FUb%PJdQWi4lo*jr2vGFVxHQMWX;5Tkop4kGV-*<{vb4b?T-*XWR6 zQw76r9CUOlS;IkgK!?Rg2)XJyhQmY{<_kJ_Y(JuTIA}ua9((eo+ z;lONYGqR2ZgLl+GEtMsp4mu<%K0$}(8ZN#LhtY9rKwCs%U$xZ$ky>8~t*Th4+F*&y zz+j3czS{l!%f^NU4BLHbPxWlKcTjH^|4ZqkGvk1pSKGLs5WLIBpA$&HJgYI?Gy;mN zpLW!^jBwo1#{Rs9e<8oC87C@$TUu9*eX2Ym0u)YB%wbmaxFYQ{XxWc!RA5cpCk&Q+ zv;I|Bx2oMM<_th|x8mMNe$ zF-$d@&f%ul+;XT43k4d;Rv#<`{1n!J=PIC!=?*~V7kW?vkg?2o zGv5F>znpQv6V@uKR6uYl@Sf(J5TLlo06t1)fhGS9bC3w3jQKk%JIzD4_&^$yc z%|n_?9T>0#nyfBgD(TGnOyfapHN+HR_cRpr)2q;U1wz|a^c*8Wk*kWqc*c&^Cg(#y z$xF~6FvF`3y|7V&3992Z9KJ786Vfz?qo-kp+1k4UK-ee>hc_fQ6TJa#U54y0NvRM5 zJ2-bSK&{BkDa5{rTTbxF`qTFb>1o$G#fTI%i495N>0`x#8EE_tyNl?aopIEvGx8c$ zXaX@$y;PEN_IDjcYh`4p-;kxHvAH$J0SfIORAV&9MjG%83qv7h;E za7NDkTO^!)qbRv_9@D*#~`YM)>)zU zuavgL)>pK6P7mSk#xTy6Ki)}xzY<}WuRxZCT-zzUL?4ccme>ldY-&33Jl!`UmKS$I zhud5md&uxu>Z&-1j90XQ!b){@9#4!Z0Y2oelWEMjJ0bWZN+tFj>K((1W=3yl1aheJ zQr;JODs3TQ{>>fiB$u8lO-S*5DAx4Ukt}jOHF7-_%7F(;>tq3eKIvRQo1jK02v)|U z*_nZj#qx)1$mnjZl#{*$M+nj6N9ItFjU7ATId%*H?*Wp4cY*h($puiIXC@9!P@zTo z?`W(v291?p*H~%RA32usYMy{zt_?iOuXqS*a>6`j(3kaGas$6)av-zZo<5z=D=o7O$4rhehRw zg`E%c?ZZ6#5J>Dh4n8M$k6tYMLV`nkcm>9g%-D^(E4|U+fk>7=`X1PEla8yq)JW)> zAAWHsGca@w+RIA^BE>J6vk2dF5@`sq3G%2Eoe9l*VGc{XioD4OD+dD?yEvon{!hAG z?EmBo`#&eotR{e)=thwyN);uLp%W|&u_}9utUbBme5Y2@XkA$OHEkNn<@+A^;<=)6G6X?)2!hTK@TC}ngZk}| z8*P-p?hgN?t=9NY`0xT-{rnIIRAIE9KdfFrtHoR%w0z7jjdBqEbV z;A=H@NzHLFW)dR#)Pgz+ak|Ca*6}6xmMsWq>NT?6Cb&u?{PLJt1*w5@k zlg_he+4P$EUMnrPC08J@n@wemoj@{QxpfG8)UtCIEVm>?wMy$Z6q}vH7688Mp4ndp z0YVvKqrp2hCL0zbwMAy8vKd_UuD2Oz%Q@yIHRCD`!?2!T|qglWrYr3JZv6KrN0-0|;A-WQiiGx2<+m$i@`syMqXPFi)nrcC^%BCW>3=XQB63bU& zVWcSYXkn?EoMat$wOt?pNwqk`ot)l~bnPy+2*P?->>`y7Y+kaAJqY+AQiS|SJDT-8 zf>RG2w(7m z43Oqn>fzFm8mF7)Y5#TR+dsYO`sbGBWL5zM%JdbN{``XUXE%@V9X4jtpSLDf`V%(2 zo8Yy4cpU+4bs@doJmSwqdNnC3(?_1(FQm7dNBG_?KSzr*Nl01g54R zA^qYu!7GE5RR}J_tSoWSx*-=oLpcaq>SR#CE1Ik$!R+?Hox09#2X~&D5lO`CD#@K$ zvv>pn1?w#NEa8mDpu2YMzB_q?)voiVeqWIo4_xdDO0KoEcr#&?S+vxpLMB-tur08Z zP}M88is?deUa=YeJDHM8xIOTF54e8>K;0njfs7$#F z5av%}Y%5ZO&XzjAOCPY974N|he{UI{?qZLX+VjjFcCcf%s#{vWL{DQ;-RfDUYb*j8KzX51PEkQM$h(e!X$|BPWPFo z*~)`YM}|GonWCX_dW+UJEiyu%di?(8{z`Hs?3bz-vj32N{iSU|U;BllrM#mDlp`k2 z9QXJwKUEWpy+yhctB99cN^C#rT`q0%CBrz6Q#wW33Y>V5bwaExi_F(bP@rqJI}c;E z8S<#lgMu(Ce8HQ=^nze(2O-nMW8w?|(2C>WrbBZKzXf-w#8sr7-u!4Lfv{=Nv zmG?98jqW;d^lIx2 z2vPJJ3fG!E6mJ{Tt6)2JPBW=`;9>1UF=rMz7^UACz=~U={&t@-BlXnt_4o=gap3{S z=&SDpl4P)eW>eF__&1(jtWB^I97s=i5~0B$;f@kO=n0<1=R;Ph;e>1@qF%>J^P zz{T1mCtzY=!ek1lxXfdljoj_}GR-xr3a^u|9BH$!;3?CtAlmU?X&NOJn-k2DMdOtI z?UCb=Ar^Pkpx8jjT#Xr9>mN+`)>H_D$tS&|kG(D=t+xPkt6`@z3t^ht=dAq)T+XMB zT!00@Qda~aj^AO0+wIz_#3pd{crBhRoC7Y3md;5ZgY+Bq^j(TaHo88)lCc$5-?ca7 z9dXC5T#t_}uwcrfy*h%vw~b7bw6PTdI}PU~pmK76lG8RQ2c;C4qkGW6T>F%bFT$K2 zAZzIPlK=HjfKBfQn2r}mCK;JM%BkY6iXA~OGFx*=VaFOA{j8*+SN(xy)X#Ye3IX)7(wO%1h9=z4bM>vjPU|*6D(j6DO}lx+ETRuYy#QD- zeuHxez>NJPNxmG3Vimg=VK4Q);S4c+zapH6Di1pzGvW9+A%M(~&T@pH@N@;?SnnZ{ z^{5Tul5U-6i>{w%O`$>w2U^f*T7?r^YvhNGfZ-IHa+MSdiYh|3VT76pYDS9Bt$B)( z49>7Mnj(mCOg!Seu@+cqnr-Ay9f%Xjo4$z4OKXC0qa<0zVLQS`I;)Lb0y+0sRdD|& zsIzn@2X&awSd*uUQO>Y2v}zJb8Pz1&cT{u)KDT=JC^3V?x%rvRBCAhUkAkqam%hO^ zK(LiV$H@)f1ObkZ_Nhd!PuRrvc%|LHy**2_>S)D0vHugE*uinp{`mhu)*$KLSZ-P( zl-3d2(%Sn6t03aHkRSp`#skaEo*UWju$4*DhcG|z$r#m8-DP)FMYLJXW~Hp((TNQe zrtN5HMs2t*DB_!LD4@*EqS|2tc?9%|JZ z^L`8>9vOlGZ}pH@V(TJWHBX;qYKqKz6w_1yH<70+i6Uq&!qC>K#rBHz)>50SmX<{$ zqf~O^x-@*UCZr)auZAF`?{xHRmU^jPm`)4mfKhKR!IG$yvYlXokU+?LCtCL8>x~e` z4nklq%ldUtVZjabflXEES1H<=6y4XH`ada70a+zqjUtTJ-k98&mLErtkOfL> zW*e(!jnaHAq2i#4jScG^`8%7nwT&oFc8qO;Lu9AT>0lGRQ_+a&wd7P&!H`x0ng6m- zNzuUaY^}}A_XmEc{LzFTB;m|wn0HhoG*`93EfQ)dYM7~zrn8s|ski*+3n8&@@r;rUp|(pBH1(!- zWmyn-NUJ|NJqvGYS9_l2STE)96Wz1bR@+FM<0W6hNxwu?BTqh6w_=SDG7E3L2^0i9 zv+AGB`H-sM-|mzDB)MC#$nW{p$r`{Q-(fch)%oq8+lN!{ZVf@cMfZ35{dV2|mEZ5y z{at>)P4_$eeuwVw_WOHu|1rPcrTd+Jf1mE}@%ufx|G3{jr29|!{lmKdq~FuBOpQsB zo6f`yG+H|Kp9YOUfU5@wf<|9|Ev%xI5ofJQ;7EpykMmep0QI@U8AK)|?l@5qfFbnS zZa>3kw+b-A*!n>RS$Jg2#>@ysW7a_kraYEG2vO?>g9X8dxh)MLc#6yEBoAz94lKyf zQh&aaRh$AR!0rg-ashfQM0)pyw+x#8=*KC^=t>Q!fCaLUvPs0siSm1XQZK$X6w}3c zj=t)6hpAL>9;W$sb_klmRGDsv=N?qYm`hb zsQ9WwBIe{xC`iH2+n5AKQZZJrm%A4{p@D~nmX%Bao-lv{cKEl#Ho2)g!^&rGk5>Hl=b4oHn@0bjt5&H>mNWA@=6;HJ>i z_7d+3g;S{c%bjfBnWWYdxI+N91g+D;bJE512Yw=K%l0{&!+>^8%NMLBK{?0ef-Dao z+V^b2&h;Gqp3XS;V*K>S`X7LLxvt(j)(-Vl1k1<{qw+K8&(-W}T{1f0bH51D6=8H1yW$oX5dp#%K%t51MT#^}4NH;B>e|T6|RzKB1_&Cff#-V7( z?;IUKFdOXr&@5>LY@DI6jO?R8&K4>dX3S$+nhsu+v{NymphxnULMVvxzt~pKT^E@s zGYLJLv}Zc?_72JP>;4q@i1Y427?Bxerq7EFO@CG#MdGk!K0w^dH5?y#$^J)y&31F* zWy$sww4S?h0Asb{!E0I3>ux8rb02Ke5KEuF2`G|6#Y*!0V1{p|k=|pmL@L@$^Ws7E z{*O$~4JAV3**iZ#(*@0KXPXJRhMBlUnqeRPhb?YWdJY}2jg*m|iJFOH7mV%8pWGeAHGk(jVa;~M0g`#$E7b6?kTI%5w(nLvTTzk5p zM{^M9EBHFNq?xgQvJ3hOTh)p%9lbbNfS!;=s5szXr`NyF9zXQq@rX9A#{~(;)0|Qc zAKng$e?8;BaW^}@UobwhmOcR=QTSl~hYugu_FgD_{&loRSD58X@E+R8K=m(y%SE~eR7)2zIB?*DR3v@rJOQf{#~H@0b(xM4oc#y-um zne|w(00aQzM{Lh(=6hC!H{+`yAahR@-`^YOGrCob$OvdvWCvG)hfh%jU8N%L>Lk4| zVWHEDkN-T%2fI}ef4r!Ih4hKND1-$HM_AzZaD;_;O4Jm9F+v*&^_a}!{6kx%p95V! z^-egddY<+UA4@i1%$cKX04QfHQ?@dM2qII(hZGj#d6g6#K^Lg}d z=f|XeP2Rub)V~v_?B62#x9GY1clA%JD4&zm07PZH6rK9lUOJ7Ic7+bt{|XZeyy1Ct z^8*ZH-(-zo7}*&vnQy9LL|~Q7_gurchha29WfDaB-PG`z7rlm^_k_=5s6bSs8zUi` zo?*Kdg9sb3LPzq5`wZMlMq;d(ipFQWPVBjjO;tw4@dK_=E+;h1-6h@DO>HCQDis>G zOi8z6X7ZQ>>vT4fi1#4mu9n1WhMz8S;{baQ^%vr1oZn0}{gdDo7VJs*!}uz?{Na#Q ze0lp+97rk`Gx#wvY}O11%%NygB_`MBv>U8s(GZlCtj=ujFrH*(;e~>m^3miD0+RyA z&w%!m-JN-1I!t?t)>LiqUF|yb;NOH2Fe%eMB+Kc+V;3^bMHdBsf@m=n%K|ATk;A4! zHQsk{tc4pf_K}5XiNwiD5!9mRj&ATNLShOLLfk0!vxpqh>rzjzx$}pfsFz#nV^v=NT z3AwwnsxTK976U0CzUcgXChiY^vxX)9uzO)MkeX^o7s;hSZ7nAu;xuVS(SnB4tnD)` zlqdFEnBHI$ll9ZkAKj^(g=)r#Jb>w;8PQ*2LhEIWC0RbN!oJ5!$z-%{Vwi$Vbti)H zlUsKpSOnrT5vYsS`-7I4t*btpYni$1@wDe%%J1!O2jiItP8>fG^aRv7+}2DV{&#~t zHuQ8!(mQ;icg1@uPHyZ((`YfHmCGRx7+(g@CNLd|709d{>hgW<_x&^AE{zWV1wrt-8^7thjazUTAWZq#i2kE_2u(&XH zqmJab3F^@_8jb!9J$N(m-Nm4e@Bn8-S&-?piAa$`@jm1xsNfbw>b9RQz= zgILxJulG3yQc6fiOzKsi`7pWa&IbZiX-@;fL=Qc|5SFf1gtP9Lo8M3g*NOU6Sdw{U zjE%w=J!5P_9+)PN6TA^7j=OJCn4G70_R?+Tc~tf;%tM6n?I0PxaW7uazWk7EQ9YGK zFJfg=IUbnDiF2yt{T1Kg**&EA%`JsXX7$7ZhAj*qi`X#;1+&49|Jh>4!6NH@=jM}9 zn;k<^x3YL)h}0uQ;7$ix6$U4sg274<1`*`I7Eh4}?W+nV{?@bqN2mSe_rAu=D_N6+PeZmfwV>BbXM1rleY;{lzi!QTb(%eaq^PtqT_72$l>+C zj7wEsdY>VfKR$)P6lJ7IhH?vH`n^bD%IPKrwTRhXeDmz-mpR|Sc1x>bPr`OQb{Af2 zdqhtR6)spM3+9T69V$kzc8#bh@|A=`QX7@h5Zh*bcE|IQkPmirsf{($EujYGj|MTP z02v1}o3Ap*fQVA5gO8R?BLEgek+jehx%f|Gd zw~cjc^RXYtmIZ21+w!qrAQp5!uTJ*Vi6ffhM(S8=zhG~16(&#eCs6LkW}E-*JFovz zOVlm{tsqR;*;?sxkcz{ns`9PDiXsGe3>u;`m-+y-9O~39`4xE+`V8P3u-tiUP zVsy#B@y_@D(27mH*q?pu)~kxVKUd!611j<1tFFI_Xy-HYnV#zBO68v(+w`uR`81Rd zd*wghal>sz0pz-wRN6`Q*p2t=R=dd_c=s1Q!%?2$tG9fy%<#1GE+5cNvoG9y$8A>Z zOFY%rl*&KR`mgdS&F8RbG>@8tL~Lpfa9UoondEhR`tnAzKgs*qah2<|gnUr3pk@$# zJ0D`-Nqz(qZ9a<$Fh5c(Znk*C(Fw|0%(<2yJsFP3EZMG`2AqZ9aFA{p6sd!8j}orf z97#2!u~+n~?^c*nGHCbh@TF_m7Ajs@ye2v!FWQYYnWEUUZy(;I7yXfX$9S( z*BuBNuO4g!VO-~5gq-8lW_t|nR#S+%Z8LhNEsO zFB?L5j3Q(#UucLlHWgT;Pj+U}&KqoC@QNWMo3+x_hN6`yrfP|sPeh?=C45SU^AMLy zweHMnJ8y70(^+Y1f7Y0!FgRe)(^(97wdwS&U8f#W2G0qFomsuNA&7sIHzW}U)_A~} z76u?!Aa2}!(IdU+Tc}3E4b*o^L=w}WYZrvF2wLD&@6bX-Cf{-D_SK>Gt$=$Rxrfb7 zlxT{Oer->3J6f$%O4yhI+JLNCwE8TV6~b6vN#7BXfwv%lQb~%WCg2OkrP_hQqX#xp zaH*1`sBF0G)_yma3@6Efm{#C+2SFviR84!eHJHLky(cbq*6&7ADa~LtYERoMe zP&eA?cY?8a92|mS@g4wy&VRwuLNFFiUeUg%?t|0{>ZCc8)XAdO^;zH_u0T;ZNh6S+ z3o?~>%;aNF$iEpvf`M%~V;Uy01o}9Ak}&j@{OEI7q0-V6Cwu(pNk4Tsrmm}t`?As1 z!DGVSf5EtayG`GKWNXHkWOem5IS#39y4hm`V#4fG|v$+lYf?$X}@#0uX#ao>HbLX^{W>;HBmYdd zyd7Yq(BmGBF9kQz(?Y5!-Gzl=!gTDoRVHQ1w7v%UK2C-Jq->WnSX`{`GUk|De*^0$oEKi2;SUHf9Ez87$q$&}_a3m_r@-ht7Rjdu+#;T%zSwjMvmMo$uxi2Va zDbYe0FFhfu>q2R2QO4!!@BRnrbwToY6xG&8CV2?ZQLck|#25(n6vIKFI1%s4wV*6* z(Jpz;jI&4pRfRW%+CVa1aIywKViwMLU)i(-g;9awcoXoTlT66od|gotM;}6V0vL2>i~gQh!E3xjZ^h< zP6@DPSn^7n#7x9zR*;#FZo=qNZkg=~Nv}X|9bJ~TbeTUes;B&k= z?zA^$M5kj^?em*79?CENp8grZs=)B%`iQNFKGotC29zIcVH&bOZKZaoYG*E zGYs+)QH)jd%Z$V1RUBJ~ng`R?reHOS27v*zajsG9uz8m;q830AIa*`OQ8Y%Xj36SC z2S(zm={ZiH2`vi@S%-tdo9%#(hr|;@odUX%C4w4Xz@T|>A3Kd+CyC%=6%mZO#c>u3 zf|MzcW*}@Ss&#Wu*5p*zx1AdP@tT&lgQsIUW?ac7JF%LX&*fM}2EAl3__2fqxOgjY@y;rtgrUIYAI&Lb)kRpb@kyjo zdRzl+cG`)8KKcxPO9-f}j$1;yVx#KCO&pUjeYB=ANfL@gz#=kBnDpCylS9RmOE4EY zrrMro%~|EfPaQW5`!Hpk$qLBd{R&3KyD2t_(eGj>EF{DVI)@dyU51l}hs5a2foW)T{1a<&}>v-MdgeoIgAwVot$qlo-N0h39&~@Q> z9U(lw;cE~6ef44~V3%g$TZ%^*hQEIc#l}hxnYl?q1!idBF_1&~DDz7@$|{}weCiZE z;Zsx=U0&64_*6>3_TpR}aQf7>MsI2%wL3SwzF^iJavV#ViPdvI%_8 zu^KbLjGUc=%6Q}hmy)$?Gl9U=XX+=3pagAD*P5*Mf49+j&&G1YD_+uN-PJAu;t&W^ zBjj5MnkXUM8KY4iBPN$ugj=ebdbM1@Xs(fjZefP_(9{qf!Ph`T7~t10HoymDRKSt( z2H%$S*A(yaG&M=Tp4MN#UL{>XTd-iFe7MWE`C)U#RYY}+WGu2{jIb$LN^^%1U zj>BE`ypO zQ&eI2AZfDHfX;ZL6VLJ-{4G3F0Sq zd>slz{=|bkq~A9XAE7b z=Z0c&6}aTF(XJKIVJRHxO`||h4c?a+yn$lpjUB7zgE5z-7>zQW)me&WO5!**TrTKg z6|Ng2Yg<23e$PQVg(GZGP|w1RxTj)G(Ekvq03Q_%Zsws5+p29Jq(F0c5)=;RxJWk)x_ zia0eR9;{t=uNWS+so;>|ZCEdz2q9OOCW&waOT0qYyc*70s z6kBI>mMQy%^5g%EuJb=!JvbOuDsjdBg_TO+l+9Vh3^Cw)Os?)0-ynnuq{fl|Y3#1M zF1r|I$a&YtpZL-Zm+O(Q(OZ~(BSjAb3SyIMoR>Y0iz&Di#7Lxkm-uaCUl#>27T8gQ z3`{sILP)EiQqq-p13whrz_1K&*!IbQx@e?SCMe~5|4tCnv6wa@cnPP!K+3jtqE@8$ zp(HmxvKGhm5}hd(O5?_)Z&pC6G-Ckxwo2v-wJKD1kad~jDFW5ptENuLXp9lsN!fxO ze{U^7_p}z^HLn(E-Il&9N|jH|feDd15`&QwyDIt13MuZqOaW$b0xUzoiU&+w5~+|g z=FAYOLd$S8Wz2b}6N1fB!#7$g4s67QZAfAp<-rh*XL(xCbhy(Apd=2XzQ}UX?aK!5 zOGRxiLK%D0Ak*SpZb`c4!kP%6TENCm0fg~5$}2j{qk$1&O=}=t3jVT7LW@O=yk-R* zRr|@;KtMEkZM(_qtWU=@H+w!rlYg*M)?&s{Q8lu4i=sI?;|MLE4yk|X1L7f`syKpLtGVa_ zc2xFCQ-8#)B%K<}m9JTxTdMNmK12r=f3XFFx*q7n7VPvDa(ZD$SWJEEmV7% zI&x8E3h*k>CJ+xQTUw3`Q3+S5nF>3)V>Z;G)shl-Ot1yFOLL;04X~K;da$!E()1X*SXxTYQ!%1$>ATmr>{S)blldA1-S7BTF)X~g=vRKPbBD~PDfT2p{_+b|@ zJv2F(p5sT9kABx?S6=saNt~70S1SpV&N#b##$laH*sGZiUPSY)bX79xEa9A0(WlV*+!gnU8{-w$7LYvYiZp=hycO^L&+r^(9W{LFBLhxiMgJ4 z1B&6xy7gK7pk$GW`9SJbU(QS}c{f_Bs9uafOXQ6G5R_8G`>+kv-1hMV z0^1qwDoOrFeG=)6U2)WfpE)7(1l>1|XKNs=;}Nw?h*)P0MA5#~*msOi#YBec$Mg>R zyP7>iDs#Vsk65xI!~4zLh-ohWg3dewt?taK{{pp^VXP}E;5ivH55D_ISFJFS7flDX&8dAKo=jyM%m-XL7$Kow9B!VZa^v~6_=AlutEB@s(;dN^1;Yqy9i|)QMCx* z)wNydoOt!Q6qGJDpaVVHG$J4h#T=GC^G7+#h#>1CP&K)s=Js9J*#%Ug6Sx6n zij&SXNSfKX_?*q4V#i}06{EG$k%TU}dqa6TkW9n6k{mX{uLJ`~r3*&Ta~Io*#N3^~ z*bmP=Cc1EObfJH}XmNCr-(9jey2S4;TO3{HccZA1qY$ae*}(k!%2vlG>#A@{I7!<` zRdlu6!EUF$*#~#0+sSUnyTC92Nen`I*6`$oek5z^#fSuY^`?Jw zO!C>#>}}CfHL4V>%x-28!vl*HZeN4JIIOTZozF%fN`FHa#iC(}GGj0^U;h$ zC-o82F;%dd%IE*JznJdwe>wJqx?{m5BZj_e^=6Z}C+)zW_IA;#O{~Vq*$5xFji)fQ>6W#q) zgwb!?9WLpG97C~-?5HOYfpj5hia_u-B7Bzm!o^nSP1F_-*83r$ls=7stGZ_YRY!!5 z_{({e#yg!thjC_A9{ni-=BkTTcpJdZClw9TBVT>Fb3QybJ@5xUw8s@_%(-(=Ntz^Q zb*#i%h{K%$i%$Vnbzi9j0;44=PMt)g641zey%09g6GqfzQ#I_<%F6DVizo(OGkL@= zQ?bmITl*_>Q1tSa>>o(K={A#F<9xSP=0J($_~^chXvP23<3%!ND1D4{yD=gQs-31Q zO}%rKt&iz)wx4+vqYYXnTlywBz6F9Whd>!;oDYY`Eu&pG6XdAY!dMn(hTj0;Xi)GF zsEHD;)7nCik4F0wlru38MEXKr9HEVES+lXRV1J;EoE(z>`1XA=m#uZ&; z`cd8=)xFh0%|+^$cWcD9x$Q>Ly>m$eu zc#MC*R6gO$%?<_})%o(F;z0)Kya1exBb}0a?q7_aL^8f%-xsNX^rp3|o)m6lw2|-n z$C;cm`Fp6_+|J=IzhnI9)7Zhe#qWN{MdNTT6W5f`l>fbIWt~MgxYmlthJ`CC2+uQ? z0dqw~rYRA=n@R|;nIB12W@#aO%sY#% zHnwP$wRKa;1VJ$p{HEfTL9$^DI}c7>LIqoo;V1qTQl@n+qz zX<|&*M!Ra)X1g|~WxNY2OKnK7m8mN=&h4$s|4y0>d9x}n@NHJdiWF~T^-6wQofN!? z-6O2=28yV^!98Uq93UfT(p%)B0-}swW`3D1Z^lj&xub#nHte@)zp4EW+wW}qojax; z(dg;-4#$H|+h0KMv|!Yd&7ilFq02+2Qe|*JdWYr1du|t^fBG{NKFL?W1DY%ncFOa} zA*Q?8oJH&JQUjRYal|iDBgbi<7Vz&)=DOv#Ecj?zw0h0EtK3HMCeufha;~RD3e}wD zP3cQY7qG1O>JHnljOHDbI>XhA6>@_@6j9kLqmfP~J zaRX$=Zgm#$dY|or+^r{&x&!|7Uc48B^uQbw-2e5r*;usq><}bY;Dld;ton69d)b^&`Mx`ncCmn8ob zcRUcy8`Re_;Gf9t>8DJcFy=2IM`wWgDz#`J4h%9{hDpDEELzXgqqasZ-8sGeSmi?6 zeFmjV3@6=sY^x^Sm)9~<=BAy>Qp$@)TZ#mZqU%u?M)?<>GhnNY>)Np|f5?Um+_M;! zLhCajstgOK%1gK-%`W(@TAhgbda_S^Edn~FLp4~gTFn}0(RjY{UtXAdnEtdcQZoj| zwsm+;no4MvO;1_aKI8}j{u`G+CWfzIgP?V>3D9Ogk6e$o{_h)>cWK7q0p4Y~B5187 zh|Mhl5=V0|?Sw%BG|2YYi8J>0bgEYtt2p;aud#2;-k(=8ChJkNz{?lw9;i%f& z+#c+F2=e2!B4qmFl6LL%wTeSYNf9aTIW4^bUtddmLGk7SPUiF%X0kZq-mH1=mcmZB z_mtZ{(Xu0Uz2XZpujc}e?@Y3p95vo74jw!;uv&rrdGOOmh@tgftBnOT+Q>@%I+}RBv zpAfv6B68%1^HC7N7BvL|c#no)TyZSKPAE-K@Epg&dJ07yYn?&!Xj|_6@1@R6ceeK;cU2*uz!h`k;}?d z%&cry=WDVg+7<%JBug)Vjm!Y%5ZSfuA*#LSv^SidaWlH}v^Q#dzglu)7T?$!iWzEe zSCkEHZd;u_jl=cbr&*AY`g%K+TtNBM^LmC>;IsO2bZVR>|Is` zjpv?~kGm8Nz_~Bx53|#1YQUTC8~p{Opoq(vGv`yVXY`cUYm9SFnxdVeyQhrq zax-gTAe!*r03*`;I3^s35Msi@d;v|7zF<3-WwfCg?1RzZy;AKsYU^j)5wqwkqdh#} zOvrOQwh6@8C0OzPF-!Vzn0YdW-@o4{8WpqO6)ujqjK?Crz(BE-h^zinBd)EF-xgj0 zSKS+|R(w|wPU^mXaDCM>5x`|(rGX`hi|^jyCT;hhtmuSU-^q$FI$p5I`f2XT(Gos4 zwzgq8^Oexvjp&^^qc}Q?px=f&MVu$+W3HyaiM zjX_NVt?`D#R~T<8cg!%-=8DJ%OU3H-r`+jaEnu5OrHU6EEC2X;nU7){C&qJ0!7wfH zGmslA4o1b``j>{==s8QY;?kO#AuV6h1=&^ zW7T{$){BjVxSEW5iWRCEeiX&hS8b(+L6+^EtO^lR(jlfu754VSX$h~$@vosahv;}x z67_Uj#I5fI8{aOTW-H!|ro37nd$0SYtxoKGW%AB9tn(1p6sVE=zC4v5kt} zHRLUQAfPmN@rB&rHRJH?I2RR{AYme?bw2t!4|v_KatnTtRWpSnB4jEg{{Pu~A1J%4 zD$n=#=iXbl?(bIBuTqtyNQLmb*9eIuCbS4Kq)nX=AP6e22WM$F+PoRpdcLZ(Ljp3+ zTl^^`YHU#vq6Qn=h-lCbZ4^}0&_s=xwn1ZyEj==098sgP=(t+D5z@{3eD^uOTem8e z0QNXjAtfbHThr!tI^s~l)Z?nsUcigN4Qi^XT=xmqGd+Atn!z|=;syIfwPlX ztq?pYG#4R3D(9kSNBOT$t>VA#((^k$?=XB?LKrSJu!!~l0uFljiyP7ZMFfZz6q00r zQRURU_?kKs9U;%y9NvrP`(^CK?Gyo}jX9K(-%98cyp1(2Vc?AVaODJ>kbJLD7kC%e zTcBT;1j&Tm+WU=F+`nqm(k36CCxzY6FgiyJv`6sSazs@#h9guWq1R*MjxYFrT1S>? zu@oV&j!sMKfW0X{JoFVa0%8Q!wv>}VXPY?KJ2<-B&F@-uWQ^flWaj>OdfIG;xdf$7MCXH zUUSJ?1K=4eG>!H3>#YUZ7UtT>JE(e_UgBe_8ECHwL&OrU`1PWH8xC0m_KI#rQ>z!5 zUN!BN@Px2sBnVGZr3_%`M13~{V96X+$>c%{C|tCUl!~8gGp6t@82byrA1FN7&j@3d zT^Yw$(~XRdh5o{v$?Jb8C54~dv)7t#ifBjBqGRc;aNv%fj8cP|9}-E$hHN_@V{h{# z4HRF*Y)q|WpGepsXexpCJTiWO^>fE4u=-^&&Zw;2EI{3jXHV0aiqT+KEC zI&8YHoSgWiHXQCx#+VwVhRXwgOK_+XuN0TD9w9gYI)!DP!4cdO2L)7pEOnMW*9 zi*yML5@3MXx=n5*tvS@c^oERC!Q(P-QppoY7t^Y{eSh{H?*66WEji&5f4!5|FKD~SQ>JZMEeq3tnwj21lkNnZ0701=sb?i-*|xmgqIxjJ z0T!{G=6{_aj-Y*R-q>nTnO;d4y|JBb^jqEZt!QjCw@H@bQNcxX`tc?lwWppxo`!9_ zJh6!F=~l>RA=`SmwmhQamPgEa2pq!=8j`K7xLPYY`fB<6R&v#&Hy^Kwt464;xtNA=Nztw?|!52#3k4}^kYn>sSaHi}O` zdw_4=cF;*OroVK-)tjU{!5ZvN&da_lK&8Y}(J*(F1Y;NaN+iEqdRU2?(N@~OYF6?W9HF%PA>6$$grL60->;~PRGXj?R&yi9$ zET^@h2h>x7LRx6W&$yDhgCWNb5_$>NiC%Da6kU7vwj<2GU@g8geC2AGm8{JX)0JVHm?gVOesj0xAtrk;t2|4YA5F9>bIwY)EqX+$e{ETlSJ+ z$;90=VF}3xLI2kHku9J@RIG(QbGLX=>lR(i|8zzWu$7EZp*bnQ9!_Y&zVhKFJ)oq2;d);37 zh34O_LJydYWWB^Ai+}lDlBu8xr!4nyI-Wl@icS&d_nMC9UmxK0gIKJr=M1I!TYB@o z32yfU$AG7Wqdu0g=wVia4$^&=XBZ41{j{iO&9Mjl@iDDk;YVZIv3SJzrtGC@)NZaj zW9v>giQ7Q(CtnsbGgdH)bVG32pFjTh-Z4?gjjW;V+7#P4E(8ky1&Q~%gQ+Iwwd^G} z!)A*q3uLUcu)7V1%gvQ*T~sZi7fZ&!IH{~F-nONP^~8@o{U2HOb2OuCD^hlM_yrmC z1`I#ZD$Z&0xA+SXBi!ENOF$HRyKS!GSY{Nart~u=T8w#?oe-!mMjp-MD0`vasC-Sv2#F~s%%7f3%x&oHu1|WA9kgIi zT6SYL7%z^vDJI&HHrlU?AzJomzahV+3Bgo#|($g};-@3a?VK%heiseC*GDsrD?$pJr|aoZ9!J3O_fG=@XjH z=}Ey_ZU-W6Jf8eb)qv%VtlC(U8C#)pEdVDfEuko019IZm8nr@Tc&>SXQ!SGMy0%~N z9&qbwAKE$#sg$B7@iMx~*3z``MV=C!QhiGRmEvfwTcQS(-?_DIEN_kdJ|B&u3YCcX zD(=tWgfS*83$ssaAri%TqO9sGaeQSkRh)v&ct=(2X&3V1pT14{#oX{L<735rSWacQ zzjC`xw->8(BpjhnsOE1^6`WCB6Sml(*}DJ zyIup6C?ZC55$_y_ufHLCphA%0f-NE7|3KN8brdLTJ%eYX-wsX9@^iDxFfB?Z7@bL5 z(^$e;qaN6949wDOWsce!bUownIZ?0N`N4n8q$MiqI4;ZU1&3CIhD~SL67J#_EkyU_ zhUBd%9U~3q-c8OzVF=)q+^Qu1o|<3B2RgrR9*9ZCO=q@m($j=2^It&0j##u|fz}f;rlIg5QA5$+3T}7;x=?hBj zd0C5^r`Kt)|JA%?OqHNLheCA6^07r8p&wkVfHkTgB*yuDE86_fOw>sM>_5=-d*_v4 z^jt0=AT_0{3a6N(!IR+vgGPyq2?GaW06~rk5-6}-Qzh9B3bbY68tN|-)zoGc%=}r+ zGx$sBH)Fgt3+4f%$HOsZsN||5+5?A#Qyo$F!Pg@u$F$tP>tT(XU=nXuKo{U9W+#)i z{Ocjh909lmb|^P2RwcI7sAqc0-8&26{49Xkr% z?kL{^&5b@Y<;{Q7=XdPb@i|Qu{N9rMXX%j|PWo!N{@&J(Z$nH1&uzCA@%o+To^`|9 zAH4six2?b8r{DM=zlmOO-;Ucra=iXCPrdOS`QUYHZ(IMLcm2)9uX@$j^dX|??3HnB zW!={96j(&-|L=<)Ke+DZ-%!vgiv|w8eeb_l`gr}i)zu&VyH|Z|EqT{p_qyi4JpJ?! z?(4L1tw7EGYZ7bV?+H@FT}RjSfZNUs^;OTyON*fVdg47`tn5N0(;*>0k;a^Cg52rh z)SYx?>4=erk}XO_GDcscAXp^!G&}qI1Luzo*k!Mk;YC*{zQ;^SPyosPdTkMHCyBQ? z_MAt3KyZj%f$1v++f))PnAJd8KD83DE5bbHiuir+1YYP?kQgiqa}>q$JB@Depo~FD zFTD3lFS_YwDh#)Rbgvp801zFTtNr9-FVXzbx}4AU?(i?{U3MZ}$@Ee$x6494bSKq~M9;yVg9D?N+>Scy~uc&UcCk?!QRth)2ZxL?gpCbCnp zWu0_pBXtC)=!auV{9qKCDwAYAEsNUKD+tipdflz?Uq*)&*j=vIA)-xf(MG>CadQr; zx&x2AB-6spIJSN>wKMHC^~ClHWCeSi6k_yNhNifchkvTxN7-uA$RABiXErbpe58N9 z7h=-$EjQ71{<0a6K{>v!Og&R##dVF`3K>9PS>vsS71wYp@*gKaJO;2P6X75z`NSNmp$&v|Qa8s6bx{!)wWOEA@2yevVMDTcF@;rm zb2O@Y9k}HE!~9nB`xAu_fETN)>iHL$9tBFGL82a}qrHY`?XfX5OSxg%z-sWf=D{hU zljOJ+v2KihMMY*Pm2r61iZmHHUPYqglmJnZZQW#-oEM(2@#I}O&p3`i)kG51?VRH= zZ?E!?^P~}BXM#|c>bz7FFS=A}MZsh>|5&dN?Th6p43A#KAHwtgL~0^yHx$g&^ilN= zW8y;V8sD8sF|e~3kY__zJ7H{QNlNnFqG5|0Y|R~M<2|kr27w%F>6q`o#JEh|XtxU4 zV!Gy&iovf?Q5IqMz4DbS`vTr~t(o@d&lZ?!g{2RYg%+ZtDrlf@p7pbV)tAzTN@Med z7`_a}%g~BPBf)mgp(2hiLGwD-hsT2#$y`UXFZP$5LgQS~EyJtT5uuAUDPf_;t$hWo zK&$l_)USgI>@Ai2SqjIeCoHs+uSzvu+)l&7w_71Lu0;w{SOGG1FJ*em1rrgOi$v{J z)U{BqqndO2Y6||Q^1%R-oOh)76bdZyS{4WrATVqAxLa{n1PG#dj|tf!mn5%l(PG+; zhRLPUVvwPu&5xbal)_qoE;|o~!UHYK@`vCiJ>o<*YM~w7nVMdB)^0>1!!$vJg$1)w*PZPK zQwlSzT1WJ(`@rWu^N!uWeC&PfjJ{O$sckxA+f6dP${$J7F$e@t%`vn&Z9wO?PW&-u z1eV|)+C&y!0b0$7fb{{92q#yd+sW-qbmFPRCon1j*`8XssemSQXVVA2F)8 zvb(^r_Z=`ga8Mlcnm4G_v*JrA6f08GcWgvKQ&7RzAWPyfPv#~3A|s|mO4l@Q6*x>Bes zEgUvno#iY*Bc@r&J`=%7u#pl@kJsY?i)oB?cYp=l)Pt*mqCx~Nz6u`PRN#`5wbL$O z02jMT7r5y&ftwh(zQa92+k^`>CoLo@1Yq+d%`5>Z@&gs=B`075i0V8*NjX{>t5f)c zP&E$)f3`)4NudCmfnn=u$cdiuV^^q7Sr+RHlmDvb>?rr%Y}Itjk-d&r1f+J%voQFm z<4<%awxU#o!ag9HKttNXN9r1HWPQ7_5e3Mt4D3^7KSg1TOYL$Le`yM4q^@d*wc!4~lN z3KOUv&lE3#LGxJ_P(M(W*L@*qdIB4S&Ec&{Y^KIO@FujZWHkG4&yVM*Sd#3B+YQrmxL-xjyUDGKIm9gyo2=%aYqlHIgqMT_wnC9B;v~eR17;dZD?Wr5 zx=nh@WP0E3N(vvg{Mxo`v4h$H1Uu~j z%vNX+(G9S+ewP5tT`xd_>5=veU}#)e4FFfB1I+vsfV+~G0Lz6>0EY%KR}lLmF{Mhm zZffzLQ#8)!iBmopX)*+HtN2Br9%3f=ET(OX&l<$x)?tf64Uw9zJU+rg%}{D z6%i7|hUHO3v>Mh@f%3l?59%z)Pcx=hYJ3AKULBy7(P5iW67`Fr=Qx;xGd;d2fA4%L zhxCs|7J@Z&n2jpyFz;NMe`gM3{c)>Q>8t~+QvfCggg&ihXr<7Q#Y{nKGNxTdu5zVY zyXnrY>*DJ#5@sNLX~`NZqTuzzUBvuZC)ag4kUg}FKfU88bSh&nQiRdg zTt-A~yoI?@vX1k!L?|+D(xHWwJEOEBdikhT0VSPcODveG(-e)dZzXB5kA)+GNDEajdk=$eD#mm!AoXN&S$#*AIY@ z+~PjZOm1bX7xJG>?D@qg~;h_kM+0@YLiW(0LC@SXDNjW>)0KQ`zU# zMu#zBwb$iX5>t;=2p+paF+ZW_Ug@zPxE@ky>+cyzM>XGn>IrB)E^1|;N-g1YgnM=f zQLCUL4GZH7v?VJk=ICDP<}Tj0GM#um>QOP0RxD~lp^Amus^NA9a!OuRReglKxB|Vq zL|j{bGmHc#>jbTpHip(|juiEltpC-Nsg&N@CN<_|c(jPA9aRwSFeJBiK`9an@NLW0 za2E6bk*e4u9t`0_EOmWkO(BeNKQ26-3=SD-SM-@-_M*`rDu zjp;ii7V=_%*88K$rtB1SFSV=FDV^-hG%?d$>;Cjzi+#y(GX{!6!Gfk4hz1M`MqINl z;j`4c_)2hI!ynhWyQz}-34odCEclYlY!d4iNIy(@tkp<2Ai%at(Oij_)T7ms8b>i@ zf{hZi23j_nuW%TXZonvc#YeSIi+>`|T32HG9tO~HhNc&Fvk@cHM{!Fm8N$k7hbEsT zMb79;BISy$7+JQo=+*BMAMyr5nnQ267{eN5IY)@_v^dodMo@h4^a=^XW;Mzw=lFz! z{%r$DIGo}uQuK^)W&lYDdOwQJoBtuo)&7_kSo=arx9thBiK@teXkK?NRtTm3! ztxiN2#xY_Bt9cm5qCs<<^L)KSeh`<@oaa)$CnfCkQhX*t(}rM}EQx!;5#e4(ccmrA zX$8^C=|N%?0>b!^#6ul%gb3v##g+V8p$pO9fr`z>COQ9q%i@uuI^u*d*ND)-<)7t< zn&O=W&yt7zXw@A={@IgajU(zi1SG~H9W%yZ1g8a9%ep(P{NTm~8N#4RkJecl8d zWs4%eA&ZMViXwKU{|uX*j7aR>%D(Dtd&nScH(C-zs{S^Ey!d-)1u! zM*b{ESE0kto^yS%mZiBkJ3HbJU~%qayx{B?z36gYCu3lMS2BwvAe2&yyUxD-va8o_ zD~L_7@a)F-p0{S(O-!fA@FFs(6#QX(Znn?b7|AM$GGQR)@M>u}S9P zo=@jPq?_lDv3HI?+15%tS1u0e#+KR4ClHviyLw}54vLtR;EC3d-Qlb?Jb}3iW0oTB zVzJuuo0rmqt@&=BziGI={-){n`kJpxA4P@f zoAl6PUL<*@5$@kWb&YY=Yug<#-}QwGc@~$`^tO|jZMK9*F`Iak2~r z4N&{h1$#`Wq7x{CIj6ORXRTl$KS8p#aA-*VwjD3A)b_R>-j3*PJ$r8t z%MK8p+&D0p3ru$?!VQK8UImRGo1>r;Kg3?HRe;3(p7&waOa2Y2p>UXO-Ydukx$U}R zLZXFi2!zcnLJyLUp(V~P7MhF|Rr;FO3^ewL>fWl62bO%KdG8D7HH>3snfv}tWya_m zGS)7S23XMM($84u(g)FTQQ&Ycitxszfe#TEj>gc1iIFZna@<-T)u0|OReWH$RIr$E zNj0{YM@fqSOziAy4XJ6JHVg;63^R1Jgl+oUbBT!g#Jl(!W+DONG;mgm_dWOU2KkNEf#fSQ><> zu}2RX{#cO~h0K83-Wpj=gIeld7g=%mf+s5#VKkcnDLTiXlos<1i`^jJ4e0x-8pFO- zjT^hVE>z7rqO}grq}EMUJ*^L(Wz|I$W+#0~a(G*kWlu?s07t-}g-3XTMqvvqpd{!n zwU4$Nl2KW)9RDjG~V_3*;0B%sdka33Y zfD(iI-~cv3DF8H^akQ|%8M6gn|07+nhw6iJv6{ghO{V}(!T@>YYkc!(d(ANIyq0g5 zd;c9h?p=4_vqAg#$A})45)}%kyiRgJBXQTqVwR6qo*h^mN?6&I$d~L()B!N`aA-M@ zWNLVJwF0!0f|&TG662`39Xf$lC9*%xtv`|-z8f30(0i0oz#jhbE>n1Ts_TR}Pv-i# zEk=ApZ0O$hBfU-c{zh@2ZRq-;zsaA(22cds7Mo2XMmE1#emQPl4zwT-@#%s zJ?&z7;&F#wA(}I{BUT)g&!t*`C^Cy%ZlS>8dZaQ3BgT;ic@ruYfj3=aqJJ=oWByJ3 zLHA?gE?XzMhuoX+T|qUMFo%QYyEytunmVR@^HqaqAb#1I074{#JrxC766l0DiefFu zna3F~#EKas`9I-W0IQO>SA~dk+H6cY)RR<=b(+kWZ`! zPF{?xe>UxFJ9CZv?%r0f12kGm@rrz}z&Jb!HFT};;GU;W#!@Kk(55C*0ehL{1rDDN z^QbC;ry@GkR2(2wbt2<9{-or#kT6yE_z$?vKgA3o&dymKmGOoNtV6@V7gf`}_-?Ut zOC?ZlU6U2cYzTrzp;dEK5mvTokGU^2vVBQh7pF?x^C#SErL$3p!T=EE5#G}3wV}x< z5-pr+e&H-?N&}K7mX3`A!sX{d6iQ<$=x)|M!d&f*lEy`a>5YrDyjI)jzg%uE%Je4W z-h+%z%~8VF)89&>@W&WL`7m|0>BwHWN5#fcZ+z!msgLdS<+jk(V|!*mF*-1-X5L{8 zBo__*i-{6jM>oKpx{?0RU}a@v3_Ssu0_VE25wc^mLw_`D#Rb$QO^Bgd#1jPQx9N5k z&}N+B-0W9L(tEA8B!EdDGXQJ1F#)t^XWp`O{#d)tZYd*s9lucL#CANNK|N#9_dWVw zyKjBj>if$Mavgla2#`T37+ zPT@9Tp@XCfiZw?ffKqe^n!L7++&k<4KfR=EjT!QIu5gB2km@Kw2KXhW=&Pt&U!!9xg124sdPP@`r{Py>#@x zIR8oEZ#36j9=+KJ8X91kaT^F70t2o zFXI$Pu2C3Yf5n)buwP>)Uv5y;(yTOv$LJxPhJjNq!4wWgS~fNefWVxzJX$88I{Rc+ zin4@o;2vj$Q$m@505b}Y>nq{m=7K%2bTdEg#?1JN z=_{^+0v>*)Ns)F-VniWA6Xz810dADD`=(VGvEfmNHiTx7 z9KjIfj|))MqLF09&a6R(iVdyae`7_6h_B1#)T$D%RSS-;N^e)uF2<#9$GB~J8&71; zXKZFTs)yRu4N-+)5xH= zEHugFzj!lQc6aReeER*W2~_V=wzA=Is=2d9$_BZ1UA!W`yQ2dwk9ISg_o@6!r1Yl5 zO>*YozIjq`j+iE-%>K*mJ>{1jJ?KcXdI8LCc??udMRD)qSWkI7e*Z^MOXT)^A9cmH z5_^uY`@hc-M<9U&V)mBQ6!&ucJ^L$I_=mSAY|Ifk(pqYo#MD)!3l=P>@P9#7KjBZN zYyX1Lz6Emyvirmqk}`|WhI&t!dxGA4{evn?g}zreR^Z{c%XT(r$g+Hp@Js#GI_31* zQ5}ch%jhSFy8G&O#QX_v0M;0}f4n^uv;Tu6KXKmt6OQqxc0#|^`>We2rk|W2*~tyF zHTT6kDR0CPmD?r!=QI#k;eVC?HU6VMI}99-nD?%i{|)|QOm%(y@8^Hc|3UuG;r|f- zhxtF3|MU1ipZ_QDe*yo|q{XpN)U%so`T$BUDMy`ve)6k#SX*#sgRI>TNBugb39iKb z`W=7^zjHtSptKycRQYU1QZ&V8#aPka+@Tv@>aD=g!bTbgt*DJ?Nl>JoUM&JrT1+TD zZ6J)xB7lg`!NE}h_~3moQhpRAl?Qwp`BB_l<%h+hROFu_)Uj#)+<)u@UL!jgtog^o zJu-#EZdEb$({&IewIs&L`>nzr;opG2b3=w8IYz))up_ZB zZQu9_-+*~Vyf+mLj%HoKaT9333EniaxwGRj9-lai1VBN;ucU1?GQP6VVyM1+CC#$e zbl5{?VpqyiyGflGPx6Oz=|x%obEIQHr_?xR3@C4AVgW4`cl(!qpIrG}{Up7+T0m_Y z!)H)(GA0hgL79?xfatk}k3s;PQq1kG5}6Gl%C1lCC@uHc-~GPz3g^!z?O1~l3C8Xo z;}^`~QCO4wmzsX-ouBvv%^ehLaTS%?!i|&f#!d+YA$z70woR3ALny)RrE8M>3;k62 zH|h-7Zuj$&v6e*Jk$VM5RDj#P|s|_scm#g{#dS$;%|>C z#i2JGP z7TPiIeVQNRM5pO^yI+v>7X8xd2~kO(o!e&{Iz6 z7|RdyBi+lHr@@M4-ykQwh@_BSV*90+fW_mm-B;1?)c zgGxb#lKli@B|U9vff)K~0k5o_byi(;H_WU@iUjP+TqI-?xNtQ83mbGCNl$Bhui{U^ zbhgv0iDNCsS86>=QOvF-5)2*E%^SiZ6F*_mXb=LENtK2sV~7$RDhC0OQvpfKls>y5 zLsid45FuDx({uB8B(P<)0fpPBdJ~pSszvqkcY{*ZKHn#C{yu@S`wPie-PucZX>aQ|yau7b2*! z{mxalN^%qQ=X)ilYWdgt`FX#JE#Ox9Qw00qev#J4tL`&WQSpk};vx_;uB|*0X9MiSqtPU0d=$!0D-nz`gWr2sWyPRRhcY0b3$Wros{a_=~ z0Z(c6dq_oPkC+vE5-Vd3e|3QtolRfVJckBej{uIi!SHQKzIQSBX5>4HzV{}5L8ZhWxx=6%{#bO|*XmR$Li6v>-F-g@hxDqh z`~KKqn5=YVdh&WQ?d5;SG&UZhs-7JO2i=F_sXQOD z*j8@$g04KfK1lkH)2I>&KOA(s7EI;Yh3XA#cXZdYQ}w)Ws-DA74Z59O_3We`xBs2e zytH=)rP4M?yC>wO@k+BKxd*~$M&{99F{?&d{?8DYIu~L!V{+npHp|4z*)B1|0RHL? zg-BF!8{ey*b;m7R`i0I{!v&cTh=1BZU>tW;RE`p*#{!{gjmIb~%T^n4GKMJ?-GS*L zd{|4Np&HR38ExUxTs_?6pL&fjyDv^KmR{qG-PO^1ko3q&rWb@ZZ8z8%-_CY2<{LXZ zMs|ji28}HPk$M6hST!Tgabd&4o62?@yJ4iK?cKtv7AGC{$>?9o3|J-q0i&CZVLM?E zPa^Cwa>O>yq01mqF|&fcHWCJY>sJS&cEqg{5@aFF-WOwv0sKUgKIsVl)b*j9U+zBp z$T!}16~`*;YkD~$P?pedFePF58_}KO z%EC`miFvD#GD&(6iNT_WYidALizaeWoy?tt11X!zkh4r-^RL=E2FV^6u-@+D>aI)9 ziXYI6$w@-BKcrU>#v}gCr9$&H-IfIlhUM0TnDLb1_M@ERuy;Wv7J|oh|`u zwWY}e2%?pt>~s~`$0np7JYs~dnU1g@ZD^-B-|VJ%7L+mZ^RR2GevD^U)-KAzjzfph zRc#4Xj6X8*7fHJ>|HxAA_oF`phr63N5KKJt8<&GiGyCG4Q^+lpCTEj~gyIFfTMS(WFXDQrf z$I@g>e?=e^h%D2jvM+x>4d(NQNwX|^k#G+FQn9?k$TG~3nDD*tqPk*)g-+!VP2(98U{7jO}E zE#V_?3oZ~JVNoD8BP?3X*&jg6*jOFm^CDhnL_geKAkrEw7EnewpVYdNk=V_!Ka}oTrDs&jDf0bWA9(xA6{>4h3*s5G5F1(GUj3{d57slVmeWW=`i`y zBh(uiQynO4r7H=ylWTIZu$+SoggFSNOEIGcoU{t)Xq(24pe0+Mh?$2Bh%51;Qsg!d zfr~oTQF2YQ?8AJ^-3b^VH>%VTz}G3oaA~m_j#E%6PpzrNXDUhgj#`O6xAS>i7UxU%>ihz-j3 z1=|8-AqcFkeX((RjQoaL0(_Vjp`v&9M;jTkpxeqL;d+&4hi&P*6=-G@EA6-7YtP8h zDuFbljA}SEgm&qMB}e1MZ^O}K3;6$nqYZXQeHM;pj$0fi_`imu;i!CUjs~1v9Br;R z+T3T$(T1QnX~==2%?})He&|BuXeS(-qYcd*IG&>o83B8aCbxXAHgTDiqp1+j(P#-3 zPf5AJ(E_dmdkH)8{x=tUMlR+%<5{sU;r|)Rme;7!l!_6u z)Myo(=qpTM23{W4HGF&)WvsVoU@V}_B}MBDz7{xVD>3+O8pCV@P?G#RRsY$3Ys?OZ_ZXFr7pCYnOUcjlX;75 zb@rO+w9lcIwfiiObcEEmP~|WSs1$wT4hE=E1#PfpE7L@<1%MplbNDI@Dl!2;(^gcG zSg0wuU{DVKCs_G0rC4)$8RziU17r~!Iv2@5_uyCLIZV&64ljv&}>igkp zw_m29R`;t^=1c5dNyeuCRqxc@2^+MY|y}h*_Vv+Q4l|F=JhwzmI>!WiM z9UrL}U-fhQ>g>5zA%#|~FnvquDHjZ5kgnEziy+maqtHVN4`M!%-eaG99jhvTv8W~xK>aHl8a|{x*K0H83yGK z%7sM_5=){>-(>J4)(X{^qHw$6Kat)Zxd(5#>nD+ltGWktD;l5Rt1O&X*mfRPPR<{N z=6>?PEiZZ{Ha1+ODn1)FRBneiLYXqmw+T}HEPz6(b{qdh%3=#66g6v6qx2j{YgCEA ztbo;mUXlUM=k2QMoYeRpAJwkJ+h>hb6)2T9d%D7bqa`~YXqLwM?D75@NwKcWrqWm*y|U~#vSxqgtr{lwh7n6hpuvJk%IXN= zCJxb@5{WFb1Od6Q=rwbS>@GWq70R}vZ3#f!iU<<{+R}zKydB1SYXi| z<|x~1M^dC`rdt)1l(9dl>m7;0=MnG?95=?-NA~CN+Wa>*72cJ!*u%u4Y{DSqx+8(& znKTuRb9_~L2^0;_V0xEFwjN*@(n`6^#oz z`kX%GuVya|8l>Sk!056$gW_XhMHNZg1@NIfGYx`4^M}UPSkDjiiq=|9=-D8KgK`yI zS4#SMfURuv#gy3aQLIyzGp8^n*q#YvP(r}i6D7v(APkqUSD5M>_x_$#YN(VvvCrVF z?>Xblnqx=|Fl&5 ze5zn}Um#>_Xi&y5_gs#|Ry;fnfTYAV9CO{SdJaEo^(cBYIXfkouPQ7KtFJh(jG1=G zOyMuve1EduXsd`!z_rk={xmml8O|zY76yclrwLiu|7ltBzom>D4~kQ)W!us zRA8@L>_Mpliceh+BfcTy!Z4_^5sx>4Mm$fd+rH638YqCHlsF66z_tb({%P)pX|0wW zoc^Ci`7LoTiAM3k03{B`>$&F=(6ujQOocB=U)AEjk6PyfpwMH8{)wBT9ZByu`fgSFY;VS;2~G z)1CvRc4tP=ZXJ-Xbe2N~u6bpd3G$|D*kV@W>0il+vj z7?BO3SNluoIRzZoQ0fzDXmf=|T_^3u)6zZ^(u(u;l_M1-k!P6r!(!IZ>_yY^Se$Xn zS01elb-1$S+t8y8H2=G8Up80@eYPa2U;8 zU5~+|WExi12un!z<_*-;D|fY`haF?muwXh*vJhnrta-T4NM7H`FOU@~UVT;*$gDsb zA`esDr68H=9j1zJ?tI#0tg6!2UH?tSe(HY8R*T=@3k$p)yMK5 zE_~jLwR(;|EtHSVCOHaYQ?OHFahirai%R|gWonry)-eaDcIR5i3h%k9tgOn=YGC|D zkI}c3IQqNc*H}l}h~2$0uoF}p*d-V56KK5Nr^fQknsjAZL~vPN)0785^zBN*{eJFu z*!@yUIWyHs6Yh3U((70Pf*-LK%l&qHqm^RRll;k3S|nRWJsm9V@mRXsu*5Pi>Vn3i zgr!RNLQ@f>(6}ij&cA_|*mkjF6li11tj26hP^x2y#LmRaCpqz0y@+m6B0!HU@8eWR%%ysn&b~DnFZ%NjFw~LQYKky%hna=! zlmRpv+=qW^w6H{n1&d*kWUF-2$h7G=MF9n>mWi=hnHuuVTVT9LEjs;;Nk^yO>fL!M z6i4Dvyv|<#w-hhc+;)yq>aC%Cx7$KcH?pM&QQ`5%Sid8*kP9@-@77-ZZef0r|7>JI zwj;RLv4CA+u4ZQ;RT+*CCukn5#;>w7o?w^g9DF4#eLv(6_RuzXie8Fr(1-r<{O4?O zbq{~d^g)^?j{!72yTjjOnZLvF;&gw<3Ev#7s&vJf$$IW$%fXaPcjUO(-;v`I?Wf!T ztB}*H{2~^Qb9Ozd9Xf(!Evs&{P3@X-)?9eY2YGpG(&7y_rk*fO_YUD)P3_Rzkd%VG z@iWcd6?ejUN35@}5+WiYLMuY1iRvj5i)rH7%7x8J;KE!b7Bkv!*k>rg1^*1%Zm*Yt zTxudxj@gksIB5Wf>(SuAV`Ptvv(JVOD|bf}ws$wiMk`|k<$5cs(PMt!GL;Y2f|>lr z9%N|15}h_7b)KtahP~}HUGnqZsu8MBZqp|7ID#cBJmIv=u`z0oV(_NTgdkc1JH`a- zmIz^~5GHwR2-6b?LwOX!m{l6Wpgv6vBDdwMo`!^=&>E{3$! z4G{2SRVt@!LtB(>P0J(SL0nZk4iZpxcEq38`ctx^*NS2D_vRwr)+WTvB|K7=tg#G) zoRu55Qf)!zsPpm0(KJL)v_*$K(iSvs)rD{4$W$AHGaK8Y4LCbleX6()boqT6QmHtofR_sy4}K4y?r4($=8j3B zz~c@#t|ihN0cJRW*RrRP&@60Msdp7_hVSiOHGl0T%9EGx8vdOOS~iMWnZ0QFv@Ly( zA|g-vojge0Y}?IkrHP_Tuu%}Bhv%k$-s}?oqUTrTEluv99rGP0jMBAPwE)XL0uwcv%5!-dZ1*AAf9u_e102{ zoql!*CbA3A{N%gWY|F2!8>%B17GxEA#RJeu(MEB6 zC+{X-^2ej7P-SFj91%alum>7w_BFmC8( z-L7Po0uvRdUoxJ*myzHXvM^RGk((MsyfodQaljo!yp;G!C@uDSl{_@8A!*f(>!UJMaK8$M5Hg(lQyJFh34?d@z5~dR3j3ko?i(l+WYxO&(%W#l#M~vBE2fSs3*j8eT zAO!$)*IzUULd2a9GyzD!Qd&va&>|}dyWL2DjYJk5{3@SXN&}(yhqcS#&|Qd=1D(4= z-0^lY#mM=P-7n>OX7ZSSe?Z3XgZ}=I?w`=TN^Qd^F5;fc_9Pht-+m87)$Kque|1DW z9<(kMpSe+)xP{AX4Yy>Q47c!^Cy;_(`%4c?Al`5{K<@3_J*>}F?K!lml@f=~k6W4yr-k2rlJ(!b5}BPo1H7_|91 z?|vOGP;`7NwFNn^h;L_wc{;>eAQIey^h-lpjOzk)tHuC;+9H+#i6gK81TySf)sD2? zO%W2ecj#(-l!cP;j;UeiouLRyfIj^R)=~aqL>B*I>PT3h&OvgESUxaHpebRzzKi1FkI$gSUC-bmD6BA z75Lr4@CFaVs%bD_fbGHqlGsRSw~^4LKEnpaq90?j*_Ww3E9#Kjt9{zBX@#Q(mB}p{ zB|KSlzXblFsUi|nqL6e%+1-e(hc z^dP|oip)ze_;OuROeP=m*bIA8*s&rhhAqlVF@$uGVr)1!*;RA9B*pf#xasc>a>xA< zNvH?xp3M?SF;1k^`~7;4^wa%8-5=JyN|ohLp8Q;HloUfZm$Ja`_EL(85(*h$==?py zy3g;Z=%~8c|H@>vJ;;0IS9$N&c`GCe?GmD#AorF!Cr5;?VLiL!ej~d(8}-y(Xp6 zWn{a=1YW|@XX$#9M4OxN!uAV=!RJ4t{QPd=Q zumvEwAdPw(g+ywLK34O4EXob9%m`JH*kW+xA0$ePH=WpeVA(F~f+r~%5T_cmKQxB9 zSSKL@wZs99_j`jpZdSy%(ih?D%6nHglq%Df|F zUe%QuM%$G+!COMJ;?4-rtkem6+i}iQ$FLF)l_C8NjFJb7*2IO&qD00<(?&?VMflg< zsDc>d^LB+hyk|fRlhX#W{N2WxeVEwU>GV%+sLU-VNop0HwSJUE;RB z`z$Dj^R1myc_@`c4FyUT6WrE+)U2=7Ox#*>nS*&d3)*4RVj0UItZ$3WnanGr79iVE*V&j2Yu5Jbk#es| z9eQBBqgNJ0c=n5vdV6Rm3(RXb*|s6u3`6>IdR8q3TX3On%7>StiTI(eMx|ec=@&w6 z6K&{JZo!HS_3f&~H>kM9tO04pLS#c?l!2thWo(14bcjosDjPwtc-xY6#8u&^P~0A$}c;c-qfZ zQJ1!H?>k~2Cy7kyt|h8n{mykG*R<#E1PeH=N*q=$7%k>@c6VVFlmT5|eYkFunoQU@ zczz?yaD*j6H}b}IUuSn$ADWPMclAMf#sxIsM&uV8{2}_hj+C)V>34QfwCL0lBN^<< zWX!H__LocjWrM#26Bm|5HCN>`hh`QU!o#8xn41JTUbzc`r9&G7ut?KsJ??Pn_HH7) z)(H!1H_;As%)X9}IdhM&0!ehX2ZKay_{h^SmUd}lImYH-EQEQX{{$x$tt5NL6|8xI zR@G(D>JxGeVVJWoL`nyTRF0 zk@u#Hi=kq8UGcUpC6A*~bZ`Bb-HWnk-D@l2bgyOzT7Op83W9c~u1$-fmrBIJD2lCX zB8itC^>8HDaK`EUGuW;R7LV?0FeMLh-{pjcQ6HOB^VFxu=Tdm5G&PtWr1hGZgh>fr zSLzQYJccT-`-?NMd~T2`E4dpL)EPx-e{^7tFQShymo7bADw- z)W=z#1t)8y7Osg&mBy*$F?Wnpi(vzrs9~t6oE9}jK^TtqKK=Ab*RLDix>Ha=3_7$7 z{epmGMT(F>Mpv%f1bwVaT0?a0m1zW*AAP7CJL}W2WkqqGt>DSzg1*EG?Lknv1`ZiRAZbQ5 zibbst@yri}{~%_gwt~!SFDLMt8`!)FBqevgjZMK=>bPh+X1S1W4V zt0a~f`O+&9V(F%HbW1qJ0#Eexf=xQa%f%?BjBK5%!^7(6Rg{WiXiMd_bL^9MStiz< zrpt^|Z4e*@Bde-)-n0e1$y*O~ZxuY871OdNXu#Jb>t(#j3hLB?4Vwnoy27f2h=O)! z){bj0FRGhKFOHIw^=e}RIYKp+><=x-8_gqDDWTOMc(Ab` z<^-a4vIZuokN|p;a7b2x7^WZ!Vu}|4e>roEQljXO@CFJuTCo$|(YPo-BC+m=%va)s z82eYNdu9M2Vy4d`XlGlyBBBhBO%|h?<--UMvJNClSm8nKw1<3KyQ43EwP_Rn3ks;C#-Q@bo58o@lF+P6Y@qS^KPhRJH2^I?)GJOs zUn6iK^D|r~K6dLT9^?_X|4rFMtl?b5H0JF8H0Sy+-t?|^ayEkG6%?tWW)GenQ zwt{h2hD?OS=vL#CbVc?OsKmCTc)t%n=3#m=7}oq$siwhXW1PA1N9V$@cv!2j&0x1z^my= z)R&$4M@|%}#Oo&ae`?3`|B#xYH2*N!uKSy7R6l_Um6)n6^;f>Pg6})?_b9L->3F{8 z>Ye$A=Vdy*nQ3AZ6rdr?W=!i~2>EV8LwlL<iI-0 zKA|+~bR~7yYR`%+(<1o%)?P#}r#;YDMz0vvK8vAOqdly|K?>qiO_G{2YUs?jYwBl+ zt!Dp`q7Ytgcf1J!R+!)#(A1cL0@F>#xP{xZow4hj3wY%?5*_k756B|SV%F=Vi(Ro9 z|9G+M2nWU%eHdjgq!^9Piu*=H)D$r_2#l%}Bb$2+51iAbP}lr#WEpuWHp$<&BKuaH zRIV{DU-Hd++f^G(;zY77+iQQsVL@Lo&IDsTd0DI73ktYQK27lK1-iMGPeuB2p{|H-64or$>!hjXKRPkInD^B`X0Y<+fAGdVyk+&N zi16r3=qs^1U{CFMM;ns($Vb}oZSJ7G+5xWP+ir7*eDe6V^{PLL4zJy@qe$*;SJtg~ zTT$8RP9jdv74E=WR*S)1b>D5D%d%cdzZcx^%x+H5k?7^vO&-PsG`ZUxLK^npC^js}Ev?AcK`YCp*;A$U?*B2r!C7Gb;P%sTrbU_u{>Z+i-TE4cR z8QNl%5;i}v>6ohL&$WQZpBi*8xnMRChC{58!M0m%wcrk~bnLHo90^b64?{3l&d+UI zi%M{4C+XAt166<8P~;xJ&&VS+Tmk&k*i`)jk^9&13AFPezhX0h?3)Cq;`A7CWd2ag zcqEAu*caLMOjvnPQ8jT`vuLTBh-1{i9qN&na6+n;Vfv7?DpSD1l1!QnLn17oqqD1h z4y~|~WgARY#PA>E$xN?m8%jGl*QN|{zCX=(0uar=z4IM|ZTa~r4OS8nxxz1tKow$t z`9CaYbanV_kEw*Bp#r$!wblG%i~Qs~JR`BulB<}x^@X#U?_=-o=cOAYIvBNx)g?8b zg|DBoF7nTi4CXAvl=vm<)$J-Fjlq>tL0@$E?o_AnFo6>{CWRs{BxUsp{1b>c<#(K_ z`P`$fPBF4zF~Bha&84VjJ)jNtX1>dWRK8S zkvlp8RbiD|EhUkSHCXoPXP0bJ{7Q^x8|+F#!XJN|z5XVTR88to5dG+p=38e1OjX>m z)oy}^Ca|68>tTk>v^5mV!VQyI>%H8YTELY^0xH0H@dCdv2?S_iwq2r#&x!$9D~URM zQAZYw98HBRbYU1O=|alU5a=3l)=uyy+#*CtHuYWORmCc2rooAKJcN@l~W!N7@!YPE~A`~N&np63_lbaqZoM}oxF z5o`L?vX7NHU5j?*TvlcxDWNBMy6(xJvLuCu5LwLiuTq?(VP3Is#YtM=I!WI-U{$;1 zax4bv8~o)`|MDXLw83A-z?n||aa-T@%P4;&bx+)2r`obMX>aa9X|^#P}?W$BJcsDCXUo@%-~EjbU`Xxo2h88Z;hD0J1f1 z;JiZdc{lhOKarsbPo7_Av$FyNt?0zsDH8Ctly!iwP(^DnR8qdWXJu=Uh@QOjU}?D;?|l;QjXjs!dV)yGh89%4ghA!xt^Rv*tyo@ip_nH*plS+ZFb>B z`L{4lQr@yCp1LK{O8GV|Z zhnqJAqfB^5foZ*F6OeF6Ch-AqL8pQ*p;31G&}d(o_lICUD7L~Y8wcRC#PT`Z{yu2t z)a_sZqnX%s=%zsC`*@*vpvJvn1VxGuP9PBbRrXkGtm*oLjQ!tK0J3O8yQWLVjP0y9WlLwi1~M zp9*n{4{5o?)!q9ajPgD7JUrv(2P1dWgQ9+h`d>6r;RKQ9AcO>EpwMbi=MEfLYj_h1 zNqD5UI~hqn9iPuHbQ^oM&+YM*%Pw{y!G~C?hP!BMh?N|#Aww%II9t2V-Et6Y z`o|$2|NaY|$2mNH{b!xWc|6{*4NUvQ#7_2b;yn$VtD{?4Dby9Wc-DbAkXwfx6@;E?H2D3GaZGR96p*uAM`hK56?Oeg9P8lzn)n*IC1 zV2GujvVfjqZvM$RMsHvdVa+gAX+3nTR{y-l0uN`UjXeQSID?Dt3vHH!eDwt}y1biP zNWYNu0xcb*{Ezf#aLzS!e7u+PpKKUQ*#8rcu_qeze+dvwm4!yY=trG{V^SeoTyIUi z0l20!4kG644UJ+$5W_uz5ZeuCm>sHzXfk-(hAwMQaw|O@s~8F{={`VQgZwX>a0*4t zs4FX|pLeL&=AZVZ;c!a_Pj)hQ* z&*l*dOA|t2C9@(FZ_d-H4l^3*N`#W9fEWy+gnUMT3!&0w5<{re5_8p(# zV`07zYFEcYwSRyoQ~u3g6Z^&{Ic;sFOciJX_!Y?9}DxG zX09s1d|1DjZTuUH^W+*ZkCEWmm``TGJUqw9wOTCjRdr#0K;$|AdP>IR8Jw_hdhLKj zX+@Mxnt=}PXmK$j+_gRK+GKUu(XUl?xFaC21z) zR^WKK;57}kQi|kh$Us`C`!=YBRqITvKs9n252AqYMK;bL&%X}*Hqv$cG*fsxad`uv zYS!R6wC$7&;*ZXDVs601Xn~`vj!p@n-ojcEquUG6Y6mLL^EIegPdF}A)tOLXn-)}Q zaiXBg+@A{JRFAxe2hLhOCK6wLvr~N&o+6~MFmc@KF^Eh@N~iikU%iG3wKu7~#9P_w zCLGMvhQUs?gA6ED>j6D>Uko0z+Sasc2bputpQ?BP6fjs)dfKTqEzA>Ks?2d4%Sp^r zjkVNJu4ooTqK$zGY-`?X#K*i~fm^8YtC^YU6DVIn$wJ~`uTWGhX2e?KBN_>@Dm3z> zU@+a&n&5ma01Wk=fHm7sOSM5B>|cf@J8vj2wJvgJ#h~=^rhcmW$@t-)ND}VEe;ppq zMa)W*UM_46CEO`DpkAhp0oghd{VdQ=zkY`G!@*J5)AZBO&qDo}(Zra8YV#_T*Nb)| z5@kiC&;fmT3@s6^QyHT_ctl|p-?pB&3}(G#CNLNoV}6X#Ex;l~bEtxKu*T>UHu znGqG!k5gh&jiNCO>l3`ne1h=@<}j$_nw`7IjIIP2*6ak6Z+MgQ#scp#JN9Yj@dm#D zZT*jR*%xbiqaBne9q8mnK1^9@^NnaKszSOGyB=}Y%fFZ`5cAj9eYS944!Dq^J&=E= zP7*NbEiGDzn;IPS1+J)+sT53O^>Gvm_%QVK3V%-}JFv1z#cg*LQYu{x9<+?(<~0f^ z;i7zZ%Y%TB|Kdd2Mj$8mL8dE_lYaf>ftHMnQ)!8kgps^O!f$YGQxfJNQYcWQru6z- z5M3|-`W&G3FQVx$qM0eEtUHD3o+`tTsrpSvfgsftn zVQQjm$|-g2UPUAyUX~sE2M-N?I)!JX@c4yApyXvD{zQ2U4chH>f2C65uO? zc!iObrSJ~F7wY@ev#(E6?Dq2t$+{1n#%SNaXaUo8BK8b3TlbwPhmK)6bi|@%JNIQx z;bU_Hele_ERS5oh7=Gy8#pFML1-L;04J_||2sAXtn3#YjgO^V-{#D3I)we9-+Z4$t z74s`{v%6anH8DD38X&SJM-)lpvJud5`?R9P>o0O;!@EKhwZe%xF}1_#WMJ(sS*t8? zeYy}s1Qj1?Sf5ZK_0;l1eUw+p;d@=ci0AW_PQXgT0K+8rgXlc)zWhA%M=M1qb*U$< zg0!sQ6A}!-hAT^`fEmcl3Yc&3RTZ=}{ehb^B(>>(T3s3)K}ndks&8T;MJu8z_Jkj& zEqqNqcU-L^~`{dmSG}Ly88K=4G)PAOfSbCqte~;iRx4 z7Ienj3j}#=Sc*$5r7#~`2{S7Ja*1sekP8ikW`IW<8u^Vidci@8Mxj#r-SUb4;Uqrl zPbE_1`X2x@;|KRd>2;=uYB(`KQZc)>XwV4HvvYIbVrphg{29>L59;{Q$x06JtlwfbM^sSsgyy{sz6n-$c6P-*@<<+9;X2wFmo;_ zpQ`BH?*WUW5Teyb*%kM#f1XNK*8TJiM#@I{BQb~LrGj%vo|eMxQrpGDP{|M2iA>tl za}P;G(a2jxYl(cuL%jX;XX7&CtBZLgB|K`#sHfR8BGlbm_jhW%h`EJ~;%wh0EA7>W zb3vz<(@FpZjJ}h#Ei0p&IB1OJ;B$1$55F-x(j_6ggl0I^5~xMz)6F9!|g&XY54In{TE_QHrUZ~Ibyhk;T?gAZ9-5~;lixw$D3PynoqFc zEM%j`D*@{+9LkCo-&LjDJn}!JM(co3>2s)1>eTTn)JhLsj^vM}hGM@IkBqO(Co{YN zP@Ng_<|z!`=PXT&_A#&&w@zFawN9o@W@ZB`p;VQYfEU=`;$n^PuvR?#s@t`nbVY^;}p>&Jwr!e5AO8A(DXj&o2?Jh87T2I zGqWd>IAVTDJ8Z}v3qP7Sm$1`v9!|#hs~clWj*T%KMq4LKcPJ5jOx&VvwCde(x)+ob zlg6x38k{P~;1mHC^-e!p6IeQ+N9a*m%PiTkI!5F-Q=M&qBfKqWmr$ zINj$%Z0UTy%iDdn8%hnaMrkq~qq*?-%o`cjx&zYlTr|F+wK)SP!I^qU^|-9pz^wSL3am%6B^4 z0wU*bRp)L^xO2m)#y59jJ050}uZ9CI3am9;Pnd?r`cDro_+ z9}xKoT?$5cPtB&=Tg~zrvUhCDL+jSNF^PPc-ML>c6O`R;P!HMNg)%wC;F;N?b_>`= zPc}(7y}Vfk3sPz4sEw%V`JEVo`u!+msFdru^n-E&(*c4Fn#3B{DFL`cPDYB}_gwVjwVwBuT6cx`4mYIB#Ip=3C_F)2TK!( zHTz}RAUpI5$jtW?@+vKiOwON0aRbHki-Cz5C91Gcq8E2lWn$$pySXskK~wn-d?D;* zxK@13TK<-Dz5YTLK#Si0m%Mj@(yOZSefQ&gRqd~;cA$Wgin8mwX>Wn4OS;WTaziw= zLWBSj=pLTib|3U`TF1DK6yvrjV-DjAq=2aDBPv3?qS9?ZxMxOHX1jQpjA(3B-3 z*tw}@Tq;NQ{m*H_M@oe-s)_M~_Mh?<>KO*u@ngIXYxZU7}_ zxE<|d>>6-=2S?%t33E`-C%^#c>|PmQ`m~~UCx~Vm%bvT2`Xi+{rUW@m2zOQ|sPC1) zv~J)i#FOy~&zPBpJ!5bD;Kfq#5%gYBx%fD+dKdSH294ptsIDctNgIYi^ zDj`Y1M1ry_vClPH)ILZq;nGMoHPd4G?$-LIn?A{C1dOHcZd0?(OjPy`=I?5H7#VY> zXNa#C%g9*GQt9t8J6NpJzPWBNM|kBo>=r4xk5aWT z3V2*#WoJ_8#X3PvXQoncj#oq<%uEsvcvrkHC|oPf({8^>frSOhMk1lUtb>VqE;KGs zAH@~RWrerWchnrt=5{}aeF2hfYLpDG)dbY#6^ry^D+?yPLxh7 zB8?7sb1mlS$qF`CKs63j2a&SsK*jYwgx!{gPH9QRe3TNosgHph_-ftxLo_HmBv8<> zt$EP0tiDwagdt7GmZq5*hRw#!G(+++k9#u8Y26+eyY-9C>aju(xrQe)dT6yZ!44nk z2||sCIO(8dQx0a}&myK{hecYVO@v4B3I5>7hYpE*%#r2u`^Ok^uS#nPVVW3pAr;SP zs|CS^D1a{8FzeD%xKW!X+%(G_rj`c-2iyrgu7Uy15dDbOz#V}S{k!16jx+GvbDtafb*a*x+PGi^ATwbcpMPZtvDT8UMuj+$>iNC6dM z8N7?=JX1vmJ9h==rwg}TS8(M_)J?3|8Cyg8%sre-w1Z*r810y0@c7!X?bXTFjyQ*- z)BA%{I8drTP00|L_PjsLM)7`e8k^U2bPFPRjp<0-u8jFus<)Q(UJqtWVq`T|;V{SI zhivk~@)o~H!g|l~!}yu-W@(>7lxcJXj!4B(2sU~))-DP`qPC4@qTugx_0e|Wt$}`` zXKAZ@Mis)DaWt-nLE3bx@PWbZaWcHuq~&3+17cK z$;=u&=PVPb+oiHy>pCs5y5Z42=FO@La*u85^%sow%VU@lQV3_^E!II@6>k;U*y3sY+gD@MPbli)<5C~_ zkSDz%FMU1wmNaYIGsni+tU-i@?v~LP2M}0EC`$qbI8#ly+@Z8wAs}&w$SixC#byU>Gbi8eU*ArF(15L3(l`^jhl zsCXY!SvgYCtsj%NzWADB<%pq9#s}z#x=hSKDp9;%Ej`rqsj)7ARIiNsyF1Nql0m2) zKKqjf#z8LRhSQsR07XnMSKkLYg<9LT_W0%{|1?4n*-_bu8VDO)c3d$bL3xlVSJtQZ zpx{)-i-qv5FqPfA&fU%lNOqf*!l0^K7_2i^pB`g-S+pbqw!=@pye8l%)`e312!|7& z?p{*L8f}kE7;19FkJ+3sutZc@(WtOLWBHznqSa@&^3qAat zQ%^QTbcY43+D)=rhuvh!->5vU%ud1^IH^K;?vV#<;P%Gh6N8W+*&pB48!FMdIWnDq z^h-_G7$s8R^4+Td*l;PKN^pS7XV7l6b)LVqb7lLguZ$k>15%d$bYJ>2ed*6u>2`Rf z^z(gy0zC(^`d&DU-Zn=yODGLvw)&TlQpVwYR~OEj;H>q-$z<_`6KvU12_f`Arh6-+ z5@hp*CIlt~-diiN{?CwM@te=|t(FX$h~&tA0dR>?b}14L4;_TI@*iu5c`8I!3;*2z zf;ki(>3_k}5U%-JUl9dI*wgodpRX!^;;fIyWqO&~s7QtRU(rSK_^}HeaCXuW{PmNM zP6&`d66)tnu>ejnO?-Qi?t(>$NlEnRXayhETFYPjdsw{~CwK_EjbZm(fp6LD5clbz zlVmnAX<#h}SenIc*oN3l+GZKd{Ui;$d@*Gr?)};tlrLBiP=-<~g0XpaO1Z^RW_g}g zYcPIC@Gev$z{D0nB5F%J6tdd7O+yw!-L*d^qS<}f2=8d}B^aoT=m0FX>j z9d@1zO-|zCU<(4&jZRiF1lr8#KtDBUZTGI}a@B_1W+i!n8Tt$(pX3A~=t5b`WuPV{ z;1SD;+k8gF0?j@_k0d)voy)Ei^wlWFscBX8B>0Hj}3Xyp?y z>r!Y-speFYQP+{A4PjYr$O~dzJ*LyEMj)E^60$wQBio}+)5c9)eClMM8X;nD|40Vs z5JBKXMUW#?Z)y3wOS*>J^bVBov*-GV)+`Us63VlnJP+v|c@EigeRO}B=cAqn&5H>) zmgfM%5n>4|Dh8-xLS#@aB@%eSGK73?F)=TB!AfAN=D9w)sjQVN6V>v~sudH9<+-kW z?ukuErwZEm?1j8${Y{>R(YQ#!}@AD$W*Ukn4gisP(W1)z7Ecx>f%w?;a7D z4PPrXanthV_sA7MpLfSoY~O61U{<`rW`)l2KuvTGWxQxo6O+F4>O%U6csu6+8Z1-e zmPMb(ZL+0ISy2@Obq*4>aWs~=BGt5na*3N(00{?gnB5YZt<ltgM-7+kzy06#D%UX0-!j0ZSqu|D7tIqk=BoJwlab-2- zzaBjkP%97(tzyj$76j3_bsH=ZGaX4yGLPi*LW1}X{(&=Dn^#}b3r7IkK6!$Py zeLxZ6zySqz@JBd+z=Q)G9~2IB5)2#|X5euuL}A5UIu#tiWk|KQ7!J(rge}dtfxce^ z2lq?bx0gK}XpXAyHb=)bKeN)BQQ_bKYEA3K0h=Z4PL73xqnT7nf^fx@qv$A=+hN^` zA%K@b6q^pE1F(_rf|{(6S`9>FoLn&dH|({N7Wph;U!QGh;XW%F=IDo5wdi8pxM*4A zLX+g!>1mm1Rwdg}hWrkNG9FFBa9B)NhUP+wr}^Eh{6c70jEKMn=i>aGt2$cWD$+0# zx>(cEc!~u+1|p5fUa5|GURP292;Tvkk3JI;p9xlo!rB#PP=R!T{O?p?61&X=*kjVA zf}2VzxL)Ta%9$XZDx4cng&MA}s6dK`OuK#NyewoW4kBlh#^){;(7Uw@mZ`#r^ty^( z#Ek7KRihW3AYm!9Q&UaQC+^ebqcAkptg`@?U@mE}igaZZb%xmoNlQldivi}QC$aom zY-W~tZIy-<3&69sdP}oU2{)dlT@=0|HEqH`0x+G8UBa+@Ne>wF_WX9)mTvwLgDU9ACkteoz=zH zF_~Yg>ZJD|7IHO8>LFWZ%_=}H7dW3KV)v;`7kqfQWLSrcR2^M?Obe}$n3iHNi)mpS zSj@Djpk!4rElF3yeN4-mK#nNw zlz{pSsWb*sVJekaXk_^wh=&CpmO6|ar}#=}WKb(gr)sR0IUs`zF@jD-UVh`JN%xDz zUIMuuLB+7>vYE)ntj;mD9$m~vL4GtbTWimf1=S*aL0~Ncga*Suebw{}FsLN#H!)G- z%h4*L#NvwBx1h%9Xq(_-8Tf`(xNu5m_$lrq0u~?x8c2P-4zh=FK=0Jua&s)R?j|$8 zT47ry{LC84A1!7ocVMuMN-9{gjRQ-!F({5y6*K$NQ0j+ir<%CEicz)l{*aVE72HJ9 z(m{wLxJ6YbVqAZnl^D0U&V4vNEm7xU(Qygwmx$JNHhp__fqAjn!I-?JvXMSt%RU-v zftG6ecX#JzoUz?`bMfvR`vL^Q#Mco>IM58M;!?YFxU>c`?d{GzKePu$_^x8)#DdF6zC1qzU}izSU{E{&+z}E0U4n1C3D?Lu72g%Q6|k1WKKW88{?I1akRaNpQ z({IkCDjj^limIJ@BmW;y?AF1UD;9$k$v1yOds_T3l*=Xxt&P$KU0iLyaX_6Ri}`L) z9X=Q^8f%}mgPoGgZ;JVXt6zeqAKVBHg$d?WS)%Zd1k9EtO>u$oD%NX$>8xN`f>1DK z=&7!S03x4>wS1r45*`1bP!dU z#dP9AZV2p6M$mBRrC?f32c)?}-Jt!(NqzO<$XQk=q!UdUuS&M1>aWxvRU@zO>*AseSZC+41-wpe zM*`a{TZ;qM>6=^Q$Uom~ zvIlEKLxi)=`p5tQ=Q?HG1!poA(i}Lk5Vm|nIp=#R((ES@{I{W@?kKn)i^ij;U0?+d zpH`$aaX8)HQ6NY19X?I5{}7JmL`NLPC={wK!c=c}58*m0%tTW$a9A^`9<1QnF+zp9 z>hggx>>d_7v#AYEB&FLp!{)EV7PJd|lt8xW`IA|P%yXe8hmA6)$(FGR+UBzyNeUa+ zIilxOxSXonFeeJU93$vrJ{0tD4nnOLuDQV&8QHs*8}qTq+^d$4FqxM%U* z_ww&WL@-}LErv5R+HLuPu1OvgnZ)5ig#o?C)AuO7*VB8IK7{i%c@8y6-|y-BmA>86 zw=2Ed)4P>E$QefRA8e3*kEh?G^i7_=N$H2`mgk{5=?6UhfYNt(`VOV{czTc0-_S_L z;TyUY<$$LTD1Ec1Z&n&lSmk**CH*;1e@Q#$bbJk9BC zQyS|1KBbZVm3~As>IOI&Cq-&$x9q&Bp6&KpBsbQ4mLgiJLn#Mif= z4<}6%(rH`uYDXqMcq082l}B?ID4TxZ12(7d=(hTt&;0Bawo1LQm0~#I z_)~&J(+zzqOXE9WX)A5;(GPBOR3ZM9g^Jo`4k2m?AgW=6QY;|zZCnD35?2leyjoyj zk=X%*tZM8e0>d&21N~swUz+WMq$7p(5N?t)g3jkvFi}DNlm!tk z2-zH{7mkB8gVKOEa}L*{yqB@p1YC_C`nyxPHjrXxMp_ApaE!1*JYsEjQrO*6O(B*c z{Rt*?SO#M)Q`fy27vV!%Bofnwm z&(3+0dR>-=JIlAw5I$I?)E6c3c+HC-87PFp$t4p=T2u~mG~UesQi%^>qkjNpnUzhO zog!}Pi~uWmQ;XaZRAy9p;EecG81Bt;7n^oK!J1T7n(a@Om0}Rr@48{wj8Uz;g-VBC` z!C@%WIK~X_P9L0CyF5jL7Pn;u3py`=U^RW8vuh^ey0J#*dW#@8uFvSA(Pj`AamOB? zJl>RI08!E0Xc5IpTB|pjt*N2mtUWS1mM=Tu#PO3(K4szwr%o<^;*(A@9Ew+l`UL|( zU9{aP$G+7b<6CR#Z|xrYUv8KMCstQ}-pHiB<#+#9mo}>roE*qGe%{Ebmh+uQ=5&oo zU!6}lTAggHeC4p#sZ*C+#rYC-;?~fYvwhykDW=5{kwKais_55}EvH|y8PnCYLl&Mp z5Bh9y&D(i6?*xc&CW5GDBAe+v2{y5VYhg|4WB6vSQodTmItg^#U%jG7!?&nP)$`S> zPgH$5UIC>~m)Sr`XGZa23J#6#8l<^HNtGQWQKR4%)0eLTNq*p&XS=w5LQ0MDSos#-Nq#UFRs-6hK~(4#d1?*hh4NNzXUa zjEHQZoBox^D8?2yk(E2Y*8L_KSXFusF}y;yj~A=HU=-Up-9lkv1{)2jM{@*O!MSyWJjLoCnw0zC6g#tT&7ENWa&^ z4|#^$N2~$pgZuJ~o;NadWLq2{>dON>t@iNZwlJ0S<)N*nB6<$?OPaF*cp7b~J)H2% zv5-{S%L6?1BioV+ua^huqo#nigY~d&>C3}-r8==Vn8yVx-q|c8PjY0QWS}0#OU_Ay zv(S`1TCD25)r5I&auIWx2!1r7AaSj^fWS z^DOf}8<=B^>oM0AsO?`VWYF)wQpn&2zk0~BH@O14h?m%H6$!3&((%NIbG8HM?iPv| z@ez9?2kBa)HA(b1BeG{=+8|G&kCxp~yCKXt(r;=LjviGTpPn{F+0^W!9jA24Dwb;R zuJvD=e?(Tv0ZP<$ArwyxcamNGYh+S_fK^dciJkhiX$~f&Iaqi!-A+b%u(x*FFH#db z=T#H=1j1wI<6=W3-a3p8Y%BpYo&mGfzeFE0jL7N+MnJ?=qYo8JAe!%eeNM|>@w8s) zd`2=)o?hn!GLbv9i|lqy8%pmQU(_{pI(Qls4UTr1qE4z)c)0q3KxX`yJv@lOeAGlK zES06UiV?cHL`+xtvkz1Ray)JJQA~Xais7K!|C|(aJS6u2R}$j7$YYSugQBMCfOb?tQULMEqc9S zFe`8nsil{7vuE9)*Q*AzuGYJCy{zjz>ngp*AkyEhX}w$7%evCDuFz}ZrT1rLuZz8~ zmz7I}H1*ng%}%I4E3*{=te2H}T+Y($!_Bx^UOe1d5mijcpW1jIp)npEjT-tV=KrLT z)+F&st&S2Ikp+H*vdK6UvPsz6jR6_oK>{*-E1BGu@j>TQcApJDDAnX)V4H$7eHw9fQo;_?A$rjd66g<|vHtSeZ9Dtjfr84h! zPTF(t9AD^M5o>agRY#y7o4FV9d1RGd)$dD0%cFLLNnQep3^OUd{+YVOA%3-wZB#~p zZu_zac>8>zebheWld<5j^IafiDQYFTXkJx1I{(nxZ3`k#j;^T8W7RfW1|pM z$nS#9Ukl4B?hixRp(Gyiixtu6dtfIm#;^kJsg|`t5*TI*js`(bkk(WSLL0*LaTSgN z93Rvi<50nlf2lZd%QZ>i;v^ZWX0(Gi03$J|I95h^ zn2G!sW5I>($lffPOS&zTc_71HV@`&d7t3q4%OM`cC;{+TuGtKhH7vzg*c)90D#?Wr z(SgT7#q>)@ZJLa<)8kOvWb4O`qI;986CsGFkG1UfnsZJ<8pI3%V>TyjM`o=g5}%Bg z#7Z;U)soNC)A9}|qF za`7!F@Aw24c$jIQ$yEfBF_~M^@VbE%F%mRjLXkkmH`pj%BeJ05&E+z73~c z00)+nLt6I-H>~PYgR5c0e-`3rPFl+HTr`PSGxj!(Yns0tC{(9<$b%NN&d@8(TydOF zM(k5andFXAj#dRJAn~cR2>B*Iw*GKp2Gz3}KYCOEf78IY#Wo3lV+DPCZ`p@YC4&Ob zgw)N($ihHZIsm*k@J>-C&>@$lqk^5^#)4rOee7&6Pc%|qoBPR8CqMnp@}Kn9*cy~# zgS^s4N0<;2pwo$P+JB~FtqTI6?+7<0+c}!Z7ajO06oOb3&psk?{L&YVuKe2|3(+~2 zGLwvu3-Im7?He5kEV-!Lp#ltJc8Q6(fYnsTasYvfIEE4!UmM!^Lc2nthBsaQ$EQ#) z)$4**9=W+NQcO2(Kv=qBqrsw~L1vGo{6+dA9Mi3Lmk=W%QfzmQ>FRXatDmZE+BP8x zcSwi`WC6LZv7~(`--bDWs4J`4b>PS;7Yos}%(Ibp3xOmZs0CJV2^#{UT^hV84>XRkFSR3SgK_}XN`*MJ%A z5d{YwOb9+e0GM#Q{7v>$puz)X#0DZ6Ez2GnyyBKF#@ax()lzPfnf+!aX~v+@mM_>q zRtKt=6*i%)jz6FTH3T9S#dN(b^iDQ<-8suKAs4yA~G#G5<3F6ixwmIwhB20EAn>?^16pX`{b8{^u*xhE(YUs=i6f=-PKeNRnlp@ zAi77y&@$8FRZmrW6R1Zs&CZ!0bMk}$X@|k` zqe0e*Lv%9|^s3M1n*C~JFRLfqvwkI^C9X$j0uuo|aZe4+8Oig{j-p*>?|t{?$o@IF zao^2%cj{-upD!%@@fS-2PiF*1s z;(`gXCV7FoZQ4pDHxmu0Rx-n>y(M>R8P~|FSWU$=s!XZJRj^$ZY(LI|c~vlfTm@O; z7aoCQJfAUsgAU8p?Wu1v3jxD`Arr6G1lx~3!w%L5|BR%i~sFjID$GIB;mAV#k)E}~C@1V^WjR4H*hvkm^$i{2Mr)D0+HFCr$&(98G~hZMcsay2iWmUg z+60RYpR2Q=w1Kg+OckBDf2u)037WSb$9^zVNAMkH5j~+e@wbIbByav5zJMdPtXXpS zY2vO{Qv{KFuKixb+S6I4Nbss{KgVOJjK)+GY{9e^mv)9~R~AEOB&+Ih2}tnIA>IhkhY*EeIPYU zkl=(|vMvb(f#lAjap$JuWxG4eJcuw49Cn0x4LR{pod2AhBlIpy2r#j%|NZtx&P<}Y(Fz?fGv1LHW zLaa*p(VA>-&!G>VoP`SBBnNSu_DFQGvbBrf}P<3%;^O4$I>ynu_QK zgJM(B?uUb$wJ+ljTjVJ0dv!s7a%DFvQ_=EvTdSJ#^s{|gnGsJ?WH)N`;u0VbCQ!^L zjG|tfNP*irb$35v_JuoxF_>)jVfE6GV#|_)95K_ba#>7oj+&+72>-K-n8y6lDqRiLXL^b+)d(*zV^S9O} zUBNILC1Bdh{s9vwcCgd`RGTf!Mp|RRHeb87jb&Bx{YOC-s9A(8(D&HLBJka>5?L$? zKQpo@+eH@B@%WKd!}UAcn5i)y;>MrYGdi?D0E1Hp2pM(PzAZ!A%^kGGLUAK7S9B0DEQRsFfMl<~1f1IhsKnL@=hIZ)p|}-V zSyr`Vx$N@p7N)HRTe$Rv^u?xc1{!M`wXZF2bVaa)Ygh{b(&!WWF9uZ#lGnOOQflVW zB#ul;lJ6j247WJ##i$5o=fdcVwHuGK*E8G8l@EbZVeDqB3gDLxONua*!XJbcXE-_} zlYqjRC<;S!qfd>}dY%7z|0I@-dM_5IYOD-eYApy`7E&9ukW6XW69#dqd9cpG0G5o} z>{wTj5?cp)=traMPg^rF~S<5 z{yI|FQI|oN1lSWXmBdWY$e?`Cy1`Dy&R3~23oDBSBH3O;p&Jf>1=TN68D+8oXSJ%j zQz^$+)-36UV0I!=^e1dWZ1DKKPG0k9tyPDmV2a#|Pz(t&!s>Y`BD52WaGn2{*0Qdu z{2G~kulnK}>Y7kizdlOsYz|4`zwNlW+F3FUG09c zC>wMmVN@9=G^Z_v($2$ozWMo|G!#FHS727Q5!BR35DId6Gvbwu@TPauo{y&O;vQr$ z|C*^+!V1N?cvh#wY9O;PdfEpdlEAG$z{BMbj31HI?M1vSmM)mAMo?N*rG^u=LqY1a z9}!gbqIoojAeUclO-d`Z!of$@(EHVuB7*ur^0=+TwsJY>S$1A2aa!@2h$8`3C;2b6 zm^IoE*b%NI{NyKy;Z9L%tFUhBg}YPUFR@ah6*qN3atS>?GxqQo;E&-kSxP-)2hAV& zruxBTNqvW@uw-@51Y;E|VSkjcTR`8*dpK&!I9YE+-%$7#-6n@gi+>yEixKk?o+bPh z2_N~Z=~vWAv!Uv!G8Q;_9ci+O_ND7%1F7CJ``^q97-EwIndRX?V2_tRkG@~UB{>{<%kDi3~zPo7R&=TrR@Z{;~Nw%mZR=Qde{dhjD2D9lc8Y8 z0tOkl0m=kq*Y)a~I>^TlCej_YDn?@655qQQqB~RHY0N}lfaltEv$hMxKo)Oj zUK8IQRDrWUd8u6h=bG$;xJSj|PyLm`&1-k?f34yEZp(XpnU}dcoqWUczOFAXoQJ&M zlsMUVX2GwEJPamd_UmXC68UvB%iR5SGz*{jbuCVesdr`kEG`H~+FAUhd3fBU4 zAwx?(5Bj&3|II{}y*#l)a;0v`+mklOQ+Y>5Ps;8FKCCJ5X(ULqI+|bUvHU=a*aT7m z0sj`queMy0U662&$HT@2epZm%4J`^V`bQZgZG1q?*lMx7si;H&(H{r~iBwldTi=jY0ikC+I(gd9M@@atC0${bI zR*T>&xeTL1%&^$7NoYh!hy6}-vRy{eeehLPC?Wc06R}Bf=$%#a>?m5;sKqwF|3pTJ z_n3jSA!3^*n^Q|Rr$l!RvTggsGUE9Ak@NFe2dI+2GCHxfP%1iUZDhy!PET@~Z0&0c zXFbuRU3`|6qF)6bYU9j3g4;!gBx!!@XCH zu!Aw8pa|b<&()`*y-s%lFbpd?w$;&=nb#TE6-M|l+llqqd?6a{M*g=l0o!Zj7EL-c z59!4Q&$pU4+>)-@6r-70c;w{^3kME+C;p2=o!46hmtwN%^%k5u;iR zuZbcievH*tv;R`l@pE8IO>DKe1Yw1JxupNg#cQG!p66L>qG?Y(dkq69#}7I(6GfrW z&PljfpeYG{?h}xqmKSxQWmXT)j1Q#qXYoh9KQq2JEnEfVqGvt)Al_bmoL|px%;^?CtYCc3f>@IFwUIC)Wo=C`?F+d zS6zcUOCSNUMH{b>h_Qv_+{vloVn~F?Ot+$pNq*?bY=Ef;_Q<4RZ_CsQ6WcXh9BL!v zS-gF&7~W2xbl4Lw6HsCc4r+|mzVvXhk?r8U7*Fw;CMWyj z)04J_)KcSybH7z)~?$LACY96KcEK!t^XZBhRa6Rf2Z8D=?#ice3d zW&(SnSDhOLx6Vi=N(vU!rT}V!Vn{9pWYr^g{K)aF9i%WA5_vay6x*fP5s zQ(KveEMvt$>o{*cC+Z2%8K$_bV7_b|m55fzkXww(8sISi8c^7n3`Nsh zIFSjIU$%CdG;CShKiwVV%Ks&!@4BtJ;6ico6c?ySBx#7Jnj;IVO1qF4{;B5n zz#(KJ2hN9r^;i5%m$YVg#fb6FI}&)uEQl0ODg6TA|0uMiA=KMacCCj~%>&tHpKcM> zLcnMI@w5^y{MiXo{v)<%xTT$DuuUVK&P2pWN@oR}d~;EmNv>fYL%Lcuz^ppKx|4+W zTB}L;(5FCj6n^wKOv8MEOusFMu}W}+Fc4dq>-4-_IW47?Q`JZ&WMv2K(3?#V^z}kX zqI=oE2Yf$!XAcK8P^cA1%1E?Hk~?Q2BHbjj;1IoC98FInGDCue6?j3B#v$A$Bv`eHH(UQ1sWtBqdATWu03i6UKM)}vm2bA5bI5* zcHl!yD?EjmHmwvsm}`<%aN7iY^mR7QzhtKfS-I9n81#!c|FPV|Ku&U2^zZbdA9s@T z`iqlZ3b8LePMDbt>m!dD)(6v3Dt*~eD+MNj`R~?O0Iyjet?_qj8Sw1=DN&jeIinpa zZ*tU>M&fE}Tk-I<{Mopc%^Lf3+XGH`%3S^Xv*6j()Qx6(K&VpC9=yhG`QU}zrN;@r z`bY%hWabgVF`q(lYaZG)rcy}dGDQm8DX9dZHZ;rFNy&NobY^_Qz?+Z;*cr2pX(YL+ zc1GeX{5eP(ecvPv%xE^Ha?_jEL&4hY!4=Kw?tyD1kAcy|p>6-$*2(dlC7sPPY23`aLu@G<;{I|BaYOFGoH@`C zHyG{!tKxsT#xFU>u*1g~WA1DCm5(uDIDZvm47L0M#<;-g_TO{ zh4vilBb=1O?)!{ZxsWnKTHPBXkui<5YB7D_08}6WBjovaB}PFmt^DnpjJB|8!^J{X zGkXln%z;F1<6Z%_M9Q_TT>jb#mP}i&4XXeY8>p)Xdz{B zb1PFAZi)XZKT$8d>&c#L*2`@1hjxn;6*Ic&{Zd~@A4v}x@V1U$Z3{QsYkR4wjz3U{ z&WfbDK=%vV(@Pbn+(dz0$17ar)vxmh?uOPOvK6RS!@i}Px^1v2*r6&H=S=bUFqR4Z zh#XC^Y&v#M8q}t8O|AU(?!;rM$D{HdWT&GE#^oqY>_kVJFmCV)_rd#5i%x5c}E@X!bf{r zja?%Epc2@N(FRXW#TgJcc1y2~#%zUF8RZNeITu;G;Oe~ok&?s|{)Znt%^ z$b?AlaB+NUE9>|~RyBOG`xHKL(iJ{=2%naFgZ!}X)3ON)DQKs`LBg}N@aaf~;DjKq5X7XSz|BuPn5fLq7usoz^acLdVh<^50gJ9in_}1RM(SDVtBAHn z>s1tPd#5^-&W8Kn`8546T4jCaD^)WqO%Pd=Tp@{>jYN?DVN=I)rLXXSd93G|oxluD zPS;Xa6I24aozpwq#I=+he@C1TF)`{ zy(Sv9=%F2<9V@M${f8%9yZ#0QmMfWdz*9f_6Zda@?+uUZoRKVxs^?udsPNMk6|VUq zC4X>8$r7KW1e1Y7N+|Uj4#ZL|AFD9oMvvOEiOBx-mEP)w-s**q1;wk5nH49BV`t(T zv$E+7+Gjue2y`e}rlEx1)Rka7N|=rcnzAY0m<`pt77x{8Y#-xDST$7ZZKxKH^Rcj9 z4%N>#&gD=o*>ZQN*57b!)OMjb_NX#c$Ies^6;1y_hANw7P|b_Pr@iDJ=J+&|7V*mV z(lBHUkkQJBFqP$zi*e#aAPR`xWM63|Tp4gxrOc3Ai9K0t6`razTH02}F8|=f&4rj! zB)0m$tbnQAXsh#yRLFnm^gBcQO|@J88s1+Fvjyr5?}tTbGsO1}J01MvCb@~W(_k?e zDu#cbfN;{s4%VUSj=O?X8iIxnOu2U|Csg1?6{yb1;LWX0%QW;wi~HG^>J7#psXlv< z^!2R|7#R_&-mtgz-lX1}XL)Z_O^K1JW5->A^(M7Gs9&UX$VO9GGdVVQ!eka1*EzKM zRa3vXsYM8AR2^@YV??w)4SEkEso%?AeLx|F&jRDrQ1d~uW33F5^mN??2(Cp3S$M36be&GJC>=qH1p73VlE$}7h+5uz-GUI0 zHFV}+yJ+YvB(thHo}ufnps$kv;v*)awo%lc&ALR-G=xBHbB&&L=NixwGuNrJu2GcE zY;gxEP>tJhbkH^`OLb7y98U-PD>zmMk-wZc)xj|wz_YJtpKKkaIb$e1^AE@gS3|0o z!b15Hla7lD=0BqkP6nN>dS(ZDhtYhpL|Z@UHWPO zcmb=vf(x-okZQwgkZ98NN~?)1yNceiZz)ZHjA+@LOW?jVhty}ySrCnqpHfg;7%j9A z23waT|LQ2)I>*DXF0!Eu#JNh8D z)J2GFy?`Uv8lphRVxH#r%4nFdcXZfosJdO48tlT?)dgeRC0Y(`?88qt`3IB01y0KW z^J|gnwy`7#=PHS8u{zH^X88}|4*GQ$tTm>nQ?WU@q>ajnU)imvBqOc>Vk<3OCCj0@ z)G&I3PH_5wPMlz3zFRqYv6ROvNaR1AmJ&o}Bq1l6O(C4=qV4>4@9~F)>@Pu>aR}|dU>G|DTBZ}Y>?dB zL;||`r>1IDKg+W~CHoMLM85hmC9W!(2T|qD5>%^W5y zdne%a1-bu{k->}^*EnI5CD~J(rby9oEtbmbO3WpM0KFS#ZuoWW>O-pM>XuWt&W2%JCZz{f< zbp%&x`4f~~f!EjNvZblVV>yRt+feF3HuA9>NlOM*PF|an*ETA9{cwQ)n>=T9YvD=k z6|sLAB2h`jMW&heGtu%+g7bV}e(ebNehgiK9m=J0S#q`hbGJ`CSn&B2)S@|Rc8vwP zd^q}jhgrmgn^Y<3TJ8c9S}kT%XIR9$5sERYeV?g zy>EBl4sQf1TZ8@V8*gso4VM(z-<#2fy>i4sxJ_LHlznu+ zyN=pcLe!wh92&vx46B~qDWEG(Y{vRaO#xki0@3rFAjViy&ILnUH3f#|#l%E)7zK?= zQ%EzkrN+VS&+kSGUwIv?&2_>j1hcn%u5g@Q2TmtYb;t7TV$unzT?8oq9>}X)@qVEM ze3^sud>)YR3ydj?djAk8h`sXoh?fH4V}Ck8yqBwfqum!4N0Kh)x$r0jYCY2R8D%Ay zRD(ry-m%L7exYc%)Y0&4N5dsuG&~P9eBtq;LH@sx9+j!A=En1&H)dHnsrQ$N=}q=} ze85QIvFG>Ie@585UXh<^e(zR0v_CMv7s{7=nBS}Q{dDxkGRKG(Ier@}Td0;@wWmehP+o~qMO#7?V#z8QluTjXN{}@WK9HhlzF+WcbOldTD}#b3 z9?YfS$)`cV^CK7$f&7`_YA#xg!^cb}tNxMYaaG`!AdvAGi;rbTd^K==y0-5SERD;zx{PW$2 z!uicZNJ=2x76tZM1Vhr6NF&ExqohgUtB(-LAkB$dlo?B`E(Ee%@Z_3ApEz8-V9rxk zf(DH`El*j(SeA&r{8k2XQx-sBe6#}#*SBQu8ZT?Fx}1xMKA9!MxQF?^A~VBt8lv;H zqq@*=ZI*y(HwdgUAuX8&G~1KUM1>qe^;>Z3&k7FE>NP?cU}XZhnSV`&#_GqLxj6$P zC$8jt%)iTiQ>Ldvn`7dvAQfG)o#n72B0X^Z*tXw{K;E5K5#6X`SK4=&N-~WoG!I5% zyrshx7x3ykTEZ`w_h>_SP4bfyi8!3%{d*qY%inOgp$l*kN#~2!Mf3CXOq3ySl$j_X zC38oLOC*pKmk89LB^Wl;sDqVEZ9V3|D6_P{&#fg7T3qk90~P1><#o)LaY>M6uQ=6C z2K5Pgyi9$dHm0@cSOrxK2%3=4msU!GxALeQ=%bxUHpD0FkVlg!7N0l+kID=aj$$~` zWwr%e7z|ks2M(Mz^Us`NCj(-HK<+d890HO~Zq z(PzqV+;p*Kxdt){1q>q;I&&Whhrk4Ji6@vhg=4iCy+EfzhB^d~3%1oWB$1X@pq;;> zo_U>Oh*YDu7OJJ0Tfn729+yLJ(r801di9RzDs)qd?dc(d2S^@1i?rXnVg# ztGQu0H55d$U6V{(0|t)}QH=49nX8ui3hSVG|H!dR6UI%OLr@T@@_(^Y!O0miI${1X3#f1)KQm~ngSRkutdu(_2DsqtGVU-i1`YAZF^8D!14B%i3vBlMB8J!w z?X!$VotCDJj)BOmZTt%74c>((?*vxZ8k#P@lk%^`d9emD9 z&3Z&N;!eoc8VK29DQ+P!Rr@M_*_7iI9t2c8T#_7bmm3n6Qv!m5t{OJ?V3rLyr5Ht| zSzd@!4KQYLSMzE3LYy@Hln_iyibZL`I2D*UhsR$xVO=R={JMeqpYHuD4nb*QNfiK` zTKRM%JYh)Rb@DBWbWSS?|M=kR`*Q+G5?=AebUNa$R+Xo}X?XP)*#XIqKsB-cpaYCp zNr*U%;xp{Kehj6=$66hA3aUl9H!LxRW6d;90bggq=9~~D9ND5My$8$JQ@a{lt-WfK z^L;XP#QB3~6zO0Yt(25`Yf^@dDUu86nj)itaQ1arv>*lI3BOpoHIrUclg?%X;}<7U zFH6^fQNH>d7Fh1*>?4u{8+_SmsD!%kC7kOZ{}C;XSCL+cI=aE~PIiQ2%RVlCK%Z3DDybUF$m?cC;2pp=lK!Ns;nry4#dDEz_t}&8Ri_wS0AG&CLSZRk5_tgr5oHGb<3Evsbqv zh%oNz9zpf^{?*9LjZQuxtxb%cJfsUJ$45@evJ>0&gpdNw;Zv~Oh9@(VCbIAoOd#!3 zvhWIA>Dnh}VS>j=Sy;|voP!cPPDCT8OebXFT4mz=#H;npv+z1SiRAMy`aYV4m+SWk zLHPAV41bfJItTy`Ip;uMZMfi~9mozLgqU&VN!hqODa#3|zJs!sORNd17iW_O7w(Hz z8oyo9Calgd=&K>s=f;|HT{QMfXf=E6RvjU~oTiV_VQ*S;k8sU~!*LDuO1AIfTGR{| z(y3%{S>d{uOSqOcN2^GQ>$>9_XCucoD3|0>;#wy~bOeQ;78y#{%c?aFn9a+~jqq!& zvCpYm<87G>jjXECp+z{I8r8Wp4RE^2P>sg69AF<-+GS?9yt8g9{0?c$+th0bC2G1$&ul|03WI*_6ktVR&}&6uy<8$K)~G?=@f4rMB|SsH zee?`9OFi)u8N!0uP0 zbyic}_^r?U1WaKfwLUcyWr4XKkckt9VbWe8e&d*xU+xzQTdgz=b2@S4qbCv|J zsR#xEp<+ou4Aw<3M?n0}vL*2(lX8!o6~CaC?(T015?+EFe?cw%WnW98IQA-ovmwiV zR|m-BnP}R!*sL4l@ag;q4Jm@)#@Zd&4#xx;bY#=KK&0X944VitquFF5Qda(eYNyTn zTiI)4JDHyU5&BBWN0bZq+;^6?PWBs*WeG$dr37j#^H)|jD&>WFFwd$k07FnsFiIW+ zGzUnaIgnE^^>9(rnxqF5!q+CM|M_6bKA0rwl@c=XWHlj;ljYT-oYMn2+se7} z#!l_I%BfwH)yYe958@R2jh(u_^;NvQs#uo8VCN3YytDVzIi^)rT>1vK-UG5tN6whxh}_dUwI6fskWe)@g$mww4GA{g{2GIBg}l;hR+AavxV1#P16^KX zyHyq3Rua&mjrosQ zgLiSIt;mLLFx1cNev8n3LL9Q*J-8G3L_8p zc%2wak%AG#8XVZ|IUnE->~0c6)Fqfm%f!44KJygN7Yar=gTo%?WJzqMT%$nap6;;)De+ZMd@iN6b_41Y~{5B9%oWZr_ zg9YQAiS7crlK60lD7E6mur)oDg``z;*T>v$)NOC;akuv~z{iCj^somY0d6Y*_ZooN zSsGsWPB}0O#ae>y`XDXn0P!9C0GTyb82lfU#Bsx%XCjt9?xfK16E>_8p5^n%x~V^^ zj?z$)9?^530a>%e+LTSyV*VD+oO2^26+&u8aXS13_4Z&<`$#*yl#C3iW`CR}@s;NL z`GC$Dt=*h0?J+4SvpXT7+MZ$)z+Gf|XN!xaRwz`0rB>?H zy`@&`WT&MztW`{JmDs#C+3d9gh0Gbflm zzszD(^M(V`noD&BtCLq|ra4zHhBXiC#gOJEr-L+K&29Q-j1L~M2F8_cDe8IvF<)or zP|QXU*+Ya~Q~zuLeJtJ+FKgHpw(Ltps#a{3KY&P;0E!;Kpa+fX0kbS?&L4UTwF(9p z*S$?`r1c4BmLEJt)_{s&yuJIZJ$r3ML`weUfWDyJ@w;cTCt5iTeyl5A%p^w&kr?lX z?8&kh=;*xGL1ls~l$l6*rh?e@3>4*){Lh}4)ktT#jhxXJ29V^%*+){QJ`{`His*J2 zH*CX9@8q!3(rkw_=Wl}*Oen8dAF_#yzAXzH@ef6qC5S6F3}3)n5?0AdVXmHXB~eMt zKl+L=Z6#Y)lKmCX(*rv1@$Gz$YPLFpS1cQ4h}(cWEI$Una}HazT95LNU=pP-3MN6P z8#+|d_f71Muj(BLsrm;16p!<7*C=jBXY()DPxVu)GIcAnKK>AT^;UjpLG#swHkFne zS}x@F3BU z$|1b>h#}{P7g8A9bg-XZ+Ff}I|H2v3fnU(svD5>_p1VcHtyHIl1u z0JmqmSp$2quvmNdHmFr3PWt=9`CCth0p&L)$O3$lNkS_!du`1QgdvG_w&dO{BRzIw zqLGpq+m^pk%2d9cqd7nCN(ri9YMZ7kzp2d$$;8R+_BbMQj3Ub}q^uM_yKbFQ<%h>4 z(erGg3NY1Te}?eWQ)n{g!6x?6F=YXRxLsX-zE+kp>!qpJb%sacOzmotsv_?ESYYifiKvPHe(yjN3%-?YKTe7SZ1o>dFSA=s$I@ z_Br%^5E0$_W-Ob{P0{a-#QJ$lH>1DTj+}q~<#6v&cZmB~y{8ZT{W-rVn5Kz|b2$xbfD_ ze{uP%p7^2d_ix;H>*m^zU-$agzy6CPtt#c){5wzo>IvVwmwbPhe*FJ={y85}zTdmC zvvYLX*<$KG1@aXS7%`)uU{P{cI@Yn11 zzWZqu*|%>B1{h_3s@Z@BP2Qj~Lu;+Mv!Z{&e)F%PR3t5IJ1-mZvCS&WN; zL^w%!3HEtYJa`K@iWl7CK4zumeTUQLqV z3=wG@y8xFpnemBnSh^-Nks$OkB7T2&8kQNB-3JCmjMx&R3kdn2pI|~%Kfz@$K^k)z zDrG2ApJ%q`414}|W2ul~2tZzvzj_rYmD6-N{$|3VIjDd^%K!Rgwq<-Zrd`DUTdd7o z{l%iEEt3+35*tYd*ctIFYQzlj#+x)A<=;TwadHF=q;L$P!8rWI!8m`@Z;BRtFXue> zTQ}AS{P@>TlB}j|Gf~>9g_*h0@#+j?d6ZF)STaiZssyxxGtT1KcrbO(j8mBN@8M(7 z+-Sb2v`W^)Ke8>VfyG)FJ9pB`&qOhAzKT|jMmcCEJl7B8AHjH#?@ig%hM6*jwnt5+ zKI%3lyJ9bUUBPhAxH0c`0&oSPT7>-zfML0sTM7isYjObT3cCF$ zSx}b<8|Z;4t-E4_Hyr*dbzFVms`KbFL6ti!ePQ8|c>B37BKMb7d)tU%D{S$8iUEam5v5WM8CN&x zJ{q)hyTSuw<~^vMoikFp<^ftPTOKp=aC-h^hNdW)3$?8}V#1gF>IC(()uSUXRT~VS z7?Qy6H2DfriEc9-Nn+rF3f?3p%otXHOR650Q&S=6Ck4TqbQ^|&qVDj=VZ-^rvf=!0 zFTtJl1~=SpZ_rOwy}|Qwus3+a?tt@kdxI!Z_6Dy`>y5b)N1?wrHW+1Za#*=D@lnX5?d|QL8#s5}u|4 za~6zan?@|NURv$^>2{9xyvkl)BUbNdy*F%T;8v?x)otXeag%p*Ic_-Ys;4PE?He$; zY=oHTf<{%4xa0xWHDir*)A~qvoSu-E?-4$6N z>nhXO&Tc+{8Yn5WviyrlOzdRIWsx}?bJn_^KxVWoT&ZhTt=L-^1lXq6pL8qdw}5z> zaab!?WzzN}^nszD4mvZ?KIt}0+WfibgsNyUfXI@(AfzaId$f5U_kZS0{u$h z%0Jl5vS-Lc#9Gx-;H^sI7J24Hb$p3E{1KHDQFZ`1S9-HJeD+U1@GgsD6Nh{M>nAK3 z7WS-gcCatzj$-IThM!8QzfN*1IT#ehN`W2R-L{>O_ed&#&Pxg)5AmkF3LqWlf7`T0 z&@FAL-ZMbmtk9n@VkR+@azM^)YM-9z-0%|Zn==FMAEz9(eT~d zgbgJltV&V~@+ap)w#jT?YX15lAUZQL0S-9Nj2cLjAjUvxt-Cj!Fn#KO?R20V<5KHDR%=V52{D9Z=SBgq!CiC?59cFxa>|4X;g zwAzGTcHzP{FYLY~>cp)BMg#Sp84ZIdcoawhM#&Qnl`s1OGv=%ZxL`%)lF%zUV*G;9Ar)M`T43bvF3;+s08Tv3L)B`8CifB@t3M%0N$z9 zlnH}ub2w3igDm@Mxve1pN33lPr+XD&lwK-=ht%(`jMpPN$$ypK3OYb2$!Rh4@R@7A z_^n$0BQ`bpn^T|b>!al$S{8K%&LZuRm;Jx(xTb86%xCDO!_0)c2{s4^L5`(SW5oRD zfTUE(HiswtLF=@~ig4NmCQCp+z6>&17WApHqoa=SY4A&s%L<8h2lQ94@;Ix#Si$`f_pC^rjkw7BS z;ZI3AL3eI?g;C(-k)eP(s~V9wEZTKKZ5?elsCuvl){*?%V=P19#b%gv-hI_9MR)?G zRc!+*P%iThVSkvrK+UTVUesH5s46@*6_q!V_NZEA` zb?rK59>5chLz;9QpKEy683{=xasDj`Py-l-cG{xG!=q)&bby2{b2u`}PQP?ZH?1;b zsNCN)O!&aelSZ2$UG`^pzHF1apu`osIXbER7_cfs^ z8Y1g}RB!B$46%XZLKf^*DjIcEH=uQgX0S@$d&jfv9}=##Mw3&Z5EsP}DI`?qke`M1 zH_--^31S!SvPh^a_)_SWa=3mjJ%L|JPKXe2RJ6o5^z!mxah$FPpXV?14X$oz%6Bf8_zMoNtJ+GsvmH>qA$y^ zv&1knM>2H8&=3qMyCxn`RF}E2(lt(ha5YBmfEF)b_tTFBuIP92bUmSm&e&NofZ$AL?*ycxXYW1vSnp<*gjn3?@u_@ zd@dx(v4;sOu>y-h3e-re1@cZf^cSu#$Szgc_zzg8$#l!>i`cCIY?~iG9AOHGH%Io5 z48w~)@uvIndA4E|@$)9jSKr%k>+>LoEc;Q-4ajnNsI7>SSzF2&Y$;8`!i|TV7fPcX z9=_oa1Dao(z+;%T_Ejer-*fiXOL%q!B~X)X~^BGjaGWa4`Evm^e&r$jp_ z6~NO{Yj+Zefod*ut-58w8Ks54cDgIX6~G-9ggOo zjzH@f5)}5EPTA9`@0Y~OE7+QyZI8Gu6Y2iSPJPoUFOwnUk;8{ER$3+3%KEsQ=5+lU z7j~MRMDLJ>sI4!1U2fv(wY!x$vCP!J^G;wnpsK9Di5k_ zRzU-73O`I*?sKHYcR*eIoNA_E8L}#d^Fvx|Q@m+>w8oSkI?o+g@6#@$HPuc94MIBc zfmlO!nr3u5IUs!`yD`&WsTt`^Km)4p(uH2-p#t-vH#cnB)LJcBgg+1rXsUeZA2uI) zjWiR3rtVWr^v;M^FW}mEU@3x^eWmdcSFM31K~)m&fm+WCojeiu%az{PALW;76-dyX z#43pIzM6tTD3HjIqy%W8IY)E{g6iR@p#U9%HUAM;X(--6UPvA%Ajy{`F@Pj3spwP} zedBeqO#z^Xu%iHZja~MzJMSV+sG2Ao0Q;({Q>QX&fV=87BZQXlOYn^-a7W4gnkEdE zkpfg~LSP*15dS?xNz0E!;0(o5MxPjbIl+};JHIgLL=3G-(Q+G-S%P537NH-w5YGUQ zJ3SdBTLzF`Os0{HrT7VwRS{kys3!3o>W=oM1qTQt$iiaQS@^LUE&whw=#n^l1;QmT zuu;4htb3Gz$3XgKC+-dWV)Dp=o(034>OCk7GS5n0Vs~OT zXohW(V6K&prDaP8<(!y@h8)h8p&Fm&C(G2FXoH=uwuYH76PY+e^rMBRo8=Lv+&~ZD z2hgy-A#4()HJL3WMNkL7a3m@V)#bp&5j4(hUA3S{F#i7cC!g*T84&n=Nt(K1>RY=- z<2z_jn_{uvrbW0?&^_)C(6$A^uZX062=DmO)8VU#*q^fm8k+Eq4<3rb^&gPv8}3s2 zHJ-jh=^H$KyV5s$nv&WDQCSSBWdtrO)P~p?5~Cv;NVFn=Oj{T-KRU!41WdgFvw=Fs z0a&Z337%*w!6sUrWUFisrC5g~ANZ-9OyY=jFZ+IM8t3U`Gpgs=BK|*-xKDdgCk=N%f6&MR6e)_f|7cL zM7^v=)pF$FC>EP=?D}zbz+E2zh2uE_$aDY*VMy4I7pR&6C43$OsPNwX&0wlnwi`@p?lpx-Xp;#f1c>N4 zAJ08h@TK?IQ$E?WH4(V}0cMMlrWdp^iC2206_Fk|3a2Te#lqEC(V|kNEv?qlW7^Vt zXzL5DXsJbWzrWv@bM3YBCbW9mY*=&7F~=O^8P9me^E~4j&v=HWq~EL4-+U4TurNTS zH4mDB21|K{mLmX7q0kfdwHS8G!SPHfx9%$9>0VkMpeO(7zd_tT;NgQ>cHHm@AU~%O z`|R;_FWq&*N|CNo*iVG4A6&12;u8`N;^zlf>02NbnCEeL*H~Hj=M2+lkNqc!ugnDb z#8v-u#_6-K`md;ZE?vBW<=uhT5Isjyxz4Z-7pQSsT}Mho7gE4(_Hiv_r9qG{)+veVI_o*1 z>a0{?V94HML3$}l9Fo)K>Y972mb6qYi_Fhb#7oR!f}$x6?NHF;r+!ml^5Awg6ab@s zweN5f$*}lp@y##&P7`8W`bG`umdmnx8r=|p49&0n)jP#ALQe-II9nh5r2NQ!jpJi; zWaR_})qpJgajRs;)rWDMAzpXgOz5q=>b2RRDyr_^rsNvct{VXJzNeIO{5m<%()#80 z%ftdqIkinis8_M>DnPF+0V?64LqkBeSc1DV@2~o+5fwU*&#U5QRg-5YiCf&y{O2EB zT5za+j@s*9Aa)YqqhI#H4|%!+s7uNdmy@XjsD84hgQR>6v4z@tOktB`9H{XF*W+0{ zkSUCwu8>9V2qE7B?xj@E-iEN9y2|mfcPy=lCYvTIu$|q?rV5P9d-th8VC8f5VuuY5 zL7h!Bky55c`2iDA(C`MxYycCD@=nHMYOQ*3q%=HI26aPb1)2`c6dEMlOi5WaA80Wq zU11nlUHj|_vZBF+AT%;9KLD|^parO+leGLx5DVjwl52JW46L+fU-S666rKXkv7+aR z6mf?0wqj^nX$1(%qV5&HtuP9k` zQQ=g4We}qQ)8Z?O*n)_}0kIngzT!`r74Yd|kA(v1Nj?p!o*6jr@%#rQiLsBXlXGVO zbTS`t7TFAz>_oG>sXSpy%t}4`3ZxwBgVI_o#}DA)-zZTYQ%Dm#kKSvs$9b&iDUVz} zoMM&6De5YZc@<_c9|{Y|5UQC4@=l$gm3q2~bykvfaI#ih`vmG7{cf6aH__cvl4yrc zyCS3~yag`<4l=cAJLduqqOp>eEg91{;doP7s43jas$s!OQgf z&}BL70{a;|rL-L*`%Uc=13npoNMTa+O!`A&79vYOM51CwD_^_EUJ$U@ldr(2>~e9=z7!C!Hu~ku zARkzetYDb$Pfs4cOuO27Ga1A&6+G&ueDSjEot$MJtxukQWsd;m>yu|*$*%nf@bls9 z*G77Z5l-$sm*wrd3M@Y29PRbVwl@_M1jyd>i`QblO0GRO+k3~3oZ#qpy{Q=Ip!9+C zd@LU!b&TVB22!tmkQB<%`XSNVEE()6-l{%t!9dhrNsPtmIyhkdK`Oez?YW=Sh|R0MBw)xJg$g`M-P_I9eM$ zCcHuj!VY|azKgOCa7YQD%!ai%tq zkT0jGikAf^U54zp){7wUQ@fBK*`*Nd6ohfB^V@0P2$PDT*~mvOxEU0xJnigP<-X1x zb~u~&NRx2DqbphRCo__Eas5*y>sh1xQ~bmvq2|0!=%s8*rVIp#hEFs5;MAytXo6&o z0>t3J%Xb&Jh>0OCeJf#QbDl5&YzY`MY(rr(rdsa|p(yf(wHeS8;n^Tbgo#V;PLDNuEbUO$Xi_#q!<_zId_qDx-Gmt(OEl7= zB{#zGWzo&P>HTr~HlpB0$)*s6e0V073o1iG229g05E-HR!JY@E^Tw4L)d~qB6I|=c z>@zJHMDhL^je}Z6KnqG0{vC@!V>Qb@+bTv?IQPXcauTRGXSZy~fILjiJ9}f$14W?@ z@CLn9%OPXZ3PLHeIpOXp8e z9NBvcG6Ag+h(csEQadAd^HEWC+r3qxE}Yb$4>1hWJfe_*ej8G0HHyWK?9+~d0207J zM+*+!oB=B;!IO$79j^frX0jWZd1#;#R7K>&ns~LrHSPR0q`o_BDgaEhf}`Fbk(SSA zN(h4aUSd7UKDZpo3FE;XT<*-=VMUM?aFYCM6#g99wV*%wl=q@4mTSzP$H-(4}LYBr-bk-T3sIeCMrSy^}PJ{)tg3C zTqBAKqVfe-7s(r}9b9!Ru0Wu1g>P+ztLVxe%QEs8K{9iVvG1*}Fl$6lU}Ze9sfE^rT|o4IwUEypV#^OUocgEX?Yfdic*)B{ml-KfT|H?hJa9>UnS!6d zO5`Eclbe;DoXoh0+^yaMdY6o%>-8Y02)3b!7Q8}aOm#YcuAPcJL03;F8ikClr@@H^ z)m-vKa9>>;-6clnRzB@%`;#HB5&7ApKW|Kx}%kAO1CPfOq`AG6b!EbqI*r!u+TFM+CaM zpvK3u91!0pVw9u4NdY4u-k!kG><>wv<`NA__UbGS$vpOeTv~s#KOFs$hGVlF7>@qv z2{TU=m%CF_=gF)sBB8>7St_ihX{?r9B!0V|WXe+QfHyRDc59BYef< zBjRgwoUmFxdi^^-Bjy-Bf1GU6*>v=(G8}{{Wef6we18mcL=!rqC1uT3T^18F!k8zU z^{4jzF%!>V_(ozo(=$nJG-NiK9rpC@u9&@iSdp_oAMy@s2jdLRrFBw{EMZ0^y+Zm}Su&_|Cb?4S`8XTL|-vpXeQV2fzjvUdR2A;hPIQd)io(aO8~ z&X4r($S-VuU!MHd`G0rCU+(?T(~tk;ZQ1>4|IKaTjsVoR-tr8axskiD;vjn{h@;79 zVpYZj z;gCvXlTsm4*QE(a3x)8K?6Ed;Sn3;8dcT~equ0hnY!t;&*!|2>xz5~Qv~JVQ)cv%8 zYj%IpzU{pQLYV6BFFJl1-4EK@w=w-7wQ+wjLJo8Xf*#&qbZ=9zu-ia~Qb(0Kd4Dl> z8}W^js(+&Br$?je{>e>w^1dQ*-yb=8^y?SAE>AuTUZd!se=pZQGSEj5rVkfHN@On+ zYKk5v6euyy@#FX}JS|haL`GpgM!2VZ=r-=Uw*gf1w)cLxSgwGH`VN?xhAC-M-tbBq zR@TmK=qE!;U!f3-Du*UC)PxTgE9D2Tq^7)`Wgg%xR_Ej#>oN5FUwaB zKJCoIF$Eo)UkKyo!{cU~x_!l=20>6Sg|#YdzI zvZ+_QN!iURBFsKL*6Dnym5%RjUYjU<=dBHMOvnP&N))B2eP!Gm7fJDXj)QMnF0gH$ z^R?dAl0&z=o-f8mMlcaXU9y>Pn-DOQyJ77K!x;qC+S-|neoeD)Aka9;o8kn^vOoPH zG6F6AL1OhxHFz*%DZD+-hXa4nXdof5m?IDLSq$9O^ttRM=@H*|d#mUkM%~^Igc_G;t zeZlzokd4!1=WK%9OQVRYjdKJ@ZQBCvFyDy500Xr z5tlSLkmfw05u|rd z*pW!)#oKkh0AFy`DYdpLh@r0136fDU^(sDJl~27I)+Zx_jRH0~jA;%rmQRR>VRN7q zO30f4rRX!cjw6tnS3cMnukwT!obX6&RWR6FmbZ0TLA!^9(aC&Fm*ub14RN8WqR`ixjIsB)lDQifB%-=W0hYL6g#l!!pBbKpDi)nr zgCH)PiKl&TbYt^X;UY=HQ~g3&WpdH^N&La37}9^;D#%pce*aHslqpUDv(e5sR;8o6 zhpwy7Js6W#BpvKfOy%@^w}2h^L<0vcuyW)rt)Qy z#VZfyJa&uI^w=&|A3RV@-w2Cac*$#M{mQ(XPioK==T1zXTG+=A<-~!pR;;tr@@^rz}=WgxPjJ z;-d#$;&zp%VgQXo&u7hq(r6j&2_^TY#9FHDtd#zCN}+98au z*L>I;LSV`HoEXuJG`<EP@~x*ywesNPS(k1gL368`wqU1w?w# z9S`oa#U$&l8($@6H=ILa@D_nj4|`mi#Mr>BGQna~*F`LnWs<@EJ+UaGI;g6!crpw! zV!&Zl$)PwLbZnsPcO{@ypJMS zX@$XvL?fLe8M^dL!Ld92zJYs@)+knowEcl$iVaYJx^p;mXR!+ImQRZl4Ts(=P75hj zf3kci-Ed*!s~mwU48w~8rHDPKRfR@AHhpmsRMe`AZ8@7Ij;aO<)dv26qIRlY?g;zi z!aiVzvBDkW1aaqa!j|7^Fty#w0>!uy&W9ye$F~&ODPT6l?teDQ_4|Lg-~aRtwF!d7 z3K*nS;T0~nXfxg$j1d6ST1i*bLx(f2!*|;e$V_>raxm;}S)GGf-3^SCrRe;Zfd-Jl z6<*Lvuy%yBMcDf7VR>52O??MJO9+epJ++0iuxGLwK1@sk%_GNqZP-oyBCTI&X!ETW z4M##b(7;6+8lVeFrS9<1aZTodXbNVG4$JQ;>?Wxioa4k;NDsiT(*y53$Z1hNIAviI zN6Lf~RH}niUX8l~Cqh*M8DCk{h;=)pD6k;Iwo03($JGx47*eO59wR$?ZO;vc#G%@( zLD>f#0O6W#4p$~qw>QEPAdH-QGv2ObpXi}o+0MtSx0A{;WAs6roc|I9swQ<-uh#4U z1*itQFA#I-R$r~xt8=Qa0=`IqL3#I^;6PS*3;~BZm}wi0UU2k*@XMJ?0^v`FUd&s9 z!9x#L&JJULi5L>ABW63z%!jwrPn27w>i7VTeegUBT~<;@T9ikd1(C<%h&f^4bp|## z;ETc1)u2-S+cV*Va4J#rOcw>Z_cp26F8dPEi0*KfP(3h=fs$2RC|KfHoJ2)O<>L{% zed$b59|jbGK^4Ey6Jfe=(-*8hL1cBP8ZQU|MDYn8YJUK>=w3oX_hp=94$y)Y zNO9EDUYH28hs9=qwxfv>!#JM^4ce*?PXVgM)+yjQ@hdi9S>G|Jpw}G%Xv-_BWYCn* zdmxuDoQ7pbeV?K}?}Fi4;PJWNjApkfJn9%j5&eFcQ`Mtle#i^pxos@jpJY8|iP_(?SQu%rYzWrYb-;mJ#Tq4^9nEpM^-q36 zEnu$kqPV>=K1X+8^~?lAK!7Cbyt3~*A!jh1$C!Of!8Wa@afYz4PN%o=(o~-TXZAiE zCk!sa+U1w;xu2x$DJ(D9-+6`AYy1B>6io|Lie`Bf|E_Frf&)-0>##g1#?FqI8Z)Km z&D%&XIc(%x6eH2kHF0tJRy(P)zxZK2*Z-61J<`vlA=+@LhqeJIw&8?v;uTEW+uWQz zl&B3p;=UxTjn)^+0j3(|S!8Z(ot8{?tfU_=n=GP}=S(e`nh-Q2hB6obTm<}VtQ99| z)M&EBN|4iEQT9X%Bw%}n^|uigKH=q2_S?++<>3HV=jppNohMD#72qw^oP7uUafe25 z_~41k!Vo@{a^%mzkV>ZS(c4Jv(HffTWR%lt)4WQ&mM{o;G;eoHh;c{xKcFFp{s9*| zpd$*>tj&AZ{Dkcxe9s#!M=X_Z!DP8>6klb&SAMvou}E{xHeU~Ry6mOrAxHyFzWNX0 z&O4cHc~7$6pRhr`&K)uk)`z80rBz$0K|Qf^X4F?FC`*`j@4pgz8p9|H&Ww>de=_W; zg!)9hdHKd&&2qPeUB2^7jFXAR2hM0(x1}vwn6;-M?StYz56ic=L+9QkELNKs^b^_!s;Nj}{$X_=g_@a^Bgi%OzE3o(7w#;an?0%9hDMD7wXn9Q0ww0m>>p0UN@A}8fs*|S>=+2( z4RtdL=AN2M!VN+^O?#DgX+)EaQ-|LxET`W^>@Dob1@IQOuHY#jg+< zvPV^vHhl_1buAjUVbfps9yT|;Ps?J&BqMB6_SFfx8iH7tC*qQFj6L+A`8eo?5adfE zHVrQS8m=p%IfpjNg%ZQS*W(^UY;^)gV*XJ3r8Ua?=CW@zr5J*3veCo1AOhrKKmcG} ziiJ3PIu4ryJIg_hKCKZumt5QVcv8ow!1+{i%vvU6?eugZ?u{m!DVeO^eHYF_QyNd>;U+HPI(z*lfWC*)yq)(K@Pzb8F!~dM0R_3c|vu5De=? z6EW-)-Y8v;;RADRW}p0#BC0%&lpAsAYN>B+bd&0H_1=I%^_UBl(64?3<&o+~sBV^5 z3?f&r=R8!eHyT1synlTIM&6Q;LLkY3rEQLxdn^JO+NyZ(v6>W?cYPcbR5`0$Oo(V9{DgH?`g$D5`PP@S}9o~p(PSZmTc0z*Vy3@YVkFR_@Wu8tZn3^ zzJoOvO$_N$#w6s!-iQqo&8S)KdpzoZM1L%wQlm`e24hx_#!6d==Lxw~m5P#+WPiX6 z2vYoFv?KdU+GCfFSR8`{bX>(HwqAOzQPETS(8l=nTwveVYM}cL^&(f^GZUh!Yp?&6 zTqxiQy*@p;N`u>XS0FgRg`&Pi!i9>NbF>91!0R@~+e6x#Di8yl+?s+8W25pH#kq*u zpUo()T2#)#aq#zQXLq#3u!N@Vf`*Qw@s8#rjpcm%tm|$=;7f|u&F8SBMs_6Yp>k#a zkL2DHpE4tdLt6t_4;5JXVD5`(lGEb)aKuY9$Vryjk0jY2{%9{jVHKy}qA$*l&ZqE4 zBIFW=lyZF^rI&(-fYR44LFu)^&s_3a#b8KjZG~T2Dy&}4g|-N}RkwiEOLbmdjbDzS z<2#N6=XZltb+t)4oXDmZm9wXYAXJTlQ`Z*ChZR#EI7+f#{So^^fCNw_st<&=baYm! z)LCgMP`yNR+<79F<2YS%nE%;d1O<|86i4CC+NIO1U2=zZd3J=Ztk2kuBoEXW#eiOj zbV(C9V;N4CsCrB23cY2k1Oy+UTkGNh;n$3E@p{T!C;H{OUi~V0j*UZ-cs=Vyc8+1X zrev(*>R2GLm*VyKo#vAI&I5`DQzHVu#Qktko>Yk*vfukrwKg+}rrDl}9REhpEt*Ri z&M0L=;9(+*I%ij_&##xgUn^K(b6*U`KpzrNj~wgTxWGM2m_cnvaF$NzEvu7erPpB! zYt2T<=K9ZSRQ<4cMWP5hC>!vavEku}SrU^ZHi#;Hid6=86iSHsF9xA5<`|(E(ZeO{ zb+hZ6uo(1fQAR80WXUIV1rJBKimxC@p{tUpad;5mSF|HLfbJme@d=LfZim|=+|m$Y z9e!p^y{Ovb>~CA)SS9+4Gn7?5775-FUk<d1(eM0DmoJ`=>C>ekvd_OhbsYmPqMx zUCxd!)yVXK2ld)r2@9?=f`P$|{ahMQ((1jhr{?bgy$%g$DU+|UaBkodXOc9IV((D)%Sr=tG;);Jl$|xy@14s%HHfDHzz8boiC?; zZb$ZA^%;+K$0p^spGugY-q`3Ni9sm8*@rsjr31awGVP0o)NPhnHX;Wb7(Wfsl21nb|;B=5>YeLUV(;qiYReLi$bJTgt!L2UnG`c%6DeX6a` zi9VnDD4bk)M5f9h!UX~i9LlI9X>IgM#0uDyYNUGlY(>^F36^0<+nX#a!pC|+2clWC z--k{tV3->Du++8&%9-$;ig)v2;IoxP3PN!}zP%g-p%d!U?12>&8R{vt<|;_EkX6@S z6BeJq{NNOdLk3?FjUh#(r(GHVZt_W>&_Gdc$0V8t+P!tHz%t+i=>EyoXC`}KAd@gT)v^+zAZf%0QDgD#Y9Y<+tFoK%!wL#2H+uaM^!lM$ z#7&8TZ#|bU{{wKY6IyHrm?H`8G}h{J_R%q=OS5lsV3JgSWA7YPf7l1xQ8!3UBvAEx zn3mAOp%=y5rTshCHfjIxC%}-7pOoIpn#de8lPA{5w3mcX{Nl|$GCcT@75gD!PCHpO zcLHh^=Sjg7uuN&VVTc2|&#BQ&vCob!=K|6%4LQ-eWdzkbj0adEo#z!?DEH+d&&#FN zKz$^FrO%tyiDTA6&LRlu1q}{?Gik^OqTE_B!ZrIFUbM4=h)n&|WJ()?3WSXoGGO8+ zTD*z5j|Fx1b+ojb5^WpT^oni(i_rUAAS%QJS%)wHW`Amnt(UfDHP2EXNST|F21fGf z$)t=xzU!Wqu7iQApqDQ#h?c!)+=tk@Bqm+-u0Cd}C9HCHjwW5cTQ98nZVk8*qp)mw zh047Yi_P8uT0q#tL#QJ|VfLgk#M+K7Oyni(Zo)efTw?yA1M86%s8a)KL=(Zm{H$g$ zviKrM`^7J$%4ohErjChDaxw$(s)TN9$rprl>>j1$?9*s~LD>oda;Yu@Nd}e^vO>D% ziW+pHrUkx{HL}rxzWhD9ZEcM#wX8!M_pky3(ousJ5`?(zBjGeTY90oFLH3oWTBr5& zb(r}C-^mJ9HFv3gN~$e|0gV_hM92*AW7JqurN$=m2SNA*CJF2)%PM&Z8PlqL2^7pk zrBy!67?|Yx(C(qUl%oIK4iyiF8<;2c#Tgoj zm@}RTFN!lQIdVt+wzKdBU-s0;0*l3o*>J1X3)yfqLbzQMZnb(L6Oa(XtwKR?tGq0k z=vH~PUc#;N=G=mGSiDRP*cjjoh=O2aU@-IdEM5}+(|X~yR?B% z+oADZ(Gq`8kr7OcYzN4b&h2qnFw^1;E51M+785|ST58t-NP|0O)CG6|Z>*56t(HZT zdRa7OY0&GV4Gt0V4HNNjLtIognSwBIfFROYYY;3pBJnacI4&O#aBJ-ndfZd3I40F% zOWe6jPy!oUvjK}H+fWaD8RkfBkRF%Z2*z1?tY~+l5~)r;yMPacV*KW7?upIqd)|2O zB<0b?acjr1R|wV@(M13>#Q85(`*e$iKlos_!pS8=C7MK;M$f9L14^fQ;eOOhnYo{44eC`Yss*a(`&h%^mk zg6Nto-cGK#vcGt1T%9O!cJ!mX!7lhCdntv8rX8l8(o-#N9xp;TKK zEG{%1D3r12wMbFB)*|=)Bg0BV3A<*Ty_-{T)6NYInTO|wTp1~2jm%uZ;NfY<}={FF0t^&H`_i$^|Z-ch*w9;r(^=?&)Ly*Ug zS1=x0UwAhYlqIAq546K4^DSwK z3~O#lU!IdQw1h@7F%IPfN$Nh}{VaRW>nf&d2-!Ge2){8|zd9N4lps^G+r=Wizk2Jm zz5+kIv>>Q3GH|xbNs%NS)P+GMF05+3`pM~(rSvrs!)lxEV7Xw4o;0Wxx;p=mvIdx5 z3llsPRw2-J$kf#up2yf6LaeAKv|2V7TL`lXz*YhsDt^Is74N8C@?mXZ*f6o0wXPtX z`OJmZ@6OS?(PT4-sK4E;N=H2GVG2$3A~U1J-I!~d0HZZ{lL{VXfa~He=UYZ&s&#yE zHRQz$)BOCX`gdE=c?rra?nnQ53%{d3gLj1N8SsfW$beiONi-rd5bvX`#afvn98+s; zC~~cEZ#cCXR1n>Uj_R|Xr(W6^$4n6fIJ@@z^nqj)0p^LI(*&$-=%kb4g$SH*6x3Dv z#c*l_0vL7(@fYqr2q~R~W>z(&+5e8F8l}c69WA5sEwPz&puWc1XeOA1;_R&gKRB!z&vmY_|u6S2u zR&_WDp_?Cj)NgB6pkat){++RSRFb(`nAS=|Z^R@5FOnynr^C|o`OoWPwKgWqN_^MP zSLhi5pxFYvjgIz5GZU$j!3XJb5$7re#~my&SEs9vBGgh1EL&*#N-l7E+Z!@qu56+Xr;A|c-FPr7q44zxE-PaU~D zNO>hu14qHI2}mQ3Tb5E56hlQPm7s*?+Aic%T#j;332R!Kc;if zvMat8&Sp{NbOLqNO$L=qs^fq;SExK|L@PAF$az+Xz~FQZ2a?;ZqV5t}p%vvE_9BUa z{vcMt-4r6kErjBQ1o2Vuu>=(oF|fwgQjB!Ie;BDMSc;J))d?f2Fkl3Feoh#H-cO7X zElM&O)mUoP!=VcO<8y3a9nkH}j_h5YW92?w8!)AR*=shOuOR%u^#gu}Ol|7qT3ylL zO5iV&*EBJ z4N}#}5cQD$uGpd~u37Sxuw)(uTNwY`h2<7;XmP$uKw@~*c+(lw_HPFd+ef_>1n3OjJ{qx6(wtc|$e4nKNsfyk=@3;Y%Zgay5($n-R*h|H)YyhEUczdS zxIFB|H7JEROCg2dFxY`YOe@==YV)D&3!J2lRxEB9M2WnQ_5F~A4huNslX!%?h@~Sc zCyiRh4Tc`xO9sh}81hV!Rj76D4<_S~DyWRJkB@|)x>APH?7lg3NKb_GhO7dA9|s#i zjsxi|=ysj+1JbHU!6&T*4a8j(bV4f{LK8y>HQN&5x!WYu0eY;7!!tR`{XQbP6~2+m zlqng0mse?ANVNkE*GX2Kd0#Z=Ib@w;OnC4C*oHZuR2SL@qQr0ML-|$Gdf^0#9i~oJ zCK}$3!rW^A9*+6)Tpqgo4o1-i>;7mpH=n?rxKU3g-MXe*$G{QDZn{9?b3a?VQQweK zgRSv5qqjQ-fFBa@%!PrqvV?12v)udjHLU@+b`RAgOePKZf#&$yP7^dVn(NgJF6sa~ z6VQ*}@w|mitezv6sho-R9&^(G{8$N%a$d%O9++-i&JHv}x|3(%arvN+I?hAmFe_s` z(0J5HE8peFAL^g-Hs9h7sZyZZxLjXXB6YTWx3-lz;6?dZC@~I*5nc!*64F8>5xPB* zy-W(HduC~zzrYy0Pe=#Dpjn|lG#Q|@5u==th))}p!V!a}CLL?(pEx#_vT}NUY$~q* zjU*!@X*4o2(imxujI?k`h)}=tn4h0!xX4F9g;S}Nbr~>>R;07MB^V>_zxq+Ym{HLv z3`UxTz(**hjCzrv6}xD>OzzcUEcANCSabtU#ADzE>K=R+#SQ#LSNysP1r2OW4KEmF ziJ_Os5nG+Dv`I4&cnZm&5hD&+`MF?}5k(rde$tq}+Z{&yCqj*)ANWbKZ^xr(c4T90 zP-3WME3l_F-3B+;BA{Iv=!z;$*kOYPx?g2>YIIhBq_vSu!TE(KX4k(dkFMF-d22hk zuVFoF!e40ashxJVf(FKi-K(fXadx@P&;aeikb(E^6CZ2`gC;EN(%{voDqbJpm5giHnN*TOE!TIbAe)5q41^_yVsESY|7DhxLJv5H_I;``&q2& z!^hgPAgWNf<^c3T3OE=8;>|cj8pMYOKz#W71meTr6GW;%9z^gI&W9nAYh0wZ&$-(k z;Yo{}#gM4yiv%0emDEJ3awGH$K7xbKGyR$RIl^_)(-s|CbkQnUyV~ra(j~s+f~)fp z#h|!tZMCLuPFdwt39#NrZQCQeSl?n!m02nDQa7rc>QfP(*eyYjWX1vAuxAYs1UpKIR+L*|JR^pidFDA5c$*VJ7Hcfh+TZL=OsC>BPLF!mb zTpyu^3J@xL*6?Qk5JMh}j>jm?xPli3MO&;u>5z&W^jHkoi;FJ2fN0oW9ic2`W>!%$Moa*_Y<55NODR{M1`MsSos~r& zErSuTW59!p(xL)$Ee}{3HAU36&93%agLmhtz*ctM0wD^+*ib|`q%@7;ZX{ubs_eTs z9jV>jV(3Ef0clA5!b~X|iRvl2-V+50ih!43J%ZbEMy;oj*2O%%q7%u%jP7b|F=$lz z@P*U#x*e?P(I!UG{zsatCRfp;it17fD{QB$MIj_zXPZg=70vc(jxsgCZTO&AY3IQt z!iSKtKo6Ee=>uUk&@&~pLXbcMPS{ShGALU{0^3-y$)2c@gxS;_Qk44rYows2sd-ut z!Q&eV<3l_OJLvCLEvi=Pg&g}e!{SOmnY6Q`(09>+NGMy~W^!@+E49<}0G5it&c%ci zR}g?1TLi;lxIE@s%LVt%X&(jNUY>r+KI%$o|sU`zek{qQ%F80(TplU?TM|6G$AZ>Mcb#@8AH4>2nX85=!Xk``mG{1SOo zGjD`eYhR?WWAgLEc=!Pf$}G!@%BcG}`ht50lBo0f1v|rBnliBt=}c1F>P%MF>IXqn zotXe|=Ca2DN4w-+ay*FA@Fk;K4b<% zvI40{3~9zSNoW;e(j!lwYbqo~T?|?beSBbu{zZa{#}J_vOyA1vn!Ndj@^26R#&5jw zN|pmhugT*#lplKRGw-}skGzfF02E;Rr9R*(0T{Dn1{@GDSUt32rQ)(d*I-XCy9`xn z`r09*NuY!DN!%%*5-9LgihT9(ki!u~4BHLEBQ4V_Rbm8*c{W?RB6cX~lkA8QMTj6@ z9j*>2@`mE6_N#8m$_cp4;idV7+I=T+C667Qlgb6I?a+DvuJRYbT2h*aZE}K7bNWG$ zI()b^&GruM%tD1%_*Kf}?ajl}oo}|n`J0yOq!C+LuW%Bt2ZkPzbMxg3{;#oilBSJD zBaYAwV1opG;o|ty4YrVSPZlC!7!KPgp+DC(ZhkX8lPXU0J^18toRTs$nZ`KEyZFejx9h@S7{k=py-J7%T$H zI6n&uA^*w1q9xC*5`ook`?G3DbWv{^n+!W2iWP!E%hpUf8k%&#OeJMfKqyieESO5y zM6_TYqXoSvo`|r2=d!RR#daN5)!&=gGI^`tYjLqo350( z?$0BXhIW=iGRz{Bcks}oIl`2_mg^9oR7PrtB-( zJxh(FP(T@}?lzRR9lS*ikY}F+y{(1bxiXAWPH;+Gbp)vPBMbWi0CGV^5WdIK>R*K73buvE-C2fJe`Vr5;YP}{vGtgy?DNC#r8 zq7mvv`t#?D2%%caABQx0ku~H9vTe90$s^^7cT^1MA~vd_Jpu1=IZJoeS=B@r6S88m zV7KM5X|pFtTX$SF%n?Ejp3ru_HN-(iO~pEWG9fS2o?ux??_)Bd>!Bps3`#L3OVIHi|5!B;^`#T}I^Q`~>+qbA!-UFYJB;4-HQ6&;S+(Kr}F0y_iYf>v!r= zN`Sw$Mgur^C7Q%(@z(J;gqkyxhcz7&s$@xcNDqMXpsuK-hq(&9(75baj6pe9KZN(b zJkhzu%OV9|G+2HqvR=~kY~L{LqQMRaZw z6B`!URF6!%TRCHnUT>9$_l+x_42+Zoy=f*Fp0V_s9eT=eGZ{gyL#bTE&$+arQ$@QL z8Rx{6jv!Z(MWc_>Xh>7H!bL@|?&d(SUJ6feCH1EY>+w z4x!K7?)``;ET}VjC?9q#l3yQnECUH9qsO25oX9&9z6-jOy@(A69|Ib<6rLe-;vHj2 zDuKeYmd&w_pwCFo2_u>lTWj$pN;ZeT@Ui6H7`+M~Otj*u@D$QE2yybMRuGly-o+Ql zIlU63u-$M26!cHXv-sMnEP|`ZDmB0xfDG>RE(Y16+6)5#FM*+75diX`exi9=2M57{ zQ&3xBi#vbO!~o*%39Cl^b^<@Ukmt)UMOy1XuKfo_sTyUgA_XAj{ER4OmY!a`Q=E!y zaGQ9imNjH2O1Fp+?NpRDfdKP@jHU94mh+U&AQ&~5n8RE$R&fn0nRr#OcKMj|sVw;y zlv*8VO9C}_k%WVUOPA4Nv2?sl2rRC=0IuD1|AE)mh`dd%hfPeaz{;&X%BoID)Ep{B zl(`|E(_)P2*CvsHAftKEQUz$$enSJWOX~yl7XQl{%NL6Uxly45g&VvE7NHNY1uT58 z!h`1{Jbkg~8sDsOyG(J8uoRT#%v(h*Hcm3?gc%KHF&QRNMr0opL^1iWcX1wp=sJ=V z)<^hp^O2q?u*6nGM$CoQz_F z9VQxIk|2yq778M9n!c&^82H?%&cm%F-QBt_*$nnksqm{gFXEp9I`bI9R8|k|!8ctV z7B=Y(Be30TASbzDMV?VmsBJc}?GnmZYoGV>U)g1#zcnH2Vy>PBoZ5)443p4QC_dLZ zc}0(rIE`$X04Uf(r4?-b2f@~V_<_R45sD%lkCi@b^Z@sZO=sb7m!3n@;UVQz-Sov= zOhF(AwR_6#PR@wr@5M!-SGcrMARy5*A_9qTh}hqe4{wOHR^Q$Lfw6Y6A&Tm5Q`pfc zdadSCa8lVEMqZ-_A*!ff@`_Y592p^wPmc2r99&^`d~_qJw-@LOdn_uHIf!{X<-;`D;Ha==)*#Xk4i#S z!kMHBQ@BXoChs3yeSZfVIHp34F)Ad`6J3~f=6K3}iD2<84rEV_JIdqP(HU@oHzyn8 zxxh)*AkFv0J}`42F9jhX<_eDZA)oF~KRY@-+?_!g9-$D=n&Z}l$wS*I)tfqZhMg}} z8uLL51(lP1n*iu=Agx?v?|Cs${9)V2mT}Ba>^Udx!x@2T~ooU8a^%Y__Q%j^2JTwd4min^AU zpSl*-&X*F*_voNY`>Xu4-Fd)%oAws-^L{{j2d2*gj~hLy-g^V>N4 z=7iKBsn>qXfM@Ilv!TY$aYa+gz_5!u|2|Ap<@$)VSTC8ZLCb8A36=f+ifr$2FG4v@ z{Ff(VNrIDtCak?$kGfQLog?0rA9Y^L9Lj^+hMd56ECZxU%1GmuyeMvLjAe{sOJ1Y% z>oFmq99|RW%nFdGAoSRJlyGw4`Bt=K$H72h)p2d~?`Sa$QZ^nXrh=LsP%M>c&qIVY z=MPqZi^kgM98KCp1?o9?@ae=i1PI^Fp_VdSd4U{V8?9rXqh=pwm^}Y)er^Qk;Sdgw z=^-$tAWKtvH&hY{;g@}oP@p=)<(#vlb-L4LT})rT!#6JvclhvWxu3Tj4S^1zyGd)u zx+54A_>mUNe&euv_s>|)-yO?@h)utmmnNIlSCdeYKv#Adm_e@Pd?F;&R5XJ>9(_f3 zu8lCYO6F;d;80U`*_l?NU|v<;{3ALt2}gy>*AJmO8}ya?&yW1?2q(RLnBeTJKwd&{ zc3n7(%r~D4&!2ns^fR1@>cf`+uIrJ)Y+d`N=z2!pmN1o!tl8F6$)6Cts4t{C5o z+1epKTAet+;+=dZ`Y(&&gFZ$o=EI1oBCXY`V=>}&!;LI4A}pvBt7BC(I#xCP;#h-& zKJNiN|2d8uZLn5>3!CJ_quVclxtqAZvyZ9WIP$-+V3)7metXL)PhZib%Myf3r*j)zmM!J5TREH@{&I z6T;39#VqWRB@7sDU~$Te?c4mH5!sodm~w^%M9B!*)Smk0n7n~IZ(WhLcXzH!6?yp) z79YcsCfouOJ+{a)4u>g_u)PQtYzcv8`Or7UO38qO!^$E{^BNi-Cht7tgAZbK{Wo*r z!8`b@O5C#{IgF^#y`nTcSlug3!$Z}*;xs(0d*l?sZsx)rA#HL;QFs#J+C*Mx865LB zmoBSpwoH%d(g;iB8Gdv;&9EHKrA<&Vgp>SAZU-SEVf^OnN5yS3=A$+l>2jM?m_VzNOkStDA$}26GWA)* zGfVT_(IG-iPV@FMZigT-G{_^2CC7ca|!pXmP5g460`XW;%7MWRhAP2In|Xz88;Ra8~U@LhRQ z6+EieEf)R??-;KMiut5(p{Tvw3WaWoG*CA~;O1aiZ*@P*{Y};V9QQ7O^flZwi*1yL z#lEuZ)72$GbqqKT8gyFE`$C0Fo)kogix!KFze6e!$Kd&U3TTL^(!%c$PY~99dV>6k zWOQeBODLmTt6O50++5uf%&2b8Y-o;nLw;7epbXqjot3^Z++}B_uMc;G{kS6Bv1avJ z;NQ#&aDP>e-ct8&;6le}O>JFBQNLFy>U*P2L}=t?&uBS`3MtYcqZe+dK<0K`1v0mD z706Z`-2>t$cXAAq#$-dP_@xv@+AVRxczQ*6U=sxc@8ydyYzt6r4zF*Ib*Sh$;d@}$ z_czBnT6BGQfb1CNG(~T2jdh49B(2(Lm(n0mj$)e)50Eb>wdD+sNjTWTro8*kqI>Yh z^L}C3Th4w>u!A>c##hvUiG1d7uozz= z;qvkN%T8}3e70invrxmb!6XeJ;@%%Dx=Tyy)+K4Vm!14O*_tQcBh15EequDi{5ibV zYSR?7in6NX#JFTIR^H1xh{=ao8>LsdNjgD3XQ1`5KPiUQVwC2f!RmI@?ZA+$2U$)n zCG;RZq_1XRQHn?wzhP&m$0R5pBiG?g%DPEHeCKpAhP#q@Wdpxx?tQ8(`P6~;#`{GB zxKM@XLp(FGGTMrDQ*i96VW_L$waYf4KJS^)9l_2GoO=$x@1lF4s&OEB1Rrjar^tJI| zVe@Y`vDW-st43r7ZJMQk!1nYm_zs&v1wAK=-bpOm1#tlGi2!33!0pZ4iU)AJk6SST zZufHgT8i_WlV9Sh-8$ox*DgNQ7qSR9Wp*tH94#qPU{ z#Vi7hvF?@b!f#6JAxae(nvv2Z2seN&sq1GC;*V9m#Csj*i)tA9kLQ{Cc}7%6!eQ&H z%5m6eJOfQdP$|Va3wa)Lib{Q`%JXnPMfyt_n4|fmyFB!?FkMM$u9nhVuQ0-q(iJ+f z_DN*0QYT?7(ixb8cD*M|5}UV^Qpkd^k*S^(P^KJJMJTwuZfw2#+{mKVc5Q7dkUVW5H)K6b2|e&m`~1qGoq0Q;v(?txqTzbOp6W4 z@E1RBpB65?5uwgNr=o#_mVpdt{N9yGJKZkY$4;X4R7Jt(epmj=dUS-B@c2{HcX(Q^ zFks<5JI$BA!n?)by-^WSD1Z$ucU`L(G2!{ArhTslyzxIy|D-(amSo4}lk6(hpOanp z{p>k&KYP#A)4n$n&m7E{$)}5tT{YqnQyFT3I z-ruP-=D@Qs;F#Lc2exyI?yCWS8mFCF^s#>0^Q3b{e}@$2QTjU}7#pnEX zB10C8$Yg;vO+!rV3J#zZXs<0tyfvNtpb#ZqAJnyf7BMa237Qfa$q7%4LqA=Sk@$vw zpeeCP4G_ki>~*K0B=J&5ApGymxGm3`9F_t{g>1#J!j(tSG{pFnQl8O1Z6BDW7a(nq z?6^$oU?@PQ9W$EY>8HU1@9ew^)bJkUvw7=~t|D1o;k_g7iHgzrl{j_H$O^0k^NPJ= z0L7wiY1wRyfB?iRJTaR=6Do6_**q^YE#Dv%AemSyU^J%2aMI-L(DmegCj?j`n}x=dXJA!7E# zloDcUb>Yac_0v;FPgD{3sN_QvZJ32bBqiTB@HMInUt<+V)2Ss~WHD3q8gH1re|<*C zmgSj#Op#H>>ij+7?&-<-d$QjHNLym!?0=5XPvqFMB8W^i8iAp9N*K|(bQJ=T*4`uC zm3?|##U_Wi5+F5ia?RX}?pSj>3sd)jo5+id0ea zk*D4)e>>~HEhdQ~&(1rNevA-I{mJG4JI}lz;pJ1dON2l_IuqdF zF+`mfLqum{+oqy3X@4ZTk^KJhI8W+OMIkzqhFdMH-9{}LYcF>dohfkn{>Iw15w$N} zWwMQ1T?AMTO5`zMNa$-E3bN0p4noYmfR?pUo2=xD_JXUq-T5*okF2(wr^blFrd%7g zUa{)~yGyySc?Vl0@xOlaVXfL~GYB*UKFhdgi@b2AKamlK`i-@sMk9?I;3FxAaMr#C zN2oGkK|tnBdDuxSPOb!9S7P~0ujC0GZ7X{Pc+vSp%*pl~hZ4#41G>ZULlS!~l3NHD zxrOk-T*SG=ck4P?M3n_H=f%+7dAoWP4v_!(@JBg%RwmO2?ndbXtsj;3c7M@&pvs7+ zEXiy-{b)hPJl$WUWR-^2{%Aqgyuq=xb!OGBQc<%gq$(1Nlplg6H0v}Vna(h{${97w zI&X=ql@HUA@Ew6J?otEX`!Pd4XqsN77~szJ~R z2A4L|s&cMgf*Y)yarVJ!+~d1i+d8t+R#Hj@wmDopL{ylvWQ&rtc$mZ8b-i7OyrY)h z%K5<{rCHv-Qhv}nSWio5zC%&U!<`okoQA5ac-rJ^OX-CHx(r5%%Z62D`IU|`Xf{Ea=ojn){kRw$VJT_sz z*)2&yy!F{mDONecMB3lUw7?PCWhP&c)%nO4{Z|#EN_ZJ#HMT+cRmu_)m`O0HtrHB$ zI@a&>7C_dV_l?GfHoZy(!deZOSSn}9iY20O$~NlDEQt!?F3=Q;oUPp$yM!hZgh3K8 z&51KBk`zBowci2i{C}a% z?Mz(hA3whft{~rleyuuKR?>r0zeF#nz9}qHm%S_9>%3v)>=Bi5eP#vqfaW~KH}Ppb zG|Rm!k&6o=KaR*-SSfz)+ox9uXFe>?$K$;>6_jTrdspJz4u;tD_UbK=YM0&eoMLAv zWOv`EqUaL<810Q|^2SFutt==D;~pRTt5KE(Fl&XcupS-MSA2cbN|ML*mHYp2g|wnHZo`!B06}RV+mEHJGK&O|#*^#lF`r&U^*66%QG)9&D=U#pXK4Z9 zD?$a=C%B4`)Q4OiHCD8Ub2o#>%uweO2Ly7S9ne95T~@7jfA_UpXid1;MGLum(`&ZS=x~Fv1tQ#% zkKKfMO@_HBde!uK(RYt-B~$k%$_gWGF>&-JG%n$1Am=X3H{&;9@(eb%I;Z_S2w8sdT`!RURDgZyn$no&YLQP3**DJ6APjp*awR-6QULqI zZsa3v-UAqpi~j>tP?Y^viVj6-uwZQ=4}j^br^Ym~AE=afl5%NPdE>as5$t^T_jUDH ze(-oX0RVr0901r74FDAy0D2iMhl-d0My|(o7g!}>k72|yT6t_hTM_?|UwO(~I2M-% zER0JVUcsV)GQb!JdoOR^$^BXfnc)Se>Q=9o+p;b{8-j}*(9#I=G1$QJ16pB`h27S8 zRyJOfPqKD_VR7^|vezzm<>H-D&Wejl#e7e22!)TJ6|4OIa%;%8Ub zcgd+#W|Gl-rOosM%swxDprZOg+#%2(Y(-MZu&>Mvj%Y@UY)tZA$kBB0sCPFgPPPGaPog@v@ z7A;wiAzJY#)>ph+6F$JSr6*Ye$eD9VPET35!}>*bo$Jf2Jxu4}{0Xgyvp-U#C|Lyn z4!{l%SNkFr3@rQo5s<9c@B|u_=t5oPtq-F+$YjVf)#!qut$gS+BvDznV!$GyK-?}Pb5R(QX!tQVg7-?!wwBahbB4ZnXt?{#cu zLM)h`6%g1$fnAuCLqvmWRoq%Y!ibadzTqA8m-=59;A6?o&1l2l8zFbHIa$K^m%l|Mvl$F>eq@o*&lM?LHJd>{Fv5aBt?wS+{4505EeMI!<;P6s5-Jz z&mEYJ?9N=m$s3$-(LV@7P@$?bKD8@@JEmLO6Tux*FwP@Yr*K5=EHZxKYr(oc$Nk>w zejWGws{0MxZ=Nr2t{y46y!C5iG(lrL)@%?j2mYYHlBL+}BWUhY+8w26wn|`X-jPiQ z&hu?%1wz64aBwMi8+3*XC2{FsF}u|H=91g-tgL-8;azN>sYNvnK2 zxtpzg)B3)hq{+9l!_>dondCbLzI?bmv5Dxz&JA&J!Ns=|=^rGd7`3h6%>1t^58bd) zyXEn&-;v$hlDak%aS}d zER(-iwTCjM8F4tT z`#~mS*X7ZTg&!~8FGbjslX$N@x1zX%$Zeuq)@sv{sG!rnj5+cZ%pH zT9t4_#WbYS>HJcxV@cu%9F~mO6)a{wGjt(P)d^aC8hWX@3nlIsLV=hsbYO`EJMvNs8_(jockaGq$3 zK6Y_=@Jb}3rs&cIe+NH(IIxH^&)&>ooU(grCoUv_S^kG)4e{G^A-AQHS9#!YA`f~$gcbBVmMp?59!6Iw?JZXMs6Od6 zr539_;72v#nB@~K`n4E8g!zj3gUGWH_CCBMpt zUf#sLSJkMs*Q8+vyInLeCc6P)cWfirj|sC7fqWO z*>A9QLwLok3SNa(8AzmuGV`V<0tBj8uNzfc+vN`;bh)tnf z2xdE>wxu2bH=e>2O$PyJls}0bn0)`cI7OrUvQJ89Qlu_U%1t{-<0PeWfgJ{nkKH_e z-B}vt_|Ed3{~sqSC|~oMvboc`YT3A^?C|EVUZOXO4`m0nwGr7cXWM(dDn5l!A&&RN z;~ni8W^%YaZyYW^w)-MY{8hPTgEDGhSv0f>Y|qe63fiOsh23&Q4gn=^vU`!CQhg1; z3RQ~vxkYMBdH4l8q1-OVLJjSLDLnE|>4kh8ZQn%zVoc)tpK&A|3-dTXTcz(lNiGer zXba_T+R1nMg*z4auG*tVdF0ZeQ$xGRMu@0uj086vES$LQR5j4}q~Cb8I;~r+nTuQ9 zxY&3ZC^@3!A_`?QpzChyUPXtEtCh>H+69N|H+yK;(iRW2@&a-nJ^G30Vm7v_wJ*bI zMy%!&B1zE0C@WXMZNCGCc9U=&rhSd1rAg)`34Npf@hFl)$2f)iiIUMzbiEX*@sGnr zN(~bjpjg$0uZIax=RQ^$V3o?oAYh+K(fBxnr+KxZz`w z+s8rrXobU;LsksZ6yhd#eANyue_&Lij7!vi3Qa;f#3~^H+83Ut*B1^c2p{a6Kce+< zC+W=t46-Vu%6K2-(E$SNLzA(P}V1}l`tEHPKp~X~7ixnNJ^Hl{E z2vgPJV2e=iwaN)eqVjp_QI1Md2Z4STt)L+B(pK4)+D^zIFNE<8;(@$b*cB;^+VDGA z09BT8Prmh#4gD`#X??sH5}9Du*)|R9Xi}xd@$)W`v8P!+f13uf-X&s@IX&*HAo2m5 z=@#BUe;b}%`7ni2&UShaOZ!!d;V2!=bmrjBo{#{eXA$M|S%@nYh?HWJ@|zOXVXUJ5 zt=K_aoT4Kk8cwM+v(5>4=DqJSh_HS(&uSm+zSO3E(U><^1z8O2z)^-KsDqky4bT_B zRW&p%roB6;u0b0NCAaC!ff_mmt3;B{tiRN~Lh(4iF{oHH;D2zG8aFb#G0+sR57K7e zCeMq5t*MSos%WU{Hy8r^6BlYV0!+YZ8M#;OqCO+6mTXCRO(K#1c>x9GWa5Ls6rw#qu>U zR6bWNaaEK@1;=!R%GRR1Z67E-f7J>;5juMorwFthBemjss)GrRif!y9h7P5(u#{|0 zA-!ZXE7$~j^N6qo6TSj5WgmA~2yQ*|M{|_i)+|47{1`)Nk-Q~1sgDKNrVxv|$G08! zfG#XFE@W7Rk~x%v_PFT0=~W_jbMw-tov`||v`m~|Xd$0!I^|^!0aCDv#HISa;T$&0 zMv7gGW0neOYuw>p1Y2%P#~{Y9R-cp2aFLEA<}BWn0k`eow4h~timsa|7_mU~TZ-(y zn$IXu)?!{}nlG~|hflzd#gjC&e(yNif>>luMwBwDrzG8@GD@Swh9rte%l!*H0bcgO zWVP^T5;{SprXQn0J_Q`$N`4JY9mCtm4m=agv>;v~o zf96D37Xv1Mr)x8|Js3bTV@D0+@URaoQ{nw|Qr#30f!}t@Z$6^2!3@xNV^YMdScqT5 z0}}ObUev?2nQCg?yNfp&6}y_8FatDR{;6P;g&lp)p&?hp8$h!>pN{Ex)_2?~{!Zp0 z!By~sSk}i(iLcf-bh;Hw`qC~3j8o`d=mjf2qc1J@1jP4o3C-5`c^s7I`njA{U<4l< zj#A#}ylX68DXDT8HE=>=1zaXUwgbzQw&ufxU`}~l5ImK>7L1RySfFK$j|=LQLzBjNo=Dq3tF+3Tz~7qrN@=oy98}(; z_nWLtS1M!3xPTqS{u)QW?n%AY?@$DviFa1{yVpn&eDeYUfKvju(C?~Gj&2;j0Vp`) zV<|^UaRv@{13I#*%Tt&Tg`NELc#+Dj1bclSm@sW1s#ttAqbouoN<~%#CS(xQ5MNZZ zAp|G0!h$FX*FzA`&kVR~bgXTIQGLJ%Bh`R6qhPK-NuV9ws17%ZRx?kX1~nwXMhk1ezCe z8_-mR8K&n@N+owd2_|OrG1$9w$>ik31TFCi==>hEROeen?sFq0D5+xU{}w38t@$@j zNCD&jN_1ow*8xJ(C?tBi_?UHugt-%(GtS=CELfeDw!@ldrH#N*aj3a*9a*K+LVdhs zu~iC%#FDNPIrrrm<>{=ZW_K@>o^o$YiH+=^hOsuMY|YTok9>=kiuREwTl1i?hDlg| zT5*Af5IQ$J+;15Fo`l_39nJ+OX3b%6Bx+Y7Qn!xAz>z!VxB_jRyx24mgOA(ml}#T& zOY1Qq*}D<}hF(CsO375saG6c8SxP5}k%cnaKEgp8{&>j5Pl*vGez;XXOc3}G_Fx8C zwiUWX!=8!4H9cA#4rFt6RUR{qu`ukVVRI{iat*dUL&ldoIkHtJz6~?K)wV;=>JXs) zeyGtpfglXlDp^t`j2#1mDr{~YNMNOWzVj)Ww6M57&Kz8t$a;OloitNV(t{C6-9+o@ z9@c*lP$(9gf<fv{>X3hU#r|6<6(v($b)p12FgnOQ5_12j|v2yDk>w@DYa6XZMly48g*;F0#cH7nA*`8l69Arj6Z=>tgMu zW+C3D*2-+_ZlsH~lE(*8_SbZ{-pz$e&O46FeXIrUtA!U|U&rG?({?`H%*t9`z_mu9#>;+GBNe)4b*zk=FF^11T+Osi)>jw`V6BIFdRtZYXXBDY zRLWQ34IjO~OGahGIa}U5f#>D=gn>#p{8(#cv5Zsc$0bD&1SwXkVEn?8C?ldDXe*2X zsA^j#8Px{n?eG}E8 zqsRjU7;4duD=;K18Mvx3QjPrdYrLwcfNadaG>D$60Bgoo0Vp);4A&t8og1mz`&A?- zucCG3VilfbF!tzh8d3yv0+USpeZCVTWlxv!CZEh$)7g~Ka0IWu4k2qd#m z$KCUNBsJp-w6)6BI(@8#|1Xo?R*5GVj@9L4IB|N}4m1``se2>oW~gz*?*1ENkeZ`= zFqI7VaPieL+#8P}#5uFjBPM2pFuu>jF>=e;EA>F6Iy}u18ZX1aZNdCT`ri zs^D-TJ#dhg?)>s)(-ez2MR3F-1Q+I}xdsVe_G(*yrVyQ51K16Sye|3wE_vUPQQ%KTIsq#3;Kzr&_ zoyhKES}8+*@iMC`1bYR7rJe$wS``L6sfyIJLOJ9ogNp`sfj?h4ELjzeBgo3pPNz)c){w3U701K%)&OtLBPj1+qU*lYxxli47 zS__DJF>D7%mga0UNCYQq926~>+&Iq9jXeV0mbM82n~2)P&#{EyJplG=s*o|z+b*#^ zNDrFJ6?XUvvWqI%t8`LyWrOrEfG*|@;404Bb>~43$CLt&u+wwO*D{dNP6tq;JtS@| z9_+Me33-?b>Mln8fh15mD;fc>R4RRo;}wss4>~cg5D~evLj!B1YCSGcm?>tWrWhE4 z+Aty%@G~$ZOjPZBVh{x*^V-mukyBGAqo9J#L*is8SPlx19mn#73CdCHPsU4h>R^wl ze8roXi?h{6?Ndk$;2mI5Co4k~4YJMLhV>0U{Wi{zrAZRS_##yO!6*r^6r+o*lfXqRy;sfccrV9V_bCK>Dmi9pX*od=gPdQwK#|Ss_Ql zPHO^v{ID`sH4zd(`$$%6EE?$^CmvC!#{Lcjz7QIulcesTbc*qpU?w5y1ec#`S@)#QV06_dm{TA_zE=)T+LBSVOFK|)@Im?UBs=$v8+wy;2vdt&;{q(B zD&HzYR_e43Xrua+CACDlWt@E&KWvzg(85GgYNoct!56j6&U!J^83t}6`@)chew|I} z#XwdyN#D!x3!;EWCPKm3m=;tkZpbJ1)PUVy19tnV0NcOn`wtkSG5Y_xdmlJGtLonO z`SbppdEc3Nl1#{i$)D$ah%khtq&6mVlGw}>k`NIUy__Cz5z74>@8|NFaJ(cSmwOMI zNeCJ>+L#1H#hODo5)peMARynkjU5UKX# z=P=}b_OqY;XYIAuUVH7e*Iqjsquuyqngrs`Y;fIAp5Afe;}h?z{s#~;xbDAxX~*|I zF!BA^y?ynr9rxWh@kjpce|%_S*N%z9q5Jk1_f9}06DH~3JU($GeEn7~5VF_3-{JKQeY!Y;h_8G~)!gT+`I@iv^)B(}90;w% z5BbC@_?`z{MhfPlzIA`}WdZ*;@f+BcVHz1+_t~d*-2B;zBNYenH=dgKi`yn1D!I3h z`IfqB{@{o1TdSIH`oyZ{=Igf~{@lc&im&F!{k zyyLSI4^>);5BkI^_~5&CyjvM5IO6pk|FGlTk5BBVzQL{S2iN_>_pf{Q3)_F@`{uv> z<#iwW!uH4g+x>ri-TUs@eusa1+V`Ss&C#!4x8t7e2Pnv6_^?lGmHzp4H{ZAYXw|o7 z&#~)nx^Mf#r1ePqFMoU8#F6bk@C6_8l`7}cKbd&stJghQu&r430paD@j2fH zSyg_A5j1!k6Mla=)PIbY!F3;hY~tP@?zpAqy5KLb-~QyGoj3ZoCw*hzmdz%&QRBUj zPu%mv9XHl|J7&A$BK>Fm`=~GA^@hGbdC&GAsJIsTwqLjX=|ek<+HUuCyTsq$wf)EX z)=Ip?CssqhdGxx6|N0$w_P%~AFONM`yofmm%>exZtz*62#&IA=EToah&6kOJSFFILpg*uFzdJHcn z?I1*vk6Y5RIQh{4SOQ@+W>ei+OzFI_KFo(MXU39Rgv5FveCeSRBTBFN5tOnbC!cXx zwyN}Q*<)qrN;~I$`M^7WB>4wG&Wu%Heu#*CPwVxdUUwC*nu_j_^|dL*8cr~a?0`3I zs2_(~w;{ApS_keXsbT>MV&wuCw@3be6Wydn$AU0U9W$6BwQ$+(i2Y6h8%=h4SKeE zp=S%wvqA5g7X#NX_COcN8_FwtHa~3dshFavuhEk>GVb(X}8#!}f;^t5ibwIaHd1ViP zqH|G5O|QI?<*$_XUU{WZr}9cSEV*IbY8ptO2AT~JGZ=k93-PeNAfS~qqsx?6yh^=^ z$PZ<~9}0C2fvJimHAX|QWATR;^qns^4TUep^i$IoLsf2VAoE*J1cRjj!Co`~ zQMjP0bwDEINKT&26wn8QcY)8PEpT+J3k9EHU6#dW2I;Z_NsiRi%~r^c3K;D{455p) zpn=RQmyc5tCu?2~swHtT)KQaaGZl)HtmskJQo ztuqK0&2;Mw!6g49wvd|Xn+ix;t#%U-OLCQzg|_NfLG&<7au&}TEIp!2dY)B3hBSWF z??CC1F4PRcoVtbeJH>Pt53G))YUw~HB3Pd@hHdSveQ3;<4B}SiY{=H*89altFUHje z0sZ;srL9w34b<^)?r&fKz`QhI$4|D;jTHAvFg*GRZP4bl^y-ue!NG3AxwV62_Du?4 zsUCcRto$k0wa9>)M4f7p@7k^wbp=`Io+!U2~JEdrzDZ|r-50G5 zX`QX}S_Et43YW?`0UPF(w=hG?Y+N?-08^15=JUj`E_agH-C%FMM5l+Y;z?QysVp=! zCMhYiUM!HbcZ)XkbsQfi4boCKG>{e17+orwpMu(|J}Wy|WNnfPa|Z|p1%{O0#l5{U z`3MTACUvvMm7t1LG(Sbr^r=C`PS9&qwC#>F{lZe9w5wq<9D1QbmF45r%e(pX$vNHo@pB(3FM?kkEq|urH-O_&R}Wux?xn!wc8*Rnv_i+Gmr0ld80O6 zPBW1$a^g3mGiRm9S)DE?vR}JSv`3ve%Pk$7$AxiA!jAP>Mz>Rg4644Cn<)*!Nu(ep zRa^crq_w~Lt$V#wUrIM?e4pwP zu&-8`ZjkuN+zm`-=VFF*9BvX%)%+F*VWitn8M4>Cyx~JTUQX#2xBca)v!-DH4sD(R z0NP2_8Xwy^;{q?dpdEK>{H9KGO^1yZhyqYjMF%@%?(Z0GT{D8u z=Ef)1+fGan|@HTQGSznOBh8iF)iJHp6(# zjf{#S5%pSZ(bEbuwYrZXT2({+IV7E>W8}1Fbhl3+#VEyS&g*p)&)Cs^sDnmXXia;t zkx;0$s$7e0;1xXIGTWYA2Ts8E6w&B^L7W(e?7)fR4Muz7=diJk6fc4kErQAE7+D9M zoM+cMIElfw46!rNMy7hOFP&>W$gr4cYZHbg5s(ab9GI}HmC3Lp{^`VjH~2CQ52t9* zNSV@e91x-gXeM>5EfHIIswT>2pVh)9sOZuy&LU9|Kc0e6Fc|=H)XA=H_eVeaGcVzw z>2NG%QnDuZzH`cCBdz3Nd%KQ+XFCF(*~QLT_>O0T=^XbhG`kFjM$MF3FS0+SjZ7_Q zjjC&I`;@Ty*pFve3Mm+#R-7g+mRc`TDk_QOdegpu$A$Hj|0&e=zUV9&XxXDs1i8Jh z7fMl2XK3$hhJ;vC6Hix+5_Rr zz4R1m(s*$9F4{h)V3o!TzHVPoZA+zXuTlWAZZo~MT54uhY6__F>e71s$tdiR-GRXx z=-~z%0j&Lu>Csh!$1bhMvw2I%Iq=5SVeJ7I#iJ9(f-1(%PBuf;kXZU-R?leh zDSVvzwT+~D7&mIbB>lRrPWT$5$j0*2rWaYD<_Wv+1fs24Rw_RlTT$YRY58%HVvFWi zyTc#InVn{rObI2q)-juZyP$+VaZgby0xrmsx|S!y3iSTj1J|1RR#=r00Yd->8Og`0 z{QQ8SqAr&n6)H=5!I%}!1yWQ!csa)p(CS8lgTarg;C1Rm-f-2d8^kNNu12_rf#|5Z%aLL7 zm)1DI%c(K)VbB>XJN@T)2L(W6{EuxzXI7o)lP54vq-n!NM%44VUzc^iuBS|tk*{_& znRx3j2d?J0iQ`2j((*rp8cU0O&+6 zXy_4m)?=monk@`=ij;!hO#9l(0)sV{p@{G-=@31DG;!*bSe;@;pRh3H(i|8SXZ=np zmkI9kT7?c7ghL*}dDLstjq8v4Uxn;@oMvWuF}oD-k>szd41dUZB#oq}Pr>A#`__v3 z!6qm$16ze`N5bORQy8HWH3n?wNomF8?7>byz<^HB$jDO1T5cL=n2WV-AyGY+7pUu5 zQi{MDw#f8JSqN)98rf<*S^?@6H;g2CfPY8C-rY_l4nRu4P|?YcV)^W%Jr-+z$7=Pj zsP%$tksF(WguNC{I$#c=!Kv_2`x|>Kl-KbMD2)9L0`>X9ZQA&8H z56hPO*}r%3D7f;ceYi&WNguY&WJ+7p)vP`Aq=wNhJw03#KJJ+gxSk@MKV{swdd@3; z_P#ayIs0?$H~!Cc`@7rugz`|{v5vft`nZQX;vOWNKS+5cns)m-?F3ukl3{D??GL#3 z2QC>_ZHM&Di zo^jVBkwu5FG)wUF81urb#au_CM+s6YRtmN80nV#)nS^oerxB_2{i%=x`BE!LAl|@1 znyu{d2f%}b^{H~b{)yhGZ<}2b%dy7lq97X6pK?AKI`&Knc0qKsfdaNlh^ODl%WQAu zHzhov&V|1|5olAuR1ya?dxY4#Gb!MJX;lrZj)p~=$Z1rxfdjE=2)F+f+dk$RSDs-)P1?#UObNCuN`9Y~>&RV{ z>|~|7)Onga6K>e-*ZI4fL%b#PJQT`Z^3vdNC^G|zrA>qMXee6JnM(XxVkM{$el1ad z$}jClnS zlftRy2Iq%3$RA_uhspaQ0rLbMWB491PUj3YHtWmNOnppA?R2hREFGE~8FW~>r!1Yr z30FNbozeLvb-qe@B!tcIe3V9A?cMCbK4VbGj(V8fIL|z?#QEc2dvq4&3CRuv>k)9o z+F_ky)x{;!OY_cVsLu7_dQ&pn`oR8sW^M9Q(8DC|YV0UmvF3G{kIqQr5yYqST2eck z14^CsXdenN0gWIusR1`J5&DjiC>C=aEXn z|4-eGSc_Pm)}6zsX<8GeEM0-$Y*geN$eqJtw~tk+-GxIlD3cGIy&APJ=FVxEp$Em; ziBJ8MT@8knQJJaPSyS4K>n3wOYn^li4tYLt&KEMj$zOAIGld5KaYgVS6*@C|(@Gs+ zRp`Q%9D*%6I(dpy4I(5*qmP6-u@8?}8i-uYjhRTox(Iy?HzD=_>|jnAKPxHhILIP zN`y3CO!1|=_GVRtgGf_u)!h1nPF%8T>HssU;&WET=jLi_R!|(A%Ytwli(+l*7%Mp_ z#jw3$ibky(;sYqQQnBj?ux z^mzk_-xtcmWI!H9gKNYWEDyggl!wc9M8-RLmUC93OM@ep?Z{;GYAHO@iBN`|LulX; zYVdE6E0aq7{s=c65DNs1{xFR2odR!R+A|Nw^aj|sFZ8Ouq>;>tET%Fg1{$1{hE1DE zF}mEhyPWS#NH8>^alqoSoQ(_>5N#*D!=5BZvbjAd5zb4}hvSd)aT0ba) zkg}vF{AewT-WFX8io(1PF%$Bvz7;_uKlEKLp3k6f%<$go=)Ce)Y&l4P6Y0z4o4m@^ zZDUde z^x6}i26Kv@1XnknQ0PsUuQauVApZqRlKM`K2riM|AeS}>E<0+t%=q;1jk((QJ8SnU z;lvI0Mr&`dVuRqG|7}biN#nJqwW5j=htIj>569Q;w}i*u^^r%5{*mNnkq2(S{rjzo zfI;jvI_DF&-~P(q^OQ6;w*UPU9paq4UGx|*q(|QW`Mp_m7)?7I^;zvBoXQYzZ*0KA zVBdL-b4H-eUuMDN%V(RC-_log?1$NtJ9uA3CXAYFQI$M8Uumovuik%H-yaJ$H-mb9 z=tHZ{V)@P=kq`YeMqRJ3*KXPT`TL0*xEkdMhEe&!n^ujJ@RmX@{KA2ZssEO&d`o_> zE24Bue#Alt4y5H<$UEn)pUDqe%q@U)$Q5uPEgd*;kCbUq{hX&3uKex&=e+KB21H~W za6TtEvTgl-^$xDr_rBM`%ViuM@fQz28v-*$>m+1-fh}VZlQ?zhSDpbc+Np@<)omfn z9B6WarhHZdQs1eih}E)HsNWuk6_c2dG%gSTV>kKq19ezb{-9N>~#pN{*-eKZOUxa!5yO>&eho{~>T zMm?IH^6xl@`DCzGr_(hWbGgo(CfFdck05MUkzWwGQ>HoA!EI%91gJtk5)lgkfe4?c z2ZZ`2ouLd)U;+&>g|Hr`@eP>*NQ%M>HX9>E4Udo4e;lg2u_Lurqh&57Uy--`e47&> z8!Xi5r5Z{Dxx))h_iqA{^tBGWHWyzddr7R7fF#dIhxy7ls_`Z`MFOj=4ays%MV{q=@7QIfqT^ z3cEUxFQAvQlRIF&DD+%(oP2Nw(_3{(fa#X-&GGLc?k#kJbg>^K3p`{M1go7*?e3^B zbt^S9p;xs#fRn`JUl1nf8O%07WJyaE?|N3{57^R$4N>y4$edB36)x7*$|*@|Wuuq! zW25+-JtdZga8&x>>|puoz(Pxd6{`ZcN}PP7ZmDa@9`5;bdJcHaq0lY?$PvV;O1vvi z&X;Fo3GJD@ydsC>X&U`so3EmRQog;WhU4U0$kG}sd@DcETeZ0b-O87;1bCD&>Le?c zp$OG>6^lZwqtwusYGhJ^YP-rMv&yAeb@3-H-85WSscH-WX3jFGerzb5ubm_O$VjyS z*51q!a~_wmG)HRGPD+J^T%5WG3m)z2usw5iQ$1(=?pT>KR5XuH$$$L7U)`nqiz{~R zBbNb}bO$kXjMks2vsWW(n3TQwvG2|%)zEnIQG5&f?|BVuA?uzUW-{gDxj;YKu+Y-@ z5xSPGgXBP2rjo}@hcE)~lDb%Fb;o5OzJ-6L>bb@uL`7Tz%x)z|in$9XZ(NSTtcTN5 z%^8?>)GyEGkpU;KJz8|fGn-oVN|I?Cw9<2rSh2-F$$P6WzPYj z$7xvzvECBP$4Rmr(U#=TXEqN^n@{2MvrJ%eM5~rGU`4FUXlK^Xf>O2g<4_iW;e`H` z8}&M0b!AfPt3uQnGvKIxNaJp(FiWXxR~m;gfvc*&Rh6#@>Q^Ri)KU?1dCTUe?mQXo zG8YOx@Zn|y+|D8;EmVU+Jwmp#BDcAxnjfT~K?WRd=V)kEn?1C&njhmihbNjC{Ojrx z(&k(qpkqG8T(hOgia<`snt}}%&-616f8Dr>()rTtm6;kCGU;5s^!gX<0OEYWzs%9g zpnm~%aX#0-fVdb3ORfOW7U!qgi!_IDsTh)={g{2qV03}o$`rm@z>r0m*&lT2%SsPz zin;lNcN#s6kh4SB?{`p5xS@gSkp5>DZy4H2l&C?p=X)ANsAt=Q2qq+o#L!z*Wnm~% zOLbx!qCpEKB1%GMhgiT2noBh}($Lk?Dlmiab9OjWeh1wP%o^(`m}2{VRX|mwlwkv= zTPkW0hf#DWu{vnOqog^*LJj=G!%*FnW)J3w0k*Mq>z_JM^Qopl_T?oG(1$TYp1w?3 z_qoybkr=YFK?b^L9zL}F(4$hS&y0~T4Tdy)jn$Amd9W!|p}THl)7njHAkv`WMt4?! z>8V)t4+zHzeQDL8WHLL4szY}=kUSd~Jp#OGZ*mu7*F8_Q9@4yOJrt28Cc$%XDv;@h zQ=}Ghn#WN_DLvJkNyYeGrXb@F3@ww$aMu3iCegPGEsRK11sa%aQ>X}bPHAoC&VdTy zX&uo%pCR<*GmIiYq}ev!i~;%x+XS#-u#!iXgei%yt$5)9kNuXfD_)ZZU_Av>11nZ3 zj74eAa~Y*fltL?mmJ05xj-K^>`bTZlWlBrgzmf#}jg zmx+EYG{M9*=z=#9)TRt64-v%Kmsb6}=SPh9Xe82f?<-l{#`(IKQolMx**YoDue>C(lLN(qs7X z&Ca4Ee~MRdwN#>0XwGe+q8!5xCO5CPE)tiN*yfO`iYAE_2c?asRR&y9aO;b&$bgVk zfE1Jhs4|FE92nB^QKl$L>&;Q}*cY5?6N(eY7$m2%X%Cog0nI&f3?Mbqny5Kf$&@d? zO5>vV1P=5eV*twOu4<9TZoAk*?w%l^W*uUH@fD+k&|M{NU$D5lxGP|FSP?4aezB_c z*+%l|p;J4Y3WBjPUDyx@e`Xg21)76C`UDWQ%$6kzB3YfO6x~Z%L&>$K01zmLj5;_y z4uIycSjV6Rps3aQF-RV0+VKzxh+(igL~l}7$)t28o7i+5tJH{{lH<}!pgq@>dRk8# zhjMmHCRZUVK`1W2n`#J`l^O(#Xwge^ZzFpZgfL#)9Wkpu*BR`D}PSwcbs3f6$+DpEpe9U~m~is;k% ziXycAst{F1ZV;JpUQGuaSL>6IVAkBOx>i-bBJn^#_C@%)&p9QFypT|mbYM(GyIei& zPFXwECpL4~9AnE{*Z`}c{3nln>cdsLiz|Qffp2`JBE3bB|Ll8T{5eK(TCKa3LFa(fs zVI?UxH1cBgm#uzTm$~{Ka8{p=BX}^*?JEf?6f3H;0|MXy0!+VRNjn0gSIA+h*v07F z-QW&A-2lEQf_^CgiryvqiYOU;6@Z0hUaP!Ja`e@ zIyx8o(2?k-iie~`J5tVb_G z#o=TdBMFd z{#11Bx@6aF<1qWm9dFODI_`{TAl8WOO?x|IuRTf(<%~^9e;X2KN~L@}KW$9?ENFIJ zM5!cLKc(E;#>u`&X^;y*0fMilY;*_m7@Vq!Y3-9~<&*2uckEml-3=1b-j(2oXZ4e5 z$;Th&U4{g^^+f*r{fofK(%><7sj^{*qjapopwl4v1RG?m%UH7cY>%lp>f_$f;|g|^ z{NzO@M_Ca-xrfgq(SG~A$$oFXh!SsCiIP4ZRCfCDC;-HE>rVY2k}%bp7E1xU6jTz) z0+lkt5`xDfSx`VSv#}6l@f55G=FlUoaTE8bxd%kRI{9d?i97H_wv16vH7j}lTUfzT zz&s>59?Wt12s1_yjX91Vv#Dmc7_uJ!jSz`j@(Lj|bP`uEeIuWy4lPhEaR6g0lK8}A z>rSj$XF23cE$qUea!OAj5aFbx$rOmU*Ex)mO1|)|S#V{F3TLRfkda8qWH<#B=puHE z0RwG3V;iEn(OoQB66oH~Soz{BQJ|$mW?0}8G#RGTq_71IqW7Y#GR;>i;9E)&@B!>h z3UPi`KJkvXHyioH&qBzo(u^!rv)DdhrCG3feZ?CdDF=8@`N!5Oaf!vvu<)RTXY-Av zL36&v&9yiVc%YM*1rr(2WIvDl!w2}AscXG7$H$tS!ePyYDW^~Ld)_cALHPkkpy?x} zK9~83*S%qMA@Y~Ulzg6|`-w)CILw4i;h2;%Yx3{B;ijIw`iCZ`7rn?BCj zO^!QiDb1>Spvev#T^K0)#KW(#4NRfRJvlV1kU{LR=j44afRgFJ&roL2jQrrka?YHG@Js7UA2SZXM95|eQ|oLR%!_rro$U3)6! z4Wx6eFXvL8(6MQYP#_YgKK-MIkcF()gdR$OeGs!N#y4~yqS(dfBIqebg2k9_ylCr; z6gL^JALM6ZhVKVe5x6t~HMPU!y2PA(zcIX_rv}JIY|*ZO)?CMXB_63fZP2 zN@&-!5H23lyc{=ayGA;UZQ%x7-OLE}gUtKEhkHnIAVftbhJ$=Xr>74wgimW}XPG7#VQ6xr;t!zv? zt!(URV%KkQX}$^2+0kqYL)xW5CZ3rBNKm2L%7Bvz3MDH885rTr zXwHgYD8&HmXV{6&Bg#gdJr?n1s+llfvYBRZ)et=L9dCCW58fnB*Dp@THAoz(`x$~6 zBM0n?Ye5$33xqCb_XyKk9Wo<<8`Q$aIsj61NH%d0dsNhoq72xO5mg_|0yf!%yEzij zKD#=XlT_o`DQVLdN3KuRbJ~0I-K~)1UhvTjW9UXRiFlt@*yV^GS68r=Y{Ip|vT^|V z6;qbqrB;3r$+f((1p=bab8N6yZGY8OQPO2|f$q?g&6U8F z6$>p6^Rtr&vH1Z$5eHO8%}`5ngc%r9EYVD?l8x8{i!j!cd|)Pqjvts=uiqJRzcOaC zr7^dGbtxz>!V{sG-AFVB{b{^gS8KfliWA$p)AoUe5bH~Ngrrc6?fyzo3=vjHKy1kk zCCL+I>k^T?kc%pXHL9B8Hgcr(a`A))ZLdzVTup)|+zMoUxW8UMKY$DvecHt0vCKUd z@g07~rRt+ZjBVD-Ja^`U5I3=3pag7ax;rF@<4*QX_0PR2JjRekO>r(P z715Drk$<`yf3$)inz>ma=^E~Sjy_+g({vNHUGkMGFGNfjywn8 z+<5aGt7=e`mp3;T5&akn>X-3+8V&C-&qsNm&l6)4=GZvDn?;<=1E1!7mMS09N&@3c zWDC`jEns>kkYtS}E{=-7cr1V0iEU4cRKMCMtrwR17gj61eaWiTYhGENeaf7nxu=%q zN2i|=o*A6AU}2n}vwj2PN)mHV;@p6_JAebZ#hS0q_6AiR~c(uX04IQjIOjh z^PJc8v42D6DlXMn+hJVxI@aN2TzyiNSMf62RXJj=nv(Ty=#zH9%7e;Jx;#l5osEIO zdPHr+!9T5mFx#l{N`rMPgu>!~GaqPJm_{BectaSMp;)hOnM7Uo(HmJ-s~BJ#v1dMj zBmv(6g>lY+V;%KQ+k2ab-z}1_4zyGrL}kPQvUh6dDb7D_Z25A));a!@Klkx`;T0PIC*0z$tk0jk4<5m~J^zL;RQ$wBs_CY1J1!XH z5AQ{#eu7jb%mzrB;eT7i(UVtSW6k4g-fd~GW@q%IBPj#1>aMoeowmRn@;c>DFH9{Npm+;f2#0PUSX$j8l3$syI1xAFwtxB8^I z4-KjKA?i+yUSAj`D}?chBeB^M=imM@^2k)Yk*M8I>LJ-3z?{XZ$?dMXjh6;&f!M9L zgL!QgbRY<{-=hT(`9&d~EWiXs=Jz?Ei$iX?h@YDuxmNDL92>cYYIb#8Ee3$i?EDCbQ6Iraqj-8%N&^6V(`^c z_3M(tr7G)dmWibi)UxGjqZ$kdS`!>Xi;?OPPn-F`KzA-$uNn3XS!4NDq8=+_D1q9%Y;rCLp)cqd zjV;G=mq@^cZ|FizhM1S5{1B_QxaFLJTQbDb9sy;eYcd13(%{MDmxSU89CDZN(&oJ_ zJ}z^wUX@lCjTEIx(eAnx*x<@Yb$Oe_O+duDs0CY#4@y8ZgqcKDl-AMGPKI8z%`x;m z)qRJy@5spx0^6>{>`Cg;Aiw3qhyqh5TM!-R5BQFiw6I=dUsUgU)sg06rTSw}vUJgU zCq$)4dh996rc!cPLm{C+%_d7ku#aVLAX46j6&#AgI85kzrp<&J^V@1Tp#c2o1-ZZ6uVhR+LN>Rz#OsOz+ha?a&DH zu81zB*nUUT{i5k=zTj05?EKew`S7|Mr$y>%g8WN{E-;CfMS|MpvLdHxmqW-rF3oyh z)mK&=<~CAG3axI@{GjWOhNg)|Di=i3>bil!jtrp&+m$v1s_eeObTlwPc7;`nn{-bj zit*qVB~zvxK52N_c+gnTf}|J?%r!Q)h_jBQ8^CRAG^i|k$&ZFYl-H~W05%d_SvD4m zvWl@_Wib{67h^$X#lEa5V?kwkxVp;ff-6;@8}X~GwxHwTlEPtT+Q3v$D^nRrVK*cM zrVyMqrPv6zGf?a$Z^VW=jigbpYz9CQ%~RLGeFzTHIJt$aAS4J=E_`cmUE6h%vw0wA zThCCWoFQ2WaIqJgdaU?ix5fIQ`@3a+i36;rl|)<-heokqzBgtw6s)J*U?r74e%(l? zF)V8Zbcs^rAl#r@Lt{(=A5y=}FcO~P+|BC}(krh@8~G00vPxPy=|zR+uz6Xcb1?&u8XFlh)^488 zgUBV>8RN|nrD?e74mZ!^*&KwO%}u5|Ca;;B$D3y=0hhz+!9iDazfBkt+23RgX|a28 z-03XEU)ap_xS)BO9%GCo9&3{d6pY8LO2UWtvAsM$v@SefQ_!35K>D@%2NrfyIYW7Z5dG|`d!R%+E?- zK}3`ehyrTq8Q3MLy56);Mu$wZpoXz&Gj7_;#E0SSkTEjWH1w-vacup>hy5IdXyE{c ze^xO&G5$4^oq5dfXN+%#jpo;&^%9}BO0W=nl%b1*WSOn?HI^~Dg*X;Za}`%!6;PQ% zxH{2@B~)D%Fk^y3gd}gYk7$nvW@;CUhLKD1uB9Wb1`Y@}zuZ=y-rY(knHhYBCky?m zT8Ys;LOJ(+T9erDa~)Sn2k07J(}gF~YvL2|#f7fd5RBZU^>5aOC_P0IIJaSLZuZH} zh$}c+J=W?h%s77qBpLkMktBSxXlO4D)#4QMT4r=TnDg`aEetgYWl~GXmX?>M=~-VC zNR_}!n01943_ReV>R0r|u3sy84|Tn0N!IJX*a*~EWS>Dc|Acy0Vg6vD-c^B2?1`(d z!iEV8Wd|G&dK=G5l^-pHg@=|#h>vQGeD~dfo0lIL9fC=HP4GI z$K)|4RG>G}gO#f=>}#Vk6`GbUx6Y-QM<=s?wpy$>$9k|5cH&+~6`HuvP4uKqsV6IG zs;gGDoMuVT;DPjs&N7}F*(Pk4T1DE?ChXZvk7ap;D2!uJsYbEfg2z{E&XKzw zM5{5t=27e+gEEOHG>Jz7=jS1RMIk>BxrY@wQEzpIE4?)E9e7|JT_8kkU9@uSbA=OowlUc=)vN|(}ZH)D6=_j?C7j(tDwR+)|w7p1VWs0_Sn1`C8#)YeFHm7c{wn;iMz{fR# z_1M+$PzmdMR2Cj?&NOL~5=q#C-{98ls>0zoS^!QdF0DKIL{iYc1ezf&IH)TC4~aDg z@fFx~?A$gPC{9Puz&X>8Td52v50}VuTHa)?IRC0&4!e~C{S+Zd0C`)fH>D>dNh%}> zByCKmuC(6%@4jFP)Xpl0uhB*UYDtESZna2{uV;n_$862;QTB&D9Kdk+YU#C9I;rqp?6V~&uqfSSerqVLn?7@t{aU`Qe?u*q(d2r)o(xkH|k!BCwUyvp)5+uSK zY1WN2X(>fGRHGvh&}9v&Zqk&3GSi-^3irARNVB^*G$z&wROm?4$jnHy$CIXm8GsP8 z3!3cIQS`KE3UPQkn!>4eoPVY0t)7CWIw*cqi@wa#dpeS8jkuReQk#rZd6JSlFAm&l zNIAL^hz}WvERo>EaFRya4~3tC_C*-j#9U#TPVFNw3ZP<`v%V}dN5D=Uo(>Cx zzM$n$ex##HWF6Jd5?|J4Q*2l)DK;as^H75I@GkbGUo|YcfrU!N!1&tV1u7y%~vF-31FP6d&St()T#s z#Vk#&?5I*6WSYDfkxj{qUJqcU`H&H47tjX2P0|)Jao<8FY*@(V zTnm}FZy^)+Eo9<;pTvD$^#I8d_ahqyGOniMg&BWHR`9kSYQVBNt-hMAostO43c+qD&{?)bU1y;o zltx5w0vcZoqBu(5OjoEgm|w7RhNMtPjw4I-`28S~qY0o)YMin=ZG3hfsoVSVs(Zaw zekg3$0~D0Tk7=){O@L@b2n+dremF}NyIxgb%P>2yF}FZ+cydYmy6Tg>q! zgEqR_*=lufdD4DJ+jf%%c|u*S%|4TFK#mqcaEfU+zYBYrj?F&iTw!(Et#6?2-0WjP zAmlLp2|1ItzNPemyQr*bH@>YbHv0ru>=s3=->j@@H~TzXU1do=(2%gQ+M9iXtG(Ih z;Zmn*KTo5^b_7z_W7kdERFeSidrV6jUKu}yp-29(qsTlo@sTej0ic!7Nt%8{a7iGc zh9v-^jYZdc+>oKdQ4pp07(AD66^Y0)lVS?j+$~ETa4;e^&`%AH>H0iTw5uO=J~gWMP@F1@^UKyZ+WRG%gO^)t_wHm4=Wh-tt4 z6VXVfI%$`=ZNvPO8rxU;9{gjFrQFKGf?HZA_6*QO5fHd8f%j6%fOTaWZ?gNKmvg3( zwLik3gSG!$>=2hLyo?1r=Coi$K*C|MoUxH_`IhjW2X*j9tNo&|#AP{j2@y4}I4f-? z4_3%8yw}SVU<2Cv#A)7HU9xb6#^|kiXzV+7d;0~Z-|cnbNxQwOpKN1@m$ZpcZ5W@6 z7|JVL;)n?2c%z~s{ST}%v)DMylPv;1&?hj4|BOS;jE^t}kqU>tK*0i@(8$JNjELx! zIRB<6%4?f*xrE&gYo~MT8=d~2mV z_;49G!W<_w%^-&Rji46^*lNhak-%)w*-_rSG~h%*8q#)M3?uIu^$+&wWI}*PGjn4a zjmduhQg_~+a||p^Ffg5%@aKljb+;PB;y&kip&U)x+odpvdAh2klsqg(!OYA_T2gJI z9xD>ls=B`EwsLll=rc?`#K%ONF`2VckzEi#w@LxUc_^|HaJZE!NT%oW|62xCuKKI2 zWbH_w;z|aI0$mgfIOL3MiL2OSp%NR^$1P|O9aGO)vClvMb}M*N0r=ttPfBvAUBF=l zjbB-N4pW4nK4e85VS9yPN}i>`mvA3m;OdB6Qn7r4Gz3Y3EG5$FS5+JdTj)}GM?g~n z-T%`D4o*Pxwzw@A18qsGY0DI{mMv*z{XJzB$EF6HVw*#&Rv)KM{PfP*;lNfPPKaCG z4Exuel$N;w-V)((xJ*Q?vo&(JUG)7U?bfLCNnSMO3)=)zn+m8vRA6{1idKXbZ54~3 zm4p+yI^$vEfiDkDZcicIPHND@9SyQ<6yt8p>4yH{7W5BwL;sLFTVq7aO*Wm-Jw(SE z)gtb6QmrFCYCBj^MA>>r@Ey8!*9R}4Yoz!kR zA46c$stI>t8X$uO@;eBrHB9{YGN0_8b{W$0uV2Y(F#$`47I>{D zzRfj}vS?H3HLI}bi)s;P+h!IVl~f05(P|>^EvwAK(9U67ndfrM<%7rgQSLOar{UZy1P%f z;L;~bXt;uExK^-&ESXJ}6zWqW;wUwrxFXW3&0_z_EL7I8y_yHv54k2sYgzs%jXCdhm&f&nNSrfS6Cr=kEL&2QRM77hYYzqc_Gi@Y}+- zgG+IIu1Ax%^MDzG7Blg1KCqa0*!J=h4_{=gTgw0W_@95cB4n5H|8e~K>#FBcLW2^3 zQCBaMLnUxI9zkg>1*s%2T6=U75`cl*Ylf zlPgW0qO}u2o-VYn0rRCSuJ4J@FYU0Z-I_@WJR7d>N*g2l7I_s9_*9OAvaJUl=Gb@*E#A1 zCe~l;rkr%+<@k!mrzcCz>SN2nnc9;@7bkkOmt{x7j$ydIQNkoF!0`}qfEVE*Gi7)P8Vzroo zdK=df6BF_Q8ILJoom`sMy?PE@>=jLOoHw(-O%a zlTRdj9!+wIg!2$QGZ`h%$mN(Kp&R_kf*{S7z6J7=+Qh{22X0*`Fd70+9wW&e3UW-2 zIKIyMr(dv7o0$YwEtd$?n@k6ku4!MB8S|>Z5AsLw#c54`xS}Rk0k5h%FAB^C`SNjc zS(0TlO3WA)KeyGt8o7RANoM_|p3?e=X_#}Pf^;+LRr7_y1k7wtt^B`?rMz71(PUKT zO2nq25>#;&VM3xX^o)*XbMBKu!@RDY8(ai$rEA0Ss|qoCybQoCjqx3sMd)RTV+gZiDiKY(%~iZFag z4naXNBSiEVhS(|5MJ=%?DU?w>B>$pa;2=N7-9F%c7%826c4%AxY|_}_vV;0~uD+*$ zi8|eA(pD3IiX^4{4#>&~MB=iN#JKp5&gJp(4@T#@GXUnwhe1lN+S1@6I1ykKMTGhB z9%zMyUeAmGvnZTbYVZ8+r6v zR)2(;`8R-8LPO_nMXyp%{v@f_UxAzGxD$d~85Tfrpdl26`SraLoA63e1{{hXqYvu! zM?x^|+z7^t1n7^r3?un?HDz$rnm&>K}WD>ZM=U3CI^g zNXdVdp&L-GN#&Udy;i83l#-vtE_!{6#gB|2==`%oyi{y*@fQ#gt`5)V5v>l-uM%m zWP0*P**nA8XMQWszR6ik^;vQy6vf74K$zHa> zV9R!0QIBrtdG@-Ai6d)qB1Qq7??-u8x&xEqZ<_SJ2ii)hW|^;MR0h{TtNN0=*v8bV z?=n|T+H+=f>B?9|DEP*e@g5(%U}e0^2RG4L3*uZNn`y)B8kc@_WqgHIWmf(TW+JR? zbQeYxvTz(YO=T6G~HH8ht3FRM{pt=n_AQg9xB zm!3-jSWip{%>H4Iy_^~CiNp!4A-f1NtJ$qRGDAswlK+By#Q+2%A)(JBVVOe00q5W? z^v0D@>OvRjS|*FzB&R_*yE6V!b8(}v4AD|gKB`93a);obU{n6DLGV=cE=KRXAZ;wh z7tMS<2AioK^O~no_dfI4oM17c!Mkwcc^p1|!-tX3P{-~67_C%-BlP(x#)^X2U zZI6J3yLs@)*nNgI%t7ss`MR|p9LZ5f@{zf)VLD)GFv?0k>mBAL=Ef#?BEt)B_IhJS zb7}DJPEF_3alwX@UZzBs9f{8M*Qv=r&W+wC93DV@p-QcmTJpn2+Os%XuXZnv#+r-t zSkru&9;4P3i=*9Pwm|Q@!fZZgXBJ#MoLTCfVU{X>BFtWvrs>PL5p)qY;EOI9cBNgL zHTC(LY$5)~n&h&=ugXqW>=jv-X6fm~o|P_2&mzwv^!`>p6BSp$m5+)xQbg$;gt;QIxz?H1&{mExaypwD+o8=@L!fP^|`^*21 zNCPlt-F2xrB5z4H|D1sTxW-I4u&dleI3yC`Wb-fHkS_2kr1+Sh4&HSsQWHI-;j5l7 zxacc&EcXa}a1q^!lm>sjG9B95#1x92!{(_CAf1_{1M(GjTDtfWytFJz&$y&H2yV{2 zxH+7TfH+*a^w6{YBhj_FIY(0~?rf%j!j(RPXkslL>0Vu|AX#(g4gRB{;LaQBAd-H$ zHDob!t5L0959-y3*1q1MSEFTnJ)~D7aTOeh--jD%6m+p*H{D6dDCh2QKX-ZAnBa@b zz1L#gXmK%zEyl)?Pjkd#j)?Qx`RN{Agmm|xJ7%d~yu*i$P-}~WMzfjns5KYrQEHy9 zN6^f;MGb;K{e47a@8fmh?)U8`O;e91vo+$my$s>WLXIP@$cex{3!8){d8X#Rrtc1MPbUuKQis5U?rXpS@VzL_tFE7f-cT# z!=ur9UyZ_Ru-n6~Dv{$jNFkjy+*~YTNC$_TXNVlq;o;_)=~zz1mM6M~7^}!XxoMGn_)7d^zJ~~ljRLkYIp+n@;yQneIEzUy54~+mQ^$`{aZTvs zkUnzwJfP&oqcHb+dWQ5k_4G`w{p;xn`VSuXyMrROt`7ToNl@|U%eJIcxRt2a0?3g_ zF0AVHJ0z`|#BHV<$ZhVj>`-y@G8R1Z#EhcWE4D65e>( zlZ+w-g@i)XP{~IK(XC4vtY%^+Syajle0I|=#0uR>f@Tw6i>rcRLe*7v6<>+EBUddB zuW=Zu?&si)lyt(@M`m5%0##ECcJs4V*3!5sN`ZbUto0>bE!*vUg1Cwmr)B?uL z+93!6-;CpMTgfdL(cwV3B2VF~23u4&X4QTE*7i4vInXbL&3&LU2;L+O4mh%HvZcXt zw(v;=*ifu|YlK@?1uMDV;h!Y80V?+y8;M)yi>x#@gw#7(#g%xG7VGF*L=BL$l-C$C zqd(+~iNgGxLD~Q2H@)g3LGvR?! z!M2ffR=LFRXzhnV0SC|uP4=Dhjtm}^NdidG;B|&f(C9mRjqa4yF{cS!QFau z2)zbxgP@E@0#o79Xxf0SHC@lLfF?4)rQO>UNV8a@X7u9hRK4O)*u8Gm+lafbcJ$({ zY2>5TeHKikeK6{1-wj#+{#19~PpnP*_hkca^l#js%~IU+u>Ry z14qb9{=+aXY?<-<5NUma-n4RqPRaQM^GIMf91pAuxF{qWxh{kY<`7rZZC+oM~lWiUygCwf%lRNnwjaMMkdUVML_! zuFPIWL(?`G^Bfop1;*)HTvqIr_n}3LDXqNULAEw6@5_3N(hjFM`#23S@Fbh|0EV7` z!(@s%_5PHjW<}CWyH4~6^9@}lf4fPq?dd5Q=fspmTu0f`yEWcg5n|VH-b`+F=@cJ_Z!vM z_*$3hY(Ki7nJIZhe7(dr=v{i5zM&@lBaSgaD_uK%9M}>=hw&Tm*taWx8xOL_WS!$! zU|mxMtkrSuk~rq)V&u(8y3nWawl0BFLJFi`lZxvZR9+LPyb$zJvr3~YF_aMV2!pjF z3DZgq*RnLU#v}^AhT#H>MDk2|(GE!kY91cWFAMxzk^ zUgdj$5YApN)pH3`36DkeC8J<T!OT+5~S zw$K_Wz8NCP1hTu<|IA}sQS9dj?=*e2#NAs7YWp*fllS-A2UAwp^CR79)W<=7hf@C* zsnL-4o|+%#)oxL7AD(P;k8Osc4mN~1)T!kPt3lV36fvoSgO)e4utkJxZPk6b;w80)#!UF#) zUJ7Fzom6{h9gSz{oP52~3|&x_^M67|imVXK*g@rt5xo>9*D+0KAl;2Hr00mf;#F1R zJE0-6iuG9ugOtF@b<|VrTW_JgfgPe~qfaP0J6r<&!_kbzT;M|V{wA8hb-TJ&Ha06| zQ4S*$+eArUI#6b#zS%=UESb#9jNOYI@Kq?9zQmHed7Yq8dC+l%_D)l1?}-b=zUG95 zs-s<@^vx7VS!+xKDJ^eYZHfe4?Q56Ox&hK^zr0ttQXA8h+R)6=5aVYP${D!yit(e? zv^9dqP1?dXZrXEbkG=k6`=DIc8(G1gG=`SB$7Sw8kLNNB<=&_5oDrj!TEhWy;oXRt zapVThPRPUuPcWib(-lQDY-CV4lm#hJISi1M(yHJ>w*|pzGL~LUQM3igJfl@_CQPd? z<$lra3nkhI`Hlsg=JfKXGnOB3-3~x1}M#Lh1aK0zipV5 zPtJJ3BiKM~c(1=ahJ6e7n2zV$Cc z^#uVqzK}TFL*6yEN8RS{v!Axf)Yj|yGrYjY%w4_qf5Tj#Z8o%TX5lE7_&x4)$d5l^ z0s}pIW^|2&CJRk)@xc-o+(nQ*V0~wmyT*ms<6f_kCu(P$tP0L|6hDe}X2G?~|( zZsQP>IRYTW&jv@n|F#Z1Jod4tm{(voxk6~`5E#m*=1=mX@fqZMNUf2;EnuxUmEZ&i ziWK6#UF#J2fQ_dyCm-}kKB(m%dM1=?&?DKP$H@kjAce`ioIGtVd;nSB z&6|NjnjgzB3H=0KX#y+a4apl7K|4xZ2m6Vo0Vhq&0EyXZz1ytjcvC-!Fhy(aoS&3F zy_UTg)6pQ&9*c0LLyeNvEXS7Nv}Z{GpE?gCq8@8+vyNCT5vl4`MjTX?6hwC}!s3TB z3wlBOax-m3E|rEof&0O)lRrc=H9I#mX*Fm=pSg6D7S={N7gXh;nI)*Z02Cc*DTJqx z!o%8R%&HvHvx(E^9{o;{E4^_LNPmJ4q|xYF_qYZD6f)e2$&a3w6Khx2>Waq+BDI$e zH6!`sCrPFj7IT?YN;>R_*ssH>$@|esA(>=zZgYl5TRzXR)j1N@TJP-FSJQq0v37q3 z0B_<|5bAYc6b4?^oWopUPwH0rlHlmpC>drdmPaidZEWZO2~F zj@_gn`kr)PUzUuzQcy0XjeXgSQJx%h)%RsotzsK`S-v-$ISNnk-!}10#n`v=c{!gK zl3hTVqx{;-g_JmolGI+~NL_rJ}Cg2OU(ZLwY?+sz+dEm&#$OjX~-sHYT44P6se^8&rk4PwEk3aMT z)|s+SQYl3{Mxz9J<1e~V%7&7)Lt0m8zXIB{1?&*3F1Bs8`3@gB zSG#0w;3rzZ3us_M*$X55tbmW|uoMB$=+=-ZfS;Puj1yr3cKtL9dpn(M)SosqQ0@pFEHE|RR|OD>J+IMYb$FHgdPUlvRfta> zN4YV=CNo6}i{(Sj%%`Z4%>>2MU0s_AHD7st$R_!x$`KZm+EaYkO-7K! zaTZci{9_h_jiI#ah|xD|F!8)ePf@ZW*~quZ13nT$7hHJoY7P0AaDaJ5qh=Rv!sYg<>dHqHGB zD!R@Fx|$Rv|2!AtSF}cytU1I_C2%ag!CUnhvza~=qHQjYyXRuIeVB{mys?D@4pmi| z%_V=6ki~#B<2Ex6UmB$O5dQyJZP78hC>U|fMH7Sfk7eK2Dd?72lIn< zz%&s_-L4rd873YihX$J=kl~fl?iqv8x@|^U1+idv0u{MxGo(oy&piFOH6@8#G4{AU z1kGP!6VYSSRqWx8fY7w4csE0SHO(V_~ zzh|ZnNpkp5ksLxa=TB~_fLa4uO5Lt4Jqq=ZjmZ$3e}ySEd9bdljFn8YlWkIl$$Yv(rw(l(35%G8rT zPh+tOYY&lpMHxeP{clWIaA=QTo6e8ViF%#V{6LA@7QJ-O-sKRwI!>9G^_Mhtyt)@I z_rh5;+DiA@uW$YSoABn&y3!vBH*~3wK%bt(1RDUn#?`_|aBnbEjC{UU5nQ^(Aw60M z>hfxGL>y~KhB~F>88!dLh?df;;OwW3%$%4|8ip_)BH700II3SJle1*lrKffqFi)}Mqcwore>DG)vj0$ z=rcTso=|EKtb`8oixYZirj=HQhJ(F7^zY~HVdC#}0 zXbDL6E#V*@+9tMHT#H=U)*@A@v#4CNN=RNTs_H78osiv{40=nhMNDbxAJ->A^7GTd zojQUnAuWY2U2{W7f;H36PH#4>ClzAQw*PDd8dN+AK%Uf41L$8a@g zNR;gBk=Sr0-A5c7EgIJv@+3~krzh4`m-9WcMWn4&Jy}@)7(Fm@85kVaX9vfq11hLM zb;t~&kgk`SaN$~73mJJHVMUM^ZxPtJAZ<( zrlS|JbSm%B6LI$4r8cF!^iW#vU$ih~&a5Q!tMh6-z4f8t#>`oLgF*j{0WQUxyYSQn z3m2A4O^wu_!k2fK8Z4gU{1gjv1A)kei?ts7P6Z(Gr7j2K#peY|i35Ey;qlt1yyvKz z(@N<+V;<)}zvoyq^|SfYUtk3>dBu5VL7ZR2`3+3Aly9B@UAQQzvm)KESEMbz-*~(Y zGLF;u{t;IecPYgAyIdGsz&O9&g>fbp=i6P_u2=XchY*~H#koPplP-F9sey%IoWIwS z5}>=@Q)+M|u_&q)r#k_B@kQLU;Polp`@73S;aODcardzf+%=53`Yh9ZXMH#+`yY4o zq4S%?J+-@0Q@Jkwa3{Vn9-Nf>&d$#qYKnEsZ9Dg8IzJ<@`A#ef|M;K9t!~#2#H7Nz z`V!VM>2p_CV!RgT|I@mrD7_0d23wfl3@+8Kecv^Evk(0Z?A#f*dAK1+Xp~VGnr$1x zA0F#>G5Cy~Qo~M;LdL8_^!t3Q-{<1-TSNRIR*dm$~tl715KXdgbGa=$H@UVVw`hF=$9l{0-G_s*GNv0ym*q zNqj+?Me=7FpTM?PE4Fv*KpW5JV&)(drBJZt_abA}lRrn?hT&DU0W=Zue{vTc1bFNb zi4#8&jVJGxJ5eT8>`b>}#X*BO%YWt8tgg$rSV4eOAq9y6+lMXgO3VDmxLe>W5t<6( zd>4ciCVx1~pl-cc4igLWd;e}`@-+r+n|#9LbDRlYQkcyG03HNPSjf+kWvtHd20*9r z@NC?!PV>sHe|DvT94d7U+NlN|a}8n_CV7s_NOPS|&Dma#5h*1l3RWzg&8p}ZjL z6M@1BFkK;2Enfq^`9`b8*fnwM0^~iTu;l8zhX2x>O?_n*n+RVcb0Fl-&A7i-uJz3Z zC`TP^M)<;)X&8)8gW)xMed>Nw5*CQ4NqN z`FVq%&s0@F@+Dj1SPnXu}X zS^*6T(OL|dsS7Mj*H5FdRHt1f6rVqweEoDwW`-CRC%HHy{t>x0~Q2uBs!c^ z+1BBh=xRM)qQiAyQl~CBWJ5aj1Gb2!q>+7&?R@dYxxB*AMJaW1f9bZxZZ2MFJ zwn&yio^__NJDNA1f8(H;9mU#OjJ36B=^<@EGkzlYuvr0qXcC_!E`W7Q8gTHRqgc{H zKwlExAw`yBd_Z`2^rYM(7b%YTg485~FjPpor2!(n<5Z2Jl4%msxW3ba?gf2vAB;4N zYgVtdMWd817azB-r%vqWR)^T$7#ya#VO_$GBu&s_RFIKX4HGYNLx-p6!(#QphKCbs z>fb0w6{pVF6LU)hIP6`w9j)#)X5Pz6`Y2AROUt9++AK*E7x}--S~qdY{=@KXS>4Wn zPRh3~eJ5;C)~@Ruk@f=*Ctig+Ta6o|uftwYm6W~ZB z3J$;`OhyZr2ve$sYlIK^url6FI6saArRPDkA-y{Ii!{P1WbqfBLhfA}?2a*QHKpqj zWp=xH5Bea-kRSHJbY+an+!COcy;t+R7$s9X{Q1Bj!9B6p(0w>Ui^>XGyYFZ!Bk^dt zJfI^W6U6HbK>+r9m3-d?*y*GC$;($+Kq^cNa3zxqa5seu;3ng$t#W5Cmdvt%QJ?R& z-8jaVO^NyOk2|YTjd%P>SSRGmWciA6MIQR#5V*I-!c~$=DW9usB`p+2^bi#yGNGq* zZ}YH#q658^DzmDrRF%P5sh0Bnu0Cd`RRIT+1O_$^+9fawq*65bUx$B`oyi9-`M%iZ zI+5W9Dv<>)li(Y@jfJ2GQY4T7W++v$s14ymlMu)%sWqzdjp_v5RbvS*m(_sH(pvtT z{)Wd!Aq$=uU%E2B)FtGY`(>JSB4?f(<@=tp71#~mW~{GT0fT z|3h}KY4QOKNK)E&f#Lx%b>nvRT_$KEyZj51}=}I8-P}kS;!+%s*-I(yDNL&PyBp#vZ%g6J( z?yM$s<4XpiI_Oz=omr;2 zk$O9ulH%t4x2zFNr|e3Q!uBTO{8mA7$U%}J5YcH4mclVD>1nx|fiZl(`$O?a5UdD9 zZ+kuzn^s!H$RsL^jlg=B1iz*9o3av)R1x~c0fv*GF!k#bAA}v;GVo3&Q~nEeny6zq zrCI5`RP2?1eX$4S=M$f5V{hlDVpyRY%D+79nOoDBioIWR+WXkUVT<-|e>nUV(4IV> zzvPk2j@qy5$c1aIJO0i8{)u~bfBS>SgO!ZlU*?E4kEAb^=6=mb?4d_1EtVuz3_vzdezf|m* zGxT52*%sL||MB-8{8UAg?JqQ3UyE$nJ;6d1OtB^QJ_EK19jzgPO_oi{lVp?faHnh% zbMY;zm@aI^`CIMwB1s#m6P)BmlB-lsqxk=yyZ3?9>niJg_n-IQ%=^yFo-|2^OiK5= ziT6xGBDtQNc1UyV?2@Eu6Crr2){h0_vB%px({pZYLK&G@}l!~QEJr#4MYMw#bu%l9R}^fhg`N6Vu7dPmdv7W0;Y2xHV%_D&g10!qlyqE5__GY2gdqAA=`kvoHR zPC6_iwUCr4eplVGjJ>0pdxp?TGlV*32=U?tWfVFvw-*z7;T_mo(1Fju zxEvY~7E6uGs)vGcsUE_(T+~B7<8q+8F)l-QgTQBKT*`m?`MdfZ_&@I=Rtxi}^<3(} z&a>^n;eWjy$mCA>rvn`LiFY*3LVHeiVD=pEz)uZy;OC!<9k}v2-hsylI`Hk!#SWZ! zwjKD?!?b@<9jIa2mp=KX-+KKoKKLuS?3m|}?XvdS_S;iCC;mnIO^&fI-sJ|TjL%2! za@B{a``j@;^Jm+E|H^Hb|27~w-~U{coa>%#2R?5Z<8#6{Gz7J!@ zXFnS6&ptdW|1VqI_dIdc;JVKq|Dt%D z1YhrYQ_{oZhu_3`aLnSIN%{jJT{yir-2ao|6u$-2yU)hIIWmCN%D?%q1gj&o?OR{$ zQ|J7b{GKUNo7zJAKa2S=^KbeYz|YjX`LEo!{=O4Vg)*7$J3%AA``NJ5xjLtwt*#pz zAiJf^yu9zLClvpAb=?@~`r`pz_wjK5oN{$;e2#bETLwDt_UB>;ZY~tjz+&@$=!3)< zN5(9SfABd54$dPtyAPHyUTxtVL#^z~`vJxyoFq7%E#|y77#!cZgye z71_L?SBN?4_sM`|L!X2wlYXBNcW3iHp-*HX(kBFqfaYGv3Q>3$JbK^fzxDsU@vS#b z$<|XeQWsP)A0Jzc4?5K#8tfKziku`1cv&wjc`reKNz&x8zPHn z97QYS$|F*3_Jt~Zc86&X1+_pz6mLN*OBD_E&dh0js-2Sbn>AmlOJu3VcqKE7|C6oG z2H|s~oo1X2)rV^7P}FF$?n65cMG7LSb?mUQ@Kosa6mfEX#rDuuQ3HJL>RsP4Rpk%SXT( zU~?21OB%H<9ncjc%p?;bgOEo_NMMSE3D;`V!%h`%b(;F?Rl7&4s5_7juLC*pdTO_& zR|&|017L=LI?W#{oHs-xQd?nGV~f$F-8z9N!I(Z6q{Tcn8?* zXBupfB&wY)2(cAvEF+;~G<}kQ0oEhqwLM%kOaprY;q2!XNpyH6m(U zQJ#d(mk)hjv5D%TShxcskIt@p7ukyQn*uwZAfB}b7D2A&jF~tl`&wXy)by>bHnFuq z5*;?#P0Ku}l#4=4*Re<~`}8Pb#a~v&YQcnhn>9o%dC`9=tW}Z`K4n`Lv1xe`I#wFd6L4j1(cKaWn5t`o~8t4m31nMl{#5 zwMHquUekVHNZo*!m3AVV9@ymD17W#jlut!3OaTX!Wj{Y|i(6*qU=&d9XK7Bp zIF$y0QkaAnrD%Nzt$>Gg*=#@)E3DvLHto2tkHqiLT*#46n9g6)TowY9oQA08{=slt zhzbp|odBV+m5O8~S&hMSAz*B6BMx}MB&L7(uS6wUJ8(i|Ck4oKFr3w&_u;c zx~BZgQ;8pGnJ$YNi8XFmsA^ptJNkmOkv9BKcWEPz8%ZMyNp`6>fUB#8Hin?B(S=5H zMFsmcq67#?gxE{G%E-e6k0CkxIveA`S{ClE2U5wOeQpf^X>COmI4~?o*ufdJRRx9| zZ9^$X&xICTp`cd|5dc=)CIZ2TNNkxBaQ<7`K@DD`cNV}a zdJ_a2v#*=7!8jl~+XLqmhC z16^2%YNhw}qKvdyvZZB9y%ngn@qV23pHwiOn5NPCc^<3|IfONpJasxOS{t3_%9UkpnA{=Id==;~p00e{Wb zko~JS(zJ$IMiuq)&JSeSU)M(39aa?U`Cfk>*1CT^KjhCt3^0dL|C?UUZ`Fe46C2c7Pl(dbCJG+wF)P*a}nT17in~ z0|Jb6FV*#2P1}jdjBDQ>`>8nWQx(Q(SW&)IPgYJ^_BQB&lIko8#r&TW-+|PXvX@h~ zxZ=4yW;?;9<;uCjUeYYq4Vqb*Xwb>&A?0Bkon7#z>*wdM(xMX^`C>)7;Q`gzI<~bm zA<4cC(21>6)GEd5Oe3vWsmk&7h)Ma#U&u01` MM7|A+;PZ|Xy5^j-PmK1!vfakW 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

S5K335B>S65%9!UA^Lk~H%B`8kVnBpxd6x0S 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 z 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

Udn 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

  • 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νpfOmbk!|EP^b@l$fv9=?7a*V_G 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⁢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
      IH&?HRy=? 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

      KF|B*#z88VRwN9}aRCGKT%d9m&O!@D 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∋YuZeCU;r~r#(Pu#hzdInt{ql0)`tLi?z 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

      eL_z->fh(!iufjq^KO(8L; zq-qLBq#1Y>04BE={Zab zt_Fk_c_~bzZCr53O(dkJV%d`(W!DaU8kyr|GNXTlZbO%}3XpJm6dlb7mlxVcjb%O> zjq{jtyVX+ z>U)qb7e{J|bQv1(y$hI3ci+iy`4W~`Q*OrUH71>#eODC&2BZH&8n$KN2_*k-LGl`% z2B4ehUd1M$8Bnfatr?(XwGd=u+&@TIjV*r7ASSr6&W8pDQAL3*BUV&TjB#`^3$rkg zF`bZ!EqZZ^K=v8dfd;-7Uf`%%T7N_vaeoTjf#|ML{%CQb$z2?*YE(agS1vVTU-kH3 zzjh8oP;l$YD9Wq6@zLy8ajSXZ!R&X>$2Xz+X=PqDis@9qrR!xp(p7=#CRij)rnc_K ziVFeWAbzK_Bwc8QA9N)D=)HVtXx>{gg-%AjjIm~eWvoF3X`!p^bfI&^z;6&fh;{ui zu_+=|T(;+|x?8TJeNpt|d+i)Lvgw8S#77V2>kJ55a-6;kgYD4raM`}TblZ TWZ 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πHfjW)?J=q4{b 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

      _Zs2|((rmA_#O;uzC-O7sKqdU5(YN*S%d0oD3 z;l{*{cDM}BsUlmU?YqBbWbU*?1ua2njk`l{k|`fN8o@L$I7xFKepa`8qe*h3@C36F zY|$nFUMr_?7I#NcHxT1Zd2WKwp^nQkKM<$ANIk5N8KmzL|+O;K?YV1XAxoI;p_@2U~lK#Ac- zJ9zd~N-F0l; z0Hxk;fVxN!5DYI2N$&A9t891k1yURp&BGs^X6qn4BFUhHSeGXX;DZAeoz=Jq#rhU! zW6;RszwWxlzd` zgH6MH9__|VGGD>|QMyM~%A)U|OXaiTnOeds*$4>cgM+4Gt+W(BsL-Fe!4y&1+(37n z!p8kBt-?n%8`@Ag2^qAiqf+1X~8|j%u6dYJ|Zoy}&{eQW_In3uYpwFuw7}H~u&z>ZW;)RbFX@^lO2ARTv@j zV<}$lo^eEIm3T97j|CDM7#QmGT601J)S!XXt!c∓8<)JR=-{p3(KdRNd+wh5Hd0 zs>AiF61!^>t#fUMTGXF;jpBMltFq78;*82W0`L-;ElT;0ABeYRroYZ`T3nVPt z7nm~MPr**$A>Q_2^W@n<(Bv!N_Z&O1*ISI?r_#cdN+fxXK>(M@ zMRr~L9<-ziO@d-TOl?&hwb!w}kS4mHwC=bEVI{U9y8Cr(zkVLD)GN)$rtuWPf7Dgg z9iWVQuAUn8)LcCl1Tv^M)l*CAVL8Ut!-T75HDN>oFWf>shE(AZumPH(|92U$y2rQ` zm>Fq!Ij~@|LOU{f;pl$4y-n~2bhIqXy2`}G>{G?m1gFH||Ky@(PvHnVl+MQo9MWWF zfe#0U^+DmhfYKJ~jrg&R=^nr)ZZv1T3e`a8eP=e5=1rW@X1acgJoQ{W8dX{Wm=90| zz*_nHGicU&41CxSSwmQwLLlR1SkX|y1DMkWt*&;ZcvNF{`S))4BTRuAsG;gnkh)db zU_Xov8aoL;bF!=^bwLJABOW*!_hmo$YzH=*-56TDWxVZiL!0$g^3g!Ryw{8q>EK}y z^)gMztI&MAJgw7=Z=fV+0;hOteyMa;9BJH4!UZ5GjNhYi<6Z1*@|>$%7n~)(cPMg` zB{JfMFU(coq%9S&u}l^4t_qleOJ~E+?lN8Ij466jL75pomw7`p&2tA#j6}igpbx$W zy$jpn^tSO8$ZwUx`H^G?c~!4Ch&dBIu{HQyK&hHkNnex=rXb(Sd^PaanQtJRG$}2 z2g0VriEAZyZ#SP-XZLnjy|WdnB-TfyDLu(#w=z4J4j(bLCF&Zo>1)aStgf@irJY^a z(OFf6`#U}xgqAYwoRAjy?aBToF;J7Hwo^hZ*?L^?*}6h|l>Z(XV`C-9*~BA{t`36e7pNXp0}> zmdYvA*0zbB%d9?H%sA_CFoSBd`*$@Arf2?yFR`S~?bKcdoOMr3` z43G6mNXo^9V^1t8AD{qn-a3`T*68#!1_i&8EpB1k;n-1+ag`iBz+%9d3L^p1G*sA+ zW6josjzYZwsui#FjZ+>KqZJX?EmeZP2XyDJ^muUfXb|j!tF4w(U$sPi<)M*R3d{B= zS)>1chWbT2Ri?*I=437Qu|>IPUl4qobBVEnudPI8l7nVvW~_f%`cnM`;ZfMC%G&Uc z()Dt3lo^h&4|>cGowFIbdB#xSu$viYUgHPsV+i_&2QW`V?R(mSsQ~YRAJI%oHZn(z zl1$CpsP&&RX`o!YCwu1jp_s8AP>rFuMjhq>|JsOc!XyA+Y$@ z>`jM+fm0^+SE>zq&}fv(jlkw6z=pxWC^WAb!Z&Iopm7m;VCWJ8WKtz?xEB{5931K# z211_|q%UF2CCV&@hw=G3N^KKQ8lQ*#?`&S#^5Ry(L#={`eihvH$e9SNE@_G}15y)E zey2*m<^g44PRgfdG}An{<}=CEl_n!~7(#TiG@Rg3Qyz??24KlNx8qYryc|8?z*CD>22`-&BFULp zAdP|r!Xm6Jke=18N(lY)mRTSiW2Ws3Xa^hwV41l_Vu8q4D-tw(s%$&S(w4ilrD@t_qqQDZDwn%A`gvb^~8>FjU z9tUM@LqGNfO$rYAsyytbLuy(UV?(kyW$SC;rN3*9ErbL^Dkp@Lv*%}Yu9MN74frN# zROxcQra)Q~h#G-Ilo~%pw)~JnN5l9x4?!xp^+hqmLM*>H^o7*VDIzFTL{R7=f}{eh zPZ9tFVR^m?y~6ZQDh?Q!-ZRS|)e^2pEf_4(l?5lb7EW?M$Ge73P>5e>A$}Z#V@mthlvQCxpKQ}sZQ*9~9 z0xb1CQejSG8fZInnzA%dIA28u+X;&%!B3@wgPC#JTn!0EPoIDY=;!h7 z2l*M5XN8}TRa_QzvU+K;7e-1b8rMjo6qBeYn?Mk+Md%Y+LlIKiADbdp4IJnE>9vBy zz^?IgmXh_rrMfu_r?8yS4!y(>sfMYt~J>QvP`5N;V!yRsb-vVvcI>I&mv&;#Stg?OSYp|MP5WVw_|}Moru#aOXwk z*}=!!U_^34^N?fJHWLDBW74EA3*DFFOp$5~7P?t9Ztrp;x~as;2#PYJPzBCHPG=N+ zVn)GVH>03gW)uqD;1e?n{@RR!Dz|Gg;inSQfb8I4D2+mhoD;D5wQApcx+nELT`AQw z&n#mTDF6Wk&Lnz?pQzRAD6*fWIz-dVc1=qjJkiW&qpF3I;5ES_WK#kED&G65ye(O+ zvKroIZ=a@Z|pYRYipjuq*_0es?+S)X$^@!t_%EAhn&e`0V1d%&AHI3!0LS_L4@6^^=WZ2irAy zC`0Lc6up2K_>GgBPil85`NQ}unP)UXjF&59ZeMjVaYr0GC4^pDVQg023^esL1ce!8 zuB+67J4s!5fe-lFWz8TG;Tasf!igM`Og_-*&X)6z4%JLw$6W90*sCd=Sq(x{XJX19O0c{lOd;u(P59M5>9v-9}3T z9M`=8F6*(80xmfY)953BH*E5w0GY|Yy(k=Duv%fNwhVq5rFFEYGpZmEZ&XQ6^8Ael z!IFd?Jc^u@s}HRkn2G5us!&#d9D)*AnmQ54lNA_B3q(;^C?I7Mu@IuDtf?a2Fe#|| zAy%+yZDOqz3L@Y>n2N+96L3)?61`gnnTK13zs@Z~iOFe+eoJt^3mTv4Lce&5+9j|I zKNy=EqrwD(0uBZ1fSZOF4ZlAbVP*6C+d9~$TB%o(QQk)8hHH^RU zSHI|Dsd8>H?Qth7G{g&4gq)o0C=gDOV4hI=ED^rQ(XzmgdTqW4(VN^bf-gJOF+PA4 zM=aJyL&*UIRNO|bSk*#k)Sy8*bsLTofI){vRHQ0W9QT0zdY=Ig6;z`>M+Kn1f+jR( z7NT_^2;chEqaOFUX-uQ=M_)06;ARHE=p!CsPMFPMYFw%)7pX!>ZPJVlfX(&o`P4+M zVRWmvy+=j8ws{1_k!&0^o0NrF_+@q=R}D{t0=wkun<>_&wj`L*Q6-<`CQ#RGI>RV8 zR}Hm;=6OsoQbj9^z$w}^+7Sp{v|}E-)L~xEzEkXI8L5{_ETs#wc-H?UeFocz1bh7) zzBtVW%^_YknSa{3PV|=)c~D+GD+m_+hq zHY_(P1F})>VOuzqP?N)nlQ5V@#T>jKy6u_b_k<6kRXqn|? z3W%uP0W)DT%tNAlRflCkIpai^y^%xdeNY7ReGGPC&+iKC?E zO8cUXdh=M{82l4`?p-~E68r7_Uwx%^wEVh(G~S2x^O4{%YGD2QPz~Tr!ZeUQW~1>M z!A2raJMAW%FZw~LdqasPIanj^)#eL9-YSPsMa&ceOE3Oj#msJCgx;B z6d955=HG3hhiKRA%Mdxz>RlIZJPtZfBxv=E7!e6nWD zVoJV@ZU(~8O50&5V%Xik9WFw!?;nm?uaiM$BE|>kHq1oA5&5ey>~$8>uAbBp3DLIu zY)G(7IH6^A8`}trLTKa_GiY@>xyL1jZveyV;hU2?72v=@#T4v$ZeG0EPCDVsbCAP! zlU~H)8>`Ra_pmaDhf|OYJ9?y~FmPYP$IyJ0V2|eRL9120lL={HaWsuVphIfv?vNTx z8#Dj|xrv$>EqM}LKpo&(EL{UVs~8x#%Vn`RW@Z_2g~ecz0^&?jQcz68wn{``OyNh# zu{1RuOH;QvDYM>ag3?Kxl(C8Qx~yl$fx@$cex3V+FzV5SyS%aQ^|B7-IaBK`_t-@V(EPjI z>kuYZOiWBvXxR)Zq%zzJUI(XCjB)#Azu1@KDT~}FD^#9q+)%CM50;~LpBFAcF!JFt z^b+;|+fn=-`2P?Z@PtIlzvrSbd!_XtS0q6tYt?i|q17ZP*;>UyG&zRuk*M|1(R{N7 z(q#nqC_IV;%PtL_0tp)e=19A56m(49kdJ~+N)2O(Cl(kWam0$jDK~+Hmx8NhAUmx<&Gp zsT`Khx>$mwWW>;g;EuyXnpO^MHeB|FY!>K{WuuhCd8oeBoTb4?AnJS_#p1F4!U1!bvW@FU_}c?%!to+akRMew-pR& z(i<_TOkOQCwP6f%kjAr|W=G8d2}e#@1O}73JMR84cZ(s1^Tj7nHs$z#Kqpeq-rBc( zMM0{EoxSE1NNuQKCh01btVP!tg&znp>o+Ie?zWSw(cEQ97Qp+Rolns(vg8 zf+OT#*#KrXurO*f+tW4R?(08JzqcJK*U`(Q|1AIiJAH!^_twc54}2DsmhQb`1G~Sl zJ!t#0B!;J-(MMh7(~$>8TGInMSfcpweev1DpSP}TeES#ko0|^qJ19vDU=vH({`O0j zvi*q4k+d6U0R;dtL%#Fb#4~=#&Ln}K$!R}bm zsHZjZB{CNsLAdh~S=0+HvEbT#k+oBfF_Q|#O(Wh>9dfs*5vXcZd8=MpNDh}?Sxrp5 z<<7VG2Jf+g@1L!}hGhwe!II=V0O`q_w&V;vo!h+6(w|zp~nK0aPjnD5)INK*2(V1|LPxxqO z!nr=-zY-^C9G&mvqAZc#+u~0cpVw-hH$czlbyju0&;60kgbRGa+|Go>KHI(CI&IRguZlpbA71J5ZdNP*<~+HV!*li1=y3ofbXH z0baD2nmkCty2xr~&_AbhL@)Ov`k~H*D}2IVbtZhlCmd`Eo?MrCa-E(3_(lKmgZYnN z@*h8t|9EAq`RpJgKP&%nx&Jt1A9GUY%N~OF+kUP!B{{^#p+XkP%*|jtt*wjW z!a58o_omiRf#*CaCzetn&5?3i&Ip-}DG)LiE>kvh&(&m(qf0$&7(t_Lv#p0_wogI| zVnahznq06ya87&B*)DxB?3vWX7JRAh{%G)?_Ou0uFfo05^6727*pn4Om5}_dBd%`` zMuRKS>abYyH3K_LP{W>l_$a$5>_8;x((LvF4nraVBr-9Z% zxW5L@z^Oxz)Udi>RwqApa42wKQ0bovTfsBPt7-^kB^l9)uDepHlw`_vg)U*W6H7fnWD*L@?cLC#M=)%PU!WrK}1px6Vv z=ZNzb1pmw;CnJ3o?M%~~%2+YkkJoh(X$L}J97cmklVFk|A1S7Z`FTx*hi_Z<7kex% z!a`4qDuLpVXb1@;U{P^=#j{7NGvQjF5OpSu_=NX%CS2ze{#>v)fq~1cdDD=yiJ5ci zx%rth)_=H6NC+@`csV)HO>yR6ej4b^G=RDSo8*E2vtq?J<|^j7OT`4ZbW|)KWlcWA zLd7$R72jYU$mR`Q>s&Uf&VH+tuz*6H)2UNyJ5|06XtMaFHL}vcby_mk8$S)PEppGY{=zR85fX*xbI6Ijwpck zKku~fnzyW!$VqdZI6Zs0@6*iA1a^{|tE~R*3D+>HgM>l35llO1L5_IivJM`!uMXzB zqv=`mt;x(?tu3M6y&BH*xLrJ|XYeF%Owyle zo|!XJD4JF&L`q~Xo$TBRYzs8sEl~jE(LCM?c!i{M5g6P;mgHQP)Wo6*v9>$QB2CetF z4o{9IXL%=kn4Fl3wo^hd>X6Tt#=I=+e`xqfXDl0hAlB zZ8aa8M9BjZ9!n?}Y3_;ENi)f^)}Tb72plJc9s0p2=8_M{C3h)(AiOjula~#uaGc<( zhz9S74!C1kbl@FkHr=u83yz5s`P!Ku(+Yq*$6+-w6r!);N%ihBJet6YE_e*(mMd$Jy+GMW$>O8YcOruvh&4rW*z&vE;k2%EOe( zGL{aUX)Ei}Pa@k0m&}$mNtKV%SAK?9i|Q;{!5%5`x@ly>SA~LJ#C1(eWm}SJR`;aT z>P9G4ZE6VTI=N?LVo)Z+!Yu9q@*%u>VRSjaJVjRJS4Uc@Q;EE=?32lkA@A&Sazz-~ zUFFX+ATEflzER z!Mq2+^QC)h(1$5vd>sJ+<2wR!HVMG74c2Uv{tUS07$l{L5D3mt(eCBNCchj$eI&=L zF^jxlY4tGTJgeE1=dkiZNZ%F_2nyx#aC6Ggh4v(?3=yK94%o{;G)XU$?WHf8tZaSe zkASiKexbgiQ|QxzLN4zi_Y=7vPTSE(jxLmU$@3&n{jjgGrX~h3Wrzga2bL@;CFc93o=&PQQE^%~&L99kt2w>OGa!s=NT`bd|`E z5??aY#%1JJ8&$twaByo{NrD-eZl%*D6t&{8*NPI#HEEKEZRKs@$Hg+YCJo6AH-GWsSS<%OUl z4f&Ql_wG6(W8)rJC4KwX>0Py2U5-+;nynh2%*4PuOf4|RtO=RQ2ue|Tk8RbkMl)Te zQj4C#H)@~rTA;D=8t5F+NLI})+em?3B>c7 zC>vp1t;8CiV0%9DC2sHuiotOZ`Vu$#1mgXQ2{-u!+)1{cc9Q!!!To&F{T%0h7D7$) zPm#2t4*eYNe&!@iN%OBB61TW1SUBIMz27(&@O8Qgd{0Ew+G(Mkt^UJff zEEya>5VDOj`@B5)tW(#r&p$uFa{qTZ#9)IDgmaP^FwckZ?54jT2oL9ZqZyDN2&vsH{jCAsmd}<8F?sv>0e!6*$w*dOoDidB^s1uHF#p`- zu<8y4s75pBiq6q>%jv2n;r(|aPK_84qo%KWut{>plg)4jk*cJk)#X9R&pLz;B&nRx z%&V07j%C2~CzGycx?!1V!!oltEa(@fOcjN5XlO?8Y;A6>TEs<5d^60yjl>UfASg5; zXl*|qCv;$8v!P01RaX)to1pjo7BHBgS7+CmmUfY!)p+Z37Pe4L>y@@&bTUY*a*u+s3m#9DQCuyq@s<)g0rxU$%<}H(63- zO=)zIA#LPi^ZspMj`o6uwv%VG+F|vd5`YAyX*16z|M6isf^!KJNxF%%_BryvHjP#M zrZHC=HGyQRSjYA~tH~nRY3Vy*nzoT^R!Cd#j?NSmS=u_6w#L$o!4z3(hnI5HKCu)~ zkR95EF`k$wP!pN{kxk`_3fCcF4ExC%`g(|VW?~!F^qL-yp&jnL6Z>)a>58|5a+zPY zd$cP=iZiv!kCQyFX<-2avJwA{AmFK)#&qRtih9|Zh6-|nOEyAKk)@S*i489NK%2-d z>eR6z8t2s`b?&B4cWWUrlR-m}S|F~Cj+lh~421gH(czVN*lMiAJCK-{Owpjk%R>w3 z7^a+t;$lL9G_0YWSFuQ6!`y)t>#~**%^fYpTVYm@lSIBXw9Q8CK&cu$6p6L-ECiIb z!};dLb|yl(9YAN z@r%&6J2w(*lf=zz))04zA0=gRHftlemQ-DJDl3j8o4irL%HovmPpHvk!WI(9R-lDN zh{;STbt@@JIdLk1ah}_DQNYe% z9}(dY4)Y38~yU9%+Aa)T3bey}oZ2M{@8kiTX zXlpe^CYaBZ9&tf!q3oBnYv587cZ= zGRH(0R3hwXFq=O`a#N2N0$hay7_$QmCQ4}6xCjD!kRm2*ToWb)Tob6TjwVz(rT79> zn?}jf3YtM_V{wX+O<_O<)dqv~JE4UO0&5A?HeyU6O+=qiqLDtbtZC!D%Ky$*k7x1u zuyRDU*&1(mR{$_bt9^WcoI_z=tC`{=ATK`1G=?b9IKTq^m>@uCXc2{q>$^K$&N5iA zD;X>l99m>%E}p{8p=)Nmy=$zZa_|DvzEhknrcgj{Qn38yIA5mNBK4yZ@8P0a>KZm! zhr<@Xm?O+OWlE7jJMOg)&UU79MgUxV?-2YKG%p@dcapk4ldJkvt9d&$Q}iU&LB-T& z`@FJ>KjVDZI%A4@L#(&8s<}kX)O&ES#Ti`&+2#^Pm!WSo7nSzKMFbbv{z1;OVKyz^ z)2UF)7+r1mfLe`7h!DVxQGIog@(Zg7mZlm>P}O7p>(=LRo08h%p|a{S<-mI*OQvccQMj>aVN{&vV1%bvi`*?(F1$@Q#89 zM&mhGyYZZ>9qR6=9e|+r_?BOmurf1%L?|90Rz-?^7~g=qIAhaM3T-UoZafxN+L&Si zp)!-5GzfcB_3^XcBHKrj~13pd1w z7j8(x@sToC$Ggj?)E+NIvMNkIG5a>oOzm;Wr``GpC-3#Y$12Y(KI`a(iXFY6L)mhs zjrOP0sSeX7-eS|5n%_4c^zE*c`V^4ORR=n15p6hww59NW9hKuJs6={;_4$SqwQ6riag8*|u+bqL6)P;*IG$8|8b}?x0jR0+%iJ|iRUpKhOnyK)A7Sz>=kPg@+|8S`f z3z}gyGv5m;k;#9E>jc~4V>8LI!%mI{G*|6EgR646NT$p-YL^BfAYrGob3l@?Z6=ag zf|wWxg90?xz z>i8UYPC@Z7CE=SmIRG<@gv%drw3YZ5>W_ZVhAm()0ijtNPcv*om7b#_BrWdQ=|5KIImnrY^Sy8eo(U6 ztin(N#>iy4{si$XW^vm(r&Ez=Me9PimYUn9@n+qc0E0O*RrP$vz(kQ7%7!9=YMwN0 zp6A>kX#|w)x*^c7yT@a=Nd9G?u$RI_`SM}x$Ey12y-x^9@qpzMzKGzdN^`)5(f&gOl7bz17-D zND6+mi&(x29#6!p09j~UZQE+uOb5Rc+lq*3(p{`f1Z*2C6N5&)SSFN?T%wLr;=OnK z#;JL633F3zinXyX)q>uasK+6#Tk46)#?{8b0bpqwBdE;##F%+BC);1y(M^R0kyzyu z{xm6>ddCV?fZ@ic0gK7xTL^$0LCNwXmL7N-3O|9xs6GHt%adTqC1>pvD^p3 z96X{DN7^N_q1{a&xNM_6l8x9FVYuV-TL+b^Y;d#PL`ym9*My^LTFhiZ#@R5x@z%#+ zyS>avbZ}JK?wGRNaL!DVYyvA zNxJQ-s8%QuRN1bp`sw13`q7+;dT6*ux%jn+e61`s{4q_~CcdGi^RQ(QL z@CE<7oxmYAw}a-kx($%q;Tigfd%~UEL`BVZvH}{(IVUd7>c>3VruuK*1lMd$>h-^m z`}((1|7KVJ<5vIXeEowR^=(P(dpN1b|Kb=mcps)d3`QY%lhuc9oxwZRqH;12{~V91 zs(f`5+GL}zYP0{H;cDDSjT~M`E@n&(8AY!9Qd4rEPtnk&Nac*b^{R3BGLU+^uZcZ! zHY!}eZb05nl}s~K=j{e0(+OXz6VmNIWD^pyLe*GzLA%$RaGpM#Dx5-mvf6t1Jla~L zHW;uq)Gg-fP9N($B(tq?lug4;pQR#uMIr}@M0iSD7*PwC>nOk#zU->x*Y{=xEiQMx z(RJ$$IW}Bx=mAwV+XM-Ce=SeVsLx!pX(L?9xJ-@wT-{jeD_`z^nJ-$mmeR;#*T^z! zWO33+)T@&pn$Ejl69uLlgtJ+f9(>@P^7!+g7wU!;wO7WlMV>VqyB}Z zGNzBRaHvo^W;`Ldph6oq5*=;)B}^?SUs(#2kNftw`QKH(>yHC9Dq3A%WnEwHx-RdZ zkg7F#&q8U%u+YP*c$sjz*;ly5|KbWXbZn;L#jfIIRx!F?qo#^Q4+owyDXf(3a9k=L zoKSaeSF6^Yb-uOr{&$mabsep)cdc%+R#{0?t2NN3|I~Jq@a0KiP(pFJbDS`p_8fr> z(He91@f8MaESII znByuIk!_a3!3@l|*#OPiO0vPFM8o)YsdP*gL_H_gzRkQAik%t2wM^C=BOHd>MV7>m z{|+g$TT%rXu-E@$APR`xb|JQa(3RMY7&o1uz+4L6sG7 zE}$FjfvE98BvX45n`v}9qAF1k*W@Du|L;Vtq)mzju8StGyt+N$zMs5jzAq3B0O7zr z$%Y^tD6HD}Op*vH?PO z6E1WK%QK=0BarJ1dn@l~H!s=C!A6$a+~B;hr?b?`9{j(H!rP+ee`jeX#KncGgaDJ^ z2krDn;QQSa$%||}(CWqox|SBSdtmL+Bu_=iSz^9YO6$x-n=dXZ!BKurs}o_xp;D?6 z%NBu>D?&H4yfW;H$SYn`5%Ci?{4RLx%t+SpUKojMU*i39!_Ib^Q1}1g00w-NDgGbL z^4v*Ie){jMeH0oeOzQ*-Fo)a6q%*ALkoYN9iPX=OojwJ}vpr2CFEOq{Jex;F?KI-Q z#hO+hw_Hw(J3RNl;D0|S;4!9=0;icMVgZ1>oJi%Q0ECsww7p57p>&L3Q+> zq^7g<*b zRu0kyMGC~{6RdJz7Q}FxDz<6%Nu7ZOw7>~~@hUv>hh?EE!{*4g5})fVAqCpT^#F>R z=FhiFj0b~9>j;@W>)!+YvEwOhPbNh8sbX$$4AYKxF~|3RFKMw)SUk{m4P6 zGdl%GfvYehmka77&xEcmdR8$7lpy;Iq$oDQw0QH4(443JlT4&fi=VpDodTMCKb7y( zbp~O93l^s3{-jLs3C9FlJAny~OPSzb7(htwoiPCg{DJFfB#)TPF~KLh(4DyE8o1`Y z8QqP|HUB9>K;bY5fkRyX?Tj|&sPlp&=>H+_u=_gH6XK^Xii$ao$n&K33*>onJZ`53 zv{d}~U12w zb^@Rmxf8_84Si7`b33Lj42zK=h4>2%B)z8HD zf3JM{bUIud1&VuXfzGAlqej|lriBKx@sWH>=zGo z+6b$KtS4{IMT2bg(I8Mu0>0D-W0Af~ZMc)N)nP&-($1`NoxurY##AL<%bF;=?dgn- z3b3xDEs+tAYfG(CXEP!}YR!|THQ(jC#*BU^Q0mnavsZ$nYEsmCnqMz$)hoPbs*t(K zHX92I`}80+FC*|%i})ODMhGS5@lPi40hf7O1dM)Zey3O5ryOvjvV(i|nt_vCxZB5w zI^zjXG39dB6CQ>{iR~I4BTCF5?QoG7<{$#wwS^m&wu1O}bo;elznA0k(bF0K@aXB5 zNf4}XQd7s(1qdfIqF%7!!iW-dGN5+)58I$QL~atkiG>Vz@&`}2m%d>t;6{Z^ju)Bo zMpkZ*3#Z(bhFad8rLA{q>(aE}WNABH+V(W=jLc7?BZ9 zh=ppj=zbtA3!;R= znvYKc5oEV?f0>`9vreb9gga zEi$x4wnW~%V4!>ZP6lP%t9NUrRW`5?%_a~=ixUH>bKIr=nqRE~O#wI-v^#)XXuxT0 zm)IFW2mI;=?Z}S?bJ0A1O@?XK?R)7lJWQ{1HHu1(WH2^SA2vbrPDH!bLd`yKIL*2! zz+;`^+f}X=Q<9NzIEV>C$@LB(x>7PsKhm9&HOsSI2U7CQ$2Db8D4|1^EP4i10*g#o z=GGM(xSS4jCP$7EOe~_fM4ZwENHHW9%s{m<>pm@sR+y?axja9dKdR5-)GnwH()bMi zHLV9MqD z@k1rzP>~PK??Y{x3K*q2q3A?)9!|USPvOtu6H%T2N2$l05*bI7I?2Me1RXQKM(8x0 zm?-HG@G|vHaY80w+t`zp-%J)+xUk!5LzcxMD;twjjk*k3sl()L%1d-y^X?%wMkh_^ zWJ1h8gh?`^aV}4Wa7oy1I3crG8douYE*=dXL6Bggah1oM&&Uo})@$6}RO2qqH16Wi zG_IPr+LJx$rd>F_2j?tJqwE#S!jma`cj&A_;jC#o;dFuWBo&O&^k`+@$SHe&lgI$d zp|9^$I@y!+Z6XBsVvTyy+nwpF`x1Wi++T2m7bA`H-X&$usG8jf)4X7D`UbV`rgn*Vnv-zBLmVV~XN!Kr@&@GoC0$b{jN32{c~nZSl}N zRe**?(;_r`GH7;<>L}=x#Ow67W<}t^4&00-@%Ct(K@uf0iMQK-+zSEBQM!wW9wG~e z6;ud}oWNvZJc;)drjqy4Zgo!8EvYB=kDU-apVhg;)wwOLbF9gNQ#~mxqb4V>WOeRx zb?&q}%@oH3O3b57(B-BN-Hk3SfXy^vN6;KLqiinFZ4$-Ic`s4k#iZXPik6Q}I+--% zX&nUTBo-FgyK*Yro^vX!9qm*&4MR<>CvwTGTOFD$iGoyh4n;GY!#AS2EUImvU~<2fX$Ya#UI&JcPt7Y)C}X|gRK0jj&O zY>;w>f1L?r+w1VK zYH<}#mX%}w%kDWz*xpf14JR3w50(xN*0Wy$$dEvA;F;3B>9ZiwC%;>6yaJA!~UMN`?z9gMuVQdCX5KX3zQHSK(0OQOswk zAx|);x%ba$6StAeX$ng$X%BbF@8N!z)ROc_GmBOOc-5nJT^fO>hMdM`r}vaC220~# zbH*}pBlxA*?rbM0T7vdPP>%hY$;zF1UWnZa*h{2s6x!`Wom{u6X{p6y*#acwCN!sN z<|K7jTPCDsPUMkY448^U@t4Hjskjr#Jq^hTYbTk;YjKzGTQ2 z+PMUp8k_YXctH&kHnVSrc|k+(29JoGGkH`TPo}ITh)!f78_|KnUh0ljWb-CVktwaK znQ*@T6GfbTqWfP8_)>Ir*v z0R2>`fGeT?7lo=uPX$D(TMR4hxT+Hlp2H^!pQK4|RdcMv9ez*(Yhh_S6%m%UOvuaG z!MXCFNk`f~Mux+Z2=8G2VmiUzwc~iUl4hYM6hmIs_UfvO4|ml#^-SA}WZ=g|GN=b> z%4aO$RIQJC@o(dlbj(z+R*Xv02{uW0>zKl$>E&enPDqElyQw8SkL#36Of7Xco0n?% z=;)ZkH{m&{;f!i5pwpuOZ0bNFXqBh(AFBwvK?!yD3b+vm?<7SX=26HGh1Rj6G2tkjmKO)N8rCB^!?AQ7&WK zx^B$&xwH$V=FcQz0s1%-u{<1`ir5kzo}h^JyQGNP{)88?s>wubRr|=gh}hv&#Gd)? zWx=8k6BlBV z<#HuFbakBrkJ5-69CV5EbhwKvAs(hk$4N6IS&@l*A5N7r>2N-r{Tuw9@1H3jIlFiG8X2LP`I?8ResL&jM-PN>+jq-V-TSPTP2?6eCTwT@!{Q_GiEVR ziso6r-NHgLn<3&Od#`K>75inv06k6qm;lS$H#?dXQCkd7gX*?j;FfURot znptgI&7I+Hn8O;Sg7_ccV?L{e5(|fR3)U3+|LS!@?g;(A6y&~?@4rXx zuB`Hlj6BwnS>*9@m(0J*GT%7%Ncfsx$ui%8!We&ycW0TG4_D$^yb&wU0$_-uJ91@jHGY%BGmr^&m%LPipS;Msw~)O0QDPtBbtM0YVOUg) z&r6bh$L$(M2gqKkD#y2z_wilz_ySGli^6NcssyXnuhn1V6qI-)`Ni{#^Z9+{7qWdM zaFx5vn|cr)+O`OEb|W-{d&CgwvWWy$b5O1%vWTYH-hjmUQ1>n z@C#isFUvAtzZH*3yphbmq~K4E?}{s1^Uvdpl<8iWR?vORL3h`9&{=^ye^rVvPO86K)!Un@-!MLO zR{U2aN;!D?u@k$k!`SD#9x3@3x_CTTdsLomO z^S@l4SaDqXDQ@i9iof{7FkYk9Wgb7M*6mH2d~>1oX0EtBTk$8an;`Imx#IS0#c#MU zoEYjjXe0&Ro~`)RSC->TlY#x7fVVec{`&>sXXJ|8vlYJ+A#qt!{2>*$Hx+-lP&~>N zw`VK9=l(EWniPLT#qCYSe^4ksGgsW6t@uSS(Xfh3Jw2-8_9hv!rBHkYGqSYv?!_wj z3Kd+QRPaMpU~j76M}-P>cuHDb=1;{bP|7K++BdwpRc*>Pe7K)FeOe_A=ZRLzF zo>K9YFSZqmkK#%zemlrA*`vYznTp$+#^&dR;-d)LiWj(Yyw*n%wiRFfL~dZm>-#9e zw&K@PJe3LKwf?>wUD>l0zlP~>Di6E1u56H%(fcw_R=;p$wS7FYvH}-;D<^WE7HU(n zdZvKdQDkMspO|RzQ3GqmzcbO|qr|Nh|L#TQ_{Ga$dg<9`1-!jUX6z^cKT6zM@#hxh zr1dWgRQX(?_$Z>b;+Ibp_)%18#ou74u1Eyl^J?AR1pLlI>zng7ihHpN3KC(wp?f%A zfqStE3NqnWf*_R%zb-&9imRI)~?q+p`saATP|v8#wtF6AR9s zt$0D4{#L-J;`GG=@LTeP<6f+SHur`&dpr`)W-tG_5^*8IyN z^i;Y1u0ZIcl$#Y_y{xj2;>reeThK!ioks@#Uvn@%|Kh^8T}SZkm5zM#`S!Eow;a!oSlBy_R;$ZuLIy)46K+Z_a4rH1px!EHk8wiY$X@?SX{@tv2X3 z8a>U`$s#Qlw`@wZW$XK9j=nxrg_pBVv5ePu3ez?nVluuBWsDkwqAUax4Rr}yh@Sy^= zLhmYUuu9fODz>9q2P#&m(YCk(t(I6=x}%$}e+(mgK?H%~(14d!RX(UP!hd`=d*aM0 z;$DOwTLiPX2M4!~pkbZX0Mtnyf|J@RY8z}&m0^?{yTF^8;=6*PwAw{?ES+XOL_E6jZ8FozM#2j?btikf06N>%TmURZfVP%f zs{&2K;jmy37-;rnpixGveugSK+OVP>2(Tfvl`xG!0SgSn7+6RU&OjIzY{0;gUK@RV zzb+X~0UKd*fxJ2_n`u{%*2}vZH8(iiz0KyQbQl5eR?`gkL)45|Whs$8s{b@ffFA`zg{%|D zV2ePUPugoUc|FzTUE#|Ru4iR8`QL~A@8kZLJs+07!~YVYZSQONjnA_4WbA!|-XSnT zrS10xeifF2B;}8b;}OBK%F75^5c+m*4At>NRjo&xbXZynkr+gvw@pMs1t5|CHD7|Z0Vc{5MBC}1!Vny~ z5@f4jC92O3`lu>|2d9g};`e^G6{2@YB+7~R66dAWPChsY;$Bl4y31l=G`c$7Z)24; ztO}O!EegsSVK15LZ#Vq*G3`*x*P+Nc2~q?DXZ#!-9OgzHI-037KR`XvBml$(^t#FH z@UfD65aj%KmNI=f%hU#zV+r|EEo~p@g@_Vp(rap_U6aZvW+0q_4Y(T6mX7iuO3PhF z5OJI_z_e?I4-32QC06724Ee0`CtLf2X&B~M$aVjZ(oKC17b?E6KmIC2Onjjy3pK7l zT<~sjIvfPQ?`npq=0oHkD%LUpX@bSN4%nP{Wpk+PZ^%C9V97MZWE0*yVdV*0q1fgMW;pW=F$2cB0#49=+hMvS%yOl z!^9}Hrg#)jDl>$H-Em6;`P!4Gt3Hm-<9<@b(T6%lufNUBw*Bp1VVT!Kg|-a1^Ke65 zdp{sr>5T>;UjpiyPq_=9KsPlf=QsBw-vw1KSLjfrm*|uMG?5OwgA9&sbI9(DxS`X~ zL!GQYCF<1()4Ms`IpC!fG0I{cws=jlLdwC1S>?mq`|C2{Fye=UbjdUIvD0$P+V>W%g%I&?L{273nK#LdA& z)*t906z%3gOlqT}M@n%d6-HFJ6E?_5R44ycP%x9Hb3Z}UJO;LA!fUS#&oLZ2Nd&og zNYQ39Z5LBTDhi6`$IdEp2LzNN5eyyu$xwtjdt94fW5(0?)#(B-?PUMyc9Vn9v9#2D zg3H^H01)-8^1_6-j(5C8kehhRV}g5XEGEe$E@KT%61qk7k#7T)RB3bY=&>}!^PsbS zEl{*4t`hp$@AL%HP|0oEw$V==5L5iC64Vieb}xbYH)z+hVo}wEOJbK6d}Gn@@M+pI z&BRCc3g4P zaS{!f!W%2&p20*4*uhyGa1tj`z<>c|5nzY|1~fAc9DAUzRdc?MS@LJ-U2?6a#fMsyC7;VH)tn$lFP|a=CZjr3j8)1Nf(>Z%X)xO zoBf7lJU+>L^hDp{)s+&DAU#~fhdd9CW>H}zfYyo2m7i<(Rdxo3GKySlc|;ewXD!9H z$o^o*{YdpPglQ>$s+s$BMdQY@a#1bEzHnNJa?fnj1nWkgx@zc+fs-1%(v#^$t}kXR z#U7-PHsbmsgF;qJd14&x*zS#LP!7>N8VpJ_Om$OSsIIF)h0hydP;f~NN(p_?qwNwi zJSZ%TE|LUO0d6MdWevDm4et5)Xop^Cbn(@k1E5`9A%98^6kmOyQq~jYxzV9bR7+y= zEWhaGjE^qoA&L=NxIU3qjog)14RTRVN{-}s#=*@_ENt>$#JxC~lS12&Or(qAr8*oZ zhQTs>2PI8KEa^eAqDOoS{BCicchSKfx$U-ti(w}DhI{*CIR~7)el5lpxXHOMi=JG! zjOJqNr{DEBg^gV@0;l5Btm*)95&ZWCvp zOF{Y=6%kbGk4hxL-asR0gU7NS8n^+nx4}`X^Eb3FI(W(1ADU)uk6+<#b?`>JM?Iui z=EHR+b0uU)X-a@a9X8$rit)x4pRtew-pc%eP$hDJ zP)qxy%>?)qPOI~bT84WLi&^Ls6tt8HhQZ#0BFVHk_3QuK2pc_tf(%i#>F0UaU>V>l znaffG;X*^qr)v1`3A0g4CX2|5hiv7?ABH5hT3Kar3?f!NQ_Q4BHVUk z^dtqOyYS)TTFhiD_^}wR*VrM}9ySsqA=!GL3<1vNVK}hNhE8{;=Uk!m#vCvq)fXe3 zZ>SFqiQ#d6ydZ)Yb85ulWXwTHzRKG!3(2QKp++b~ZZN!e@w4e=p24FRHAsiOt(NUX z$hgkLy@rqG4BfS67>ne2Kh`h$I<=pnSZAh?WaS9>N|ht_d^9ZP5GYW5_w}{wzwBR2p^=0Z4RH zNf9iCU5OwXLj+O509;q95hl)FY+DO~DhvS>wRzg@KN1)M65u4yW zNTppx<|S&F2SM6AdI3t*-h1=p7m~(R`8$vFJ2IBjoD1rUtRevqmjNBJ{-bm~!r84d zhNHqv=^OLLn~Lw;{^1Ybv>$V5{Khu08)2m?C)uhydF;H%wtuop|| zd^GO07?h+R^34S%>a>hab44LRF{`f`SDZ%jmG7b*Yxio@X!5R{H(kbrvB|q|fw4)~ zV{Cajw)Zu%ujs5p-~~7^HSh*7=>m=0V>IJVVjgN+ za5$m8-Nv5Za%b8P9p3=GrLReI*cbkEz- zpDfDGyTLAvqW^6z{2hc9iiCl){J9*snKzozk$cPeWIL^)F|%Omy&ATPn~Hb)SU6}> z9kNcv#g=^&m&VPZKS}i~jRdf`m_YOZEpAW>yGfHnfTYI@HM0-lQa6yP*%8S5X^~z_A5x5#;_NrK zvc8r#di)X4s%aBJ+t78bDWhAe?Zu1((HX{3|3r54U^~sS)6Jo3{F{0y?=i5UaB=)o zS@vHVLkv$A(+n5<5Fbb@*Ky58fNccbwpFU7{V zs!)%O{s0{xu(4Z{XSUJk5-^q>7Z_!Zs+&U)QJb~-F^F7v8tt=s!3rq!PY9!7RYNRf zqCNO2Tp=Z1Cf<{Zux!d<64jJzdEZ1Mg_s(h;*^Twg)APj8`cFrtQ!jrqH!7)M9v6e z_wIlmnuF}`aKzXVCCt!JpRK`i00NGj!D($SbYIS%?#sb&&rBA~fz3G0TAxE}a+NN{ zgt%6hBBvJ6k=IipK$BQi^>7+^M0i-@MdHqs7?Bsduh1@dC)`&UU-cJn3%)|e4@Z-W zMk4UP@lP-d398Xkx%R|v1Peoha)^MUjs`Y{3!}l3p*k8=wUYY;}gkhkGY~4kD5rO4MLozMj`Rd{>j=Yf*Co-2YXs?+=L)TfC z7=lxt43gj#nn@n63Ex!WHLZkiB;gxX!j~%aQ{yw?s|_k7d~v(YB&TCL{&$Rb7^kM= z_gPzu-Nhk+jERf~l!o)I=xfxyZ87pU@mnJXZ{mU#N}&YiK!R z@N1}5SYZAaJLb5B^RAISL3ANZns$$WNX%4_&8O%;aU8z4y^qVU#l{4@VQk3+Oms>g zGn_-S*YRIXFoAHqyBhj(N=PirT@ukR?kaZ)WyB=8|gb05lJ?8 z3E$wX<^EuQ!rUd1yho~lM!W*)KXfL|C%iNGWfyyotdKMc3NbEo8@NAg@iSZrOTL3| zENYNWds|&|8ziAh?EoLBsbepkD(tjy`iiQ3DKl;^CEVn7g_|QnZp@R4<`cb5-XsBO zG%sjs#_^jQ&AY;#+H8w&LGz4EXJs{)&Ng*4_WG1JZNiv&aX>~eC=$MbVbD>*D5&VT zc?Db;j0UU_HYbuve580W0VI)Z*bVc?!g2SwxaSYXrSr!ig-pSr zjNDsx{xndHvOa%Ho-uz*o-H?j0gdJTGl?j2L~ob>9d7NZCA0^ZlP21LTc!JD@G(ry zMc{AQw=T8UJyWE8ikabYP2YG$&KHYMkh$Ey)89 zFclfd@vJ0hK@i8iOfKDd0g=R$u5t^LkD|BrR5n?WXkrh{V!P z0onp;`z~NCZmC=73K#9q0teYb8}oKGzQIUcO$Al7Be7!ea%2}Dd?65OyhP4pP=#kS?9?T@28(*?8(iSKsK zL&UdCL`n;Y1Hue5h~rjg@5zVGj!;bs3oNwCh0)uw@R|e$qLezzCLBH!Uf*l{7nloh zBg};drYN=>SAa^}BzX1uttnC*^##pF)f<7$QmOFOL7vQp`NM+(yR+Al5YvPhZ)xf| z06u6B72WXM+Fl|s^S^1nt>V8cJ@;U*v-mAv#7u@D6(2&oaFtI}qTCS!A3yY)_$hzK zUf&;ED+Zm9zP>-Y7V3o+BKF4C=KL~iRUt$4Bn-bGC#41Go1yyhWINw$6SS6g7)89hUSXo}uF=MC++a@I<#3zoe#iFM!L`lUxBw zs{%^cXJOWM3ho0uj*l!mK;Da|IGB&9okQkhLiw@hit-aE#4fj}s@xrXBgG&){}Axis_^C{V` z2@y~%rpsPh7zp)P9GsF57lB5)Q1{-vWqueUy@k{#K7*lN8Szi&$_PGNaTxYPo0hpQVM$paxy)RvJApfo-DlD=seg?#@(7Ee3CMucJ>#^C5<`c;{qnV&9a8I z30Sf7(Pp3~1`gP!vv-bIliFX|p~22aOha~hRP&%cBPF+!O1xs7NCzb6N%=cqiaN|e zkNs};g_-`C7z)efk=?!%Ak#^;ICfFG_UracX{RYw2*v6!{~$rK_pI^{8Jj8yTC);pY{sXb;3lF6H}I%xL~&`VF5JN5koGw5q_vn0G9mWV3On3M@XD@) z7tz!}YZ*1Y-HZ^6|AqpZLIge22J;TeDC(=o8uD@l#WLxj&g={sKpP|QPE14q6_h=3 zZc^K;COH?S+_2?$WE&0&j)b|tJ>}@Z?pXfZW+SBCCF|rwr+&W0dH(qs5XobKwwWjs z#_^RRgoKHg+Bl{RISOd1gC~rWky3Iisa;;}vUXI04e3nZ`j)D1?xaUhC_Plkdq9-L zK*+-p$Zi#^?};bkfY=JfO#WiBg-g02*`kidO5Q{1ps{?iOx~k+sYeW!w4c}7Z@Z5P z-A*J%Z*fv#YOst0-~&_cLxLN34A2tXWbyF}A*k1$;MNQYZlAIgv&5b6AdWtyp71~} zAmZg*+T=m7%~^<)k8!^aub67>?A2tVH05IfSyUSC%pu@=MI{&_Vn2f~G*&S)7`*BS zdpvcnA&Wstr+79eA-4K@q4 zDF9_P2Xp%n2j58X&^xHbI{>x+1)vJ<$NMIFaYKKi@W1`2|C6L}BRE7rFPUo=03*)D zm_Z;=j4sY0T09trf7sqw&&xNTgvr68rSn!*xoZ;q8mefCr*!zW+Udn2^T-6!O?imH zU8q?+LE+0=m-D5D4l)zrZ8Ur z{DjVrjx$_QssyF!MuJu;XR1nz4U(A%J~M2qYX6*!{FUo<3X@gT`G+KFxpWAUAWv3i zn&ow7FI)9Ik3E*f5Kv4slALKQGl(D>D{Z{4&5(jJvQK-%nkgb- zIZ7_v>!~3nf&AdrU}j@`K6dD8o-}qGI%v6ki>vo;dbMWTOB7Q-mJh&N_u{c!UH$ymVv zzy`frR!gVTIkzEs#Vx58M$IQ7$y)QaNy_9cy){%$B;UEZv(Fav)&g%NKC*XUGBXhj zbV_SR)?%VzTyMuLBf>o@=L4^@{%QeqZSlhowu;g0$FW36F^YTMlL_A#Rz$Xat!7(m zHL+f7ttPe^<_H|eHh?8_&n#&!NFd`Y+-a?53!&3SR%2F3HEZUpt&`T9wZ$m;ogt+d z5oYFtb=T>IE>2%+9W{Ef-GHfnnpRqN>O^KbuXZvfExjECH*jIFawYQqVPvmQu zP0)QckqET2UbYk-&9(S=1PbpJKk?x?CQ_bVN5OA79P*A<@etZ@Am%#!NS+A(0f0bp zJbj zHa;5SGHp#Am5oX7wNY7s1>c-kHYOh#FXcjOy9XO)!#>p*9&!gj$8FmYJTk1%&ae!~ zJl)p5JO^FWVii}uc30XqYkC0erTiGrb@cBhHt?q^t3kGrt#QnriH&1xk(C#lW$B93 z3QaP0Z?d&9TH70A$;+wb@zgb?)y$Dq%bE%!Tq=qOS`&}ZUGaQqaU1(&YyA&t!!cs4 zIEqiswx@6AYglh$N*u`qtfK0%8LpCpSNrOS$6~aWOJ!|dP8O<2zWl2c)ypgG-xTMn z@i@megDR%w)d1A7t-L}^(l)$ywfW$@f0NYx2&S1WSzw`^I);|`6o!#h+(&4aPIJG3 zs}|{vO4%FHdLD|(2GZg@a~^|mMh?)|B%qOX+vrdA#+-X)rSeB%otb5h7K$+Apm`Hp zObGr|-BtPYHRB^7$trcZCC^&#B9kfdO62yS{|dmjcx4!P zv$YSYa@shomoKu#vAhe|&|@-b&4#9`IpfFUbVx=~sckSrb0_1G0E$Z`CJ8H!!)YtiWsHphI&@xTVb@{C9&8F8$ zZ&4B-!$c9F1dvr4mOBRkqO1yfBDTxIVE;lwr6Rop_AeKBNf zEX@ziNQlWK4G@z?hY&NkZTt{LfPuS&iI^xSB3Xc&GN$6BPY`#Us`G6NTW^f+V}AvV z5u5vye0VH|+Y(5%$i~IQtVpOvCSD}g1d43n1F5jwZls)cgiu(kH)%Y$Hzkc_(sa3~ zT#PefT$J^NPt#1nVkmL>;t4wAXlh}x=1}kh_&))`SnGY%hDmQ9G2k86q8Y>l{iQ2> z{A8R<$sf%xE_FagAaCl$@*owd{HMq^iHROLCcTUECV~UZ5muB*RU@(&hcNi4VerX- z!8;9u&(tv(8CyzWZZCwv+e-}ABFh>E!?>jj83h7oz>_&>v=&xDC76JC&#HV1Z5u;? zW3X;fE#M7u+_>9eC^FRP@yiEin?4YWR?HBvF&muCl2 zYkAr>X+r4CFhX3zqz?nhDhy4Gbt0_5P?3fwqO#UW-Jd8!(5Qgj{yI0^rS)@$ah$J% zp8IQ0^hQlE_**~2cvQB6v|uf4grkG|rL8c^V^wnR;AI9)jTieF8$dein?fm|cj=;B2$($HE|)Em zO!84mGsXEi$_1^Y!y#AnUhV@GG;9Jkre1+WU=>@-P#xf6xU zpl=b137KJ5i_nak+6WQM0~{Fc=!TETcWiCBzuTPcV58Wz@k^{}0i)+38vty^2 z0x`M`Nn0v32xV$Fz?Fv)b^!xKIfeX~OdJPV@l5`?-a!5{AgSyFnbN4tJT{GdlU+0e zrjdV8N^NZoKh-ej*?(;2FwkQ#od3#N_xY)7y9(2HH}mN?5|lJqq9`_QoYj_3I9drnnG-pfFhchWOJ=8(HSz{Znu8ssEVWXYFxsV{ zRGLbq%#P7v6imeE@ z&h%jI!P@VDQ~a8g<`RT33gyMYn}9t=a+|oWrrJ6oKa$`Sm}UTk*&3pAr@n+ z#$g`kuo`-+Kpvx7TeUCIK{w7JcO^hZD*=)`d-l|%xI4NGpqG$9eS&`F2$SLfzay2L zQ5aVzs3MXSH?%-=MZf0DlNXboP_p#px$-fkIuysI-UQdHnnQn`>?J&q>b{B$sMk|? zY)606+<5$&#Epl;6*r!!YH8KpJ+GR`egk0hx%><2G6s4+1w^G@a0l5*$h7iR#&m3$ z&d4StaI7w@sHLsc2f&0%J}nv}U< z>=fr7D1)O8I|9&l#J-{-(_qO1`e5erByE_*hTGGy2#jb7#7<;JUdC^Rck3{6Q$!hG z*xu~Rkbgi~O)b3vjm$8~*WsAyNRzDeFekab1_z=&hS=n5xeX$kHB6RO3wA;m>YS(p zLh&WI!S0V-0~*;FJ&wOZRa;dSC>+7PNuW?ERbPs2v4%oRITROj5xKw%d~QMHSYTNn0DW2ni#B7JlA>6yWod^cs^*&#pp+oAR*;uLjp_2*Sh3;-bz0F0 zKYX?9cQR*SXM>oDu{dg^{B2lNj;g^c32?g`m7!sGW5Rjvyb;Y__DrgkSUfC$36$w& zQS{m<(%r_0z5n3D5DsC(zXKX}1eR7W0Ss1GYaa7dn+m3S!ip#Dw1#c=W_eS=QX&jQ zCPv^Fpe}*X>W!awOz!rrTzp&BK8~eT* z2o6laNy8z+q<)Wp)Zi&I4JwjLjW+Hfm%D2!PNca`verk^|sZAoMYsHut_H9tm+`Lh@9_V9XV0 zQ=RTZ>j=*7bYC9hHDpf-ha))GxXS$C3R#kYseoo}2N84#wv71^u^-48iNHl>o$57Z z2B5^^b<8tMxJTra79iQOt52SRxw2UrKp_n=H8=tZhids<<-FE+mLTh%WY~eQO>MdI z0PkZ|Vv%aYIAr9J6+|#=#!<^{lNPq=@_>A22giWvW7`Zt&9WJS;d`ACQ!RRKs5bX% zmuacH$UT0aau?6D!V-KEv1q)LZE|0mzRh5!GLvH}uyc(q^ul1zhK+rO9kbmwoZ zC0jMt`SX~aEZsgqO8J!Q!!l}Y#gQ#AXr4+wXgen@P~aDItlHT^2`vY#)U)Dum7|-d zCTBzw_z!idEz$bGk--uz%oWv50U0jnxe~or0N1p+qFyCKGQR5lp^%tZZ8=xx69ai* z3121;l3{rOcO;MsCv$l)qD*W>s)yu(vfjng$*zTci`g0+3VIUvW<&xi1ZQ%Ec zb}ixeBLjZlDEYl?p!m&56Y={d{C>nXA8J+nUSAr&mtpsu`Tf#?mt6~cjD9sOb44(L zQ^!LMCBwK7OM~0?$K*n0;>J$Es(DxCV+jRqQKX)N97Fk7MkSVyC0XVedfa0D<7S(2-+t@jRP#ZE4fP_+$0FO+9N56(`z{hZ&V%qFB-J1;_QnT0-=BpEZ z2RM39_*$W8dxqYl38rm%zA&AqvLD(nvkhp$6#u`)5(>S5L#TIr%ZEW`S@S==Z=xF| z)t{L0Fg|5LaxpU)o&r|kJ_ZTs*4H|HhF~VOk&cVG!Iz9kU*eJZ>O^U<$&8w^-3=01 zHR`i*88HNUIwNJ( zrvd2Oaudrk*5FKaXL6TRgOyP$C!sF5g>Gr6Oo5#fPUWN<%Fn50td9?KQn+;z5+d)N zS*2a#E_zwYR(7z~S`h=#QvnxQZnf3UfFu&Kyk zqDFBue#yCzhcR7DNvfgO7>g|Kxc{}P57^-YHkQZTv}V&sJm@JE5yXadAxa zhX4??qwIT_`39sSeiM$BB=sd1rFkz|+Px}&myWsp3r+xlWsL|F;z8YHu6USd8zX!e zm<+{3{GgY%T!{1f9{liY36_udQu|64KAGIAgW)p{q)hSc+f*09nJAk;{xA})j)X&N z`9Xb#v?MCch=ezM;0+BtHuy1gPZ#7Wb`ob#yB8)fg8w`ccLO6B0}f+3{$j_*ep;la z^+q9}5ouTk@J6o-en?0W-Vpy^tBt9hZrM4H6X)@Oq9e8saVOI^y4IFpBYgCknW-sr z+A_R_p|n_L-Ny!pvJ7}Y60q|kIM@Q-wit`o#|mv*`iJ>wsBWbWc;P*M+3A;1<0k)= z`vnQ)gGq{cOvf5w09o?GjP0jl4WlH8$eSxap?Ygux8jn|{wUF0z<}_Lgg`iYo-JRH z7UXVW_JVEqVq*rqM&Y{&YED&ShZ^xcF(>Fv0xVNzus4);&JK^D4}eWN4k_wX_siUQ z0q2giuEB(OqdeXW2w%5Tx}-s$0r@ZO=Ez0@`!uegL|J;UG92g<@V4#aKqvZY4pH-D z(NPN0h+$@!l5&Z9ZA!w9dQ9Dtway9p+2ZxjaDio>i3<%kNbJSBFXy3xXJj~*6Tm=h z3Pu)Bfs{JWGT^;L)|kzN@QcY2_)R4=@K>u}R|LPQm@%O-2mfI8D_Rub7Xo;=x5|_W z{v{T*NsT)Gie&7TL`kS;%XK^n$mM@UrcBemiDuG>V#~refzj9)p?!nzs`Mwa_u3NwJN1&P!4u}6g`#-6pii< zMWY)z4DD!t{6w#z?(s{zi+VJ=p=h-5OVMb!ID;2)w+La}7prP*PS2J4@3F%wA;JWCiOY6?C4lD6NHrE60W$RH(X4BsJ~ z?0g4@IN`YL$(b-9ts)2*Dd$0Pi!4OLpVNXlxhTv>Bl`p4SXzAY&SudWpuvJ>!d!-0 zudoyi?f?z`BSpprXyDjsm;-_?DpH(BHNs-^<_z;R4>vO^X7pB2Lx|B>tB3QH&Kqk7 zH9r@e{D*}`ap|DQ3&P2V1Nsf&f8Dpn#JPfs;A*bW+TMm6$Xy5;1QbAng%H z%$voA1sUNi4&uc)YwzAac(>ri?x=A6Jp)`n=I>bS=D2Ps0Bf>I7|cmpe1Z9#9H78Y z3hEc+1X|e=I01P}^xGD*u;}EaU$tByB3syW`9o~}CXy^EZ(@gl6T-#bh>)kVh!ck=)m{b;ZS-O@ zT47zikp$MmWAQOze{ecx?7^Yf!O;5h3v8G|bkeMYl)lPOq=b0WZ?wb;{idx(d4LsR zS)F3A!}^UFUVp6er(lzimP5~`(Z{(=_0xUDC)pHC;F<}peP-aQe=lwN9sG}bWEZu5 z_A4VBB97QHrgdf1NMS$Cl0Ov{q{1?@W zt@dKGy$EC^;J7wuJw;{oZl;57y3Vd{x_XB!8&>j{>t;%$K|9-4DrYaGoAgiIQ?$_N z!3+eBT^jDM^kbYrG!nzza(^LW63Fyu9gmPV>-`dJ0~YvGM`;=qGM8jz!*Q)|zaoxf z>i%wn)J|7`u)6tGCGZajr-gEKD~ka z+rs@G?vI3fI$E4}0yVDtRJaGRizmaq>ihv}fbAV*Diq?lva1>9HqGzlBFNxEla;+4 zUKM&0{S5b^C(#V|p(n77wCqWwrRAX~5izPF^dyo^7kUEcNf|hJhbIWd-uyv^ndOvf zHi=!jLdIu7A=6`lhP|396xK}fV0(E~Q#z;ZqIZfTJ_p*83DY?NU`ooG;Q@%T$uHBY zd_yv0YrN%gmx~bj;>4vSsJ4--NXxo0=vNoTS>zW%et=Yj0BLbq*S7;z8I>Gx;#58( z_L9&dRH2j|^P-g-<3P7zmn$R%UodfRMik)p&&LSzwyGd+lZ8!HAzq`SBMER8b^0tQ zBO0kTwE!(SybmIf6Bkk_w-}QzRz+}%D=KHFoq-UfAcz>IeEUj2T!5bY3wibHoF=lN zLfpKzq=VeQV4kFMtfyd*!M0}eMvn&N4%U@$~z#<)1Z8<^d86X5=*=E20rTz_gbQnHCGmS?qi?(N;$Cj=5jmC{HM( z%sh32dlC^yFhXb}8jEk@5&Lp<4Vx#H)EavkUtk^87fsN4z*t%&;?BT|eh9J3VA7S* zBmmLemr(_87l*cCJ#3j+YxkmPSWzBc%_3%L2idNJ+8Bt^K`A9UGIbGa-o%`o7t7^3m5^+x z@1*CkSt`y{$JrIFTbS)ZRJZ_Kep~`A#f^c|^Gn`u#-)#Oe zb^OXmjDYX9^ZbdbMrh3o@U*>mZ}DWU(#NW=hT1(>`=sjZNp+Ub%3i10`!9p&&fVjW zB_=j|THP!kP0OZ;xtYaFET>UyDPeCABeKK>xdbh61dTva*;Ak$$vPfOGTELjyaLp- z7oB%>;xPq3?sKm!L$ZFMHEX~(aWPn~=O(}s#TR*xnQun-5`bE{TnHfh+h2pZ=ztKs z0NQYXauGn25};J8M%K%7Pimdd(*UGs?haCGUfO8*WB}4y*A1lVW$1iMAZ?W(O$1V= zR2TICkRq_E?)IA5yHP4hp(MS(mIgEO+dO5m5X z&y~LH=xQr+&nqb)ro$FQlpM6iqjew;@|>i7nA07XiI8i5ZTFeoAVj9DI|}Xs@LcBl z4c6r|uRsJH!?q~Hz6^mX5N} zxwu6c?TU9mQEE*nEfyk~!kr(aO{EA=Q{Uhf)(Z<3LFVDCHySP32k@~&>l6_Yn-wmQ zPg1OvNCUG#j_fn9gy>lxFYuCX4d_u*21KeUX=cYSlh_cr8`&Sef+b%Tg+JQuv1G~? za`@H?LnZkJ9~Dt8Dq{i0sxArtHl2&U0wJ=$92b+e{fgoT9S#R|`3DO}#JRRl`{=Jo zkDZPF=Sm&eY3jiCz_A!xg={TR-IB?VvOj<2(x-sgCEpn zOEHX(B1dTl*FZ8Sh7ER74013FC|&DW0OI7rOXU=E&}8)g|0TRkodMR<@;bW=K!;+|-Lb!3pPvXQyTtlUVon-;A@g zhq7#%l$1G?0(Pn=pflQzVeekupH7!NyOz!S+wO!R}A6!DjK$2NRoNVNq>{g>BOuHv8}= zcx~v1sr5P`kUm?eq2CAvM;!e|7Ng&<-&vL>72YfnmHwSt>6p^7myQ>e9zyDR_OHA! zm{zy8oPN%rylKHF*52iEs1={WcX~$)Ps0xqP^V#@$5Xh3Lc6WMWy+hnN6h5vr#OZp%iK|1K>qgQsF) zy%be-$$*27USL)9W&9ciz=_h`Hm)P3=_iAlm8*}1p?IcA+}b_-bY_lHOR`9_i&@A;BWR{V4qmw6tHo6wctfB;x|>m zr06m*t`t6Ud=xI%T3c?&@26A1)~tEsjIpYg+fARuA~_zr2~7$*9m^Bj7opHDkmSs= zKe}zAuG$JGTM}pI%fbBC zp-twU(qf+(mKAeh*}N`W0Kwco-GSn|Z1+pfMO=o(L40wGj%A9k`Z`gs16L4+Ff-D^ z#k$7$pEAE*>Z0qIBk6Uz0R|dqZ-4<;>d;CW^JO39GDZhIbu-N`lq57=I&h zXIDJg_HqvaFP_A2SX)dVJ_MqOo)-dN(AS1V8R@Z40O>OYQVHDPBQ&M)cMV7TdN*JshF7LP|#}d4QD> zz%f;Di{YChocNcKKEPon*>ky402vJ8TzQV<1VBgRoAGx8*DKPT;gN6rg-ew~724+! zD7(Nn3OA7g2VrP&fd9T*zt29(f-AO$r;JiWRg(WW(o#>X-P`QthGh2@d_@dconCgpu!foBHqC(yqYdDXX2zZ#<0+y} z>rd}z@!e+9GH9j3MuSwd1}R%L z{$>%nmhBor9VM%S<;r)FDuQY8Nz0I-`VfpzhBz!I?ffsmx@yO$BD52i?Z80PEs`(9 z$jjy^wzxSSiKgWu@BG%t@OtCy;;^|*X~!3D`=s0OkT11s{u#d8@U~=lq@Q30C2j^K zi_DG+AAhJC_iNHE&$sj^ z&(+$Vd%mSl4`%E&>GtPa`l+wiumwr96xW{JU^m13R5u=%u%AcRH)SD+eeUNX?C+1s zoFJd<^5h1Q8|wUKw#`+tcy>G60Y=H3Q{is%IxwW+%Aby2r>qAUdDAwnHt7TxKfo7* zxTn4oYoJD!g1MC9qnjk8#7?8^p)u_WuG_$R=!Fw{pS_JKiA6*FRt)qp+eo17?~Pkch!-93TbvKzVYrdLY#S^`uGu2Mk}E%(FO3J6sej zEzQ0*rFCuth&BwOjpFB50%)TKP(E7;p2Ixdv*N-eOU2m5KDj}~*kLnF%6yRGHu2hc zl=&y?imoC+m!18xuPe{~aA#MZeS}e~!T{D~*D+wldAI2lz<2iL20%0DDv#E1fo=9# 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%0A;ki49EzFL;!&@urHhYuEy+Kgx{n;p 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%0A8*4TvFe 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%0D@pX^wAbj<;hHdt679rXwv)_`zUK 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%0AW7g7J3?Yj1>5_&thMLNS&ev0g+=yVm5x zggBvB!)WaN^?AsSd{(5|@H!-Ao%pGtl<}F2 zHAAdEUo6zI*N@C)QZ&(;`uzM7-JP3ZynjZvMb&Ld!&Y78SHZJ+FIOyJ!X1&1(;XuL zR3x2pbuj)8OI{;YQ(r}a-1e@|M+98d2W~R?x6W5hmswtPrl)$%(La6`?ibBWeBR6>-Af9Lh)bXdB(#^{xvN}@m^vtLN*+N|~Py9DSE4T&{F5V9!)6g`;SS(^zudldJRUK0QyTlb)b>N<4&zn+!A(n4g=!qIUr}(Qw++>!m#4 z7>2lcw7tQ*?eY1TmbgV~dX_q-PSf<(blsQtKHVv%(^&+l_gFyCD(ZSLcc41>1ZXk` zLqjeEy@8Cr9wzu2qtv#E#>k%vA~40GqKx z13aSOU7L%8eD}=(YJu{JF~R zw56%dk^GS)2ZUwxr@A#Ik{eZICC?4+*@L8^#_B)^=0^Js2`b_sH#kkX9q8}`<8C&i zW#E?ZW12hM#mQi;-LY$=aOte9VBl5mI47~S*ZTO^KCLy6g5kkUNDhiq9_%k zg%)I7rBQ^8%Urss%UZZ2BJhUex1N>*si)v5sFc|%&;04h0+@sd4dqn7*%qU(4c z663Ejl2K2%$7oK2e~h)3kqj);?&;tOfyZ@>L_lgf6k^RDopjOry%~67u=FX&!c?>B zvgU6;+Nr)#0NT=?^*4qkDg^6OJnO07~h>25)H8+G?9P`IqGp@=3dD>^=(G5Y+= z4=rh7e1^j0&2PA%b-I16Z%^0lwZ1(~x8HKN@zINhFc9$OtbeLryh+IzAq`Fc6ur5A z^358(aj9(@m_TaqvKB2#1sltow@j9_N^b;*Hv5f#H||iM0~^}(sq`hEQFk31N(L-+ z<=9Q~SK@T0uXij3p}%r?RQmdk&lQtHs~8M@JN_6!mgRjS(`Tv3V(^w_HVozXSv1gp zVN|?<3XR^l0tu?(;3KGfbtwuNU67_zqNNbLeiDMxRyMn+4Vu=x<@2hx`L)lr+Fn|q z`e-k>O9HP}pJF22MLb@>l|&*53z=rm^{0r__1>yDg-q%83_-IKa)_)RR9Zk#LnKY( z#n5A^o@7PV2q>MDma~2k;zho4O2d>TnM4|D@X+VgOzYsEu6~dO%zHQhXn+P^r}3zC zDRRU|RokTA5TICZ$W?2t(J??>Wz@l&1Ra&Eu)G~EHKPW%VoFCApec3z)HAM}P9j*B za8Zq*oQ$fEuun!UvdWYei5S+_LLe8ZeW8M|#2}NL+s9Q}u~8&(Lu_mkWdXCaBO~8^ zLtt9HNhc5@{c6wz4w%flr-v5FS%rj@mi6|uZeWb+x!H|5!^B*_(F?j@8oTnL#B(|% zBEaH~*Lih2h-l*`oFB=%?cdtk?lyAbkmvF+BeB+jQz*K!ayxg(m=YLOHVR?!QC3(= zDvYqY3SO=Cu{;Nh?cybT(_+ZzBIlu4>~Pf}1`@TL(EFHCMX^0Z!UOG~>CtADZTl9q z%a~mX7!*Om85>e9v$A_hVvxs+{`PuLL!PD`jN28V(FRU0Pbvjb!IujFK8z;wVKl!a zT}MhTP{l_LIXnJ_ta${XLa_%kYmvTz*;{)7wQ7;(6{Max^v;uLNA2;tAezy}RaH9x z0GT_2g904_UVao_wbwh9Pt7-Bsn;2OUr~K!RqsDJ`4s}b^6_sivWRXuc02XqfipuO zyrRdP$_e`0-1oj`>Awa7SlR$64pJu9ymusz$*;3iWsaxFK0V=54W}ix7n(H) zB*gOJs#OWn;}j@i_b~dW;rY(ICSP?3k)B6-^2jOZoxjH6G&B08|IGJGCVc&5NeXn} zDs*to)Ea`()HoNqJt2|5KS{1q9ut^&0ym20h`iR(VP(`mUUnN8OU)1n>|uuBhO>BO zhUj=ik{N>6xLg5@_#U5N3k*GP!VEFa+L|GF!{k)s{VkRh)~un0dA1q_j_Is$QslaC zEiLC}yETv9>s&*@zXx;0pHNE9gz5E8Q5F#CVhvGN-Efu<-X`2^frAULGz4k9>?eRf&O^%Naw5;yqM6f|AdBOu`;(#??WO|V)=fyty z5NheYxEfEj)eZrzpzlRwoV54Q6w*;b zZIDYwq>ICT-K+c0-}wLR9K_;<)k8JVaiAz%e5UAn?tQ-Ks<74A@-m0vx1`0GJhWrQ zD;il0ILeZpcD<{0c45Dny}J3KU%(Q8SpE951|+|b)}mLq%E#wq8qn5elJ)MJv`^WI zTNuEpOt6(-S|gm`iNS~QG3UAs_J#JyD-kGtWez}#jRPzaWFU-15ffV}XeFum7iLBV z&Spjcp{~-Q^}qsy6XzGItC4mOBgkvM(zluqG=xsN*J_CH!AFtR`I-fELZE5^=B4%m zOim~j_D$xRJf@fx65?Bj$k)FwfEqY9%SUmP_D?+6%f}4xrdK!BNE-pk+FqbHbs_7j9 zg}cuLu(pNSYMi}fkfbFA-5yIzif^%`0YQ^T4dBMrh(u4;AX)^B+0+hysNObvUil)@ zLGw+Ci-(wKEr91!oBH1$JIqj7Y~^efgA-Ai_0KdGL4x0HJf^ks}Y& zVOVr%08%J75L6{q$_wfc)SOfOMyc_}WrGwo z`o;FE!a0xt^KxEpeMpMS*v6SE6MZT*9)Sb2U?>c z4uGX~9DvqxNnEH%y)T;cf-1Vj?$ko`4d2TNcoogfw9M z7!zDSp1Zc7rEjSTAfB3_+7r;JT|js30DWcc0rR5w{-rSAA|wT!mLaKz^BKp0w#_=n z1UfGRNfGyNOW+qVJ3l`sATP@U=$aP*M(COVWmF2pSq8!H5naEh!BefrhTKYYO%}hR z_oW27?eO-6tk_;`Z;sq{6cz}$o5S2e3I^@@+t0{Y|7&us)8+hJvz4c_yvWQ}GrRK5 z*{M&@Jmt^NemFkM(vY8>_s`4DaKcjbfz>zkL8rMZC_?kDFQPOq;7=$YFRLD4iUfmI z90``o6d*#djmtA97%nj;)HU<+6|0~n9Nt|Kf@SWW7ynG!>eY}*9HsTMu(MhJvzJxh z<&7R&!J=qxeH2DhU9Zqv!a;tk_aP3;{TWH6u*iKMm@n#g@Z++U8W6=ZjXd4vmcPJ+ zZj0LI%3?O8?#eFB4s?d-sCZ{())Wz00>XuNfUIzDlcqppBEo^3ijbx|T!p#Q8IL@m z{h+b38FIBdRhNe*w}THkMK6cleY)aly6=_4{&TbcLTaAjxPIRm&hdVp_jSLX-{tUP zGyj*$pLU_cp6rvIdhYpQw^++o@vDIPtlK~t<+#}1zPhudFwy+(f2FY0Bte(;@7o~d zR!tx^Si~kU2um(85;RR%i`;!xEB!^fz;MA#4&6-_fEvsYtHkNvZuXcaLTW~)swdPe z)QzB{fhpDVB-{Wm5``_e2wQMoXJ;1+vIYC@oMa0o<-*VarX*_&_$*GL7EAGH+F$lQ zF@=fAUUZUUrRbAq)zHfh6jmQ#8=Xcv0--<|w)1_nW&kl~rZn0jaiOmP8`R!R^Xosy zOGu!;G2psz+OaP1H(kzA%Gh~Hsc5)1sVsrPAaa_er9sY>k(G=tAdW6|T;QF0(mqXL zpGp+A6v9955Fiu&@c=JR_{Wv04!YT9txxiyRwtEZ3d9g9&VU_rfr31*6>4(r8#R0J zey;BAGVkkN;_;eYN+`~YE$bLhII^e2b%9RlZc8{raJS6}BXcEP250nj zhtWoNFEZw60AB3nL$g?%pKp^|;fS?Fr-L(^ow)y`JKQX~yIUcRX8yTII2Mie~9g_m15`GYJ#n7S5)GukI zW|CKbx4__2QcId?TD7?=Dmlcy(^5gy9o@X3Vuc!Xs$1_e~=0#auG>* z^%7CjaLP{mLE7CS$wyn2F4;AlE8C^XkDtklddSpOUf56sHo0pFjGMJ8HG}aU3w@#= z)JA!&OSQD{tgG>HMrlJvNs{cT_i9UbBrZ0}8{lOSI+rhg1H^iFjy=%j)&OC1yBt=9 zO2Ge$V)v+X_Ep~DRu-^{2J1kQ_CFH0fUML zv3l1}6U z<6#bVC|J;yk|2aR-EupeG!%<$v9V$Z7{|6E+@I<3^AxPht{S9kyCq*ckOhl&D05Bo zUncj~xJ#`QND2@z20gV;2Lc>Q5+pf!ydRd=*e#TzxQseWfeY*Z0ej-W6Q7BYOL=Q=ix-rGe-g%Vqbh1W~l zt-&qq&Jo)p8GWtZ!1=9>@RY`H7TRd{T`kCkT{x)Z2OKo~O8QorT*lQm7 z{m?R=o4sVDC%nYAD}=cnqgUJ8SLcjgEyOGPO)+XzjQS5dO0qLf?V^2j}I z+YD_pa%&f1+crte*qcy%`=ZFZv~4D}4Fx;}*7?t=ZRn+$;OSvzdE2Ha-9BP44$5nb z3U-{t-C7-!wjmSr z5JAK*5v-g2sf`vTdao{x@!@0X1`H*a(Gt9qr6WhfCR)~dH7SZ4^g=DwrapCgLDoTD zEDYx$o*EsfjtiJ|0bwnk#lT#bSM22fFu$yx{qgw-`0VVgGStB8*0U&KgE!%Mvn3<% zuvN53L77RFKdwCpuHK7g*MquL%6#n7!w92;OX4tgHz+BhsTJtL9FAajltY;G6{aE4 zJ*#z1BCPnxn=<4jSV`lT9JV0;f#-5WB-O zv2DM5S(8`$%3-Mi>)_74xF}&N*Ht@r2Svb>E-!8E)B zEgbJE7!0-5I&k-*SQ=Nn4dB}ma+@j_x-NbTco)IuDoK^_dm zu?h^Z@TLN+(jU7dC`k3bwKU@fb_Os|8#QtQ1VR(e7%dMFyIv9V7>d4HOhsw9h0$pc z7XtIO49qW{F9O1nVuW6hK^DB43oRlj90>%tpvOC_gR4Z&KpA0*-@MK{Zra4E#wqlT zp@Cd#V(lEHYBtdc?Yw3+OOc|o3!G2Dn)$=M@ZMCxR#u=r4RWCRCTfC*3#*FiqqEw% zA}m^vpeyNeNt@M6zg3kC?g9XbzPb?z`fdd3nbe3#?W$-^%Hi6?Zws199dteLQ?!+q zte1qA5H*(lL5MtPUIvMgsWcQJN%WMN5+q>MAP=ccYb{5??p3H72zG<&W2E&K5+ki- zf>GOFsyxpv_R}Afs>1%%m17itdHEW2Z8A#o)O4e8;9)s5aDF# zL166y5hin?;~I19BBLz8u!MmfAi1>0;Qg*GNz*tFOb}^O}GON5y*%@V#GsaSDkd zS4gLOAj{3KzXkTN-vs(>uIQMIK$0r*=1>NgY#?s%%5N!--i&<+MbF!p=LHun%y* zxwxG=K@mz^#BQ~UJd2Ap_-tSt)#%WWn`xfFIPA#Bak^eb{nZy|fT~>!I|7l??M>+) zL;!R8aLjb+^<~4=DH|U3%Hg~;=V>(S{2WK~TtxLgU1`_@+&fb9_MLvTAjFrmN#Q^$ z7(SY!dE^V{1Bd%N)q6K+NS?d+8kFVrdByD{mDIc!?GSA%s=J^FY@kDjSMmT(sd}6p8K`-AMG7-z}F_ze)J2V!K*-FrRQLWBab< z0W8F^l4>^`(s^MVSxo&TV2$gBMwoC!ox4>xZuxA|Qn+fb8bCGQ)B|9yT5kb17=#3y z-N2@%Rr2~9!{%LQDd`9{FN=O%3XvmVnf4MH576TGFhFeF2yLWEXYL@KY;n1IFmF1FJW_5~NXmL1M7(;~v-$uRCS5PG zfXj3M%}wd%p=nn+=ac0kLyde0O%{bjsz%4w%J zWI~fIh^T}Pd0f?u1~wSK;jM@^kv)OPo5KZ3S>M!csf}QAaZHYg3k7&pO&@Fvb!XH_ z2CHcg6Y9OA6Rxw^20DU8xc{m^!(XKY6NGWYv}vDZk0k=TH8mPB>CvbCS89q4sv4l#aoF{Z4%UD*7^iQC7011_av2Z&GS2i-=Ydw zK7R`K5mc|SEFKX9$EpsnSgH;oGe3|P2KBNFGXDu}2RbY7l@`p1XnB@vVinrcV5-)U z2n+_PQYJ93g+*H44cX{h1Qu~;ERxpQJ(qQYIS8i+EXu}0-EbzM0awkTEY8wdiAAnz z+E_H1oyl$_ip(Md5z9JJ!ruv-UD3ESR8y`5rWjy@!j~ z@}8{eWWN*?M>o3JYjcrP2>ElN=ZFz{g2L-kgAzv;pKZW42Xx~Rzm%EA0P9o_FI1~L z&Pam%rCP4TiesgKRxPh?w7G;VUM(#!Wfg>NpcpoLSh?l+{zzX7=qp-8g?x}I7Wnq33%p)sX4L%EdyymTER~F5tUM$Z39|T8!Bn6)&{WV* z`VlUQOe>yq{{k8_)vYFI6^BU;cbKyJJ8cf|7i=cT)E9YvAP2CuO%%-g*)$NBf;?K+ zH4veVz3zKBl^unbl4^0`96bciiGbX!wP4v+*ZPxXGSTV;Ut=Ddm>w7+?4eU^(=hZIvq!ujk_gTjON;lo^BV-IV(HWx>unqPV(W|MkMOGwMJ2LHHn$EH2(6MCD&&}b5 zcy3l}{yMH8Zx;}X#I&{fLkC0+@)Cdw!1QGRba{lq@j}8hy;F~{3PBvjoQ2Ra2;O=T zx&z^99o1NC+fFv z1GKEIL5^yPrIT5)b~K*cx|+O(bSTf`?CjLb$(mANo=EE{fc1^qN4Z6iG&9I&$&s6S zz@Tg1)wT8JZCpz}v0q9sxR)9{^*^;jwCz)^=j(9ppx}-FE(sT~jdff7i&k#8SE4irym$qFO zq~8A3nbs}|tnDWnD;O>B?K9i&&rDh0IcT$PYd>vEpZ@%*z+NFnDR)czaZ7w`>5j=< zG1O^&*>iLUyVdF$r!~Tq@&ZbKj$~GIg0;Mu zmD3OJ<<(Zg3B)1#j5e>3y7b(DJV>a z)77n3S@^3qbZx~nM>Sgj9V7Uo85;d&;JCzEmu zO%}ZKN-b=!yb3vrp=R}8J$i-(I&c++vkB5FkykDU!F)PuIECuMhIrDjPi{nVI!Shd zl_YUG0W>BI!@WNrKqZD^Cnr1;0Ni>v*Gj!(n&KmID=o{dQUL~M0 zQ~uPRefx}v4m6R`s_XKJ&g5#xK5$sqU6hREw3zTa*HOIMe!|<$#pSe=3marejN{E1 zAkKSv6mf~hon$+ffTUQq!dL6rxRmvvyg;Yz2_k?|s z7a>&UrT7S_kE(_XA!9(ez@a$6%-n^&KBH<#wX_<>!1Bbgu&DRI3~`k^uS66-gp(>{ zjOmQ~q6Qwcu3n9Cnq8{egv+vIZlKOk%gqR9nlYG>KE}a=*@|~e>v+2#&FnY< zLWeTxvI!JV1S_%R$Y9gHwNbpp2MITn(%EQ` zP@DvPa#M}~L5UG}gHTFSU_1p-9HaAsjl%zwYMz(cxiYOK+!RqqX>YS$(RArJE|{;I zmH?x2Ej zaMORoaQ;W}M14UWm!H}g&-cgk{Xf0&aj-|EyE>_qDt7f7Po_*2l@hfSAV4Mp z2?Q`24)VVqbAqHr@8ndcZ-W+kgPGV|ulm-i4H#r&#)Cqv9gt(HZ}YZO-OcQgp{&WC zzY*Mo?n?HbRlFSlJO}FC373$k8jlX`&GLn+fxkSCz#hVaF|3HCjI%~*L^`R7wGHex z26$+M3A!2%jFEa!G&;|)px0F4ytRKup6I}U{A~eBR>S+mrKHgX= zIH6Pk`7m@aALLaHCJWuCt(xlrR)z$l4^-priM|~Lj$WZR7`e82Y0eb>2MizR3C_=c zgi$D#&`A~#+P$yg5%;}z%`mGzu}bT42&=tjbw5E^Ik#O@Jws=~5^<}xKyQnb4Dgba z(~*+k4JN^Vv{25zYWkJ=FG6}2nQ(ot6QDUv5#WvZ!R}5mq`?}`yB-s%6_74RY;UGT zT$a4)>J50-kBf|*Jaywz#bqrQt$=lL^E5$uq4)jf2qrOE=NR(p9~sB$cV~0})DatL z`?g{cceXjyDpszaf$Wpuk+S-@maTKuC)Vrf4q>={H}&G5DzC3$Yuix^1nHnIWm? z5$c9{^(Q@_P>2hX+j^ukTvdIg0=H%dJ>gaXc^aOsOLw^br<97@&hQLf`ond8!!)Va z)vI*W+9Zq2Le*|9Q}YY8z&yn0X%QxO~cdPGTiXejpSNiZ+!P1HIM6FTAx<0 z`zd}l{M42Fp8it(p7GKvuiQA0YS}$6a-`~sKYr8?2;Kh4WTNiNYqLJDydv%h3H&l3 zAxW%nTT5Pj=L|vnsl`3T@U(5k4TAS+dcM8by{%XrJ>IFuU8BeSdc4kl5`B8L_#Bbx zh2d$@)42Tf##%Rv&-v+%T2zjHvquW8 zrx%auEg1P&=e+XLxIN14i%GF4GiP%ID^uUQnBNYng7=Ew9;mCVm^VA;=Wd%;Mw0SO z8V5O6(6?=Zjzfr9;`|6<29$T4Iz|-y#FbQzqSynzKx% z2Y!0153DlPIT0+`t}jAl{Q@!rUwF9kDkO$g)vX)qRTo}0JQbJ6D+j04vlk9B+9h(P zS)1rtJ*&N1qCe3p5x4r33$KFzI_d``u+6LcL9qeRCC%}Oat|ky=C-0K0`iE_h**N5XaGHnFe_^p0wPmvCKO)dM}L@ zrTCD@$A{{*M4}kZZXB+6jrmQ`jFfOsN@$AuoSHOHFFK|)Dy;V7EqWRn<@8)vRd zK$@%mxQC=RYojAz5#1Fz73sC&%?$7!`lf@3;VSHk4c0<{7m&*8wP~O>o>cTUg~CgCgqi+5=n;FafMz$$auaXCAv|AG!OrimdQ-1 z`t})W*{R48$Px^G-VS2)j1_Y$RM=&v6)MmOcA=yi6K-3fg4U)GnP-4I&bQ@(qa?1P0F}sy(dH z^b%&Vt#}ma0r7W$$SChl2`U<>-CSd~EiN8-&Upno$|cXcR2yY3 z>Pj)NK0iMO3$%2j4za#ahr~MMg{sCh4;PqhtGlM4(?$gH%T#fz$_FvX@A?n>J!t6b zGqT&$b#F>{O9{?|oXLp2g37tPoC_oLa#_6lUgPvpX{fsSX7{_jy&p9hijwB=yKu*J zGnz-ZRn0iZl0<#anny?Plr3$WZ@EnpAM%B{ajdcz3? z7J5V1A-y3B%*CWP%*J{{a!YT>e86%2kp z;m4RGDwt|yC%B|7LoQ_bg$mvUu_~I!qR#d}Q@3n9-jvB4SoHWS;2@9Z=U40U^x_Ic z!#~gp1oBqX%azzf3tBC75$;IJN9nZiU#u2-%>*sL12y_r{oz>>j1S8Jjq9DP8u+lk zoY0OhqX3YPb0Gj>Jn1)k%cNl^_bsWET~W$)D@wuF*QM>UdpJ2BE5y4%H_fnRtCaMX z4>4V+_Msy5>=2f7vpZS;grfa_icB$Bq3WU7>pDA7B$qaH6PRdK-K++XiTFF*_S7wCtWg*%(#7hdSD74q(;`awpV z_OIpxkWMHc_G{^%TkBdbe0Ecl63_|#l~$9@&O(azQ1(8k5c7pJ=!I~8+_n_0Jc2oPb3f6XaS_@mz0gDO*MPcEGSNANMe z0|g`JrhmteW~^9ls%P#P_HT+hdhNUEJBIVTyPTwRe)pW4>i%1z*|Y77d0wbX(f1eY z&V9c$-qH7$aF_bNBW~6Ai{n;(CtyPAyH@VVW0z`B-2E48-A<9Dx`beFjh_0`?IVWml-P>@}cNlmj`i{aepnbI**;)|n?gdtJ?a-zEE(eBAzHeJUf-=ycz znH2h}@fx!1NRM;->K;Kh);Us#zUTWKbz}YL#kzWZ8*C#=kY612F*|r>sjp-DAoDu0 z^i+(eP?DbCO6!B(gI;8SysSKut`DZ`p>#c%t_RW;bFkB64)%3#y6yqOc7|pE z+&5%;OvsF;O~}?xDUXCcOr`?OfF|g(iqOozRacZ)dvrb3+(uww>Tu~YRTUBwKe&2s z2d6zEKkE%wwgot!np~e+XZ$_&`5T2!kLV4`C-0F|Pa$_b|Wvxjs2SPIAOpoe$YV*#;+()a8r`|QWC*Ujk{M@c=>_Ye;EC7 z_Y56YVS;FaN(-e?e*+5sZ0Jysp%YLenXEEg`j8oxbnra>)A#71^BFok8#-wJJkJam znIQ9e4aq6i&|!&%>r;X(FX>bZoDsNy5+f}T8CWafM4J!0v+kwgK~aVW@G(4S&VdA< z!$?1;()!+jDDdM_>r?7tC#}nNUQYbI^7#x#iY(*fQDts6A3uT;<~_3C^qT{5y9BFM z>m+tl>nacl-~V}?F+i@{#|7+}D4<32y{Ui}-S#2$hFrvFUS*=xHr(X4*ddkO4 z(pZS0)?Q#S%G>I@eT6@8e|lC}uGz;ZwN#^qh6uj{qsP=jGau@pWuEHd43FVDh^3nQ zYS8`V0cS|gs-62#sI9yA6-<$J@%H~liN(Fs{g;i;#)uT)jfGHoyNkMUSy2>GuRlQ{ z%hOZ!6jiUQ`&*0M#VcsT`cdt=AJx8lc|~NnrKs1Ppe{ZK)k@bZ;*miD*c_XvB{io} z!V11_Mm_-{59s#{A>|U312jU0Nhm)VXqKm+1kJ4{0?n<q)G=88UI5&=s`RKnQJbgwrmfIsu4?08fIu*8FcZ@!twj8=}T=Kahz2=;0#BsCyuOTZa)0U4+<&i<- zdE$Yw>QChMpAnwN9gX9|^SD`#56|Of`98?>j+OA-Zg{fzn}DY*V_t4qzdMpKf;zHm zb;B_bbb}FeL%m_dp>@9kK@T|h3IIJx?iJ}r2zuNKj}Oq}X8Aqd<(xOpW2YXh)8765xmFhQRi4wqcz7GQB@ ztn!k63}2_J_wl^QU)7c3sK()vSGlYd3U0&=XTc~ajZ74CIDT={AI?OW5b2`oRb`&B zqf}ZN{LkVt6_@F_;0@-RpQH(M+~LYH^VVUxo6>MU*-h!_O?Fco#o`2{nCLoVkbvMs zewIla;}9Ov3c$XW3jx@5f*|j)AF+0YrxZ;F3+Li(e23+8CgnZuX^z!EGykpV{d+{O zkI3ipsEb%&(kB(NdE(}F#SouJEmah(=A#JalkQk@{Iz$XmceuNbl8t@r+6m!EWNg- zS2$Cg6K@vAZ#GfjCdE#ez2gS7Z8uaOl6|qLZi)@b;p`~27@mCE*T-IAtJyfcF;?B) zRKx*qG9!|LC<{7L*JFr{5|2TJ9KinRwLHVDU7-v+eX(=z2yZ(Mm_ly#2DRG}o7|{_ zdo&z=FQpx_h41^^BU4N_9L$KH@N~lxco+^rnB=A#0xW2aD7BnybhO2K3uXar5N5ra zBT@h;wVjM+I`qQR;atdGgnNlV_DatvK&1JE=cZ;8`0j~@=j~KDFvJB12H)IY$0a;( zVeob54Z}{Pj0-7!bAKI|NNJPJ8;512j0-7!bAKI|NT~)CZyXkpGA^X_&HZ&;B4yUQ zH7~Wt#M))HN^0W-O2maBLEJg8dC@3`a-{lo_DeXFj@(atYB4VD+6IjelV+?z(B7V$ zRMx-~yF*)csTlge!5E6Zk)fol{+{jfwnZtd8XA)CfMr#@p;?**;|Rtw0G;EP+0#gk znfyP+(|K`uPFyaE%f%#l0331+_FdyHVx6M>2YWasq<7?^vU=6jD;nK&7zdXYXlFW2RFK%~1d-E#SlHdL&&ROxHu{dN5rNz-`ERU`jz?xlUhJees7c1bPg^ z0nqPC-5Of>WmdP%!=Cwa3z`$Lsu}O#m~9*amCZ}flWuV4sf6s&@8cyNa9OtapI?e| zuC_+N;0Cjx4%v_zXZMp#FX~3 zVGjjc)>VIW771xw@Azf8BsKQH)F0?_aOw~CT%g&UWk;U#j=Q!Md!)n-dHn2W;Ev%}cq=!q#|p;x?;aNvDgEILTN*Wm1pA@$s zQY;$CxdI9u)i-}D6?4RQ$$_DqI5eE2K@745%6n0l%z+S4(>OGpp0j-WuN z#(m^LAZnqqq{|~91$=%G2!Ic1s!0^4mxq{{Vj(jO&+q*9Q$Kjq8z$TLsDQppv&9WM zs>j7NxgLq;J}%s)^$*9R5Z2Rarg?1Yvg(6po#cQedwd4s(->&o)EzQo`~DW)<71-t zdvuT6iSBRJ{VOc73=z|$VrOrceAtmtGg*|?7zj%|L$WUqykG~R1Xj|ZP$v2zl(ap? z+DOz${%4(_jWfEQSI?cBAs9W6{ZA6p6bdG*KD3G>&Y-1<3xG7@21n8rBbT2K3 zDtf`ODz+7vY4L_9_s6ys6pH-DlS#_j48nd=Nsk0ewFr`M0pt@c3Y0AFOW0(FfJg@w z!&EA&t2_r&o&#Eu{P&XWAVMv4obgHbhqylg{(`}?fY@YnZYg`f9uL`^OIrY@t9KG~ z1WyI;>CZO~rqh@d zRJi&;2l-6j?33B(o5TZrl>|U&&nc>6Z#kUPUTZ}w6K9&Wgf79Wxke|)&5iv0PHE5? zZG^ddbZ7Z;3f@as$?IvRd6#TzhhXkcCC4OW*1bu>(c(pL^q5`8-;&U9l-?8Uw?{$vJ!D$^ZmHe*THamI zthu^j&*D|IMQe_$HqtwkCiG7fWsGUyiXrD_K7v0Ff|_1E%x#VQJ=-jRQcRGPYL?}0 zJ^QqLnrPtFE>`6Xf-!P`njW`{erHL<=(7wO_C>c6whFn7vw}26f6fBGbA##HR{17? zod+<{7-PYct@7jG_g>zu#8@X#wOfnZmt?}FgLiixFO%lam4S)|q^fvSMY__HStN&;NboJqqPTproR))8>+{omuNpnnYe;fzq3}E`a_2e;3!&`oZ7uQ+TBa-ZYv%q z?F>mm7dv&E)CIKiIw36;(6?*d6g94@zJ$uk!|OwksjNTjZiQ%Va+l~bPyNADfVp%b zO8bx|o*lqumiR$DrS9%~#qcThQ$}_q-H+@@!f|S(0P!6Pz#V640aQr=n-IkiGoF~i zQmXq=0sDhDQUJ2coHS4~!cZZRIK*H+fH+4pll#N6@6l1g6=)~GveU!}!Bv8J3s@zk z7Lt~ck^`O-T%9t#O$uNZ>x{&B5HM7vV$(ERR_qufIZrMX+hU}_-VT>{H1>Oyu!Lyb=~rhLce3hU1k%!g@Vm&G`;c7d5I7D@4>#d8q=Z~w9>j@` z&_fiI%0plhh73%F)Vy=;&{~2?0(eDGZ%tXfei`dl=&JS@lL6}oCA=mg(%eWbnpIlf zh>B=kLl&*TXPToa(RKRBLZ+FjzHz4T)}lJ7=qyK+6!bmJl?GcjhOZMl>ww=p8+A$) zDzRf3geIs4pfg!bR6Gbyi2o0gvAGYG5wny#$VxhDuB)~(Z*);q9|fSS*|DXHxWyWD zd%DGVus7YZt!PiW1vocztF;Jd>;<#naXWBOSY z$`w_pMkT32Lt-&G!Rf|VsX__Ev6zfa-LWc^+){;dxx{58Rp>++crI&ztO_OB4xPp! zdZu~B=G!1HTs2+%cBBe*;135v0DMbSd0neQK`nZGgwWuU__%#&YJ!D;ama!untbg# z{1j;xr!~P7%1Gtas$WN(RaI|1;>eXJNPQltcEsLmrdo8+<7;GGpNrBrTVM~OD zgHv@SRMBZvCao?qBX#!ifp$MzN;aAZ_%olnbBKFpCMg|5@f(_c-%K|tftpK8{>Bn6g645>Z5W$c+spvk$77gxCPXbc( z@*dhUq9>ZEYM`gSxRLsh`Xg#MqA60e>cc&BbW8L?ByqEDb)w`dsW6~c_alw6CNc1h zaL>p@Myx<4o`R5*_*FknWKb?h$Jd^s%@R}1R8O>Ore2M9320Q}<2{*h13I0Q3bGm~rJZ z=Efvp>UM{H=8j)aOaYKyw7Z`3R1iLEn)CLNq@6epz9XzekTb}PxoIHliJ2MQ@zfaf zy~gD+@$ocuXm~z3XP{wfbCBWJZeUtsnd#EgS*?@0;K!Jc5ojM^`rDh~# zxTr9ZO@oLD4<#|;2x5fbPRnSHT_RVIz4W%_{W1)!kV6;|hH@~ElrahnH+o0QCq?o& zO$HVaG_@7UZC)a&TPvmKNQOU7hBVeOXE-<#W?;7%Fw-7%4q%xsWsIExd#xg+mTE(4*^Q@GYv$_4DDTSEI*sc z?S-fATPs09f~XrPG-zkAAUT{pKUZbyI@%>>w`R1S&^gfy)(I?5qomA2kVhnESf*^>&ZOyUq$Dc~5wstP!PuqtU(raKT;YiKVCMGDY$CX?Rt z{NchYBVH5>3!upYJ~BdAXHaq-^{5TQh47Meg%mc_V!}Cr#?%8Vq{xKQ;+o2t>TM$Sd*O7Lupl}t3wMiL=`GvXL}g^qp^#aDMRINN2Ixt@j6rh8#A^{5dm*&+T}vfEiF~p zk-#Xl6Kc`m==dRs1&)aF7Wg(_J{I@@i#NQ2z*j5|ncVmJ@02h5d`AN^&8=@u0BBF; zS(MBQIQ*5gtz0~Lm<67nl`#?Hpuw;WiO*ZXbVJ5*$vU!K@nVi<5jdb?9T?L*z6W1aBJ?8B=FWdZ?sScY^*P;Kw?i=#bLH! zqqN;smOGTo)jQs7>`vMp>H}v0_v{tmXeRJJvqCH0#l%%NcLY8EmD~}m{{h^Q@$U%U z&$jQW=Nrn|nG-fF?aYZD+#{(oI164RIqO_XuS04$kLhh@G+1X?3ebOabyP zmiVDG|{Y|k!oN9Tlr!4 z;Nut5-0QD<{B^g#GDBwHVdQq*MmUwEgIuRK;zBnD&lFnSCy70okh7)F9rOUK* zR`RN3mg-Ghz3xK2cJn~uE>>^tmbJ;uwHJaTpeN+|HS9O~N4kupvy(qcW>2mZmJI*N zngmeD$Vx$NpEjz?ob<$GG&yl{g|u=|+?J2b0pVI@+Hd*0liHFbK6?oNjhw8tGnqOy zU)sBp_#C>I*N8P{C)oNt3$@WAyMOw%u@D4(Gq8zimUO;b+wk6Wf!$pCHpJijjqp(B zKG*~@VMYb%$PFQbswnogH_*F*}fL?)!NswO;1{9A`W~D`&LB;2YIYqxhzg+|?*w;eb_Wz;xO)s;}B8oL_`^B@Jz(+E1@{ zUZcyL&TDl^I>U4V-W)850j^7&Nxld4n#4ow>RModg{-{Hws? zSu82=A;`p5Q!Nit92 zo7g~V%B1NnWdeWyX_|KTh~(8Q-AF!ZNq7wuQ-Wz|3T1vjNNN0ReEA zpH4MadE%-Q8#OrNJVTiL2^qT5hFxg~lbK2T7Rs4}@jf$Y>Q<5WGZ(PIxm^-2Ctjr( zsllYfRV!~sxw4g9@+z*Z?DuwO0^SC9)ZGF;VW+ zGI)Npk4Sf2@8b$bzmN6&$D{Z~(ZXzVG3mO=Pr7Q1Ytpr5-<&C^Z`y6gY=a$a+@2gS zc@>+ys%I^mTonQA(AI)AsAaPb9F&4n&#tfMt|J>pV7Jh{}`O`Ed!OfK~dm-_L^rA}Px zy^~8l%cb5oxzwYijy1o_nN9yt%{Q|ZwBwkw}TRz@@1%2%0#{yf$Q9z ztyH1+Q1CXpHS1w}EGVUyTQrV^*99q}!8ALrvi{;O`v84M3aBNm`J}SaT~dX6sTNr) z6fG3Rq!xUNDZ*I#17UMk20;PcuvxKPkc~4(T+?zp3J0Z}JxsDH)Y71|J^)`r)Mzvo zb$BntsWY(`UFVI0JalIISqnF|Ga0?!?X+a5O=GW)bCnfA1tm6=rB`-WdzV&UDMt7o zS4=i05)`>GRa(F`MwEv@SC_ML+TdHy>6Y8AIqb`<<^aHU;9oA%Bb^aK{Y3IH*+y0- z*D_Dz=6|-Wwv}nMd`9(bJx&*9`>dp#j8}`8AmdBH5`J7c2S`aM9>~>`P16O!Ug0Un zTW0$BMZ5zFK`2&k(B~6x#4cgeoD%HtX$f<-JQunPj$w)>3Cn7!;#v0U`-68za|LdV z8GG`;Q#f{l?T*%dtgW8pOe)&p2;a@;DnK4HoHH_40iV*~sa~mDu)G2oHEUy+8E9#S ze>O&7F~we`;d;n=YLt!X=0)eb1Y0cuAqFIOk$#I@+U2|wp4jWoKCPhF&ULT$xKA-y zR;EL&m|x%!b+R!O)^FqHi49}Sl;~U_486!aIn08%xedjYrWOIBa3B#Dp|KVEweRMD zl1rlS*%Q@nQ&6;8QUQKu!abg2`Z-X!tIi-FQW`F0HR(5%E3`feP zgat2y_YiQ9;m|881vyCf1H#atm&cSB;HzUZt_a+c=qVF{j!R$J=_V7APgJ z&>nEftC9|%Y9ybP%o-b8v#Pzlp3ah`Ff*C8hIYrvE6;+zVbMxC(bC=%&Qj3S;?9ts z%q+lZY2{cSMFR%j@|npH<{x{`qX1DlR)aen z&X+Ue;xuOey311OdOjD8uj!a}@M$WMC~O_F6K@Qsoj3i>}V2mG~|O( zN7-1E3OBHL9DcWkOatJ>#`2$w@fNqg5p8;3I)5XudPmE7)7y_?F!9Mv2ADj^ONMz{ zQ4D$8*ER-Sayb}Gu^HAiZQ&=ZrLm6lMEK~?JwLiSodm0R4C28B5HGZBjL~f&)G%dB z8ok4K6;bD55-ILn+q(C?iB@tB2I~3$Ev1%#O^zp4$5J+neAzWHRfjV$WY|-G?&;AS zGAZcjzh_}CGL5pP)9;5c!TR1hok$GLp!-bBX#+GM!%17|(JbXHt7O8GZ%e?6q@cNy z4h^8^qWlULHVIQ+wbPg_Ygo+_McfGPDVx3ylUJ>wjY30k`kHr8iZDUbw})#O5qz=r zMt81Z32rpD_G4?;upBmTdjg~QAJ}eJ-5=iOj&I*YEwSG1-Gf?(Oeekcd-b3qNxOUS z_ihRO5?izn-Nv!nqN*v5;t3NHGig5;25v18Lt!MlT+u@V+5676(a_Mw@r$#V^MrBa zareHZ9UT6h8vKng9vAw<4KV>ILpB;|=jHEOe6eCxP>{Gb9brwJ{Cz$-MwNJ1k%Ms{ zQp7E%qoD1y$(Ep43LCT1Q1I*ywFwgLu3c{$lvPvh;{V5Rat*D}2xENNA>s|!3KCL) zO1xNm8aB3cBAPhB$ARP+oqZ$Ll-6z$H^rk4C%dJSitK|9RslnZ@8@+!NZ&wWP{YtU z%QWgk_Dlr$%NE0CqxV_{xD>6jH|CfMg1565A)hY)D;qxfm>KK-8Uz%UUg(m-*5Nq# z>icfNUA7jEz*geS_XJy5N3DsUaLd@5L*bUz*czP{3{DM;GH(|HY+o`RH3okoXRPD2 z2{d{Sg(;`>1nl={ypXxq zSA&hkmYaN&0OT$?R&2FjhUTomrUaJXHQ1R?gJXsy2wqvU{WEpDD!(Pc{qsf~GS`9MJJfOiic(QRW4e2Q= ze6^We0exDfW~ZaeAll~C z_WNzif>DJz&03O8yJT_ucf8RfSSE6#mQ2mA_)^69zp_RvVg~lDoDadQYY=Gda=0M4 zfJX$&ngzl6cGuzVJnm*P6SE*VmpgVa;qGkiYV(k7aEA;|tn($nY{_d!%hTWxv}6YH+a6HrKg%v3+k&_7>zY>pC=!M(TwtHRANVZ1iLkv>DOSaa{>#*EZbcrK8_+x41#X==C?VeV&oHJ z$EM)=;iD~H%(enAC@wV=vJ$!Pam`FM&-=m-MM|FUQ}0)KYFy4v$SKEP#k*^b+(wIt zss1^-% z>l82>lh9o{g=0ffC*eJdU~ytdusAMfi^ai^I>42!F4)5=&mQ`WTT9)TM+>-|uFI(* zd#CB?3mV7h9P@>x(csj1fd;-bj+^azN??4Uabh@kesH}@95W+}S$0Yw-XIk53-x3h zp9!4C;f8UcanPQF%%n);pk&(w8!-nioyOrlSBZLpUUnLX8m4&*j@RMNYaD%2Cx~_% z)laETSR`z&POvPtP$yV!4rLZP1%7ClJDba-u;T%zL=c?@Yj$b`u_$ZOmQy5HM6o8V zFEDL_bu7@wDM3hKta1Nuh?UlbOXo=)DK!mvz^I&WUNVDcGn|mlaE8n9{BhPXelL5A zj<&pk^4w~Fj(Hl~8}M)6gHAtTLoKJD*qAw_HGsK((lGr*<=8ffeXU=d5RY8m=MIY1 z2@Pz57A=Gpy^kHf6Ds75pTO^}!}9Tfor^H)wK8XI$|7+jlbfbL#`yp;bgJXnG$xrQ zjAb0;Iqk3Rzwf?3*H%-%v_yQhcx6V`#vxPFBgruI$xLUcuE2y8A2{ zYLm&m*vUO>JsK~v&xQA88>k6SwALjTJty=8o#U9NN!%81akh{3GIBEG#pufh&6mqS zlCN5U5q)zbHZE|!>Q~BF{YrHWM=6-EnyD`DtFFsw0Qs|hW42r;#}FoqgH}851gCc* zsJj-UKZ6%W$e_)Hj`3~vZDX2NU~?y?D-yluB@t8Ri!HyuLf>B@;##vt`zgpj!WM`w zEtUscbg`s@1DoY45fv&GfB=DFPnS2HpT=(j8UYEu5L`hl=hYm;u#6Q(0@SXG`T@j> zP9iE4DE4F{K=^YbB6x?+^u7GA)C_Y?$uT7sByYF_1PB0B5CDkQXVv)Eq;}SK$PtxS z;?XiJ2V7Tu8l{x#F1_kgLAZ_bf`}#k{mby!#DhyDO9?tM11E4po+0bpx_N~9GVNr_ zSQlhxBs0VyqA|LFzHvKtL0AO%La7B|4M$={rV&qK>lR^<2sGvmvX@?X=_MVyLhwx& zVGcu>>>xZbVLGxj1Kk*5KmK5K3y1vD@r3+HmC2_cPzay`O&+q#oamETKdsf!w88+O z<3~ni^eDc@lS6PPGiW+K18?OLR*2giUry=54WmpP(Yl`Hp4sm-^Rcuuq;Gye_+-#T zqZ}JYFNV-H6JZ16c+umO#Jw~S+|aO()AeyWm_NSvsE}WpS)d{3KV*!^HgvSsRf)}U zz|t8se(+#`u#nxgiH3-B)tI6cQ%cZ9(iQMIlZDNEHJYMpQX95NN-h6<#hUau!Hb0D zu;=uM={!~XHh3SX+8{>b2aI}BDv?!Ytzhk>DvOAZgb~z}qZZSdng^xj>M4t41!N9S zk>Fw6Lb`}J`ZAfes&hR3aFo%&;@lA)aTd4pX9rZ1Ok?u!c;7>7Kc*s>ICA6j?bKm+ zob@ySP?CsNM*>!_cH1AF_(Xxh@zK|;||tvoJB(P4!7=1#x0n*@+N^V?e- zYLesE$`nnGKAaMo;%HMv7fR|#L{tzZuXwv*$tD(#GdAm{5on2co~lq&jMjV$7*gH2 zrn)Xr$10bGPTVu6wcTVvH?3<6j`4+x;~x=}4s)AYW@Ly^^F-Y`O?1MxrBl@&NX@P< z-!2D&$baHY6E^8gYtgd9v76Qm0@!qkS@sh0LP5f?D#C9uCxWE&bI|3H8?LV!MsdR ziq%?kYTh4>kFQs7W6#W1Z&&-sYl!0715r7Sg>zFZxf)zfC0(TQc81mq+%1wF9m|eB zL$IG1E!5KC*jdq~3W~qEMV1k7M3Ygft~fVM(S*ymHB|OiGXg$@l?;cf8G`W(v}!&) zmYGY^?k24q^EGqKdtY7+G-3d(EDV4Z6$3!sB173Or|Tj^*`9t5#W+J*_?4l&hc_~m ze`?oL0@M0qGn5~4iM1RmmMQVLu9zYGqW)xeogzC~L?E>vJGo|_c|g`{*~t`a$K%D> zs=_nxK0BpL&gsJ1M?AUlGRyl~ zW~m|q14zcsW4FW8&CYv0SNs8>g$8k$EOZ`O-t1v3Oyf>RTw0hMH@I$qXK%nPZyYa7 z!eWnSoV8sWo3J`tOP1tQWpvNwhP`i;`As&v8l4m{H7w;zg&K`Unn`8*@3IjJ7oa(U za1zZ>yY65dB8JZ$A z7~~|xNP!P5)5xM_Yzr%_+SoW0tgro%FG9y0((M$IAC}5K=0dHC zAWxY~podGzsiGGyLGauZNA=4i9Z~5vfd?-2wU4M|JQLfeX2*a4+SmmcC%50%N8XoM zgM|Z8)7mCo+i9Hx*H|8|T@QJlkv8o8NUCGmn%eo0;M&U0hgp;vl4*a^IA=N!?2am& z*EATo!!vr0t^uvDpPf*Rj&!4jzu`DYJM4{8|7NKx)|uE#`Oo!$1HIA$0dLK4I}>G* z>!^uaVO@HpRsNb~c(|_?2Voq?40984){z&axf{-rjpoSk!d-yzk%{Y00kbx1 zZ&|F5UoHz|>9a&=L7BxUK}n|s3pA!@5$6ZiMu~{Sc#>Lxru1{SNVP z?=J39ciaOvg>jDvIhIY+a01TuT8l}ckU`$w8ZNeBCT>3nLhTi@olWDh7=Z&xuU5|D zlQw82vO^q4jDR-{aYWeuV8)#BdzKwE>;yXa{P_go+ugZ3 zhTHBI&5srV4%3h!KbrW2)7zH?^CK`W_R1%I(Jd7>l^E5IvLkrBFxz_5pX;CTZvzVI zA$~`mA@1fyr?tLvLOc~_VP{6L!MK~-MUpI#h9WlaqylYNkfD&O9il&Xwu~`VdfW4s zP<}RiJmM+XPM|?uWRt`hH?o|Du!v6Y?``8RG* z$D5KqR}zfIiYgfm`TEbnxUOqckCy=-*c|ww64G38?H=h3F9nN2)0wET96Bm67Fjsa<$7?0*9aGz94kffjlb9MXX zpa$6XCw}30L)^G@Ran=}LOBqMIT+b~0}M!dBpg zLnximLWCWeP;itE*ay+2c%h8YVyI%YLZJ>d0wR_0c+PaurcX7*i$P_d!-omd9JZ|`cUVTc!gqo;@BwLAn=vs zWm7U!ic%jC>zkzl+f_BXBw*E5fWerjRZ5F=x19E5iux3=!@ibjEk_S1Fufh@*quWT z=t0k(n?*~8qaajGJf&=uU^+O;IS114>YaE`N%u}RCs(RhBpQ#|wEx^88 z1J-ogsA$Ng4&IC0t1Xx)o1ni`Oal$mfTtQQyaaZ#=nl}S zOm{#|eYyj1s?;5DQ>*R(d!fcD(~S;;0;2u9>7H+(^qw{xg_=N+hCR5r{gvZIA8Zw~ zFeOs{HPO2{JmJ{nI5vaeVUc^coI{88^6k?#55W5~+nMv+y(?lXurStcf5nEB=C1ZOu% zW-?97TmXN~zn-qchWc2SCPLsfkH+|DmiTBIRjp7-BJo;Sh4^7qFwNNWL*fX$AsU%g z8L4e~E|~qx=aOed=4%8jfoxF&DWac%h8D~f@66dfJ;=D3%aU0d1SnA!Cc|gauJ&KE z!`*akxZ>?qZ55gZP9#HAIIXG62n{6#8MEjCXRp!%+s;$K5bnflHvO^PNWIY-n9&;Ql^LyrT}G?Qq@%4V z+QPJ&NgX{P&oz6~7(fYTt2bH$2q0z0T5q)4hQ^q4!$deUIx$+gc%xN!&SR#CJ@<0txrW!f8lqFoab?*!+6sc$~9?+x}AnQ z%?;iL#tocF#tkkonL2~AYoX85t~DZDk71nDWFSFI#P7md{KHsCAZ;ur!k5)y$`q*{ zu%iab!uvLHn20N!6`rB1z*)Q6UP@q{6eLa$G|vL!K}WfUCLYYJz~{*ZJ@Ren%p-l& zhCMZ|4X#KB0AN7#BX>mPcM!fEb{!dKZ5?9}GN@34vp@$fwx65YS`>zt8Bpj3$NU%5Y%#P*nQ^^$f&jar-+XxXN3Log;kfzc@!YM>$$irc=`po5S?n z5iSQ%5ENw*F=4@mMFQcq~$($f?xg)ntFDs2`vlS3q2J_HRl-x_!=y$5H zi%6H(a$b9Qk{D|-lbnk@Qg+aeX0d{ss(wf(<-Uv_*Ap;u zVxQ0+e{+p;`EP4ps3g4hllWirFIR7@LCrqdzAsZ34_B(ZJDxzVwu-&1<<-wu2g z6Dxms;gQ(NTcuowewl-7k9Sb9a@oTtJ|1U}7f+wrA7(pLh<&?(r%i&&p02+IwMt;w z)7|Ui>_GAK;#e))Ehz2Vl{9l}J%9QTPa7Kf({FB%vlV^$(=$Bn)zeji^YhztY}w;a zu5%5thwt(rQ0(F7Jg9DaxQ7Q-Z4UxcHQU1@;87LZ!%I9AHSOb}nSc2$5B)s6UohPM zQ{gJ4Ywhv#&pKS$!=YzfkJ-b6JP06rIPfdxIr4{RuA>?G!&AR?06q6H3g7)3HBg1y z<6}>|?z4v{?$LCA*5yaQ*=m{upR+O|-{P zLzF7q9$xSi`cWmk=ZZX`J%0BGuCwjo$!A@z)k=8f-H{(d_V|&TU60tqUREmzTzhzc z2Z3u3A0(N;-Krw4eLAnp9zS`9E5aT&@}L3G`dfH8ObGc0Bw|lFgYvtl%cBJ+;D2!m zyky*+mSXTBj;CjKYJ+mPB{O&TB0A$MkZ_Gnamdgs>-*+2Dt?>)6*cErQHt#vC<7MOq(kk%m2Y#1_+4A+Aoib9m4fM^JnH_gFB(^Sn#gbi5rJhx_BEjs|v`C*F;0gXU` zK(?_0Fl@bnbkg51c5f7IPLKgJiy1B=eIwaLpcOpakdf<2 z!9@io=aSAfHk2fk;}`3fSodtxM)aauHiN)UQOx4@mJU~$ysc*jq5;kf_ad}TMgj`y zLm{D_?LnL4jRH9MMYn7Jc(&WviQS^Gt#K$|Grv>&k}4NFu*l8Hs|%U`X*iFi)`+L< zQltg>{g+_L@FE~Gl6wwKVQYerw6=zPXo+6Sp0=+T?7YT0BB<28=5mQlfO__R^w)RG zwe0TB#wfi&R`@*T&FX(?U)`BW(uIfFmwrkzr8q=M_m<>;o&Fcm`OcJP+KSE@WLA$I z@-D=mP|r?dVy%6BL`d|M`G5gl%!hKayF*DHb$6g4aoAwNuaKfmMH`oNH~<8Ai6f3K z>EL?+4Z@8OajtY(yE|Vt7`uH+$JHFx027C73`Ff(u{XV|vUw<><>oWhPfdy$8icItza&g7;_$Pfv_(|=sOOCvN(rQ=EBYJqy^?@ zX@DTs*2+2<$Oy>2JhmKp9<#Yu^|x<75reKJQ*VIIVGQ-lxzDR5N%QY~I}DS97qcP< z)8Nnuz2Y1*Y9nIuI@UacO$M3fdQ>CZBjNVZ9c0Isvos(1r%=8~9wucZA2LE@A+}c- z<&zkvgp8P+9{U6wTlfe#7A0N+pavYTJaDd$*%m^=5)`z5M73RTXih%Vnh9{8mrLUo z12mL{yN&IHs+5#e$cC?;YzQY>0#kt=T|_f1*VYvX0fal}Xu$-7(KrI`D#&0`SvKX# zF3G~NWgY+!8O%q>Mf?1k3auJ3Jd1P{tf0I)z>YS8T-z&x4UeyiM67h_-HD&~D$70d7*ejQtjtP8W|r z{be3ox<^bP5`rbpMFdIx5(!dQTfM6`oAERk>0!0mTp+b+`q0&8!BY*R z(5?z$6(`18@=Plw*az5;Vk7t)*eLADu!L_4eSq4$IqADuduQMj7KqXOC!Obzn1XZ8AQd%5O6)r;zb==FaVXEgjMz+H zeL5cx3gcoMkrtO*B-CrC96c)cJtKrtTCY^)s#cMD#0Z()>3PK4NuNs`OB5G;bZ9)a4Swt)nqyky#XP zMG6I``$psT_pL^@)0(RHh&CAsSnaKS192bQQWzuMg9E5v6TR-w(n+{lgn)(z^BcMk z&y)adUrUHt^kzHXK@BFM6SFE_0zjHY*V~%ja^NfU465)xp2ahYP#a#SrfGfz1+KkM z6yM4Ya8eYbP_fj*b|JvJpMJ>na(Hq37b<<<)w#RUOcAOU-$H}be2cLdwpeAn%EFOA z99hf{PIcuEykk?wOBwJ!HXDF2Po<_Qcqbwp5iuolMv0c` z#GIV$7EP=XuGg7@S^!-b~lwfTLhRg1e4I-9W5eEj%Lx3 zu1ERnRDW&1ow+2Y>!xbn8}1$_N3+yX*Q5M(s=v11LC_@C0u;V^E_elOWtKQP{Vu*| ztH0fHY})GxnX6{QaHpsQDba z=wfwI60c3^r%RLQN=e;6lVE50r8X94+E~yr#mgdBh*pZgXhTv@}s6?%xO4~`Phux&d|_@I^q*?wgHv;r= zj2>4%fLNw7+#8MDc1Mf^V^BP%$_5?BL_u^Mvx^OSE(8*aA{_ZOnIZ{bNF8Gju59|7 z@gW{yWiTn`>9S|Z0tqnj0^ljQD~_7)jhL@#e=&la+WvxJ`!)^KlY+nT?i(>LO4cQD z7o@13s8yFH{-3aYA4^)Y_GS59^Ri|BcA3cZ-OIGr)bsJya2yArDj^qR(=JT?=n0mi zGMNTRYC6^dRZo*t$QjL1p$bYFVU$QMw3IU>lHrXWh{KArQkisD;qWG1pc7rNS#?3v z;rUZIor2uqkT$ zw=9)MF=YnyyrF2&7gH%iw?`~Mc28LX8kU0*?uKN?977U_Aee~bl9>w>oH^xhN&C)$ z>MN`(Qwo=~zfP2ie3ve%y=U8S|8d{!@gLba=T3yF6f)=un>_A9w-6>9oDCs`O<>VI zN=Gwo3bUA$=L|`qFq1}m5y+S^^wt>+mfbxDvgU2G0vwCVfjOKsof7G#tuf zVnPgIHBb&*MQI-MDry|&dza%e|F)riF}zs#mYQyjXbAx*orp@Dv1%=vW)uI6tybfL zv7gjB*6V7CubV{U>&DLUWTS&4`&}E%p0Y+1rC7J9LAVwF*M{a5u8A68bvD^ zgKj*!#;SoVSmeMap;!9G zA$rjBi}t&Lb93G|oz>sc{N^(?C@7a%);+QLSvXHvSo-v&{@3tV^Pq zxMWPEB?Kg6A}!Ho#^q=&@5mmcEy?yY7;g0SIq6=J?FbD#0&Z3Y6v72X@kI748X7ER zJ9FJe@kkp<8Q+<;ja5kxdE}U)ON6u9M%+>q8GDF>9DfxmqwU=km^U9v^Y|M#pse|MkfaSL zU&c86^)5g(SC-%h6vMyiL!18La7i; zC=?2fiHqi0L-^Vb}DP0jKKqhjFSpL6`lKqdPgl`snq&lrV$3arSA6*Q zYnS2}J<-|Xcb$>z36HY$1Ssf`qBdBH!2#Y2!Z#;79WF2_Nzs5zXA0Wt@NlW5cZP!l zQr2yf@nu`)NZ9I^UaacXvdLh%+9u%fjW`FYflEHl?4nWgMzCg7q6y)w<{nF;!7u4Kiz$ib6F+0x-l(WP?6vCZCv z6y#c#V!DWjm$r&b>=1#(-G)=W)xj*|goec9;Ts_S=3MF}iq z^sik%cOey0$V+jg;NWF@HX{W+b&-M{knW9M zqxgYjP?K|bm;l8wchLKe$z6SyHE~F%Yyc8M+5qNmjOihRg zdTG&44~H0-ViAioE+~p;QXYGNmyigpcT5B~zG8qB3Pku%&=LLMiMfnW84itt!y*ph zHw+f}WsINT5D`CViio0)V$vZ##0?Xp#zRQYW*Rili^R6+upRlS+g*AX>mW=IgQ<|S zLIJ&nAPxY}RE83!72Nn5GCc4}g3xp^6(#cNEdzTOA{5h)keng{gYV&{la1g zW{p}&8%@L{!$LM_FgG23^|L6DDIh)?>Di>GQZm!43!x25K&Kf3nL-!ID#bS<>Pnp5 zZLS6ya`xo-wK+y2LuWGJgwZ%^g;iDP6BJae{K}wY`!bKpL1rli9V!PLwR$w>{JBz;tCF3_Frttlrp~)D0@h*JPUYa@ zWL1!RCd%GFQqzZMx~C#dzdLY^qEU6Br?<)O^WGcwpnI#SHN1i3e-AKCe;CMEGNJ(+ zNDZa|IfV+w2~j&SfE3ajz?c!QT1+7}8E`oM5VcK$`=YZ@Q6t!dNY&cpDOTNrCLA&W zLuvTWp;+mc@DEcZv=U8JErR7>viB_Iq#AlF$lf0+3|0eUsywb{2b!kHe3W~E3CIhD zKOJp8S&bq4A{G=Vs~=G?9Y1z(FHEa3khztRaWqRg7mmzjpz4P<>$1 z%Zk!~F6U~P}?TFRD+O@H=>OkC-ezIAP_pQdS~$YGg8(=<`z zm2lrQ85h8zVkXnHY5@f^uoA3orue#6LRq1vmY{%^m?cB;E%MBZ2Bp+X$9COlPI&u_ z^DJp1sJ)O*d?P8O(u4J`9;DGZr^D?ko>$+9OR>^SWBUJ-oAMP^Gp_!2NE6zD=5Yav zi92IoR%_A8z8a5||4bc_Z&3$+Z4=@eR}5Mal2_yX~WE&X@NFh=u=1hu(5jr-AL?0Jv z5hzoWA#Qde_L6Q2{_H7E()C+0D2G-IaGxiZ2H=&-6pg8vW&;9#2;I>$fK|eyB#gu& ziD!&1+2PQeB*4Rt&ei5^&k+E7RZ zNfwS0W-f(s={~fdoZWF1V%z5#McFyx!&)%{bI&{;RND#~f~<@p3hIHBQjow{Slwtd zt%V>lIZ%}4xr++YZ3VTxODRxWlbS&j7Y)^_;)Jk1h|>rb874w@9soD6w52SAOAMCW z-EFBD{S_!m3%xppDJWEy=Ldp>r`R(%1SQ%pb(@GjOTJtUl|X=LwKZ7bqllT8PK?{p zg=&XVs-IECJj2L)AXmuLf!3zd2deg<&{b$0F8TYm$G1hkRAJSy>tI2TZ2_B&LEtT_ z&t0D$ojE1=y2o|r#E2}BXca@r!iV&~8T#CyDpi;s>;#>J$&#o$*Vj6_dqh)Wr4P?`-ySRDK3scXO@2+X-TGshJrStt)tlDkpa z+iWc5G3%jnvr+Tn)a#YxN>h56b-fGl6y{6lFIr@GP8c>c&~4Zg0F+BaMx_iSNYEsr z2{V$507)tmi!HRKH5P>prYWH^V-N%{>4r$-1Rrwr_wBVuG2h68VldqYv~ic3pztJ; z`sRv)+Mxp5r^k{qQ3*hDVPK^bzo2k2owZDH{-j>A6Vc($S|-d~)3wZ}=4UO}32rDd zfkm85#OW#uJMB{hr$q+oKq#HFjQr4`l6T8R$BG)2Ww8a(Q7p`k9D^EvTB_h;oZZrU z6*btJQaP%3U(8mYUWC+&z+`Eq;DFNhY!xETu&)K2E{v>=XI7gY>QEccM+ z0{XPOWP@a9^3XWTcA3|52_MRf>A|{`lo(*`3r_4ayaURilr&cKC@~2%I0l`doAJfH z>tAaZv2{W{UDouZpeP>A41!XHK67FE&w`1G9HV60d{Vv(f@p}UR5$QBOHN7D|(ONO=zBFR@^44Hyvj6NmS`SA=nH{^!t03F6jV0-zhC=XujfqnQ=^))i$Mz+IGKzV{z@QHuxzI?epHASq5QF_Fnjp$mBAX5sxPp%S z%ySS1WPap?nSUE+U9~69Lp-5`l&= zedZXECR;RwLjaLl7`m>+wN`eexP}|TbdJmDR_NFehCt|LSv;g6EJ^cYU0r;CR19c8 ztiwErvR)5D1yQQ;F5Hc-QCLQj6&S%vho!VyfmS?>0>2_h1Ayj(=$ zvxi3{)+mW$nf-;gGK7ujH0A{wnsEUde4Hn-zfNR{Ab1Pe6J`NdR6>-QxR59k9~o^d z3$XQt9-V~xtBWlFO}M6FS{Ew{kd-PO0CDkngrK$V4Q(BaUNN3_5PFtFW$@&P^U$$$ z+CB>==+!#iw?+6YQ|k$CMw#3=+OVKXpUS-CWopF`Ik0?c@+p(vtF8Q0%GMJ+#eKG9 zHZRs{?W~9W+DlwJugls~z8;+3xRHheg1Y4LHf7>xzi6c$>2w)W-!?k^yb?>-S**%P z)(8OoiX{~QW@piJN!`d5&=?O=rnH#SAn`ny=y-{nVgNE=#TyDf40ks^4CmvIkTr_V z`LJ_k6rxvWr65H+OsROw7CC&YmEE*rwN(#;Qjy&v>xk9=_MipU+JeU(wCFm@rnv_# zxQ?%hy87T>`@(#pSUeQHI1 z#8vsxN8&zloT{=w_FPogsIwse3Q^5{-f+edq%dAoOXv&PlEqMf_^F9%RE;iCEs|n9 za@tdY(PE(cK7e5wCGAS1sh8KZWEIrZW(AQtLEO!j<`9LZU^Jr8juOYn|7Zo1Nusp0 zX|ZQDxT0r@ek4ilFGdu;0G>LmSFnL5QebRxkui;k7YFGtV!C!5FP}m6b$=1m_3Uif z7|rZB%``wqis7PI*$u|eDc0`YQehK%8s3tJjv0_%5TZ;3!VcKfrmK48pz7CX?6+AD z@#-ZeO39iI$Z$PQmf1OFs~iSryXxk^$~T04xThw%VLv zrY&Ym8z{r#L_?I!+oMwyf<-CC@pcfcAl70h?x!(?8z@{3RK?{t&_GNkNH+)!7Mk&9 zK#+@sov>hcw(4&PQch|o1v9n0e49C7^kv5J`Webc?7> z{c64C%s{=yB!u8(*a^~-X!3r-9`xZt{ni!gC3>2fDA%QFU$tM*or}K8`$e1<*BJbq zeu)q37c>hrINvY%0|rb~>6hs6eqlewqF8orM4pugICOsPSzdM`UD6qLz?IvE(xp=X7aV2fEr_?OkK**Qe#n$(mtq4 zgK9COpL;>#I?PC60);*xQ2UNGB^zvdWbq`eP z=Dt$5MzX1HqFT%!Ls2BXI7lLh7V^YA^$`w^M71wL2L;)C!8|G;E;zc-fodct2O||W zE69e8UAbY6+O#;G;;Gj-NX}J|`3_m>P&Z>?Skd#2r-+LC#E5goB4pQd0?r>8;`Isv zv%#p?P?fRNlc9ouk#H3PHWo6|v5-E`SlDLV5wPMI*mu+sFziOm#0VHytjrR#%&P?K z>`H@$TSveuq#)pSNx-cM2v{LZB4Rii6f_0$;l>DBJuQ|XuM>(ycjQE18f_6d0k`p~ zedGkhw1ke57{mAAh>IJGhjaaytI?jIj7+GEV&sUU4}hc)9t~N|ay&V?koPK%Hj(V% zr5@hPP0-U6hpPAJW#m-Z%kF`xg=VFf+3VExvhBTK;)AWfi(Y13R;8Em*@;b=pdcfC z*i3CR9Ep#Y>E&iuFB1a9Fwlx7c@HYR%rr({D^j92AL+|#CCF&dqJ3hSPo=5RWD@d*X@fsQGHX8ka<;Q{fNn^xI9dN znxtx^M~nR+d&o&ISA><>$^B`=NI_z%*kcBYF|`(hss?|M8lOtsS{kU!aUKPMxKJwl zZj%x&Nf+V4pEyAy37lic6(LdRsg$~8$^yR3bl8^BDFU=mE0OFV)_oCE?pA7`DZT4b zYG5r2P;dm<5NUSt9%fle-jhE}hWC_84PNXDReIiIVlwAFoDA-GkI`z*d*Iat?;!}U ziz;)a<}j)puhdkiazdqsER*Y-5N2|J<3pw*_>Xrn4D8F{Ro_S#CSV7lt zdOw`J%gwk##pS+ z*rQ@P5)yZ6KF@ z;Z$Nzg|9cmLBF3*ET4)*@fb_ha_Z$rhS+N86Izb_@UGL;+?w{Axnf&1 zpU>t5MGJPT&utb5&SwOrEtF`HO0FKFBWQu%>H?8X9B{*fVGuN;{F|_EZs6><$XY5%=tu(x?uA%e0wvFwe zkmdzj!>#A+Zj@bV=relE)@;eOsHEpD)*Fc^mRX!%z&8g#GzSA9Vy9`;rg_ct?}?n*(sW`@u&!21TFDns_v1Wh3`t5 z%cRni0zHK89+$%J$g5Gulvfi$lSWZEeK#!W`9pz8WTuFeF5{kLu3; zEO;ZGtDTL|@}0wrsm2tA5<{U_G_Os)uz9qlZqWL2BW&5` zUfO7rx)V7rb&k@2s#c#%(^e_Bil89H%(0}sA9TRxP=Ck6Ak z#~;{!2yuwQAXeAjKO%5lGrXUe(zFzT1oj%g2KTYC2R_NCZn09XY#BBw@VK&TRyHvj zmP|X}N7~B7bue85=^Lk_BlGQY-HvXm$pr}r!2Ki22xfEFwc!JMNZarOgBSk9yRe|)WRJ*Gvqzm=#9cB zlmy-YA8Rt8NVhPx$=NgVzR+|MHaSDBdTxW6_v6lO$ajB|;5@_7gCu0qv;EAdX67}G ztkLDBrxtUED7PM>R;p9wIL$P79;wf9X=s0=fG4KDj7%-f!j!on-d&P0yIRY>chiG6 z5uPXrAJnae=@P!;UBu(4$#2M!3A}p7*9QXvDQZ%g@_ZnVSb$0x4B;>~b>`}3oM)F^ zqG$mTH=x0blPI6qQhWiQ=0%IZc^xoyhRqq=BO;*UGvNdN#0trdGsIfm_JwtDT}RYI zRBWnw0$kK~kRp@Noknv4WQ11KiohiCgazQzQRcckh0$XduAI4}RbsX?LL_e1jbt$# zh*I7STNWnwiVkQ+n9m8EhDMW|b7YilRa2%~*cDeYiuq6uFdN|Mc*bYEt^FMSc``$Q z4nkW5$9T-1Q;dp6Vqr%{po% zY0J32go_;gHZcVsMu~orEpVZQM|2`iAEvMa5xtd}A%6YLkae-9i~C@##zT$A!XY6D zM4Ng^XRNh5t!xwp76h}_m$H}?X&(wn0f*HV+6YiZY4KV3i86G0TNjL!C2q7$$VcdNmKMIh$ZrEY%Jfq_}{zJUcf zTJJmPEa--=cddk@sFfuJw2m^7FwJZ(A!J&sb%J}vl)7Rj6s-fNpnf(5I%|6C9Br>Y zL#X#;ApSZ{)MsHT^r)(u#s!8r!i7THT&Ng|%GNm)LOJahW!?7rGo@`un)N#={ z!K;c7i8EXB562ZBbRrT`$MfBVOA0Rg#497BKov)^0WXa-4hUmjbSPGTAiQ!7Q#|FQ zUl^V>+po2nL<>%oPW!%F*X!&74T*WtLFAlQS94+*st^NV*qq`@ zNW$<&w;3Q$3h8mgK%CAp=6oD6Xf~u(5W~ZozGM{c(iPBmyYTd6__W{=US+#tZ9w7* za};4gb-db`t7&G^m`vBi6d6jAkSaMZ+G}MSP3%G9I-;mKqEMDSWLdif8%R{)vaC~_ zjN6rZHG^z?meFX81apFGiKm3Jp^O@Ia6t7iZphKhRx{zOm;3$8gN)NLMT|C2le;b7u z5U9{XEoUiAh*zKW*tuA$^EtYVr%vl`f zsxrU%NvQJ%U)Cmn-Q~-?fiicf%w1OIj-t%vgG;mJ775#3>VkREdX@U|>nU}eFKvUr zZuh0Gqtx3}>UJyjwxZOP?WNhuw(QOBQb*@St5xbh3D#A|gJJcQ5y4uJqR%eA&w>d!5R@!OC9e%J$3% zTUCKmIY(KpA%@(#Qvc{_sNxtSvVsbaxa+T ziN@#U@acYek-fA5R4K8@n-|)ZH-G8! z`U3Np8h08VuA2O*X!g*Si zwMx<6Qb(8CuXorA!7$v%)tMW+V8KI@d&fuOQS9#%>j;sg4bK4G|qCe8PhoRBju2y zyv3lXiJK9)YWpl~obaq7xeOUuEhS47Aos&T_6U*pLAJ4+F{hq67funn? z`Uy7Nr4HWaUv8sA=eiEOjSd{81Luk+M*k~@w){v`+@%U4gfGv~xB7HU7dqZ}f@T6! z?`7h9wygmrd2K4BQ~;^8`Nu^%b&gL+>3TMDSvK?UIW9fp^r?jz4xAWu(|vs_vtKnR z{bKwIh6@~(XQXyWH4sQuq>3Uf3&{*${c>jlij8F(2AjcK_Vcfx*KHC8(MoUi*I5pW zo4}%uXqqJ~PIDTm>`!Rj_IPY%_sz`iI~r)0w>jfmQ;7H&PF|J_FvwvpQ{IxHCnOwq zB-3a*Da?ZMXd12sVHimEdE~qs$Th4~$ns=a@!q(QO3(3Y3tX%Y9F(q(`eoTR)uDMA zF|}o#eu;Kg#@fV>5_8xQGW(5K{dMm&wAqHd_H#8*6^@@>P7>HulnskD8oo3_JCfUT zP*{bw7hk|DutDhJdZWLNIJ9j5ZBQw`HGY^BlOmr35NeXgD{l^r#**QB3?^9SORv84 zzNKscO$Kf`M?)Hk(?x^?H-*BN_wq#ysZZ<;uySU{p+U-d=a=8D1l%>3%5i~ANyCb= zr+AbG+2hyI+4E5j8cZ=C^xS3>}YehENQI}J~?E5s==%!1OrNxZT2mU};lceq|$ zoaMvZKMfKU=dXB|dpIeF3bW9g{Y-ZQrzr-w6%7}3%#6(T{4&Q0ALaD5zT;l-smFBW zVkjR|Uj?ymLmlrEVw)SikI8+l_?Ync8)6v-K$;_Vu50xiE|h$-v{tm-(}MXle~ujP zuAGXGiB}s-9~1ErrXa>TAxBxVul!RVM*$aZCZX85nHG$58{w4a@bc_Nj;bA$1W_Ax zkYt{I(c$SwqqF6b{$Em1Cuf43N;(b<|MVhCLr*Y2(|PXI1?nk2o*12HekM%{#Zm}W zg!2QCk#oD1-Mj~U_^aZ>Li?~F|A2R2JMobg?>@is?rYA0WjxVBHyjz%qZ-*K>wF(H z#L^IZGcWQ^ZEMi8)S^ylUHv-Rt6%Y({(rMyH-4&?9rXwF>#W23HF2-7-ewO*oP4Rxi8FE&R)-|RbmhkBus6+%D}SsxbexbJkOhUrasV^2mvR;aUdn9n z|6u+SqtrI2(fH+|6QVOju68#;i9|5zZ6OUZe0K%tC?JTH*G1y@J#& zp*3>AbJ4VowJlQ9nI84!QleNM{1M$HUKq*#Ae`x9xBsJw_!ALH!y8>IIdbhQQO79U zj`Sk_D+@ISY=N}mCbd8s!LCeGMB;5cqBbBpY-P037H|lB7L!{oay_K6WTOuitLuPR zawrdF;|Wn12XMuv$Z(z%vn~Kc+5a>6XmV&E?)~3}+}m6$Itky|?58MinDQj1Sv`~? z0SH=iE3nlopqOhX>v79~Y0 z)nK8xhPdVQ1BTFqxx&^l?lyHO#?>lA^RTyOezsox2-?o&*)2Q6?9;3F2WJHKAIGGP zWFP)M=*w2DIyL+HFIjJs#Tj6?r)3XuaQOJN`>y7M^K3O~?6E)h=Jo^lXNIzX_aY zH|yu~`UwoxCuCPVEkwEB=f4+bALjX$?ZNCiC9*sR*9gVxn3>rsz9x3xv6N~1=&UAg z6=bi1B3*{hf{`fO2LxA>e3nR1e{Gg=xTLQxl0GnD(xyuaoil*5KPqypgH)pI0EMri z@Y#nK4)6DHTtVUNPe9U-lk~(&($76A2v=V13VBWTT7z#|wpoq-qJC~EaWtn3M;qu4 z;pilA^v_CUd9M9bj-x*|9KFtPbh4#sRdBFC2>6UNs0I_6DS$NVD46%*$09f&iziHeJ5;-62(xXJrGfX2AiFncAMakr*>+xUq>66_obKf#1dmo(-!{&3;6lhpTx!=szkG z-@k3bF7kEaiJ$C|cwd=#)vt(1&Q`C1-;nsJ9*KWhCjKyFjS@lP8%g|h zkHq`S#24F0;WQ?nZyr}__=E0?g|c;d9Hd~V{IFGc9G}#Y93#~Z_C8ry;uBUCy5^-@e9?& z-4z@v^Ze)@0kxkzd&u)*HIJ|0cV*&r_p7ItkDZ$RjKnWh6L(jzT$YhzbYC!SXFYk; zg7=3NM&~Q|K$-Za<%Iubn@RjMi9gsQ@rp9>^^n2@`1B?JW0`n09PZ^4f2d6S;t$l$ zoq(Zky`l#gE6c>+zBgpZ?I-bbB>r%Z#2+aW@7qnFOt#^gQ?m~|)0bUYP27#aRb`&1 z@6a&aMjj2*t0vBKb(!be8zV6d@~onsk5=<|+^jAWe-K4A&JK`Rvgl(y60a!}KYBnE zx%}g&W@{;VZI8rbW#ZpnDOI{>$=%Jprp$Ab={BpVKpNM_dsOg=GVzwX1WnHhd^^{b zi66lLiL)_EmO=5!9wmROOnlQP@MUHjNW6}AURzDv4f^^r&uvdgx!Fn{=|P{KIL~!u zo`XM83$~Nzdg}Si#CbN9dG`Lq20D2@N1p2^&ht-Yo}Umm6J?K+M`-BnFOq58_07zdH!YMJU5kj ze*R4j;YsBA*D}wZ$0n@Dw|Y~V_KA_)Mg~cbnzf63`&!pCEAn}h#{6IBv zcVoX*=Gl6k?3Y`~qcOa5;ym9j^W1Z{@g(v*PCehL=Gmt9en&swEfMtHZUp@tZY%`t z5`rv4m~E#pQPG28_C0luy^gXSyq3j?{lB|-jg7W#V7F6yki^M&f^bwvRx%3Ward)KAMi|Nc#N)L!xk=|7t|&(F&|ANi3wY7%+& zmU#}`JIQ*UDD&)Fr+W4Sn~3Na6T|jonP=TcRnI|>uzeHfd8*9w-S3HCE&r4gY^*OX zM`kzPo-XrjzFL~dDxYWn#Ce`6^IZ9$>RIRWJUeloUzK_O2~&Pj^&BYk+)AIu*$ve5 zG3eme6W8;bGS3I-(@EuduFUf!eLAT;2g^Kr=+jBH=lL?vW4LZ7mFKr*o>kC6oNWdN zQs!T%;@}~%kRRyhhb1%Nu==X|a@XCC)4wQY^01OwuIE3VOUU0jZp(-hf58|K>v?|! zx3z@Z?v{kyM)e=33qBBKAH>g&-x9BJmost&bGg3k+y7ZZeJ5E&?f)oGzWuceU+0I) z#Gn1OP_moE>nZ<=9*I|$iJvDif{Mh~lla3u5`Uyje6K;i{94>XB)+nm_{YM-Bl_7> zB5qaGg}8^jPxC645M-ZIGRw8OaB4DceIg}9FiahCAb+ePoIsb0FnnkZYF zBhGWuF$2}ou18Cbvh}1DbG)Vss!#m!GV#8bgx(u`;!ji)cX!FUGLQ2}ZX%Dm`6k|pi)SjS0=t2oT2h~&_B~7@rE+-7CZ?k z#3a6%{=2?M;(sa=Uj_c@g!L%IB>rrV#0qiq4V0bH%r=wwP7?ofkHnwrPK@9uv5b<9 z)x_QCzOl^XJgz;_{ZmoW&-8OoNqYa%O?v~UMS9*x z`gxI_@69h5ES77_O)^XO1OGQ@EOAcdXteKFm3P}C8tySy!A`UzJbr* z$L|um7Q_=^&pqYVL@#fA9MId2AOL+I4vR$bDy&;ajYL_8ZjguFqfV z`uuZ-e-~(Xb$$LN#EI@h;Rh%j9=pBk^8=70{sTTA;xm@re{_A`PHxmOKCk!{rUrUk z*XIr7#*h3N{C<1}!}oT5ehAlp7iiziKR+Q_`GtO-EQ#yBZsPhVg^5$$FXGy#WR`1X zL0k}@hzkor#I@6<{n+ZZoVeo!VJqa)*ND~aV=`C&D2_kex4 z%=6fDBBdSV5r6#A#Cd*P=6U)WDRn!2o<}Cmv!~4SE07yyyU8OZ_0fs*{G`nDyiMOs zBF|%Go@YNV9PFVUc{m71E)mv^gP)dpp1=baXZy$_W$R}X=lOY==XX~~IXUR-ArO0_ zdY&lrJWW3{*So~Ozb-n%YnPEN8+c-#Lwd6kFyOVR;z#6Bk|MS zi81|2ybd}hc6=hxpDFXaz)-~>;6ZAtj0|Jw0uf8+8SgI0b$7{Is#Xs_2lXel5-fB*rb zLQto=`;Hs5&fa^y=9+81 z)?9O~wL2?w85~`XANK9MI(9p+Wo3SEl6b2x^ZM9j_GD!)eN714;miDf>@t7I%G~o) z!M4knd1LG{+F%ek9{&mK#iBE1G%#jbtn(lI0%yN;$r^kbJ|%D!u6XkHp`k^hi0r zE=gXke*Rv6{*WQ&`XXX(`JU_QN+HGyl;Wk-r6F2Xj=x$)@!99MaGye3Bx!KJR*qK} znz{D(rhZAj3n03va?FI(A;{WZf<=k< zh~x)IzPTK;e3nZ-hq)h)9+Dp-d0jcaB}pzSm0OKdtj4WODB0&v5h>Q&@|@y@{q0%i z`{p^0sQ;T?GT)J9J{L;@JA}+nlKIYj<{~ufvocrVpanaW5j5Y*m+{ctm1VwY zwT!flWR}nD?k<@(WSMtfXBHiqMLYL&$$W2?`RY~Dn!Cv?qxrrrnKx#c&$SU9Ugbvg z+g&o>pJhIe0mL=iEprhm-^t3H`;rM-%1Ah~g(DMY#WLT`%3Ma7FkVI(A@YHI8IQ;Z zv&_F`22ze!kXZ)V<}R7Pmu3FxJ~Mwm%ltMIxr|pH>QeK=S!QQMuJO2eq)X->WSK92 zLLKaiNZ-Lnv&@e&_>dw*E}mpNbA~~m`G;BN#~A!EYJN-7<8A#JzMMa91>;9WIr7pI z&LDqGa>NQ?K+`A5k;lvNk0nR!GxoCYDg^X|K6_ZU8Z4IQ@^2Z5lW#kK|FjF>PiC3F z2g5UIA+w@ep6Zf$Tb6nF4MlwnfAu5r^VIyaE}4IxW&S#{aUdQc^GjrAU;ZfkZO<~l zjLrZIG7F5SyJUVQ%e>sytB1elLPVbJl6gm#c^Oe3Z2lW3^Dnc^UqKeKWr@sh0rPWR zYJNV;d@rbDjh)PkU#-VGyJY@Vmig>!DlBeqA@fo)|GG?{i=h7@E93OYqBRcmH}YjX=zFuw4}wUv8kx23`ev8RZ)KV9*k|Uqv&>t`j1z*I zZw4vDiV3y`{GnHn`VW02LkS>{XjIW~*3%#ZG~gXd+L z@7-tS^Rvv`$vi$bF32*w@X4;MP#pEeSsAA&*Mn}ksxRzXKQE#$L?~?nQ#@ zJpDO8gYb(*2%n_5ApDXbyivWgQZIZtnJipcv3bz)iUIv)H*318lKDBWHdw6G7x4yS zmIKRoz~PEKEFSP{vdq8RqlxbZGK=ZIlF#ghf5GzM;o&CxpBzXp+bZy8@+*4#+I)Ur z`AAmz%5B2R7LS$d@|iCXE*9(0g&9_^FJk2@+uXRV6jpW!D^_Z2>Y&4b(CqN54l7@C zSXnKsSVrg2-A?mz=&q^6H&nb4Z^?Jz$YlObvZgUNR^poq$rn9moPXm-;)g-w+DiQO zLh>(JLhp@7Nd7U&H&^0s6q3LGJR3IREhIlp^14cVOCk9}k_Y19n^5#5-&%=pD02Fl>TNVz9UJ#NXWccf0kruy|akcvtbVr+j^n(5@oYe_oS0< zY$2hQeRbjxJhaNaAxCWY*brN(B~%7?1BwX$-uw_>s;ZxX7**MQu9l6J=6e(K%R>8% zXb9MlbhZN9wz4jwu~vQGR(E|F}!$pJbV@vhcaxWR@lK zM3>B4v&_#De8yglaWelj%Y2uuj_xJ1RL+xKYJMuqd_V3CJZ4{anYZOLuh1wyLb{0Z zXKuiLJ|0n8fxDQGkBBJMtzW10!Q#5{ z-mwS5CoR5;l?QE;GT@&U@b)I)pK-ve6f=ivC=yKaNeFEwafQ-ix^??LPPXcR>rLpcg5g{=CUbi!=F<%m3D5`axbbvftK-Be4OkWq<`x` z^Lf?yd>LMHms;{FHZ~NJFDN8GMi?LqD3rdF(u=9QkbF0#3&|HH$t%^Np9tJlS=Vr` z=EGL5#zIxsmZ)owE3cK>l`_{Qu4_1}&7O5#TdJ;E## zh7bWvvK*aXsK%z-lPQVR_a%2v<^cn5x&B8`x@8nuc+G|@M{egD|Lmr z()Iw0jNFktEJdEaE-P~vg9yog!;$>;`7*Z%>Ra{awhaE2MfiX2y;G|MzZHOhsO%mn zYxH(CVrhOCU6ay=w9Ani6Bf~cJWf?KsUS zULNA5k-Y4Bg>6mA%T8W;lb5d(?$DRKJV@YJfAaDKYZn8_%VR9hOiEr}Apm)D@^T9) z&E(~mm}OIvmmdu4^aJ0yht4T;@~VIN;;s@0iujk^FO}j0l9#)fH5{0{T*PA5dy zma-RYYaHxl#TGXXcdLp^Y`sPVV6OsJRoKgwSOBVGr!wBoT8kTVdwm!)SQ+i*Nf4H1 zd=(l}TbA<02M}buJfkXhy_i&CulH@gB`?1qMZ{s*e$0#L!Ct=e44cH0 zm(_$|iv%p?4zg)D?d4lf)ocXq<(vmfHiGtYD-~!2-xNSsK>f^e=)ApNiBnyDvX{r{ zprE@)8Gl3^f$O}zJ_lJVqrGf|`jzonWqgV7MwiiEuX;lhBcJvt>QT6`lpC<7)T?_{ z>St;7_ImNl4i0-!TdLk()RwUHvPwO|=sW1`_4}-*2`GDcfH{sz?NP?vOqeuUef||L zP)198>6u){M_9g8^>3)ug@2HOR4IE+D8pV7%CMJpc)Zh6zj@Mi(o$}Nn$-RKRo`ao zr0TQR=U90Y6!vo2^$v&j@~W@zMU{H)^#lrg-HQlNDSO%Z1vfz0CrJ8$5eWhQVIevS(TdwHGm3T52PB*RVceoiz89 z*vVe6|AuSWUM}E8RoKhhM8K$u2UKcjI{x;$YPTz8FSoqu8n&0~h$2f%UBa2YYWQ}k zyL(dX+Ut2MT^06nH}$Dud-*xyRaIQChF`+0mcG8(De7-j$MFML0a=9UoN1l3S~}&r zg>%@)@dH?KndB2HK5EKk#h*lgJR`Ve(BG=o?M-v0+X}6ZnsQn34Y0eZITgQM#qCYS zzgZ~W%+1*B*@|Dzgz7rAE{%SNirbr<7~Z* zD)j0uRc~(!cDlO&o!RGR7r@qn)QVsJLTO^fN1@h={}7Hbju37(sC9c2Ztf|xJ_@x~ z{FkqJo>cLBRos|T#qTQ=AB9>gz8sbxzwgQhYFA@di-3*{{67vN*--puhm$-|{1(h7 z-+Mr?wK3R;Os5@ z#>4A+591hmPRh}}1A&gi^(V10h16N!5g+#~(xGP|=k6RFG~AuTj=Ajh1<$^`euhpbWO1EhT>7Vj;p-gj6qWoq(%0W} z(-DWf>tG!{G}_RqwQy)SlTSoH2LB`17!&q=&ZOoe4xziaK3OqQ&*S;ZWPM&m$Mu> zK&?DKF16^qfy)BOhq=?LR22xidPYa_aQ?8Jt25WyAZmFyTo7|{#GMDS54WR3(4qw(0PBwCI_#rxODXH2WG$mw$1Bb~xPQ#Y4TGG+j zjIye>gWtg4eBcyFvpEB5wh;h_YW0y>r`&N4ww=-+CPN|^jWV+VC{|#JOG@eR6jRv> z!Rb$c;tox!+w~z)(D!O7Y}mf7zbfSJdxz*qlCf(p)H(eB ztiw2RU4o<A=tB0jqXfkWbJ?n(p3MluUT(}8%8j-}K|-a>qn?v~E^XMQiCCc_>BJ6l^fEmg~ihaCI{ZfJ}<&3E|drgiFqN+bWvU0illFwpiuHZkwUn0=tPaH&f*7 zo9b~pqs;AD5zY-S6w$?#5Xc~MqQ(7J(f)`T4>dc6I9XWdA;*(VSVRMJgS+){9q@Cg z90&VRw2r74aIohg-^vvp!miJ6lnjXj=-n|C;`kEH@@@gIy19W z^eh&mxFSfnVi6NPxe+wcGs#5HzDIDaaDd3+m}48kHQ5M$Lp@qG;Soe&3J7RjKG1Q@qgLcp~fWtj_hW&UI;>&t_@c zUE0<(?XfIvi%Z*_rm^XRGi(DPX_HIaU}@oe$%n(mxuyv?LzLt3&lxC6kr8k-8uL@8 zBUXC3FFBPhqqO0Byin(XUWNexxusg=!=x8x~EejtT!IJy1-+c5pL{+VPuSJJht3_)RxyJp2wEMW5eRH zCB|dJDUXfEN8|Czcyv7;AC1Q=GABGg6wC?74>I()NP|gHL76UN_G~&PKkkNq#vQ3` z;LykbIptAbn;q+b+O%I$wv-m%E4DMzOKKQ?X3>I}8gJJ(s zhXab=6j0Xbj*?odFccF#3p$bBU(@Na!=GhgJQ_TT4teHcgn{^KqP?pQ}~J0UpccO3C5LCVd*`!+$xQ)PdwT9xYbykD3#Lt@CPL3|g-6Lge56NF??nCeEw3~YZ%}QeqKHg48;}PvW+omov108^Ve%p0vgu?_ zzKuVflze;mO$8aGmgXNtZkyG6$htsooBYRzA-CBMEt^0~1V&~HEzv|ZhNq08&&2NI z!tZgQ9DwriVkqHyl%qtbmRCf#NaL$CF=WzD9zz{>&$;>%V5FA0Z#^l}6YoXJk<4lA zElzN6)nE;~2IV{T z?l>?%r_A*XsDxAfm(udM!o?NAAv6?A79(twjfC zXYfR~IF?{CW-oT-@R@}tbbshfvVsB1Z>v4pz_>xzVR&AcrLYicrY zi|drJrN4-_vr}-08Olq!lEkKVu81+5D+2oz@nB4qdKtKUQcdfc+6|oyr;qFX$Bi(Y zX1N&3>tVQncDZw=Isw@}p8Ot9?vH6dd-p;&*$#j`5GYq&i4c%@753%C!7+1#rDawH zx$!#Sq9V>ozfwzVP88b8nmOsFLaSr0^sz{&)e5)LH>d@Rt}A_kU+L3|npXO>kfuAL z(Fh$Yea1FJa`~%jV4Y2Yba{^!Bz|nIt!+0yh44bnWKeSdlXA3>O8}-NMQmNI@}b<8 zmRk&)lpJewCPGEPx!U~YPd4oGlBn$wA`$1TxU^!CvgYf5nw26rE_k$2!V)uhUcjgG@ zG8k@zK@!rxhAKw%Y7mixwj!rhG=D#cWt9{rtM!(w-1J5ho!_`0WYjnA2kB@AvXiax75-qRapzjWwT#5vU1EQX|)vG>y9a|WLki zAIJ=w=Sk5CSX!YtW5e=TE9lp4PWG{F^v*Mi*HT3WP)``QsqxZ!3qEUwt~sq;JJ_|H zjY1XP^RU;8KvPxPhJ*}l45e*Anqdqn<=YTWTniyg(Y=iVV*ZtWXKhS%ZHV)$Tog$C z(3;gRlvzKpao%YgpQ4R-*7G7%td2NZ5mbZRh{UignZg*b;G4pdAMag9bTm0ORv}uj zBvVsOG_B*r9@J>!{$830`-rH7)IC{Yo>~EuO}fc7i;WPyPgU}v7Cyn;o!a7^dqmv* zb(q!2&qhz8f~(rA*iOQ!aLXls{tD&FlmPA}u7Gc>0~>+3Z%8}7C2Rifn=EPsP|){F z-BJ~fcS}`0xut6GkG!R7@Ki3S8axHFZg8KsR1NADB#v@9nZ<6uY~F)o(A`qiIJs3S z!(0+-cn|IObMEIv_j8>4@t0N&xwk?0!%}z5`WI{UzGB09;hL&C_caZ2O%>F^WqP1T zDg#5*-AHA8QIgVPi9NfPibWWAbyR!u>Xs?V29kQxYBNs-FKfY8E2f0MmI`}>LK15B z)US{k?$nexvql5cxy3uGCd&@X?x^a~9aUAg5RY_G(XnfN=QmZ=O%t&-z{!1gQ&k