From f3032d441920e9eb5301460163afe5c3d0bd44de Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Fri, 10 Apr 2026 00:09:51 +0300 Subject: [PATCH 1/4] Added session management when opening/closing tabs, and configurable session mode Added session management controls when opening a session from the toolbar and when closing a session tab via the Close button. Added configurable session mode: users can choose to resume the last session or start a new one. Implemented session store, session mode panel, Save & Switch dialog, and Rename button visibility fix (hidden unless Resume Specific is selected). Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 3 + claude-launch-tests/test_session_rename.py | 102 +++++ pom.xml | 2 +- .../controller/ClaudeSessionController.java | 49 ++- .../nbclaudecodegui/model/SavedSession.java | 35 ++ .../nbclaudecodegui/model/SessionMode.java | 22 + .../process/ClaudeProcess.java | 33 +- .../process/ClaudeSessionStore.java | 297 +++++++++++++ .../settings/ClaudeCodeOptionsPanel.java | 31 ++ .../settings/ClaudeCodePreferences.java | 74 ++++ .../nbclaudecodegui/ui/ClaudePromptPanel.java | 25 +- .../ui/ClaudeSessionSelectorPanel.java | 97 ++++- .../nbclaudecodegui/ui/ClaudeSessionTab.java | 191 +++++++-- .../ui/SaveAndSwitchDialog.java | 162 ++++++++ .../nbclaudecodegui/ui/SessionModePanel.java | 392 ++++++++++++++++++ .../netbeans/ClaudeCodeStatusLineElement.java | 70 +++- .../model/SavedSessionTest.java | 45 ++ .../process/ClaudeSessionStoreTest.java | 198 +++++++++ .../ui/ClaudePromptPanelSendTest.java | 2 +- .../ui/ClaudeSessionSelectorPanelTest.java | 8 +- .../ui/SessionModePanelTest.java | 84 ++++ 21 files changed, 1867 insertions(+), 55 deletions(-) create mode 100644 claude-launch-tests/test_session_rename.py create mode 100644 src/main/java/io/github/nbclaudecodegui/model/SavedSession.java create mode 100644 src/main/java/io/github/nbclaudecodegui/model/SessionMode.java create mode 100644 src/main/java/io/github/nbclaudecodegui/process/ClaudeSessionStore.java create mode 100644 src/main/java/io/github/nbclaudecodegui/ui/SaveAndSwitchDialog.java create mode 100644 src/main/java/io/github/nbclaudecodegui/ui/SessionModePanel.java create mode 100644 src/test/java/io/github/nbclaudecodegui/model/SavedSessionTest.java create mode 100644 src/test/java/io/github/nbclaudecodegui/process/ClaudeSessionStoreTest.java create mode 100644 src/test/java/io/github/nbclaudecodegui/ui/SessionModePanelTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 69e47063..9568ed36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +- Added session management when opening a session from the toolbar and when closing a tab via the Close button +- Added configurable session mode: choose to resume the last session or start a new one + # 0.20 (2026-04-09) - Added Maven Central publication support: `release` Maven profile with GPG signing and Sonatype Central Portal deployment, plus CI `deploy` job that publishes artifacts on release builds diff --git a/claude-launch-tests/test_session_rename.py b/claude-launch-tests/test_session_rename.py new file mode 100644 index 00000000..b1e4febe --- /dev/null +++ b/claude-launch-tests/test_session_rename.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +"""Verify that writing a customTitle entry after session close is recognised by Claude Code. + +Test scenario: +1. Run `claude --print "say hello"` to create a session JSONL file. +2. Append a custom-title entry to that JSONL file. +3. Run `claude --resume --print "what is your session id"` and verify + the session is loaded (i.e., --resume does not error). +4. Also verify via `ClaudeSessionStore` logic: parse the JSONL and confirm + customTitle is returned as displayName. + +Findings: +- Claude Code stores sessions under ~/.claude/projects//.jsonl +- The hash replaces every '/' in the working dir path with '-' +- customTitle is stored as {"type":"custom-title","customTitle":"...","sessionId":"...","timestamp":"..."} +- Claude Code respects the customTitle when listing sessions +""" +import json, subprocess, pathlib, time, os, re + +WORK = pathlib.Path('/home/oleg/my-projects/NetbeansClaudeCodePlugin') +CLAUDE_CONFIG = pathlib.Path.home() / '.claude' +PROJECTS_DIR = CLAUDE_CONFIG / 'projects' +HASH = str(WORK.resolve()).replace('/', '-') +SESSION_DIR = PROJECTS_DIR / HASH + +CUSTOM_TITLE = 'test-rename-stage21' + + +def get_most_recent_session(): + """Return (session_id, jsonl_path) of the most recently modified JSONL in SESSION_DIR.""" + if not SESSION_DIR.exists(): + return None, None + files = sorted(SESSION_DIR.glob('*.jsonl'), key=lambda p: p.stat().st_mtime, reverse=True) + if not files: + return None, None + path = files[0] + return path.stem, path + + +def run_claude_print(prompt, resume_id=None): + """Run claude --print and return (stdout, returncode).""" + cmd = ['claude', '--print', prompt] + if resume_id: + cmd += ['--resume', resume_id] + result = subprocess.run(cmd, capture_output=True, text=True, cwd=str(WORK), timeout=60) + return result.stdout, result.returncode + + +# ---- Step 1: Create a session ---- +print('[1] Running: claude --print "say hello"') +stdout, rc = run_claude_print('say hello') +print(f' returncode={rc}, output (first 100 chars): {stdout[:100]!r}') +assert rc == 0, f'claude --print failed with rc={rc}' + +time.sleep(1) # wait for JSONL to be flushed + +session_id, session_file = get_most_recent_session() +assert session_id is not None, 'No session JSONL found in ' + str(SESSION_DIR) +print(f'[2] Most recent session: {session_id}') +print(f' File: {session_file}') + +# ---- Step 2: Append custom-title entry ---- +print(f'[3] Appending customTitle="{CUSTOM_TITLE}" to JSONL') +content = session_file.read_text(encoding='utf-8') +entry = json.dumps({ + 'type': 'custom-title', + 'customTitle': CUSTOM_TITLE, + 'sessionId': session_id, + 'timestamp': time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime()), +}) +if not content.endswith('\n'): + content += '\n' +content += entry + '\n' +session_file.write_text(content, encoding='utf-8') +print(' Done.') + +# ---- Step 3: Parse the JSONL to verify customTitle ---- +print('[4] Verifying customTitle in parsed JSONL...') +custom_title_found = None +with open(session_file, encoding='utf-8') as f: + for line in f: + line = line.strip() + if not line: + continue + try: + obj = json.loads(line) + if obj.get('type') == 'custom-title': + custom_title_found = obj.get('customTitle') + except json.JSONDecodeError: + pass + +assert custom_title_found == CUSTOM_TITLE, \ + f'Expected customTitle="{CUSTOM_TITLE}", got "{custom_title_found}"' +print(f' customTitle="{custom_title_found}" — OK') + +# ---- Step 4: Verify --resume accepts the session ID ---- +print(f'[5] Running: claude --resume {session_id} --print "say hi"') +stdout2, rc2 = run_claude_print('say hi', resume_id=session_id) +print(f' returncode={rc2}, output (first 100 chars): {stdout2[:100]!r}') +assert rc2 == 0, f'claude --resume failed with rc={rc2}, stderr might have error' + +print('\n✓ All assertions passed. Session rename test succeeded.') diff --git a/pom.xml b/pom.xml index 2bd1294e..34c80e11 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.nbclaudecodegui netbeans-claude-code-gui - 0.21.0-SNAPSHOT + 0.21.11-SNAPSHOT nbm Netbeans Claude Code GUI NetBeans plugin that provides a GUI for Claude Code CLI — run claude code sessions directly inside the IDE. diff --git a/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java b/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java index e6a05e28..43df3aba 100644 --- a/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java +++ b/src/main/java/io/github/nbclaudecodegui/controller/ClaudeSessionController.java @@ -5,8 +5,11 @@ import com.pty4j.PtyProcess; import io.github.nbclaudecodegui.model.ChoiceMenuModel; import io.github.nbclaudecodegui.model.ClaudeSessionModel; +import io.github.nbclaudecodegui.model.SavedSession; import io.github.nbclaudecodegui.model.SessionLifecycle; +import io.github.nbclaudecodegui.model.SessionMode; import io.github.nbclaudecodegui.process.ClaudeProcess; +import io.github.nbclaudecodegui.process.ClaudeSessionStore; import io.github.nbclaudecodegui.process.ModelMenuParser; import io.github.nbclaudecodegui.process.PtyTtyConnector; import io.github.nbclaudecodegui.process.ScreenContentDetector; @@ -161,11 +164,31 @@ public ClaudeSessionController(ClaudeSessionModel model, */ public void startProcess(java.io.File dir, String profileName, String extraCliArgs, JediTermWidget widget) throws IOException { + startProcess(dir, profileName, extraCliArgs, SessionMode.NEW, null, widget); + } + + /** + * Starts the Claude PTY process with session mode support. + * + * @param dir working directory + * @param profileName profile name, or {@code null}/{@code ""} for Default + * @param extraCliArgs extra CLI arguments (may be blank) + * @param mode session start mode + * @param resumeSessionId session ID to resume (only used for RESUME_SPECIFIC) + * @param widget terminal widget + * @throws IOException if the PTY process cannot be started + */ + public void startProcess(java.io.File dir, String profileName, String extraCliArgs, + SessionMode mode, String resumeSessionId, + JediTermWidget widget) throws IOException { String tag = "[" + dir.getName() + "] "; claudeProcess = new ClaudeProcess(); ClaudeProfile profile = ClaudeProfileStore.findByName(profileName); customModelIds = profile != null ? new ArrayList<>(profile.getCustomModels()) : List.of(); - PtyProcess process = claudeProcess.start(dir.getAbsolutePath(), profile, extraCliArgs != null ? extraCliArgs : ""); + PtyProcess process = claudeProcess.start(dir.getAbsolutePath(), profile, + extraCliArgs != null ? extraCliArgs : "", + mode != null ? mode : SessionMode.NEW, + resumeSessionId); connector = new PtyTtyConnector(process); connector.setSessionTag(tag); @@ -255,6 +278,30 @@ public void stopProcess() { model.setLifecycle(SessionLifecycle.STARTING); } + /** + * Stops the PTY process and, if {@code sessionName} is non-blank, writes a + * {@code custom-title} entry to the most recent session JSONL file. + * + * @param sessionName name to persist, or {@code null}/blank to skip renaming + */ + public void stopAndRename(String sessionName) { + java.io.File workingDir = model.getWorkingDirectory(); + stopProcess(); + if (sessionName != null && !sessionName.isBlank() && workingDir != null) { + try { + SavedSession recent = ClaudeSessionStore.findMostRecent( + workingDir.toPath(), null); + if (recent != null) { + ClaudeSessionStore.renameSession( + workingDir.toPath(), null, recent.sessionId(), sessionName); + LOG.fine("Renamed session " + recent.sessionId() + " to '" + sessionName + "'"); + } + } catch (Exception e) { + LOG.warning("Could not rename session: " + e.getMessage()); + } + } + } + // ------------------------------------------------------------------------- // PTY writes // ------------------------------------------------------------------------- diff --git a/src/main/java/io/github/nbclaudecodegui/model/SavedSession.java b/src/main/java/io/github/nbclaudecodegui/model/SavedSession.java new file mode 100644 index 00000000..1618f3fc --- /dev/null +++ b/src/main/java/io/github/nbclaudecodegui/model/SavedSession.java @@ -0,0 +1,35 @@ +package io.github.nbclaudecodegui.model; + +import java.time.Instant; + +/** + * Represents a saved Claude Code session found in the JSONL session store. + * + * @param sessionId unique identifier (filename without .jsonl extension) + * @param createdAt timestamp of the first message in the session + * @param lastAt timestamp of the most recent message in the session + * @param slug auto-generated session name (always present if file has messages) + * @param customTitle user-set title, or {@code null} if not set + * @param firstPrompt text of the first user message, truncated to 120 chars, or {@code null} + */ +public record SavedSession( + String sessionId, + Instant createdAt, + Instant lastAt, + String slug, + String customTitle, + String firstPrompt +) { + + /** + * Returns the display name: {@code customTitle} if set, otherwise {@code slug}, + * otherwise {@code sessionId}. + * + * @return non-null display name + */ + public String displayName() { + if (customTitle != null && !customTitle.isBlank()) return customTitle; + if (slug != null && !slug.isBlank()) return slug; + return sessionId; + } +} diff --git a/src/main/java/io/github/nbclaudecodegui/model/SessionMode.java b/src/main/java/io/github/nbclaudecodegui/model/SessionMode.java new file mode 100644 index 00000000..c401aee3 --- /dev/null +++ b/src/main/java/io/github/nbclaudecodegui/model/SessionMode.java @@ -0,0 +1,22 @@ +package io.github.nbclaudecodegui.model; + +/** + * Determines how a new Claude Code session is started. + * + *
    + *
  • {@link #CLOSE_ONLY} — stop the current session without starting a new one + * (only meaningful in the Save & Switch dialog).
  • + *
  • {@link #NEW} — start a fresh session (no {@code --continue} or + * {@code --resume} flag).
  • + *
  • {@link #CONTINUE_LAST} — resume the most recent session via + * {@code --continue}.
  • + *
  • {@link #RESUME_SPECIFIC} — resume a specific session via + * {@code --resume }.
  • + *
+ */ +public enum SessionMode { + CLOSE_ONLY, + NEW, + CONTINUE_LAST, + RESUME_SPECIFIC +} diff --git a/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java b/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java index 575c2c30..e95a3f17 100644 --- a/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java +++ b/src/main/java/io/github/nbclaudecodegui/process/ClaudeProcess.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import com.pty4j.PtyProcess; import com.pty4j.PtyProcessBuilder; +import io.github.nbclaudecodegui.model.SessionMode; import io.github.nbclaudecodegui.settings.ClaudeCodePreferences; import io.github.nbclaudecodegui.settings.ClaudeProfile; import io.github.nbclaudecodegui.settings.ClaudeProfileStore; @@ -116,6 +117,23 @@ public PtyProcess start(String workingDir, ClaudeProfile profile) throws IOExcep * @throws IOException if the process cannot be launched */ public PtyProcess start(String workingDir, ClaudeProfile profile, String extraCliArgs) throws IOException { + return start(workingDir, profile, extraCliArgs, SessionMode.NEW, null); + } + + /** + * Starts a Claude CLI PTY process with session mode support. + * + * @param workingDir absolute path to the session working directory + * @param profile connection profile; {@code null} uses Default behaviour + * @param extraCliArgs extra CLI arguments string (may be blank) + * @param mode how to start: NEW, CONTINUE_LAST, or RESUME_SPECIFIC + * @param resumeSessionId session ID to resume (only used when mode is RESUME_SPECIFIC) + * @return the started {@link PtyProcess} + * @throws IllegalArgumentException if {@code workingDir} is blank + * @throws IOException if the process cannot be launched + */ + public PtyProcess start(String workingDir, ClaudeProfile profile, String extraCliArgs, + SessionMode mode, String resumeSessionId) throws IOException { if (workingDir == null || workingDir.isBlank()) { throw new IllegalArgumentException("workingDir must not be blank"); } @@ -132,7 +150,9 @@ public PtyProcess start(String workingDir, ClaudeProfile profile, String extraCl + ", ANTHROPIC_API_KEY=" + (!env.getOrDefault("ANTHROPIC_API_KEY", "").isBlank() ? "SET" : "NOT SET") + ", ANTHROPIC_AUTH_TOKEN=" + (!env.getOrDefault("ANTHROPIC_AUTH_TOKEN", "").isBlank() ? "SET" : "NOT SET") + ", ANTHROPIC_BASE_URL=" + env.getOrDefault("ANTHROPIC_BASE_URL", "(not set)") - + ", CLAUDE_CONFIG_DIR=" + env.getOrDefault("CLAUDE_CONFIG_DIR", "(inherited)")); + + ", CLAUDE_CONFIG_DIR=" + env.getOrDefault("CLAUDE_CONFIG_DIR", "(inherited)") + + ", sessionMode=" + mode + + (mode == SessionMode.RESUME_SPECIFIC ? ", resumeId=" + resumeSessionId : "")); List cmd = new ArrayList<>(); cmd.add(executable); @@ -160,6 +180,17 @@ public PtyProcess start(String workingDir, ClaudeProfile profile, String extraCl LOG.info("Extra CLI args appended: " + extra); } + // Session mode flags + if (mode == SessionMode.CONTINUE_LAST) { + cmd.add("--continue"); + LOG.info("Session mode: --continue"); + } else if (mode == SessionMode.RESUME_SPECIFIC + && resumeSessionId != null && !resumeSessionId.isBlank()) { + cmd.add("--resume"); + cmd.add(resumeSessionId); + LOG.info("Session mode: --resume " + resumeSessionId); + } + lastCommand = String.join(" ", cmd); LOG.info("Claude command: " + lastCommand); PtyProcessBuilder builder = new PtyProcessBuilder(cmd.toArray(new String[0])) diff --git a/src/main/java/io/github/nbclaudecodegui/process/ClaudeSessionStore.java b/src/main/java/io/github/nbclaudecodegui/process/ClaudeSessionStore.java new file mode 100644 index 00000000..0908b4d7 --- /dev/null +++ b/src/main/java/io/github/nbclaudecodegui/process/ClaudeSessionStore.java @@ -0,0 +1,297 @@ +package io.github.nbclaudecodegui.process; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.github.nbclaudecodegui.model.SavedSession; +import io.github.nbclaudecodegui.settings.ClaudeCodePreferences; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.attribute.FileTime; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.logging.Logger; +import java.util.stream.Stream; + +/** + * Utility for reading and managing Claude Code session JSONL files. + * + *

Claude Code stores sessions as JSONL files at: + * {@code /projects//.jsonl} + * + *

The hash is computed by replacing every {@code /} in the absolute working + * directory path with {@code -}. + */ +public final class ClaudeSessionStore { + + private static final Logger LOG = Logger.getLogger(ClaudeSessionStore.class.getName()); + private static final ObjectMapper MAPPER = new ObjectMapper(); + + private ClaudeSessionStore() {} + + // ------------------------------------------------------------------------- + // Hash + // ------------------------------------------------------------------------- + + /** + * Computes the directory-name hash that Claude Code uses to map a working + * directory to a sessions subdirectory. + * + *

The algorithm is: replace every {@code /} in the absolute path string + * with {@code -}. + * + * @param workingDir absolute path to the working directory + * @return directory hash string + */ + static String computeHash(Path workingDir) { + return workingDir.toAbsolutePath().toString().replace('/', '-'); + } + + // ------------------------------------------------------------------------- + // Directory resolution + // ------------------------------------------------------------------------- + + /** + * Returns the directory that contains session JSONL files for the given + * working directory and Claude config dir. + * + * @param workingDir working directory; must not be {@code null} + * @param claudeConfigDir base config dir; {@code null} means {@code ~/.claude} + * @return path to the sessions directory (may not exist) + */ + static Path sessionsDir(Path workingDir, Path claudeConfigDir) { + Path configDir = claudeConfigDir != null + ? claudeConfigDir + : Path.of(System.getProperty("user.home"), ".claude"); + return configDir.resolve("projects").resolve(computeHash(workingDir)); + } + + // ------------------------------------------------------------------------- + // List + // ------------------------------------------------------------------------- + + /** + * Lists all saved sessions for the given working directory. + * + *

Each JSONL file in the session directory is parsed to extract: + *

    + *
  • {@code sessionId} — filename without {@code .jsonl} extension
  • + *
  • {@code slug} — from the first line with a {@code sessionId} field
  • + *
  • {@code customTitle} — from the last line whose {@code type} is + * {@code "custom-title"}
  • + *
  • {@code createdAt} / {@code lastAt} — min/max {@code timestamp} values
  • + *
+ * + *

Sessions with no parseable timestamps are excluded. Results are sorted + * by {@code lastAt} descending (most recent first). + * + * @param workingDir working directory to look up sessions for + * @param claudeConfigDir Claude config base dir; {@code null} means {@code ~/.claude} + * @return mutable list of sessions, sorted by {@code lastAt} desc + */ + public static List listSessions(Path workingDir, Path claudeConfigDir) { + return listSessions(workingDir, claudeConfigDir, ClaudeCodePreferences.getSessionListLimit()); + } + + /** + * Lists saved sessions for the given working directory, limited to the most + * recent {@code limit} sessions using a two-phase read for performance. + * + *

Phase 1: reads only file modification times (no content), sorts + * descending, takes top {@code limit} candidates. + * Phase 2: parses only those candidate files fully. + * + * @param workingDir working directory to look up sessions for + * @param claudeConfigDir Claude config base dir; {@code null} means {@code ~/.claude} + * @param limit maximum number of sessions to return + * @return mutable list of sessions, sorted by {@code lastAt} desc + */ + public static List listSessions(Path workingDir, Path claudeConfigDir, int limit) { + Path dir = sessionsDir(workingDir, claudeConfigDir); + if (!Files.isDirectory(dir)) { + return new ArrayList<>(); + } + + // Phase 1: read only file modification times, sort desc, take top candidates + List filesSorted = new ArrayList<>(); // [0]=mtime millis, [1]=index into allFiles + List allFiles = new ArrayList<>(); + try (Stream files = Files.list(dir)) { + files.filter(p -> p.getFileName().toString().endsWith(".jsonl")) + .forEach(f -> { + long mtime = 0; + try { mtime = Files.getLastModifiedTime(f).toMillis(); } catch (IOException ignored) {} + int idx = allFiles.size(); + allFiles.add(f); + filesSorted.add(new long[]{mtime, idx}); + }); + } catch (IOException e) { + LOG.warning("Could not list sessions in " + dir + ": " + e.getMessage()); + } + + filesSorted.sort((a, b) -> Long.compare(b[0], a[0])); + int take = Math.min(limit, filesSorted.size()); + List candidates = new ArrayList<>(take); + for (int i = 0; i < take; i++) { + candidates.add(allFiles.get((int) filesSorted.get(i)[1])); + } + + // Phase 2: parse candidates fully + List sessions = new ArrayList<>(); + for (Path file : candidates) { + try { + SavedSession s = parseSessionFile(file); + if (s != null) sessions.add(s); + } catch (Exception e) { + LOG.fine("Could not parse session file " + file + ": " + e.getMessage()); + } + } + + sessions.sort(Comparator.comparing(SavedSession::lastAt).reversed()); + return sessions; + } + + private static final int FIRST_PROMPT_MAX_LEN = 120; + + private static SavedSession parseSessionFile(Path file) throws IOException { + String name = file.getFileName().toString(); + String sessionId = name.endsWith(".jsonl") ? name.substring(0, name.length() - 6) : name; + + Instant minTs = null; + Instant maxTs = null; + String slug = null; + String customTitle = null; + String firstPrompt = null; + + List lines = Files.readAllLines(file, StandardCharsets.UTF_8); + for (String line : lines) { + if (line.isBlank()) continue; + try { + JsonNode node = MAPPER.readTree(line); + + // Extract timestamp + JsonNode tsNode = node.get("timestamp"); + if (tsNode != null && tsNode.isTextual()) { + try { + Instant ts = Instant.parse(tsNode.asText()); + if (minTs == null || ts.isBefore(minTs)) minTs = ts; + if (maxTs == null || ts.isAfter(maxTs)) maxTs = ts; + } catch (Exception ignored) {} + } + + // Extract slug from first line that has sessionId field + if (slug == null && node.has("sessionId")) { + JsonNode slugNode = node.get("slug"); + if (slugNode != null && slugNode.isTextual()) { + slug = slugNode.asText(); + } + } + + // Track last custom-title entry + JsonNode typeNode = node.get("type"); + String type = typeNode != null ? typeNode.asText() : ""; + if ("custom-title".equals(type)) { + JsonNode ctNode = node.get("customTitle"); + if (ctNode != null && ctNode.isTextual()) { + customTitle = ctNode.asText(); + } + } + + // Extract first user prompt (type=="user", message.content is a string) + if (firstPrompt == null && "user".equals(type)) { + JsonNode msgNode = node.get("message"); + if (msgNode != null) { + JsonNode contentNode = msgNode.get("content"); + if (contentNode != null && contentNode.isTextual()) { + String text = contentNode.asText(); + firstPrompt = text.length() > FIRST_PROMPT_MAX_LEN + ? text.substring(0, FIRST_PROMPT_MAX_LEN) + : text; + } + } + } + } catch (Exception ignored) {} + } + + if (minTs == null) return null; // no valid timestamps → skip + return new SavedSession(sessionId, minTs, maxTs, slug, customTitle, firstPrompt); + } + + // ------------------------------------------------------------------------- + // Delete + // ------------------------------------------------------------------------- + + /** + * Deletes the session JSONL file for the given session ID. + * + * @param workingDir working directory + * @param claudeConfigDir Claude config base dir; {@code null} means {@code ~/.claude} + * @param sessionId session ID (filename without {@code .jsonl}) + * @return {@code true} if the file was deleted; {@code false} if it did not exist + */ + public static boolean deleteSession(Path workingDir, Path claudeConfigDir, String sessionId) { + Path file = sessionsDir(workingDir, claudeConfigDir).resolve(sessionId + ".jsonl"); + try { + return Files.deleteIfExists(file); + } catch (IOException e) { + LOG.warning("Could not delete session file " + file + ": " + e.getMessage()); + return false; + } + } + + // ------------------------------------------------------------------------- + // Rename + // ------------------------------------------------------------------------- + + /** + * Appends a {@code custom-title} entry to the given session's JSONL file. + * + *

The appended line has the format: + *

{"type":"custom-title","customTitle":"...","sessionId":"...","timestamp":"..."}
+ * + * @param workingDir working directory + * @param claudeConfigDir Claude config base dir; {@code null} means {@code ~/.claude} + * @param sessionId session ID to rename + * @param newName new custom title + * @throws IOException if the file cannot be written + */ + public static void renameSession(Path workingDir, Path claudeConfigDir, + String sessionId, String newName) throws IOException { + Path file = sessionsDir(workingDir, claudeConfigDir).resolve(sessionId + ".jsonl"); + if (!Files.exists(file)) { + throw new IOException("Session file not found: " + file); + } + String timestamp = Instant.now().toString(); + String line = MAPPER.writeValueAsString( + MAPPER.createObjectNode() + .put("type", "custom-title") + .put("customTitle", newName) + .put("sessionId", sessionId) + .put("timestamp", timestamp) + ); + // Append with newline + String existing = Files.readString(file, StandardCharsets.UTF_8); + String newContent = existing.endsWith("\n") ? existing + line + "\n" : existing + "\n" + line + "\n"; + Files.writeString(file, newContent, StandardCharsets.UTF_8); + LOG.fine("Renamed session " + sessionId + " to '" + newName + "'"); + } + + // ------------------------------------------------------------------------- + // Find most recent + // ------------------------------------------------------------------------- + + /** + * Returns the most recent session for the given working directory, or + * {@code null} if no sessions exist. + * + * @param workingDir working directory + * @param claudeConfigDir Claude config base dir; {@code null} means {@code ~/.claude} + * @return most recent session, or {@code null} + */ + public static SavedSession findMostRecent(Path workingDir, Path claudeConfigDir) { + List sessions = listSessions(workingDir, claudeConfigDir, 1); + return sessions.isEmpty() ? null : sessions.get(0); + } +} diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java index 610d6e22..b8a68852 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodeOptionsPanel.java @@ -64,6 +64,10 @@ public final class ClaudeCodeOptionsPanel extends JPanel { private javax.swing.JCheckBox diffInSessionCheck; /** Checkbox to show markdown preview for .md files in diff. */ private javax.swing.JCheckBox mdPreviewInDiffCheck; + /** Checkbox for context-menu session mode (checked = New, unchecked = Continue last). */ + private javax.swing.JCheckBox startNewSessionCheck; + /** Spinner for the maximum number of sessions shown in the session list. */ + private JSpinner sessionListLimitSpinner; /** send-key radio buttons: value → button */ private final Map sendRadios = new LinkedHashMap<>(); @@ -205,6 +209,24 @@ private JPanel buildGeneralPanel() { form.add(mdPreviewInDiffCheck, mdGbc); row++; + // --- context-menu session mode --- + startNewSessionCheck = new javax.swing.JCheckBox("Start new session when opening with Claude"); + GridBagConstraints cmGbc = new GridBagConstraints(); + cmGbc.gridx = 0; cmGbc.gridy = row; + cmGbc.gridwidth = 3; + cmGbc.anchor = GridBagConstraints.WEST; + cmGbc.insets = new Insets(4, 8, 4, 8); + form.add(startNewSessionCheck, cmGbc); + row++; + + // --- session list limit --- + form.add(new JLabel("Session list limit:"), gbc(0, row, false)); + sessionListLimitSpinner = new JSpinner(new SpinnerNumberModel( + ClaudeCodePreferences.DEFAULT_SESSION_LIST_LIMIT, 1, 500, 5)); + sessionListLimitSpinner.setToolTipText("Maximum number of sessions shown in the session list"); + form.add(sessionListLimitSpinner, gbc(1, row, false)); + row++; + // spacer GridBagConstraints spacer = new GridBagConstraints(); spacer.gridx = 0; spacer.gridy = row; @@ -278,6 +300,10 @@ void load() { diffInSessionCheck.setSelected( ClaudeCodePreferences.isOpenDiffInSeparateTab()); mdPreviewInDiffCheck.setSelected(ClaudeCodePreferences.isMdPreviewInDiff()); + startNewSessionCheck.setSelected( + ClaudeCodePreferences.getContextMenuSessionMode() + == io.github.nbclaudecodegui.model.SessionMode.NEW); + sessionListLimitSpinner.setValue(ClaudeCodePreferences.getSessionListLimit()); String sendVal = ClaudeCodePreferences.getSendKey(); String newlineVal = ClaudeCodePreferences.getNewlineKey(); @@ -305,6 +331,11 @@ void store() { ClaudeCodePreferences.setDebugMode(debugCheckBox.isSelected()); ClaudeCodePreferences.setOpenDiffInSeparateTab(diffInSessionCheck.isSelected()); ClaudeCodePreferences.setMdPreviewInDiff(mdPreviewInDiffCheck.isSelected()); + ClaudeCodePreferences.setContextMenuSessionMode( + startNewSessionCheck.isSelected() + ? io.github.nbclaudecodegui.model.SessionMode.NEW + : io.github.nbclaudecodegui.model.SessionMode.CONTINUE_LAST); + ClaudeCodePreferences.setSessionListLimit((Integer) sessionListLimitSpinner.getValue()); ClaudeCodePreferences.setSendKey(selectedValue(sendRadios)); ClaudeCodePreferences.setNewlineKey(selectedValue(newlineRadios)); diff --git a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java index 208ce8f9..5eb07180 100644 --- a/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java +++ b/src/main/java/io/github/nbclaudecodegui/settings/ClaudeCodePreferences.java @@ -1,5 +1,6 @@ package io.github.nbclaudecodegui.settings; +import io.github.nbclaudecodegui.model.SessionMode; import java.io.File; import java.io.IOException; import java.nio.file.Path; @@ -422,6 +423,79 @@ public static void setDefaultExtraCliArgs(String v) { .put(KEY_DEFAULT_EXTRA_CLI_ARGS, v != null ? v : ""); } + // ------------------------------------------------------------------------- + // contextMenuSessionMode + // ------------------------------------------------------------------------- + + /** Preference key: session mode used when opening via "Open with Claude" context menu. */ + public static final String KEY_CONTEXT_MENU_SESSION_MODE = "contextMenuSessionMode"; + /** Default: continue the last session. */ + public static final SessionMode DEFAULT_CONTEXT_MENU_SESSION_MODE = SessionMode.CONTINUE_LAST; + + /** + * Returns the session mode used for context-menu ("Open with Claude") actions. + * + * @return configured mode, or {@link #DEFAULT_CONTEXT_MENU_SESSION_MODE} + */ + public static SessionMode getContextMenuSessionMode() { + String stored = NbPreferences.forModule(ClaudeCodePreferences.class) + .get(KEY_CONTEXT_MENU_SESSION_MODE, + DEFAULT_CONTEXT_MENU_SESSION_MODE.name()); + try { + SessionMode mode = SessionMode.valueOf(stored); + // CLOSE_ONLY and RESUME_SPECIFIC are not valid context-menu modes + if (mode == SessionMode.CLOSE_ONLY || mode == SessionMode.RESUME_SPECIFIC) { + return DEFAULT_CONTEXT_MENU_SESSION_MODE; + } + return mode; + } catch (IllegalArgumentException e) { + return DEFAULT_CONTEXT_MENU_SESSION_MODE; + } + } + + /** + * Persists the session mode for context-menu actions. + * + * @param mode {@link SessionMode#NEW} or {@link SessionMode#CONTINUE_LAST} + */ + public static void setContextMenuSessionMode(SessionMode mode) { + if (mode == null || mode == SessionMode.CLOSE_ONLY + || mode == SessionMode.RESUME_SPECIFIC) { + mode = DEFAULT_CONTEXT_MENU_SESSION_MODE; + } + NbPreferences.forModule(ClaudeCodePreferences.class) + .put(KEY_CONTEXT_MENU_SESSION_MODE, mode.name()); + } + + // ------------------------------------------------------------------------- + // sessionListLimit + // ------------------------------------------------------------------------- + + /** Preference key: maximum number of sessions shown in the session list. */ + public static final String KEY_SESSION_LIST_LIMIT = "sessionListLimit"; + /** Default: show the 30 most recent sessions. */ + public static final int DEFAULT_SESSION_LIST_LIMIT = 30; + + /** + * Returns the maximum number of sessions to show in the session list. + * + * @return session list limit (≥ 1) + */ + public static int getSessionListLimit() { + return NbPreferences.forModule(ClaudeCodePreferences.class) + .getInt(KEY_SESSION_LIST_LIMIT, DEFAULT_SESSION_LIST_LIMIT); + } + + /** + * Persists the session list limit. + * + * @param v new limit; clamped to [1, 500] + */ + public static void setSessionListLimit(int v) { + NbPreferences.forModule(ClaudeCodePreferences.class) + .putInt(KEY_SESSION_LIST_LIMIT, Math.max(1, Math.min(500, v))); + } + private static String validated(String value, String fallback) { return ENTER.equals(value) || SHIFT_ENTER.equals(value) || CTRL_ENTER.equals(value) || ALT_ENTER.equals(value) diff --git a/src/main/java/io/github/nbclaudecodegui/ui/ClaudePromptPanel.java b/src/main/java/io/github/nbclaudecodegui/ui/ClaudePromptPanel.java index e6060bd4..e470f67d 100644 --- a/src/main/java/io/github/nbclaudecodegui/ui/ClaudePromptPanel.java +++ b/src/main/java/io/github/nbclaudecodegui/ui/ClaudePromptPanel.java @@ -75,6 +75,10 @@ public final class ClaudePromptPanel extends JPanel { private final Supplier> promptHistorySupplier; /** Supplies the current working directory path. */ private final Supplier workingDirSupplier; + /** Callback for "Start New Session" context menu item; may be {@code null}. */ + private final Runnable onStartNewSession; + /** Callback for "Switch to Session…" context menu item; may be {@code null}. */ + private final Runnable onSwitchSession; /** Current position in the history list; {@code -1} = newest (empty field). */ private int historyIndex = -1; @@ -99,18 +103,26 @@ public final class ClaudePromptPanel extends JPanel { * (index 0 = most recent); queried on demand * @param workingDirSupplier returns the current working directory path; used for * the history/favorites popup and file completion + * @param onStartNewSession called when "Start New Session" context menu item is clicked; + * may be {@code null} + * @param onSwitchSession called when "Switch to Session…" context menu item is clicked; + * may be {@code null} */ public ClaudePromptPanel(Consumer onSend, Runnable onCancel, Runnable onShiftTab, Supplier> promptHistorySupplier, - Supplier workingDirSupplier) { + Supplier workingDirSupplier, + Runnable onStartNewSession, + Runnable onSwitchSession) { super(new BorderLayout()); this.onSend = onSend; this.onCancel = onCancel; this.onShiftTab = onShiftTab; this.promptHistorySupplier = promptHistorySupplier; this.workingDirSupplier = workingDirSupplier; + this.onStartNewSession = onStartNewSession; + this.onSwitchSession = onSwitchSession; inputArea = new DecoratedTextArea(3, 40, workingDirSupplier); inputArea.setLineWrap(true); @@ -317,11 +329,19 @@ private void attachContextMenu(DecoratedTextArea area) { JMenuItem nextPrompt = new JMenuItem("Next prompt (Ctrl+\u2193)"); nextPrompt.addActionListener(e -> navigateHistory(-1)); + JMenuItem startNewItem = new JMenuItem("Start New Session"); + startNewItem.addActionListener(e -> { if (onStartNewSession != null) onStartNewSession.run(); }); + + JMenuItem switchItem = new JMenuItem("Switch to Session\u2026"); + switchItem.addActionListener(e -> { if (onSwitchSession != null) onSwitchSession.run(); }); + menu.addPopupMenuListener(new javax.swing.event.PopupMenuListener() { @Override public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent e) { List h = promptHistorySupplier.get(); prevPrompt.setEnabled(!h.isEmpty() && historyIndex < h.size() - 1); nextPrompt.setEnabled(historyIndex > -1); + startNewItem.setEnabled(onStartNewSession != null); + switchItem.setEnabled(onSwitchSession != null); } @Override public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent e) {} @Override public void popupMenuCanceled(javax.swing.event.PopupMenuEvent e) {} @@ -330,6 +350,9 @@ private void attachContextMenu(DecoratedTextArea area) { menu.addSeparator(); menu.add(prevPrompt); menu.add(nextPrompt); + menu.addSeparator(); + menu.add(startNewItem); + menu.add(switchItem); } // ------------------------------------------------------------------------- diff --git a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanel.java b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanel.java index 67ac5831..e76c6e7c 100644 --- a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanel.java +++ b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanel.java @@ -1,5 +1,6 @@ package io.github.nbclaudecodegui.ui; +import io.github.nbclaudecodegui.model.SessionMode; import io.github.nbclaudecodegui.settings.ClaudeCodePreferences; import io.github.nbclaudecodegui.settings.ClaudeProfile; import io.github.nbclaudecodegui.settings.ClaudeProfileStore; @@ -10,6 +11,7 @@ import java.awt.FlowLayout; import java.io.File; import java.io.IOException; +import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; @@ -78,13 +80,16 @@ public interface OpenListener { * Called on the EDT after the selected path has been validated as an * existing directory. * - * @param dir the selected working directory - * @param profileName the selected profile name (never {@code null}; - * use {@link ClaudeProfile#DEFAULT_NAME} to check - * for the default) - * @param extraCliArgs extra CLI arguments from the args field (may be empty) + * @param dir the selected working directory + * @param profileName the selected profile name (never {@code null}; + * use {@link ClaudeProfile#DEFAULT_NAME} to check + * for the default) + * @param extraCliArgs extra CLI arguments from the args field (may be empty) + * @param mode the selected session start mode + * @param resumeSessionId session ID to resume (only used for RESUME_SPECIFIC) */ - void onOpen(File dir, String profileName, String extraCliArgs); + void onOpen(File dir, String profileName, String extraCliArgs, + SessionMode mode, String resumeSessionId); } // ------------------------------------------------------------------------- @@ -115,6 +120,9 @@ public interface OpenListener { /** Displays validation errors (path empty, directory not found). */ private final JLabel errorLabel; + /** Panel for choosing session start mode (New / Continue last / Resume specific). */ + private final SessionModePanel sessionModePanel; + /** Suppresses the project-selection listener while the combo is populated programmatically. */ private boolean suppressProjectListener; @@ -187,24 +195,44 @@ public ClaudeSessionSelectorPanel(File initialDirectory, OpenListener openListen errorLabel.setVisible(false); // --- layout --- - JPanel controlBar = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 4)); - controlBar.add(projectCombo); - controlBar.add(pathCombo); - controlBar.add(browseButton); - controlBar.add(profileCombo); - controlBar.add(openButton); - controlBar.add(settingsButton); + JPanel leftBar = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 4)); + leftBar.add(projectCombo); + leftBar.add(pathCombo); + leftBar.add(browseButton); + leftBar.add(profileCombo); + + JPanel rightBar = new JPanel(new FlowLayout(FlowLayout.RIGHT, 4, 4)); + rightBar.add(openButton); + rightBar.add(settingsButton); + + JPanel controlBar = new JPanel(new BorderLayout()); + controlBar.add(leftBar, BorderLayout.CENTER); + controlBar.add(rightBar, BorderLayout.EAST); JPanel argsRow = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 2)); argsRow.add(new JLabel("Extra args:")); argsRow.add(extraArgsField); - JPanel wrapper = new JPanel(); - wrapper.setLayout(new javax.swing.BoxLayout(wrapper, javax.swing.BoxLayout.Y_AXIS)); - wrapper.add(controlBar); - wrapper.add(argsRow); - wrapper.add(errorLabel); + // --- session mode panel --- + sessionModePanel = new SessionModePanel( + resolveDir() != null ? resolveDir().toPath() : null, + resolveClaudeConfigDir(), + null, false); + SessionMode defaultMode = ClaudeCodePreferences.getContextMenuSessionMode(); + sessionModePanel.setMode(defaultMode); + + sessionModePanel.setOnDoubleClick(this::onOpen); + + JPanel topBar = new JPanel(); + topBar.setLayout(new javax.swing.BoxLayout(topBar, javax.swing.BoxLayout.Y_AXIS)); + topBar.add(controlBar); + topBar.add(argsRow); + + JPanel wrapper = new JPanel(new BorderLayout()); wrapper.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.LIGHT_GRAY)); + wrapper.add(topBar, BorderLayout.NORTH); + wrapper.add(sessionModePanel, BorderLayout.CENTER); + wrapper.add(errorLabel, BorderLayout.SOUTH); add(wrapper, BorderLayout.CENTER); } @@ -345,6 +373,7 @@ private void onProfileSelected() { String name = getSelectedProfileName(); ClaudeProfile p = ClaudeProfileStore.findByName(name); extraArgsField.setText(p != null ? p.getExtraCliArgs() : ""); + reloadSessionModePanel(); } private void onProjectSelected() { @@ -360,10 +389,37 @@ private void onProjectSelected() { } else { profileCombo.setSelectedIndex(0); } + reloadSessionModePanel(); } } } + private void reloadSessionModePanel() { + if (sessionModePanel != null + && sessionModePanel.getSelectedMode() == SessionMode.RESUME_SPECIFIC) { + sessionModePanel.reload( + resolveDir() != null ? resolveDir().toPath() : null, + resolveClaudeConfigDir(), + null); + } + } + + private File resolveDir() { + Object item = pathCombo != null ? pathCombo.getSelectedItem() : null; + if (item == null || item.toString().isBlank()) return null; + File f = new File(item.toString().trim()); + return f.isDirectory() ? f : null; + } + + private Path resolveClaudeConfigDir() { + String profileName = getSelectedProfileName(); + if (ClaudeProfile.DEFAULT_NAME.equals(profileName)) return null; + ClaudeProfile p = ClaudeProfileStore.findByName(profileName); + if (p == null) return null; + return io.github.nbclaudecodegui.settings.ClaudeProfileStore + .resolveConfigDir(p, ClaudeCodePreferences.getProfilesDir()); + } + private void onBrowse() { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); @@ -395,7 +451,9 @@ private void onOpen() { } errorLabel.setVisible(false); - openListener.onOpen(dir, getSelectedProfileName(), extraArgsField.getText().trim()); + openListener.onOpen(dir, getSelectedProfileName(), extraArgsField.getText().trim(), + sessionModePanel.getSelectedMode(), + sessionModePanel.getSelectedSessionId()); } // ------------------------------------------------------------------------- @@ -420,6 +478,7 @@ private void setControlsEnabled(boolean enabled) { browseButton.setEnabled(enabled); openButton.setEnabled(enabled); extraArgsField.setEnabled(enabled); + sessionModePanel.setEnabled(enabled); } private boolean isProjectDirectory(File dir) { diff --git a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java index f26367d0..d55cbbc3 100644 --- a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java +++ b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java @@ -6,8 +6,13 @@ import io.github.nbclaudecodegui.ui.common.BasicTextContextMenu; import io.github.nbclaudecodegui.model.ChoiceMenuModel; import io.github.nbclaudecodegui.model.ClaudeSessionModel; +import io.github.nbclaudecodegui.model.SavedSession; import io.github.nbclaudecodegui.model.SessionLifecycle; +import io.github.nbclaudecodegui.model.SessionMode; +import io.github.nbclaudecodegui.process.ClaudeSessionStore; import io.github.nbclaudecodegui.settings.ClaudeCodePreferences; +import io.github.nbclaudecodegui.settings.ClaudeProfile; +import io.github.nbclaudecodegui.settings.ClaudeProfileStore; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; @@ -16,6 +21,7 @@ import java.awt.event.ComponentEvent; import java.io.File; import java.io.IOException; +import java.nio.file.Path; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.List; @@ -40,7 +46,6 @@ import javax.swing.SwingUtilities; import javax.swing.UIManager; import org.openide.util.ImageUtilities; -import org.openide.util.NbBundle; import org.openide.util.NbPreferences; import org.openide.windows.TopComponent; import org.openide.windows.WindowManager; @@ -125,6 +130,12 @@ public class ClaudeSessionTab extends TopComponent /** Extra CLI args restored from serialized state after an IDE restart. */ private String savedExtraCliArgs; + /** Session mode restored from serialized state; {@code null} = default from preferences. */ + private SessionMode savedSessionMode; + + /** Resume session ID restored from serialized state; {@code null} if not applicable. */ + private String savedResumeSessionId; + // ------------------------------------------------------------------------- // MVC // ------------------------------------------------------------------------- @@ -141,7 +152,6 @@ public class ClaudeSessionTab extends TopComponent // ------------------------------------------------------------------------- private final ClaudeSessionSelectorPanel selectorPanel; - private final JLabel placeholderLabel; // ------------------------------------------------------------------------- // UI — session (created once a session starts, nulled on stop) @@ -172,6 +182,7 @@ public class ClaudeSessionTab extends TopComponent private final JLabel stateLabel; private final JLabel planLabel; private final JLabel versionLabel; + private final JButton stopButton; /** Cached lifecycle so {@link #onModelListChanged} can correctly enable the combo. */ private volatile SessionLifecycle currentLifecycle; @@ -214,6 +225,11 @@ public ClaudeSessionTab(File dir) { planLabel.setToolTipText("Active plan file (if any)"); versionLabel.setToolTipText("Claude CLI version"); + stopButton = new JButton("\u23fb"); // ⏻ power symbol + stopButton.setToolTipText("Stop session"); + stopButton.setMargin(new Insets(0, 4, 0, 4)); + stopButton.addActionListener(e -> openSwitchDialog(SessionMode.CLOSE_ONLY)); + statusBar = new JPanel(); statusBar.setLayout(new BoxLayout(statusBar, BoxLayout.X_AXIS)); statusBar.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, Color.LIGHT_GRAY)); @@ -230,14 +246,14 @@ public ClaudeSessionTab(File dir) { statusBar.add(makeSep()); statusBar.add(versionLabel); statusBar.add(Box.createRigidArea(new Dimension(4, 0))); + statusBar.add(makeSep()); + statusBar.add(Box.createRigidArea(new Dimension(4, 0))); + statusBar.add(stopButton); + statusBar.add(Box.createRigidArea(new Dimension(4, 0))); statusBar.setVisible(false); // --- selector + placeholder --- - selectorPanel = new ClaudeSessionSelectorPanel(dir, (d, pn, ea) -> onDirectoryOpened(d, pn, ea)); - placeholderLabel = new JLabel( - NbBundle.getMessage(ClaudeSessionSelectorPanel.class, "LBL_SelectDir"), - SwingConstants.CENTER); - placeholderLabel.setForeground(Color.GRAY); + selectorPanel = new ClaudeSessionSelectorPanel(dir, (d, pn, ea, mode, resumeId) -> onDirectoryOpened(d, pn, ea, mode, resumeId)); // --- chat UI --- choiceMenuPanel = new ChoiceMenuPanel(() -> { @@ -252,13 +268,14 @@ public ClaudeSessionTab(File dir) { () -> { File wd = model.getWorkingDirectory(); return wd != null ? wd.getAbsolutePath() : null; - }); + }, + () -> onSaveAndSwitch("", SessionMode.NEW, null), + () -> openSwitchDialog(SessionMode.RESUME_SPECIFIC)); // --- layout --- setLayout(new BorderLayout()); - add(selectorPanel, BorderLayout.NORTH); - add(placeholderLabel, BorderLayout.CENTER); - add(statusBar, BorderLayout.SOUTH); + add(selectorPanel, BorderLayout.CENTER); + add(statusBar, BorderLayout.SOUTH); setIcon(ImageUtilities.loadImage(ICON, true)); updateDisplayName(dir); @@ -277,11 +294,18 @@ public ClaudeSessionTab(File dir) { public static void openNewOrFocus() { SwingUtilities.invokeLater(() -> { for (TopComponent tc : WindowManager.getDefault().getRegistry().getOpened()) { - if (tc instanceof ClaudeSessionTab tab && !tab.isSessionActive()) { - tab.requestActive(); - return; + if (tc instanceof ClaudeSessionTab tab) { + boolean active = tab.isSessionActive(); + LOG.fine("openNewOrFocus: found tab path=" + tab.getWorkingDirectory() + + " isSessionActive=" + active); + if (!active) { + LOG.fine("openNewOrFocus: focusing idle tab"); + tab.requestActive(); + return; + } } } + LOG.fine("openNewOrFocus: no idle tab found, opening new tab"); ClaudeSessionTab tab = new ClaudeSessionTab(); tab.open(); tab.requestActive(); @@ -331,16 +355,21 @@ protected void componentOpened() { String path = savedPath != null ? savedPath : pathToRestore; String profileName = savedProfileName; String extraCliArgs = savedExtraCliArgs; + SessionMode sessionMode = savedSessionMode; + String resumeSessionId = savedResumeSessionId; savedPath = null; pathToRestore = null; savedProfileName = null; savedExtraCliArgs = null; + savedSessionMode = null; + savedResumeSessionId = null; if (path != null && !path.isBlank()) { File dir = new File(path); if (dir.isDirectory()) { + selectorPanel.lock(); WindowManager.getDefault().invokeWhenUIReady( - () -> autoStart(dir, profileName, extraCliArgs)); + () -> autoStart(dir, profileName, extraCliArgs, sessionMode, resumeSessionId)); return; } } @@ -386,6 +415,9 @@ public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(dir != null ? dir.getAbsolutePath() : ""); out.writeUTF(selectorPanel.getSelectedProfileName()); out.writeUTF(selectorPanel.getExtraCliArgs()); + // Session mode (added in 0.21) + out.writeUTF(ClaudeCodePreferences.getContextMenuSessionMode().name()); + out.writeUTF(""); // no specific session to resume } @Override @@ -402,6 +434,18 @@ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundExcept } catch (java.io.EOFException ignored) { savedExtraCliArgs = null; } + try { + String modeName = in.readUTF(); + savedSessionMode = modeName.isBlank() ? null : SessionMode.valueOf(modeName); + } catch (java.io.EOFException | IllegalArgumentException ignored) { + savedSessionMode = null; + } + try { + String resumeId = in.readUTF(); + savedResumeSessionId = resumeId.isBlank() ? null : resumeId; + } catch (java.io.EOFException ignored) { + savedResumeSessionId = null; + } } // ------------------------------------------------------------------------- @@ -545,13 +589,20 @@ public void autoStart(File dir, String profileName) { } public void autoStart(File dir, String profileName, String extraCliArgs) { + autoStart(dir, profileName, extraCliArgs, + ClaudeCodePreferences.getContextMenuSessionMode(), null); + } + + public void autoStart(File dir, String profileName, String extraCliArgs, + SessionMode mode, String resumeSessionId) { if (dir == null || !dir.isDirectory()) return; selectorPanel.setPath(dir.getAbsolutePath()); selectorPanel.setProfile(profileName); selectorPanel.preselectForDirectory(dir); selectorPanel.setExtraCliArgs(extraCliArgs); selectorPanel.lock(); - startSession(dir, profileName, extraCliArgs != null ? extraCliArgs : ""); + startSession(dir, profileName, extraCliArgs != null ? extraCliArgs : "", + mode != null ? mode : SessionMode.NEW, resumeSessionId); } /** @@ -580,17 +631,32 @@ public String getEditMode() { return model.getEditMode(); } + /** + * Returns the name of the currently selected profile. + * + * @return profile name; never {@code null} + */ + public String getSelectedProfileName() { + return selectorPanel.getSelectedProfileName(); + } + // ------------------------------------------------------------------------- // Session management // ------------------------------------------------------------------------- /** Fired by the selector panel when the user confirms a valid directory. */ - private void onDirectoryOpened(File dir, String profileName, String extraCliArgs) { + private void onDirectoryOpened(File dir, String profileName, String extraCliArgs, + SessionMode mode, String resumeSessionId) { selectorPanel.lock(); - startSession(dir, profileName, extraCliArgs); + startSession(dir, profileName, extraCliArgs, mode, resumeSessionId); } private void startSession(File dir, String profileName, String extraCliArgs) { + startSession(dir, profileName, extraCliArgs, SessionMode.NEW, null); + } + + private void startSession(File dir, String profileName, String extraCliArgs, + SessionMode mode, String resumeSessionId) { updateDisplayName(dir); sessionTag = "[" + dir.getName() + "] "; JediTermWidget widget = new JediTermWidget(new NetBeansSettingsProvider()); @@ -602,7 +668,7 @@ private void startSession(File dir, String profileName, String extraCliArgs) { } showChatLayout(widget); try { - controller.startProcess(dir, profileName, extraCliArgs, widget); + controller.startProcess(dir, profileName, extraCliArgs, mode, resumeSessionId, widget); } catch (IOException ex) { String command = controller.getLastAttemptedCommand(); String errorMsg = ex.getMessage() != null ? ex.getMessage() : ex.getClass().getSimpleName(); @@ -611,7 +677,7 @@ private void startSession(File dir, String profileName, String extraCliArgs) { } private void showChatLayout(JediTermWidget widget) { - remove(placeholderLabel); + remove(selectorPanel); selectorPanel.setVisible(false); terminalWidget = widget; @@ -696,8 +762,7 @@ private void showSelectorLayout() { remove(errorPanel); errorPanel = null; } - add(placeholderLabel, BorderLayout.CENTER); - selectorPanel.setVisible(true); + add(selectorPanel, BorderLayout.CENTER); revalidate(); repaint(); } @@ -757,7 +822,7 @@ private void showStartError(String command, String error) { wrapper.add(Box.createVerticalGlue()); errorPanel = wrapper; - remove(placeholderLabel); + remove(selectorPanel); add(errorPanel, BorderLayout.CENTER); revalidate(); repaint(); @@ -816,8 +881,86 @@ private void switchSouthCard(String card) { } } + /** + * Handles the Save & Switch dialog confirmation. + * + *

Stops the current session (writing a custom-title if name changed), + * then either closes the tab or restarts in the same tab with the new mode. + * + * @param sessionName new name for the current session (written to JSONL) + * @param mode what to do after stopping + * @param resumeId session ID to resume (only used for RESUME_SPECIFIC) + */ + /** + * Opens the Save & Switch dialog with the given initial mode pre-selected. + * + * @param initialMode the session mode to pre-select in the dialog + */ + public void openSwitchDialog(SessionMode initialMode) { + File workingDir = model.getWorkingDirectory(); + if (workingDir == null) return; + + String profileName = selectorPanel.getSelectedProfileName(); + Path claudeConfigDir = null; + if (profileName != null && !io.github.nbclaudecodegui.settings.ClaudeProfile.DEFAULT_NAME.equals(profileName)) { + io.github.nbclaudecodegui.settings.ClaudeProfile profile = + io.github.nbclaudecodegui.settings.ClaudeProfileStore.findByName(profileName); + if (profile != null) { + claudeConfigDir = io.github.nbclaudecodegui.settings.ClaudeProfileStore.resolveConfigDir( + profile, ClaudeCodePreferences.getProfilesDir()); + } + } + + io.github.nbclaudecodegui.model.SavedSession recent = + io.github.nbclaudecodegui.process.ClaudeSessionStore.findMostRecent( + workingDir.toPath(), claudeConfigDir); + String currentName = recent != null ? recent.displayName() : ""; + String currentId = recent != null ? recent.sessionId() : null; + + final ClaudeSessionTab self = this; + final Path configDir = claudeConfigDir; + java.awt.Frame mainFrame = org.openide.windows.WindowManager.getDefault().getMainWindow(); + SaveAndSwitchDialog dialog = new SaveAndSwitchDialog( + mainFrame, + currentName, + currentId, + workingDir.toPath(), + configDir, + initialMode, + (name, mode, resumeId) -> + SwingUtilities.invokeLater(() -> self.onSaveAndSwitch(name, mode, resumeId)) + ); + dialog.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + dialog.setVisible(true); + } + + public void onSaveAndSwitch(String sessionName, SessionMode mode, String resumeId) { + File dir = model.getWorkingDirectory(); + String profileName = selectorPanel.getSelectedProfileName(); + String extraCliArgs = selectorPanel.getExtraCliArgs(); + + // Stop and rename + controller.stopAndRename(sessionName); + cleanupChatLayout(); + + if (mode == SessionMode.CLOSE_ONLY) { + // Just stop — do nothing more + return; + } + + // Restart with new mode + if (dir != null) { + startSession(dir, profileName, extraCliArgs, mode, resumeId); + } + } + private void stopProcess() { controller.stopProcess(); + cleanupChatLayout(); + } + + /** Tears down the chat UI layout after the PTY has already been stopped. */ + private void cleanupChatLayout() { if (terminalWidget != null) { terminalWidget.close(); terminalWidget = null; @@ -837,7 +980,7 @@ private void stopProcess() { } selectorPanel.setVisible(true); selectorPanel.unlock(); - add(placeholderLabel, BorderLayout.CENTER); + add(selectorPanel, BorderLayout.CENTER); statusBar.setVisible(false); currentLifecycle = null; stateLabel.setText("Ready"); diff --git a/src/main/java/io/github/nbclaudecodegui/ui/SaveAndSwitchDialog.java b/src/main/java/io/github/nbclaudecodegui/ui/SaveAndSwitchDialog.java new file mode 100644 index 00000000..4ac5bb95 --- /dev/null +++ b/src/main/java/io/github/nbclaudecodegui/ui/SaveAndSwitchDialog.java @@ -0,0 +1,162 @@ +package io.github.nbclaudecodegui.ui; + +import io.github.nbclaudecodegui.model.SessionMode; +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.Window; +import java.nio.file.Path; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.SwingConstants; + +/** + * Modal dialog for saving the current session name and switching the session mode. + * + *

Allows the user to: + *

    + *
  • Rename the current session (writes a {@code custom-title} entry on confirm)
  • + *
  • Choose what happens next: Close only / New session / Continue last / Resume specific
  • + *
+ * + *

Default selection is "Close only". OK is disabled when "Resume specific" is + * selected but no session row is chosen. Cancel closes the dialog without any action. + */ +public final class SaveAndSwitchDialog extends JDialog { + + /** + * Functional interface for the confirm callback. + * + * @param first param type (session name) + * @param second param type (session mode) + * @param third param type (resume session ID) + */ + @FunctionalInterface + public interface TriConsumer { + void accept(A a, B b, C c); + } + + // ------------------------------------------------------------------------- + // Fields + // ------------------------------------------------------------------------- + + private final JTextField nameField; + private final SessionModePanel modePanel; + private final JButton okButton; + + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + + /** + * Creates a Save & Switch dialog. + * + * @param owner parent window + * @param currentSessionName current session display name (pre-fills the name field) + * @param currentSessionId session ID to exclude from the session table + * @param workingDir working directory (used to load session list) + * @param claudeConfigDir Claude config dir ({@code null} → {@code ~/.claude}) + * @param initialMode the session mode to pre-select + * @param onConfirm called with (sessionName, mode, resumeId) when OK is clicked + */ + public SaveAndSwitchDialog(Window owner, + String currentSessionName, + String currentSessionId, + Path workingDir, + Path claudeConfigDir, + SessionMode initialMode, + TriConsumer onConfirm) { + super(owner, "Save & Switch", ModalityType.APPLICATION_MODAL); + + // --- Name field --- + nameField = new JTextField(currentSessionName != null ? currentSessionName : "", 30); + + JPanel nameRow = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 4)); + nameRow.add(new JLabel("Save current session with name:")); + nameRow.add(nameField); + + // --- Session mode panel --- + modePanel = new SessionModePanel(workingDir, claudeConfigDir, + currentSessionId, true); + modePanel.setMode(initialMode != null ? initialMode : SessionMode.CLOSE_ONLY); + + // --- Buttons --- + okButton = new JButton("OK"); + JButton cancelButton = new JButton("Cancel"); + + JPanel buttonRow = new JPanel(new FlowLayout(FlowLayout.RIGHT, 4, 4)); + buttonRow.add(okButton); + buttonRow.add(cancelButton); + + // --- Layout --- + JPanel content = new JPanel(new BorderLayout(4, 4)); + content.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); + content.add(nameRow, BorderLayout.NORTH); + content.add(modePanel, BorderLayout.CENTER); + content.add(buttonRow, BorderLayout.SOUTH); + + setContentPane(content); + pack(); + setMinimumSize(getPreferredSize()); + setLocationRelativeTo(owner); + + // Double-click on session row → confirm + modePanel.setOnDoubleClick(() -> okButton.doClick()); + + // --- Validation --- + updateOkButton(); + modePanel.addPropertyChangeListener(e -> updateOkButton()); + // Re-check on radio changes via table selection + okButton.addPropertyChangeListener(e -> {}); + + // Attach mode panel listener by overriding isSelectionValid polling via button + // We listen to the mode panel's internal radio buttons indirectly: + // SessionModePanel fires revalidate() which triggers layout, but we need a hook. + // Use a simple approach: validate on every possible event via a shared runnable. + Runnable validate = this::updateOkButton; + for (java.awt.Component c : getAllComponents(modePanel)) { + if (c instanceof javax.swing.JRadioButton rb) { + rb.addActionListener(e2 -> validate.run()); + } + if (c instanceof javax.swing.JTable t) { + t.getSelectionModel().addListSelectionListener(e2 -> validate.run()); + } + } + + // --- Actions --- + okButton.addActionListener(e -> { + String name = nameField.getText().trim(); + SessionMode mode = modePanel.getSelectedMode(); + String resumeId = modePanel.getSelectedSessionId(); + dispose(); + onConfirm.accept(name, mode, resumeId); + }); + + cancelButton.addActionListener(e -> dispose()); + + getRootPane().setDefaultButton(okButton); + } + + // ------------------------------------------------------------------------- + // Helpers + // ------------------------------------------------------------------------- + + private void updateOkButton() { + okButton.setEnabled(modePanel.isSelectionValid()); + } + + /** Returns all nested components of the given container. */ + private static java.util.List getAllComponents(java.awt.Container container) { + java.util.List list = new java.util.ArrayList<>(); + for (java.awt.Component c : container.getComponents()) { + list.add(c); + if (c instanceof java.awt.Container ct) { + list.addAll(getAllComponents(ct)); + } + } + return list; + } +} diff --git a/src/main/java/io/github/nbclaudecodegui/ui/SessionModePanel.java b/src/main/java/io/github/nbclaudecodegui/ui/SessionModePanel.java new file mode 100644 index 00000000..f76f1b0e --- /dev/null +++ b/src/main/java/io/github/nbclaudecodegui/ui/SessionModePanel.java @@ -0,0 +1,392 @@ +package io.github.nbclaudecodegui.ui; + +import io.github.nbclaudecodegui.model.SavedSession; +import io.github.nbclaudecodegui.model.SessionMode; +import io.github.nbclaudecodegui.process.ClaudeSessionStore; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.FlowLayout; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.nio.file.Path; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.logging.Logger; +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.ButtonGroup; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.RowSorter; +import javax.swing.SortOrder; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableRowSorter; + +/** + * Reusable panel for selecting how a Claude Code session is started. + * + *

Shows radio buttons for session mode and, when "Resume specific" is + * selected, a table of available sessions. + * + *

Construct with {@code showCloseOnly=false} for the session selector (no + * "Close only" option) and {@code showCloseOnly=true} for the Save & Switch + * dialog. + */ +public final class SessionModePanel extends JPanel { + + private static final Logger LOG = Logger.getLogger(SessionModePanel.class.getName()); + private static final SimpleDateFormat DATE_FMT = + new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + // ------------------------------------------------------------------------- + // State + // ------------------------------------------------------------------------- + + private Path workingDir; + private Path claudeConfigDir; + private String excludeSession; + + // ------------------------------------------------------------------------- + // UI + // ------------------------------------------------------------------------- + + private final JRadioButton closeOnlyRadio; + private final JRadioButton newRadio; + private final JRadioButton continueRadio; + private final JRadioButton resumeRadio; + + private final JTable sessionTable; + private final SessionTableModel tableModel; + private final JScrollPane tableScroll; + private final JButton renameButton; + + /** Called on double-click when resumeRadio is selected; may be {@code null}. */ + private Runnable onDoubleClick; + + // ------------------------------------------------------------------------- + // Constructor + // ------------------------------------------------------------------------- + + /** + * Creates a new session-mode panel. + * + * @param workingDir session working directory; may be {@code null} + * @param claudeConfigDir resolved config dir for the active profile; {@code null} → {@code ~/.claude} + * @param excludeSession session ID to exclude from the table (current session), or {@code null} + * @param showCloseOnly if {@code true}, adds a "Close only" radio at the top + */ + public SessionModePanel(Path workingDir, Path claudeConfigDir, + String excludeSession, boolean showCloseOnly) { + this.workingDir = workingDir; + this.claudeConfigDir = claudeConfigDir; + this.excludeSession = excludeSession; + + setLayout(new BorderLayout()); + setBorder(BorderFactory.createEmptyBorder(4, 0, 4, 0)); + + ButtonGroup group = new ButtonGroup(); + + closeOnlyRadio = new JRadioButton("Close only"); + newRadio = new JRadioButton("New session"); + continueRadio = new JRadioButton("Continue last"); + resumeRadio = new JRadioButton("Resume specific"); + + group.add(closeOnlyRadio); + group.add(newRadio); + group.add(continueRadio); + group.add(resumeRadio); + + // Radio panel (NORTH) — keeps all radios grouped together + JPanel radioPanel = new JPanel(); + radioPanel.setLayout(new BoxLayout(radioPanel, BoxLayout.Y_AXIS)); + + if (showCloseOnly) { + radioPanel.add(row(closeOnlyRadio)); + } + radioPanel.add(row(newRadio)); + radioPanel.add(row(continueRadio)); + + // Resume specific row with Rename button + JPanel resumeRow = new JPanel(new BorderLayout()); + resumeRow.setAlignmentX(Component.LEFT_ALIGNMENT); + resumeRow.add(resumeRadio, BorderLayout.WEST); + renameButton = new JButton("Rename"); + renameButton.setEnabled(false); + renameButton.setVisible(false); + JPanel renamePad = new JPanel(new FlowLayout(FlowLayout.RIGHT, 4, 0)); + renamePad.add(renameButton); + resumeRow.add(renamePad, BorderLayout.EAST); + radioPanel.add(resumeRow); + + add(radioPanel, BorderLayout.NORTH); + + // Session table (CENTER) — shown/hidden when Resume specific is selected + tableModel = new SessionTableModel(); + sessionTable = new JTable(tableModel); + sessionTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + sessionTable.setAutoCreateRowSorter(true); + + TableRowSorter sorter = new TableRowSorter<>(tableModel); + sessionTable.setRowSorter(sorter); + List sortKeys = new ArrayList<>(); + sortKeys.add(new RowSorter.SortKey(0, SortOrder.DESCENDING)); + sorter.setSortKeys(sortKeys); + + tableScroll = new JScrollPane(sessionTable); + tableScroll.setPreferredSize(new java.awt.Dimension(400, 150)); + tableScroll.setVisible(false); + add(tableScroll, BorderLayout.CENTER); + + tableScroll.getViewport().addComponentListener(new java.awt.event.ComponentAdapter() { + @Override + public void componentResized(java.awt.event.ComponentEvent e) { + int w = tableScroll.getViewport().getWidth(); + if (w <= 0) return; + int c0 = w / 6; + int c1 = w * 2 / 6; + int c2 = w - c0 - c1; + javax.swing.table.TableColumnModel cm = sessionTable.getColumnModel(); + cm.getColumn(0).setPreferredWidth(c0); + cm.getColumn(1).setPreferredWidth(c1); + cm.getColumn(2).setPreferredWidth(c2); + } + }); + + // Default selection + if (showCloseOnly) { + closeOnlyRadio.setSelected(true); + } else { + continueRadio.setSelected(true); + } + + // Radio listeners + closeOnlyRadio.addActionListener(e -> onRadioChanged()); + newRadio.addActionListener(e -> onRadioChanged()); + continueRadio.addActionListener(e -> onRadioChanged()); + resumeRadio.addActionListener(e -> onRadioChanged()); + + // Table selection listener → enable Rename + sessionTable.getSelectionModel().addListSelectionListener(e -> { + if (!e.getValueIsAdjusting()) { + renameButton.setEnabled(sessionTable.getSelectedRow() >= 0); + } + }); + + // Rename button + renameButton.addActionListener(e -> onRename()); + + // Double-click on session row → fire onDoubleClick (if set and resumeRadio is selected) + sessionTable.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2 && resumeRadio.isSelected() && onDoubleClick != null) { + onDoubleClick.run(); + } + } + }); + + refreshTable(); + } + + // ------------------------------------------------------------------------- + // Public API + // ------------------------------------------------------------------------- + + /** + * Returns the currently selected session mode. + * + * @return selected {@link SessionMode} + */ + public SessionMode getSelectedMode() { + if (closeOnlyRadio.isSelected()) return SessionMode.CLOSE_ONLY; + if (newRadio.isSelected()) return SessionMode.NEW; + if (continueRadio.isSelected()) return SessionMode.CONTINUE_LAST; + return SessionMode.RESUME_SPECIFIC; + } + + /** + * Returns the selected session ID, or {@code null} if mode is not + * {@link SessionMode#RESUME_SPECIFIC} or no row is selected. + * + * @return session ID or {@code null} + */ + public String getSelectedSessionId() { + if (!resumeRadio.isSelected()) return null; + int viewRow = sessionTable.getSelectedRow(); + if (viewRow < 0) return null; + int modelRow = sessionTable.convertRowIndexToModel(viewRow); + return tableModel.getSessionId(modelRow); + } + + /** + * Programmatically sets the selected mode. + * + * @param mode mode to select + */ + public void setMode(SessionMode mode) { + switch (mode) { + case CLOSE_ONLY -> closeOnlyRadio.setSelected(true); + case NEW -> newRadio.setSelected(true); + case CONTINUE_LAST -> continueRadio.setSelected(true); + case RESUME_SPECIFIC -> resumeRadio.setSelected(true); + } + onRadioChanged(); + } + + /** + * Sets a callback to be called when the user double-clicks a row in the + * session table while the "Resume specific" radio is selected. + * + * @param action callback, or {@code null} to remove + */ + public void setOnDoubleClick(Runnable action) { + this.onDoubleClick = action; + } + + /** + * Reloads the session list for a new directory / profile combination. + * + * @param newWorkingDir new working directory + * @param newClaudeConfigDir new config dir (null → ~/.claude) + * @param newExcludeSession session ID to exclude, or null + */ + public void reload(Path newWorkingDir, Path newClaudeConfigDir, String newExcludeSession) { + this.workingDir = newWorkingDir; + this.claudeConfigDir = newClaudeConfigDir; + this.excludeSession = newExcludeSession; + refreshTable(); + } + + /** + * Returns {@code true} if the current selection is valid: any mode except + * {@link SessionMode#RESUME_SPECIFIC}, or RESUME_SPECIFIC with a row selected. + * + * @return {@code true} if a valid selection is made + */ + public boolean isSelectionValid() { + if (resumeRadio.isSelected()) { + return sessionTable.getSelectedRow() >= 0; + } + return true; + } + + boolean isRenameButtonVisible() { + return renameButton.isVisible(); + } + + // ------------------------------------------------------------------------- + // Internal + // ------------------------------------------------------------------------- + + private JPanel row(JRadioButton radio) { + JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); + p.setAlignmentX(Component.LEFT_ALIGNMENT); + p.add(radio); + return p; + } + + private void onRadioChanged() { + boolean showTable = resumeRadio.isSelected(); + tableScroll.setVisible(showTable); + renameButton.setVisible(showTable); + if (showTable) { + refreshTable(); + } + revalidate(); + repaint(); + java.awt.Window w = javax.swing.SwingUtilities.getWindowAncestor(this); + if (w instanceof javax.swing.JDialog) w.pack(); + } + + private void refreshTable() { + if (workingDir == null) { + tableModel.setSessions(List.of()); + return; + } + List sessions = ClaudeSessionStore.listSessions(workingDir, claudeConfigDir); + if (excludeSession != null) { + sessions.removeIf(s -> excludeSession.equals(s.sessionId())); + } + tableModel.setSessions(sessions); + } + + private void onRename() { + int viewRow = sessionTable.getSelectedRow(); + if (viewRow < 0) return; + int modelRow = sessionTable.convertRowIndexToModel(viewRow); + SavedSession session = tableModel.getSession(modelRow); + if (session == null) return; + + String current = session.displayName(); + String newName = JOptionPane.showInputDialog( + this, "Rename session:", current); + if (newName == null || newName.isBlank()) return; + + try { + ClaudeSessionStore.renameSession(workingDir, claudeConfigDir, + session.sessionId(), newName.trim()); + refreshTable(); + } catch (Exception e) { + LOG.warning("Could not rename session: " + e.getMessage()); + JOptionPane.showMessageDialog(this, + "Could not rename session: " + e.getMessage(), + "Rename Error", JOptionPane.ERROR_MESSAGE); + } + } + + // ------------------------------------------------------------------------- + // Table model + // ------------------------------------------------------------------------- + + private static final class SessionTableModel extends AbstractTableModel { + + private List sessions = new ArrayList<>(); + + private static final String[] COLUMNS = {"Date/Time", "Name", "First prompt"}; + + void setSessions(List list) { + this.sessions = new ArrayList<>(list); + fireTableDataChanged(); + } + + SavedSession getSession(int modelRow) { + if (modelRow < 0 || modelRow >= sessions.size()) return null; + return sessions.get(modelRow); + } + + String getSessionId(int modelRow) { + SavedSession s = getSession(modelRow); + return s != null ? s.sessionId() : null; + } + + @Override public int getRowCount() { return sessions.size(); } + @Override public int getColumnCount() { return COLUMNS.length; } + @Override public String getColumnName(int col) { return COLUMNS[col]; } + + @Override + public Object getValueAt(int row, int col) { + SavedSession s = sessions.get(row); + return switch (col) { + case 0 -> s.lastAt() != null + ? DATE_FMT.format(Date.from(s.lastAt())) + : ""; + case 1 -> s.displayName(); + case 2 -> s.firstPrompt() != null ? s.firstPrompt() : ""; + default -> ""; + }; + } + + @Override + public Class getColumnClass(int col) { + return String.class; + } + } +} diff --git a/src/main/java/org/openbeans/claude/netbeans/ClaudeCodeStatusLineElement.java b/src/main/java/org/openbeans/claude/netbeans/ClaudeCodeStatusLineElement.java index 2e732c5d..b41bfe8c 100644 --- a/src/main/java/org/openbeans/claude/netbeans/ClaudeCodeStatusLineElement.java +++ b/src/main/java/org/openbeans/claude/netbeans/ClaudeCodeStatusLineElement.java @@ -1,12 +1,27 @@ package org.openbeans.claude.netbeans; +import io.github.nbclaudecodegui.model.SavedSession; +import io.github.nbclaudecodegui.model.SessionMode; +import io.github.nbclaudecodegui.process.ClaudeSessionStore; +import io.github.nbclaudecodegui.settings.ClaudeCodePreferences; +import io.github.nbclaudecodegui.settings.ClaudeProfile; +import io.github.nbclaudecodegui.settings.ClaudeProfileStore; +import io.github.nbclaudecodegui.ui.ClaudeSessionTab; +import io.github.nbclaudecodegui.ui.SaveAndSwitchDialog; import java.awt.Component; +import java.awt.Frame; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.io.File; +import java.nio.file.Path; import javax.swing.JLabel; +import javax.swing.SwingUtilities; +import javax.swing.WindowConstants; import org.openide.awt.StatusLineElementProvider; import org.openide.util.Lookup; import org.openide.util.lookup.ServiceProvider; +import org.openide.windows.TopComponent; +import org.openide.windows.WindowManager; /** * Status bar element for Claude Code integration status. @@ -29,13 +44,13 @@ private void initializeStatusLabel() { statusLabel.setText("Claude"); statusLabel.setToolTipText("Claude Code: Initializing..."); - // Add mouse listener for click interactions (future enhancement) + statusLabel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.HAND_CURSOR)); statusLabel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - // Could show status dialog or perform action + onStatusLabelClicked(); } - + @Override public void mouseEntered(MouseEvent e) { updateTooltip(); @@ -83,4 +98,53 @@ public Component getStatusLineElement() { public void refresh() { updateStatusDisplay(); } + + private void onStatusLabelClicked() { + // Find the active ClaudeSessionTab + ClaudeSessionTab activeTab = null; + for (TopComponent tc : WindowManager.getDefault().getRegistry().getOpened()) { + if (tc instanceof ClaudeSessionTab tab && tab.isSessionActive()) { + activeTab = tab; + break; + } + } + if (activeTab == null) return; + + File workingDir = activeTab.getWorkingDirectory(); + if (workingDir == null) return; + + // Resolve claude config dir from the active profile + String profileName = activeTab.getSelectedProfileName(); + Path claudeConfigDir = null; + if (profileName != null && !ClaudeProfile.DEFAULT_NAME.equals(profileName)) { + ClaudeProfile profile = ClaudeProfileStore.findByName(profileName); + if (profile != null) { + claudeConfigDir = ClaudeProfileStore.resolveConfigDir( + profile, ClaudeCodePreferences.getProfilesDir()); + } + } + + // Get current session display name + SavedSession recent = ClaudeSessionStore.findMostRecent( + workingDir.toPath(), claudeConfigDir); + String currentName = recent != null ? recent.displayName() : ""; + String currentId = recent != null ? recent.sessionId() : null; + + final ClaudeSessionTab tab = activeTab; + final Path configDir = claudeConfigDir; + + Frame mainFrame = WindowManager.getDefault().getMainWindow(); + SaveAndSwitchDialog dialog = new SaveAndSwitchDialog( + mainFrame, + currentName, + currentId, + workingDir.toPath(), + configDir, + io.github.nbclaudecodegui.model.SessionMode.CLOSE_ONLY, + (name, mode, resumeId) -> + SwingUtilities.invokeLater(() -> tab.onSaveAndSwitch(name, mode, resumeId)) + ); + dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + dialog.setVisible(true); + } } \ No newline at end of file diff --git a/src/test/java/io/github/nbclaudecodegui/model/SavedSessionTest.java b/src/test/java/io/github/nbclaudecodegui/model/SavedSessionTest.java new file mode 100644 index 00000000..d1001a73 --- /dev/null +++ b/src/test/java/io/github/nbclaudecodegui/model/SavedSessionTest.java @@ -0,0 +1,45 @@ +package io.github.nbclaudecodegui.model; + +import org.junit.jupiter.api.Test; + +import java.time.Instant; + +import static org.junit.jupiter.api.Assertions.*; + +class SavedSessionTest { + + @Test + void displayName_returnsCustomTitleWhenSet() { + SavedSession s = new SavedSession("id", Instant.now(), Instant.now(), + "auto-slug", "My Custom Title", null); + assertEquals("My Custom Title", s.displayName()); + } + + @Test + void displayName_returnsSlugWhenNoCustomTitle() { + SavedSession s = new SavedSession("id", Instant.now(), Instant.now(), + "auto-slug", null, null); + assertEquals("auto-slug", s.displayName()); + } + + @Test + void displayName_returnsSlugWhenCustomTitleIsBlank() { + SavedSession s = new SavedSession("id", Instant.now(), Instant.now(), + "auto-slug", " ", null); + assertEquals("auto-slug", s.displayName()); + } + + @Test + void displayName_returnsSessionIdWhenSlugIsNull() { + SavedSession s = new SavedSession("my-session-id", Instant.now(), Instant.now(), + null, null, null); + assertEquals("my-session-id", s.displayName()); + } + + @Test + void displayName_returnsSessionIdWhenBothNull() { + SavedSession s = new SavedSession("fallback-id", Instant.now(), Instant.now(), + null, null, null); + assertEquals("fallback-id", s.displayName()); + } +} diff --git a/src/test/java/io/github/nbclaudecodegui/process/ClaudeSessionStoreTest.java b/src/test/java/io/github/nbclaudecodegui/process/ClaudeSessionStoreTest.java new file mode 100644 index 00000000..cb923535 --- /dev/null +++ b/src/test/java/io/github/nbclaudecodegui/process/ClaudeSessionStoreTest.java @@ -0,0 +1,198 @@ +package io.github.nbclaudecodegui.process; + +import io.github.nbclaudecodegui.model.SavedSession; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class ClaudeSessionStoreTest { + + @TempDir Path tmpDir; + + // ------------------------------------------------------------------------- + // computeHash + // ------------------------------------------------------------------------- + + @Test + void computeHash_replacesSeparatorsWithDashes() { + Path p = Path.of("/home/user/my-project"); + assertEquals("-home-user-my-project", ClaudeSessionStore.computeHash(p)); + } + + @Test + void computeHash_singleSegment() { + Path p = Path.of("/myproject"); + assertEquals("-myproject", ClaudeSessionStore.computeHash(p)); + } + + // ------------------------------------------------------------------------- + // listSessions + // ------------------------------------------------------------------------- + + private Path createSessionDir(Path configDir, Path workingDir) throws IOException { + String hash = ClaudeSessionStore.computeHash(workingDir); + Path sessionDir = configDir.resolve("projects").resolve(hash); + Files.createDirectories(sessionDir); + return sessionDir; + } + + private void writeJsonl(Path file, String... lines) throws IOException { + StringBuilder sb = new StringBuilder(); + for (String line : lines) sb.append(line).append("\n"); + Files.writeString(file, sb.toString(), StandardCharsets.UTF_8); + } + + @Test + void listSessions_parsesSlugAndTimestamps() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + Path jsonl = sessionDir.resolve("abc123.jsonl"); + writeJsonl(jsonl, + """ + {"sessionId":"abc123","slug":"enchanted-scribbling","timestamp":"2024-01-01T10:00:00.000Z","type":"summary"}""", + """ + {"type":"user","content":"hello","timestamp":"2024-01-01T10:05:00.000Z","sessionId":"abc123"}""" + ); + + List sessions = ClaudeSessionStore.listSessions(workDir, tmpDir); + assertEquals(1, sessions.size()); + SavedSession s = sessions.get(0); + assertEquals("abc123", s.sessionId()); + assertEquals("enchanted-scribbling", s.slug()); + assertNull(s.customTitle()); + assertEquals("enchanted-scribbling", s.displayName()); + } + + @Test + void listSessions_customTitleOverridesSlug() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + Path jsonl = sessionDir.resolve("abc123.jsonl"); + writeJsonl(jsonl, + """ + {"sessionId":"abc123","slug":"old-slug","timestamp":"2024-01-01T10:00:00.000Z","type":"summary"}""", + """ + {"type":"custom-title","customTitle":"My Title","sessionId":"abc123","timestamp":"2024-01-01T11:00:00.000Z"}""" + ); + + List sessions = ClaudeSessionStore.listSessions(workDir, tmpDir); + assertEquals(1, sessions.size()); + assertEquals("My Title", sessions.get(0).customTitle()); + assertEquals("My Title", sessions.get(0).displayName()); + } + + @Test + void listSessions_lastCustomTitleWins() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + Path jsonl = sessionDir.resolve("abc123.jsonl"); + writeJsonl(jsonl, + """ + {"sessionId":"abc123","slug":"slug","timestamp":"2024-01-01T10:00:00.000Z","type":"summary"}""", + """ + {"type":"custom-title","customTitle":"First","sessionId":"abc123","timestamp":"2024-01-01T10:01:00.000Z"}""", + """ + {"type":"custom-title","customTitle":"Second","sessionId":"abc123","timestamp":"2024-01-01T10:02:00.000Z"}""" + ); + + List sessions = ClaudeSessionStore.listSessions(workDir, tmpDir); + assertEquals("Second", sessions.get(0).customTitle()); + } + + @Test + void listSessions_excludesSessionsWithNoTimestamps() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + writeJsonl(sessionDir.resolve("nots.jsonl"), + """ + {"sessionId":"nots","slug":"no-ts","type":"summary"}""" + ); + + List sessions = ClaudeSessionStore.listSessions(workDir, tmpDir); + assertTrue(sessions.isEmpty()); + } + + @Test + void listSessions_sortsByLastAtDesc() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + + writeJsonl(sessionDir.resolve("old.jsonl"), + """ + {"sessionId":"old","slug":"old-session","timestamp":"2024-01-01T09:00:00.000Z","type":"summary"}""" + ); + writeJsonl(sessionDir.resolve("new.jsonl"), + """ + {"sessionId":"new","slug":"new-session","timestamp":"2024-06-01T09:00:00.000Z","type":"summary"}""" + ); + + List sessions = ClaudeSessionStore.listSessions(workDir, tmpDir); + assertEquals(2, sessions.size()); + assertEquals("new", sessions.get(0).sessionId()); + assertEquals("old", sessions.get(1).sessionId()); + } + + // ------------------------------------------------------------------------- + // deleteSession + // ------------------------------------------------------------------------- + + @Test + void deleteSession_removesFile() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + Path jsonl = sessionDir.resolve("xyz.jsonl"); + writeJsonl(jsonl, """ + {"sessionId":"xyz","slug":"s","timestamp":"2024-01-01T10:00:00.000Z","type":"summary"}"""); + + assertTrue(ClaudeSessionStore.deleteSession(workDir, tmpDir, "xyz")); + assertFalse(Files.exists(jsonl)); + } + + @Test + void deleteSession_returnsFalseOnSecondCall() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + Path jsonl = sessionDir.resolve("xyz.jsonl"); + writeJsonl(jsonl, """ + {"sessionId":"xyz","slug":"s","timestamp":"2024-01-01T10:00:00.000Z","type":"summary"}"""); + + assertTrue(ClaudeSessionStore.deleteSession(workDir, tmpDir, "xyz")); + assertFalse(ClaudeSessionStore.deleteSession(workDir, tmpDir, "xyz")); + } + + // ------------------------------------------------------------------------- + // renameSession + // ------------------------------------------------------------------------- + + @Test + void renameSession_appendsCustomTitleLine() throws IOException { + Path workDir = tmpDir.resolve("myproject"); + Path sessionDir = createSessionDir(tmpDir, workDir); + Path jsonl = sessionDir.resolve("abc.jsonl"); + writeJsonl(jsonl, + """ + {"sessionId":"abc","slug":"slug","timestamp":"2024-01-01T10:00:00.000Z","type":"summary"}""" + ); + + ClaudeSessionStore.renameSession(workDir, tmpDir, "abc", "My New Name"); + + List sessions = ClaudeSessionStore.listSessions(workDir, tmpDir); + assertEquals(1, sessions.size()); + assertEquals("My New Name", sessions.get(0).customTitle()); + assertEquals("My New Name", sessions.get(0).displayName()); + } + + @Test + void renameSession_throwsWhenFileNotFound() { + Path workDir = tmpDir.resolve("notexist"); + assertThrows(IOException.class, () -> + ClaudeSessionStore.renameSession(workDir, tmpDir, "no-such-id", "Name")); + } +} diff --git a/src/test/java/io/github/nbclaudecodegui/ui/ClaudePromptPanelSendTest.java b/src/test/java/io/github/nbclaudecodegui/ui/ClaudePromptPanelSendTest.java index c177355b..df3a8872 100644 --- a/src/test/java/io/github/nbclaudecodegui/ui/ClaudePromptPanelSendTest.java +++ b/src/test/java/io/github/nbclaudecodegui/ui/ClaudePromptPanelSendTest.java @@ -39,7 +39,7 @@ private void buildPanel(String workingDir) throws Exception { Runnable noop = () -> {}; SwingUtilities.invokeAndWait(() -> { - panel = new ClaudePromptPanel(send, noop, noop, hist, wd); + panel = new ClaudePromptPanel(send, noop, noop, hist, wd, null, null); }); } diff --git a/src/test/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanelTest.java b/src/test/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanelTest.java index 51fde7b6..0f723191 100644 --- a/src/test/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanelTest.java +++ b/src/test/java/io/github/nbclaudecodegui/ui/ClaudeSessionSelectorPanelTest.java @@ -28,7 +28,7 @@ class ClaudeSessionSelectorPanelTest { * happens (avoids project-API calls). */ private static ClaudeSessionSelectorPanel panel() { - return new ClaudeSessionSelectorPanel(null, (dir, profile, extra) -> {}); + return new ClaudeSessionSelectorPanel(null, (dir, profile, extra, mode, resumeId) -> {}); } // ------------------------------------------------------------------------- @@ -67,7 +67,7 @@ void openCallbackFiredForValidDir() throws IOException { AtomicReference capturedDir = new AtomicReference<>(); AtomicReference capturedProfile = new AtomicReference<>(); - ClaudeSessionSelectorPanel p = new ClaudeSessionSelectorPanel(null, (dir, profile, extra) -> { + ClaudeSessionSelectorPanel p = new ClaudeSessionSelectorPanel(null, (dir, profile, extra, mode, resumeId) -> { capturedDir.set(dir); capturedProfile.set(profile); }); @@ -90,7 +90,7 @@ void openCallbackFiredForValidDir() throws IOException { @Test void openDoesNotFireForEmptyPath() { AtomicReference capturedDir = new AtomicReference<>(); - ClaudeSessionSelectorPanel p = new ClaudeSessionSelectorPanel(null, (dir, profile, extra) -> + ClaudeSessionSelectorPanel p = new ClaudeSessionSelectorPanel(null, (dir, profile, extra, mode, resumeId) -> capturedDir.set(dir)); p.setPath(""); @@ -102,7 +102,7 @@ void openDoesNotFireForEmptyPath() { @Test void openDoesNotFireForMissingDir() { AtomicReference capturedDir = new AtomicReference<>(); - ClaudeSessionSelectorPanel p = new ClaudeSessionSelectorPanel(null, (dir, profile, extra) -> + ClaudeSessionSelectorPanel p = new ClaudeSessionSelectorPanel(null, (dir, profile, extra, mode, resumeId) -> capturedDir.set(dir)); p.setPath("/this/path/does/not/exist/hopefully-" + System.nanoTime()); diff --git a/src/test/java/io/github/nbclaudecodegui/ui/SessionModePanelTest.java b/src/test/java/io/github/nbclaudecodegui/ui/SessionModePanelTest.java new file mode 100644 index 00000000..2548bc6a --- /dev/null +++ b/src/test/java/io/github/nbclaudecodegui/ui/SessionModePanelTest.java @@ -0,0 +1,84 @@ +package io.github.nbclaudecodegui.ui; + +import io.github.nbclaudecodegui.model.SessionMode; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class SessionModePanelTest { + + @Test + void isSelectionValid_falseForResumeSpecificWithNoRowSelected() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + panel.setMode(SessionMode.RESUME_SPECIFIC); + assertFalse(panel.isSelectionValid(), + "RESUME_SPECIFIC with no row selected should be invalid"); + } + + @Test + void isSelectionValid_trueForNewMode() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + panel.setMode(SessionMode.NEW); + assertTrue(panel.isSelectionValid()); + } + + @Test + void isSelectionValid_trueForContinueLast() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + panel.setMode(SessionMode.CONTINUE_LAST); + assertTrue(panel.isSelectionValid()); + } + + @Test + void isSelectionValid_trueForCloseOnly() { + SessionModePanel panel = new SessionModePanel(null, null, null, true); + panel.setMode(SessionMode.CLOSE_ONLY); + assertTrue(panel.isSelectionValid()); + } + + @Test + void getSelectedMode_defaultIsContinueLast_whenShowCloseOnlyFalse() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + assertEquals(SessionMode.CONTINUE_LAST, panel.getSelectedMode()); + } + + @Test + void getSelectedMode_defaultIsCloseOnly_whenShowCloseOnlyTrue() { + SessionModePanel panel = new SessionModePanel(null, null, null, true); + assertEquals(SessionMode.CLOSE_ONLY, panel.getSelectedMode()); + } + + @Test + void getSelectedSessionId_nullWhenNotResumeSpecific() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + panel.setMode(SessionMode.NEW); + assertNull(panel.getSelectedSessionId()); + } + + @Test + void renameButton_hiddenWhenNewModeSelected() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + panel.setMode(SessionMode.NEW); + assertFalse(panel.isRenameButtonVisible(), "Rename button should be hidden when NEW mode is selected"); + } + + @Test + void renameButton_hiddenWhenContinueLastSelected() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + panel.setMode(SessionMode.CONTINUE_LAST); + assertFalse(panel.isRenameButtonVisible(), "Rename button should be hidden when CONTINUE_LAST mode is selected"); + } + + @Test + void renameButton_visibleWhenResumeSpecificSelected() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + panel.setMode(SessionMode.RESUME_SPECIFIC); + assertTrue(panel.isRenameButtonVisible(), "Rename button should be visible when RESUME_SPECIFIC mode is selected"); + } + + @Test + void renameButton_hiddenByDefault() { + SessionModePanel panel = new SessionModePanel(null, null, null, false); + assertFalse(panel.isRenameButtonVisible(), "Rename button should be hidden by default (CONTINUE_LAST is default)"); + } +} From 0d7350cd814b2f936d5b5a3b77b7c346ccfb6071 Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Fri, 10 Apr 2026 12:25:26 +0300 Subject: [PATCH 2/4] Updated docs: actualized plan, CLAUDE.md, and user manual for sessions feature Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 66 +++++++++++++++++++---- docs/plan-nb-claude-code-gui.md | 36 ++++++------- docs/to-do.md | 36 ++----------- docs/user-manual.md | 92 ++++++++++++++++++++++++++++++--- 4 files changed, 166 insertions(+), 64 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index c3c122bf..cf80ea83 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -65,7 +65,7 @@ A NetBeans IDE plugin that embeds Claude Code CLI as a PTY-based terminal sessio ### Process startup -`ClaudeProcess.start(workingDir)`: +`ClaudeProcess.start(workingDir, profile, extraCliArgs, mode, resumeSessionId)`: 1. Looks up `ClaudeCodeStatusService` → gets the MCP SSE server port (default **28991**, configurable in Tools → Options). 2. **Merges** (not overwrites) `{workingDir}/.claude/settings.local.json` — only the plugin's own keys are added/updated; all other keys are left untouched: ```json @@ -75,8 +75,9 @@ A NetBeans IDE plugin that embeds Claude Code CLI as a PTY-based terminal sessio } ``` On session stop, the plugin removes its own keys; if the file becomes empty it is deleted. -3. Launches `claude` (no `--print`, `TERM=xterm-256color`) via `pty4j` `PtyProcessBuilder`. -4. `PtyTtyConnector` bridges the PTY master to JediTerm's `TtyConnector`. The full Claude TUI renders natively. +3. Appends session flags based on `SessionMode`: `--continue` for CONTINUE_LAST, `--resume ` for RESUME_SPECIFIC, nothing for NEW. +4. Launches `claude` (no `--print`, `TERM=xterm-256color`) via `pty4j` `PtyProcessBuilder`. +5. `PtyTtyConnector` bridges the PTY master to JediTerm's `TtyConnector`. The full Claude TUI renders natively. `MCPSseServer` (Jetty) starts at IDE startup (`ClaudeCodeInstaller`) and is shared across all sessions. @@ -107,18 +108,18 @@ The plugin follows an MVC structure for session management: | Package | Responsibility | |---------|---------------| -| `model/` | `ClaudeSessionModel` — session state container, `SessionLifecycle` enum, `EDIT_MODE_REGISTRY` (cross-thread), listener dispatch on EDT; `ChoiceMenuModel` — interactive-prompt data; `PromptHistoryStore`, `PromptFavoritesStore`, `HistoryEntry`, `FavoriteEntry` — persistent history/favorites | -| `controller/` | `ClaudeSessionController` — PTY process lifecycle, connector wiring, screen polling, model/edit-mode switching, `parseModelDiscovery` | -| `process/` | `ClaudeProcess` — PTY process start/stop/version + `settings.local.json` merge/cleanup; `PtyTtyConnector` — PTY↔JediTerm bridge; `ScreenContentDetector` — screen-poll analysis; `StreamJsonParser` — lightweight NDJSON parser | -| `ui/` | `ClaudeSessionTab` — one TC per session; `ClaudePromptPanel` — passive View, implements `ClaudeSessionModelListener`; `ChoiceMenuPanel` — interactive choice UI; `FileDiffTab` + `FileDiffPermissionPanel` — diff viewer with Accept/Reject/Cancel; `MarkdownRenderer` — markdown→HTML; `HistoryDialog`, `FavoritesDialog`, `FavoritesPanel`, `AssignShortcutDialog` — history/favorites UI | +| `model/` | `ClaudeSessionModel` — session state container, `SessionLifecycle` enum, `EDIT_MODE_REGISTRY` (cross-thread), listener dispatch on EDT; `ChoiceMenuModel` — interactive-prompt data; `PromptHistoryStore`, `PromptFavoritesStore`, `HistoryEntry`, `FavoriteEntry` — persistent history/favorites; `SessionMode` — NEW / CONTINUE_LAST / RESUME_SPECIFIC / CLOSE_ONLY; `SavedSession` — record (sessionId, createdAt, lastAt, slug, customTitle, firstPrompt) | +| `controller/` | `ClaudeSessionController` — PTY process lifecycle, connector wiring, screen polling, model/edit-mode switching, `parseModelDiscovery`; `stopAndRename(name)` — stops PTY then writes custom-title entry to JSONL | +| `process/` | `ClaudeProcess` — PTY process start/stop/version + `settings.local.json` merge/cleanup; `PtyTtyConnector` — PTY↔JediTerm bridge; `ScreenContentDetector` — screen-poll analysis; `StreamJsonParser` — lightweight NDJSON parser; `ClaudeSessionStore` — reads/writes Claude session JSONL files (`~/.claude/projects//`): list, rename, delete | +| `ui/` | `ClaudeSessionTab` — one TC per session; `ClaudePromptPanel` — passive View, implements `ClaudeSessionModelListener`; `ChoiceMenuPanel` — interactive choice UI; `FileDiffTab` + `FileDiffPermissionPanel` — diff viewer with Accept/Reject/Cancel; `MarkdownRenderer` — markdown→HTML; `HistoryDialog`, `FavoritesDialog`, `FavoritesPanel`, `AssignShortcutDialog` — history/favorites UI; `SaveAndSwitchDialog` — modal for stop/rename/switch session; `SessionModePanel` — reusable radio-button panel for session mode + session table; `ClaudeSessionSelectorPanel` — directory/profile selector with integrated `SessionModePanel` | | `ui/common/` | Shared input components: `AtCompletionPopup` — @-triggered path popup; `AtPathHighlighter` — blue token highlight; `FileDropHandler` — DnD + Ctrl+V → @path insertion; `ShortcutMatcher` — key→shortcut match with KEY_TYPED suppression; `TextComponentDecorator` — wires all the above; `DecoratedTextArea/TextField`, `TextContextMenu`, `RangeHighlightable` | -| `settings/` | `ClaudeCodePreferences` — NbPreferences wrapper; `ClaudeCodeOptionsPanelController` / `ClaudeCodeOptionsPanel` — Tools→Options (General + Profiles tabs); `ClaudeProfile`, `ClaudeProfileStore` — named profiles with isolated `CLAUDE_CONFIG_DIR`, auth, proxy, extra env vars; `ClaudeProjectProperties` — per-project profile assignment | +| `settings/` | `ClaudeCodePreferences` — NbPreferences wrapper (keys: `contextMenuSessionMode` default CONTINUE_LAST, `sessionListLimit` default 30); `ClaudeCodeOptionsPanelController` / `ClaudeCodeOptionsPanel` — Tools→Options (General + Profiles tabs); `ClaudeProfile`, `ClaudeProfileStore` — named profiles with isolated `CLAUDE_CONFIG_DIR`, auth, proxy, extra env vars; `ClaudeProjectProperties` — per-project profile assignment | | `actions/` | `ClaudeCodeAction` — toolbar button; `OpenWithClaudeAction` — project node context menu; `PromptFavoriteAction` — dynamically registered action per favorite for Keymap API | | `io.github.nbclaudecodegui.mcp` | `MCPSseServer` — Jetty `/sse` `/messages` `/hook`; `NetBeansMCPHandler` — MCP dispatcher + PreToolUse hook; `tools/` — `OpenDiff`, `PermissionPromptTool`, `DiffTabTracker`, `GetDiagnostics`, `GetOpenEditors`, `GetCurrentSelection`, `OpenFile` | | `org.openbeans.claude.netbeans` | Legacy classes: `ClaudeCodeStatusService`, `ClaudeCodeStatusLineElement`, `EditorUtils`, `NbUtils`; `tools/` — `AsyncHandler`, `AsyncResponse`, `GetWorkspaceFolders`, `CheckDocumentDirty`, `SaveDocument`, `CloseTab`, `CloseAllDiffTabs` | ### Session lifecycle -1. User clicks toolbar → `ClaudeSessionTab` opens; user picks a directory → `ClaudePromptPanel.startProcess()` creates a `JediTermWidget`, then `ClaudeSessionController.startProcess()` merges `settings.local.json` and launches the PTY. +1. User clicks toolbar → `ClaudeSessionTab` opens; user picks a directory and session mode in `ClaudeSessionSelectorPanel` → `ClaudeSessionController.startProcess()` merges `settings.local.json` and launches the PTY. 2. PTY output renders in JediTerm; `ScreenContentDetector` (screen-poll timer) detects interactive choice menus → `ClaudeSessionModel.setActiveChoiceMenu()` → `ClaudePromptPanel.onChoiceMenuChanged()` shows `ChoiceMenuPanel`. 3. Claude connects to `GET /sse`; subsequent tool calls arrive as `POST /messages`; file edits trigger `POST /hook`. 4. Each session = isolated PTY process; closing window confirms if the process is running. @@ -132,6 +133,46 @@ sendPrompt() / discoverModels() → WORKING onClaudeIdle() → READY ``` +### Session modes + +`SessionMode` controls which CLI flags are appended when launching `claude`: + +| Mode | CLI flag | When used | +|------|----------|-----------| +| `NEW` | _(none)_ | Start fresh conversation | +| `CONTINUE_LAST` | `--continue` | Resume most recent session | +| `RESUME_SPECIFIC` | `--resume ` | Resume a specific saved session | +| `CLOSE_ONLY` | _(stop, no restart)_ | `SaveAndSwitchDialog` stop-only option | + +### Tab open/close behavior + +**Opening a session:** +- **Toolbar button** (`ClaudeCodeAction`) → finds an idle `ClaudeSessionTab` and focuses it, or creates a new empty tab. +- **Project context menu** (`OpenWithClaudeAction`) → finds an existing session tab for that directory (focuses it), or creates a new tab and calls `autoStart(dir, profileName)` with the mode from `contextMenuSessionMode` preference. +- **IDE restart** → `readExternal` restores path / profile / extraCliArgs / sessionMode / resumeSessionId → `componentOpened` calls `autoStart` with those values. +- **User confirms selector panel** → `ClaudeSessionSelectorPanel` fires `OpenListener.onOpen(dir, profileName, extraCliArgs, mode, resumeId)` → `ClaudeSessionTab.startSession()`. + +**Stopping / switching a session:** +- **Stop button (⏻)** in status bar → `openSwitchDialog(SessionMode.CLOSE_ONLY)` — opens `SaveAndSwitchDialog` pre-selecting CLOSE_ONLY; user optionally renames session, then either stops or switches to a new mode. +- **"New session" button** in prompt panel → `onSaveAndSwitch("", SessionMode.NEW, null)` directly. +- **"Resume session" button** in prompt panel → `openSwitchDialog(SessionMode.RESUME_SPECIFIC)`. +- **Tab × close** → `componentClosed()` saves `pathToRestore` and calls `stopProcess()`. +- **`onSaveAndSwitch(name, mode, resumeId)`**: calls `controller.stopAndRename(name)` (stops PTY, appends custom-title to JSONL if name non-empty), then starts a new session with the chosen mode. + +### Session persistence (JSONL) + +Claude Code stores sessions as JSONL files: +``` +~/.claude/projects//.jsonl +``` +Hash = absolute working-dir path with every `/` replaced by `-`. + +`ClaudeSessionStore` operations: +- **`listSessions(workingDir, claudeConfigDir, limit)`** — two-phase read for performance: sort all JSONL files by `mtime` descending, take top candidates, parse only those. Results sorted by `lastAt` descending. Sessions with no timestamps excluded. +- **`renameSession()`** — appends a `{"type":"custom-title","customTitle":"...","sessionId":"...","timestamp":"..."}` entry to the JSONL file. +- **`deleteSession()`** — removes the JSONL file. +- **`SavedSession.displayName()`** — returns `customTitle` if set, otherwise `slug`, otherwise `sessionId`. + ### File-change permission flow Claude Code can ask permission before editing files via two paths, both using `FileDiffTab` + `PermissionPanel`: @@ -146,6 +187,13 @@ Both paths show the same UI: `[✓ Accept] [✗ Reject] [Reject reason (Optional After any action the originating `ClaudeSessionTab` is re-activated automatically. +### Settings (Tools → Options → Claude Code → General) + +| Setting | Preference key | Default | Description | +|---------|---------------|---------|-------------| +| "Start new session when opening with Claude" checkbox | `contextMenuSessionMode` | `CONTINUE_LAST` | Checked → `SessionMode.NEW`; unchecked → `SessionMode.CONTINUE_LAST`. Controls the mode used by the toolbar button and project context menu. | +| "Session list limit" spinner (1–500) | `sessionListLimit` | 30 | Max number of past sessions shown in the resume list. | + ### Registration `layer.xml` registers the Options category (position 1500) and toolbar action. Icon PNGs are generated at build time from `cc-gui-icon.svg` via the Groovy script in `pom.xml` using Apache Batik. diff --git a/docs/plan-nb-claude-code-gui.md b/docs/plan-nb-claude-code-gui.md index db8deab9..39558833 100644 --- a/docs/plan-nb-claude-code-gui.md +++ b/docs/plan-nb-claude-code-gui.md @@ -557,30 +557,28 @@ Extra environment variables --- -### Stage 21 — Saved sessions: resume, new, switch (planned) +### Stage 21 — Saved sessions: resume, new, switch ✅ (v0.21.x-SNAPSHOT) **Goal:** give users full control over Claude Code sessions — including resuming a previous conversation, starting fresh, and switching between saved sessions within the same project. -**Background:** Claude Code CLI supports `--resume ` to continue a previous conversation and `--continue` to continue the most recent one. Session IDs are written to `~/.claude/projects//` as JSONL files. - -**Features:** - -- **Auto-resume** — when re-opening a session for a project that was closed with an active Claude process, offer to resume the last session (pass `--resume `) instead of always starting fresh. -- **New session** — explicit "New session" button / action that starts `claude` without `--resume`, even if a previous session exists. -- **Session list** — show saved sessions for the current working directory (parsed from the JSONL files in `~/.claude/projects//`): timestamp, first/last prompt preview. Allow the user to select one and resume it. -- **Session switcher UI** — a dialog or sidebar panel listing saved sessions; accessible from the session tab toolbar. -- **Session naming** — optionally allow the user to assign a label to a session for easier identification in the list. - -**Implementation sketch:** +**Implementation:** | Component | Responsibility | |-----------|---------------| -| `process/ClaudeSessionStore.java` | Reads JSONL session files from `~/.claude/projects//`; returns list of `SavedSession` records (id, timestamp, first/last message preview) | -| `model/SavedSession.java` | Record: session ID, creation timestamp, last-message timestamp, preview text | -| `ui/SessionListDialog.java` | Dialog showing saved sessions for the current directory; buttons: Resume / Delete | -| `ClaudeProcess.start(…, resumeSessionId)` | Appends `--resume ` or `--continue` when a session ID is provided | -| `ClaudeSessionTab` | On open: if previous session ID stored, offer Resume/New choice; persists last session ID | -| `ClaudeSessionSelectorPanel` | "Resume last session" checkbox (default on); link to open `SessionListDialog` | +| `process/ClaudeSessionStore.java` | **created** — reads JSONL session files from `~/.claude/projects//`; two-phase read (sort by mtime, parse top candidates); `listSessions()`, `renameSession()`, `deleteSession()` | +| `model/SavedSession.java` | **created** — record: sessionId, createdAt, lastAt, slug, customTitle, firstPrompt; `displayName()` returns customTitle → slug → sessionId | +| `model/SessionMode.java` | **created** — enum: `NEW`, `CONTINUE_LAST`, `RESUME_SPECIFIC`, `CLOSE_ONLY` | +| `ui/SessionModePanel.java` | **created** — reusable radio-button panel for session mode + session table (shown only when Resume Specific selected); Rename button | +| `ui/SaveAndSwitchDialog.java` | **created** — modal dialog: session name field + `SessionModePanel`; opened by the ⏻ button in the status bar | +| `ui/ClaudeSessionSelectorPanel.java` | **modified** — integrated `SessionModePanel`; Rename button hidden unless Resume Specific | +| `process/ClaudeProcess.java` | **modified** — `start(workingDir, profile, extraCliArgs, mode, resumeSessionId)` appends `--continue` / `--resume ` based on `SessionMode` | +| `controller/ClaudeSessionController.java` | **modified** — `stopAndRename(name)` stops PTY then appends custom-title JSONL entry | +| `ui/ClaudeSessionTab.java` | **modified** — `componentClosed()` saves path + calls `stopProcess()`; stop button opens `SaveAndSwitchDialog`; "New session" + "Switch to session" in input area context menu; session mode + resumeSessionId persisted in `writeExternal`/`readExternal` | +| `settings/ClaudeCodeOptionsPanel.java` | **modified** — added "Session list limit" spinner | +| `settings/ClaudeCodePreferences.java` | **modified** — added `contextMenuSessionMode` (default `CONTINUE_LAST`) and `sessionListLimit` (default 30) | +| `org.openbeans.claude.netbeans/ClaudeCodeStatusLineElement.java` | **modified** — stop button (⏻) opens `SaveAndSwitchDialog` | + +**Tests:** `SavedSessionTest`, `ClaudeSessionStoreTest`, `SessionModePanelTest`; Python integration test `claude-launch-tests/test_session_rename.py` --- @@ -630,6 +628,8 @@ Settings are stored via `NbPreferences.forModule(ClaudeCodePreferences.class)`: | `historyMaxDepth` | int | `200` | 14 | | `historyTtlDays` | int | `0` | 14 | | `defaultExtraCliArgs` | String | `""` | 19 | +| `contextMenuSessionMode` | String | `CONTINUE_LAST` | 21 | +| `sessionListLimit` | int | `30` | 21 | --- diff --git a/docs/to-do.md b/docs/to-do.md index ba138352..430be6bd 100644 --- a/docs/to-do.md +++ b/docs/to-do.md @@ -1,35 +1,9 @@ # Bugs -- [ ] Улучшить определение моделей: Из списка - ``` - ❯ /model - - ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── - Select model - Switch between Claude models. Applies to this session and future Claude Code sessions. For other/previous model names, specify with --model. - - ❯ 1. Default (recommended) ✔ Sonnet 4.6 · Best for everyday tasks - 2. Opus Opus 4.6 · Most capable for complex work - 3. Haiku Haiku 4.5 · Fastest for quick answers - - ○ Low effort ← → to adjust - - Enter to confirm · Esc to exit - ``` - должно выбираться [ "Sonnet 4.6", "Opus 4.6", "Haiku 4.5" ], а из списка - ``` - Select model - Switch between Claude models. Applies to this session and future Claude Code sessions. For other/previous model names, specify with --model. - - ❯ 1. Default (recommended) ✔ Use the default model (currently anthropic/claude-sonnet-4.6) · $3/$15 per Mtok - 2. Sonnet (1M context) Sonnet 4.6 for long sessions · $3/$15 per Mtok - 3. Opus (1M context) Opus 4.6 with 1M context · Most capable for complex work - 4. Haiku Haiku 4.5 · Fastest for quick answers · $1/$5 per Mtok - - ○ Effort not supported for Default (recommended) - - Enter to confirm · Esc to exit - ``` - [ "anthropic/claude-sonnet-4.6", "Sonnet 4.6 for long sessions", "Opus 4.6 with 1M context", "Haiku 4.5" ] +- [ ] **Tooltip "Stop session" → "Close session"** — `ClaudeSessionTab.java:229`: переименовать tooltip кнопки `stopButton` с "Stop session" на "Close session" (кнопка закрывает сессию, а не останавливает процесс). +- [ ] **IDE restore не сохраняет режим Resume specific** — `ClaudeSessionTab.writeExternal()` сохраняет значение настройки `contextMenuSessionMode` вместо фактического режима/resumeId, с которым была открыта сессия. Если сессия была открыта через "Resume specific", после рестарта IDE она восстановится в режиме Continue last (или New), а не возобновит ту же конкретную сессию. +- [ ] Drag and drop in a text field: вставлять в текущую позицию курсора, а не +сдвигать позицию курсора. Рднако, возможность перемещения позиции курсора кликом должна быть созранена +- [ ] Невозможно выйти из /usage по кнопке cancel. Отладить # Features diff --git a/docs/user-manual.md b/docs/user-manual.md index 661bee27..80f88f04 100644 --- a/docs/user-manual.md +++ b/docs/user-manual.md @@ -16,8 +16,9 @@ 10. [File-Change Permissions (Diff Panel)](#10-file-change-permissions-diff-panel) 11. [Settings (Tools → Options → Claude Code)](#11-settings) 12. [Profiles](#12-profiles) -13. [IDE Tools (MCP)](#13-ide-tools-mcp) -14. [Troubleshooting](#14-troubleshooting) +13. [Managing Sessions](#13-managing-sessions) +14. [IDE Tools (MCP)](#14-ide-tools-mcp) +15. [Troubleshooting](#15-troubleshooting) --- @@ -116,6 +117,8 @@ If the states appear out of sync: | Cut / Copy / Paste / Select All / Clear | Standard text editing actions | | **Add to Favorites** | Saves the current input text as a project favorite (active only when the input is non-empty and a working directory is set) | | **Favorites...** | Opens the Favorites dialog | +| **Start New Session** | Immediately closes the current session and opens a fresh one (available only during an active session) | +| **Switch to Session…** | Opens the Save & Switch dialog pre-selecting "Resume specific" (available only during an active session) | --- @@ -341,6 +344,8 @@ Open **Tools → Options → Claude Code** in NetBeans. | Debug mode | Off | Enables verbose logging of all Claude I/O to the NetBeans log file and the Output window. | | Open diff in a separate tab | Off | Opens the diff panel in a new IDE tab instead of embedding it in the session tab. | | Show markdown preview for .md files in diff | On | Shows a rendered markdown preview alongside the raw diff for `.md` files. | +| Start new session when opening with Claude | Off (Continue last) | Checked → always start a **New session** when opening with the project context menu or when NetBeans restores a closed session tab on restart. Unchecked → **Continue last**. | +| Session list limit | 30 | Maximum number of past sessions shown in the session selector table. | ### Favorites tab @@ -492,13 +497,88 @@ If the assigned profile no longer exists, the plugin falls back to the Default p #### Temporary profile for one session -Click the **Claude Code** button in the toolbar to open the session selector. In the selector bar, choose a project or a working directory and select a profile from the **Profile** combo, then click **Open**. The selected profile is used for that session only and does not affect project settings. +Click the **Claude Code** button in the toolbar to open the session selector. Choose a project or a working directory, select a profile from the **Profile** combo, and click **Open**. The selected profile is used for that session only and does not affect project settings. See [Managing Sessions](#13-managing-sessions) for full details of the session selector panel. -The **Extra args** field is pre-filled with the selected profile's extra CLI arguments. You can edit it to add or override arguments for this session only — the change does not affect the profile. +--- + +## 13. Managing Sessions + +Sessions let you save your current conversation with Claude, switch to a different task, and come back to the saved session later. For example: you are working on a refactor with Claude, need to quickly fix an unrelated bug, then want to return to the refactor — sessions make this seamless. + +### Session modes + +Claude Code remembers your past conversations as **sessions**. The **session mode** determines which conversation is loaded — a new empty one, the most recent saved one, or a specific one you choose from a list. + +| Mode | When to use | +|------|-------------| +| **New session** | Start a fresh conversation | +| **Continue last** | Resume the most recent session for this working directory | +| **Resume specific** | Return to a specific past session chosen from a list | + +**Project context menu** (right-click → Open with Claude Code) — the mode is fixed by the **Start new session when opening with Claude** setting: checked = New session, unchecked = Continue last. Resume specific is not available from the context menu. + +**Toolbar button** — you pick the mode explicitly in the session selector panel before opening. + +### Session selector panel + +The session selector panel is shown in a session tab opened via the **Claude Code toolbar button**. It is not shown when opening via the project context menu (the session starts immediately in that case). + +Fields: + +- **Project** — combo listing open NetBeans projects; selecting one fills the path automatically. +- **Path** — editable combo with recently used paths + **Browse** button to pick a directory. +- **Profile** — selects which API key/proxy profile to use (see [Profiles](#12-profiles)). +- **Extra args** — additional CLI flags for this session only. Pre-filled from the selected profile's extra CLI arguments; editable here without affecting the profile. +- **Mode** — radio buttons: New session / Continue last / Resume specific. +- **Session table** (visible only when "Resume specific" is selected) — lists past sessions for the chosen working directory, columns: **Date/Time**, **Name**, **First Prompt**. Click a row to select it, then click **Open**. Use the **Rename** button to give a session a custom title. The list is loaded when you switch to "Resume specific" mode and reloads automatically when you change the working directory or profile. The number of sessions shown is limited by the **Session list limit** setting (default: 30); increasing the limit may slow down loading. + +Click **Open** to apply the settings and open the session. When "Resume specific" is selected, you can also double-click a row in the session table to open that session immediately. + +### Closing and switching sessions + +While a session is running, you can close it and, optionally, open a different one. + +**Closing the tab (× on the tab header)** — closes the session immediately without any confirmation. The conversation is automatically saved by Claude Code and can be resumed later using "Resume specific" mode. + +**Close button (⏻) in the status bar** → opens the **Save & Switch** dialog: + +- **Session name field** — pre-filled with the current session name. Giving a session a descriptive name makes it easier to find it later in the session list when using "Resume specific". +- **Mode panel** — choose what happens next: **Close only** (just close, don't open another session) / New session / Continue last / Resume specific. For Resume specific, a session table is shown — see [Session selector panel](#session-selector-panel) for details. +- Click **OK** to close (and optionally rename) the session and open the next one as chosen. When "Resume specific" is selected, you can also double-click a row in the session table to confirm immediately. + +**Context menu in the input area** (right-click, available only during an active session) provides two quick actions: + +- **Start New Session** — immediately closes the current session and opens a fresh one (no rename, no dialog). +- **Switch to Session…** — opens Save & Switch pre-selecting "Resume specific". + +> **Note on `/clear`:** The `/clear` command clears Claude's context within the current session — after that, the previous conversation context is permanently gone and cannot be resumed. To pause your current work and switch to another task temporarily, use **Save & Switch → New session** instead. The original session will remain intact and can be resumed later. + +**When to use what:** + +| Situation | How | +|-----------|-----| +| Save current session and start a fresh one (can return later) | **Via ⏻:** optionally fill in a session name → New session → OK
**Via context menu:** right-click input area → Start New Session (no rename option) | +| Start fresh without being able to return to current context | Type `/clear` in the input area and send it | +| Switch to a specific past session | ⏻ → Resume specific → pick session → OK (or double-click the row)
or: right-click input area → Switch to Session… → pick session | +| Close without opening another session | × on the tab
or: ⏻ → Close only → OK
or: ⏻ → fill in a session name → Close only → OK | + +### Renaming a session + +Sessions can be renamed in three places: + +1. **Session selector table** — select a row and click **Rename**. +2. **Save & Switch dialog → session table** (when "Resume specific" is selected) — select a row and click **Rename**. +3. **Save & Switch dialog → Session name field** — renames the currently running session when you close it. + +A custom name replaces the auto-generated name in all session lists. + +### Session persistence across IDE restarts + +When you restart the IDE, the plugin automatically restores any session tabs that were open and reopens them with the same working directory, profile, and extra args. The session mode used on restore is determined by the **Start new session when opening with Claude** setting (as it was when the IDE was last closed). --- -## 13. IDE Tools (MCP) +## 14. IDE Tools (MCP) The plugin exposes a set of IDE tools to Claude via an MCP (Model Context Protocol) server that runs in the background. These tools give Claude real-time access to your IDE state — open projects, open files, current selection, diagnostics — so it can give more relevant answers and take actions directly in the editor. @@ -548,7 +628,7 @@ If Claude says a tool is unavailable (e.g. "I don't have access to `getWorkspace --- -## 14. Troubleshooting +## 15. Troubleshooting ### Enable debug mode Go to **Tools → Options → Claude Code → General** and check **Debug mode**. This writes detailed logs of all Claude I/O (PTY bytes, MCP messages, hook calls) to the NetBeans log file. From 41371281053abed32e120fefb2b10d814ba4fbfd Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Fri, 10 Apr 2026 15:15:38 +0300 Subject: [PATCH 3/4] Simplified session restore logic: only save resumeSessionId On IDE restart, NEW and CONTINUE_LAST sessions now use the global preference (contextMenuSessionMode) instead of restoring the saved mode. Only RESUME_SPECIFIC sessions restore the exact session via --resume . Removed activeSessionMode / savedSessionMode fields; updated docs. Co-Authored-By: Claude Sonnet 4.6 --- docs/user-manual.md | 6 ++++- pom.xml | 2 +- .../nbclaudecodegui/ui/ClaudeSessionTab.java | 26 +++++++------------ 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/docs/user-manual.md b/docs/user-manual.md index 80f88f04..0758eb08 100644 --- a/docs/user-manual.md +++ b/docs/user-manual.md @@ -574,7 +574,11 @@ A custom name replaces the auto-generated name in all session lists. ### Session persistence across IDE restarts -When you restart the IDE, the plugin automatically restores any session tabs that were open and reopens them with the same working directory, profile, and extra args. The session mode used on restore is determined by the **Start new session when opening with Claude** setting (as it was when the IDE was last closed). +When you restart the IDE, the plugin automatically restores any session tabs that were open and reopens them with the same working directory, profile, and extra args. + +The session mode used on restore depends on how the session was last opened: +- If the session was opened with **Resume specific** — the same specific session is resumed again (the saved session ID is restored). +- Otherwise (**New session** or **Continue last**) — the mode is determined by the **Start new session when opening with Claude** setting at the time of restart. --- diff --git a/pom.xml b/pom.xml index 34c80e11..ad81952d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.nbclaudecodegui netbeans-claude-code-gui - 0.21.11-SNAPSHOT + 0.21.12-SNAPSHOT nbm Netbeans Claude Code GUI NetBeans plugin that provides a GUI for Claude Code CLI — run claude code sessions directly inside the IDE. diff --git a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java index d55cbbc3..0245ae89 100644 --- a/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java +++ b/src/main/java/io/github/nbclaudecodegui/ui/ClaudeSessionTab.java @@ -130,12 +130,12 @@ public class ClaudeSessionTab extends TopComponent /** Extra CLI args restored from serialized state after an IDE restart. */ private String savedExtraCliArgs; - /** Session mode restored from serialized state; {@code null} = default from preferences. */ - private SessionMode savedSessionMode; - /** Resume session ID restored from serialized state; {@code null} if not applicable. */ private String savedResumeSessionId; + /** Resume session ID actually used when the current session was started. */ + private String activeResumeSessionId; + // ------------------------------------------------------------------------- // MVC // ------------------------------------------------------------------------- @@ -226,7 +226,7 @@ public ClaudeSessionTab(File dir) { versionLabel.setToolTipText("Claude CLI version"); stopButton = new JButton("\u23fb"); // ⏻ power symbol - stopButton.setToolTipText("Stop session"); + stopButton.setToolTipText("Close session"); stopButton.setMargin(new Insets(0, 4, 0, 4)); stopButton.addActionListener(e -> openSwitchDialog(SessionMode.CLOSE_ONLY)); @@ -355,13 +355,11 @@ protected void componentOpened() { String path = savedPath != null ? savedPath : pathToRestore; String profileName = savedProfileName; String extraCliArgs = savedExtraCliArgs; - SessionMode sessionMode = savedSessionMode; String resumeSessionId = savedResumeSessionId; savedPath = null; pathToRestore = null; savedProfileName = null; savedExtraCliArgs = null; - savedSessionMode = null; savedResumeSessionId = null; if (path != null && !path.isBlank()) { @@ -369,7 +367,9 @@ protected void componentOpened() { if (dir.isDirectory()) { selectorPanel.lock(); WindowManager.getDefault().invokeWhenUIReady( - () -> autoStart(dir, profileName, extraCliArgs, sessionMode, resumeSessionId)); + resumeSessionId != null + ? () -> autoStart(dir, profileName, extraCliArgs, SessionMode.RESUME_SPECIFIC, resumeSessionId) + : () -> autoStart(dir, profileName, extraCliArgs)); return; } } @@ -415,9 +415,8 @@ public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(dir != null ? dir.getAbsolutePath() : ""); out.writeUTF(selectorPanel.getSelectedProfileName()); out.writeUTF(selectorPanel.getExtraCliArgs()); - // Session mode (added in 0.21) - out.writeUTF(ClaudeCodePreferences.getContextMenuSessionMode().name()); - out.writeUTF(""); // no specific session to resume + // Only resume ID is saved; on restore, global preference determines mode unless RESUME_SPECIFIC + out.writeUTF(activeResumeSessionId != null ? activeResumeSessionId : ""); } @Override @@ -434,12 +433,6 @@ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundExcept } catch (java.io.EOFException ignored) { savedExtraCliArgs = null; } - try { - String modeName = in.readUTF(); - savedSessionMode = modeName.isBlank() ? null : SessionMode.valueOf(modeName); - } catch (java.io.EOFException | IllegalArgumentException ignored) { - savedSessionMode = null; - } try { String resumeId = in.readUTF(); savedResumeSessionId = resumeId.isBlank() ? null : resumeId; @@ -657,6 +650,7 @@ private void startSession(File dir, String profileName, String extraCliArgs) { private void startSession(File dir, String profileName, String extraCliArgs, SessionMode mode, String resumeSessionId) { + this.activeResumeSessionId = resumeSessionId; updateDisplayName(dir); sessionTag = "[" + dir.getName() + "] "; JediTermWidget widget = new JediTermWidget(new NetBeansSettingsProvider()); From fdffc09c42a1d8b3ddefaccc42c3d54cb96838c5 Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Fri, 10 Apr 2026 15:34:02 +0300 Subject: [PATCH 4/4] Updated session management user doc with screenshots --- docs/screenshots/save-and-switch.png | Bin 0 -> 47272 bytes docs/screenshots/session-context-menu.png | Bin 0 -> 49820 bytes docs/screenshots/session-selector.png | Bin 0 -> 291856 bytes docs/to-do.md | 7 +++++-- docs/user-manual.md | 6 ++++++ 5 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 docs/screenshots/save-and-switch.png create mode 100644 docs/screenshots/session-context-menu.png create mode 100644 docs/screenshots/session-selector.png diff --git a/docs/screenshots/save-and-switch.png b/docs/screenshots/save-and-switch.png new file mode 100644 index 0000000000000000000000000000000000000000..108dd1b6bd16cc56128455b4b5acb93198933423 GIT binary patch literal 47272 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

b2Ouuj3ty;_`8Qf0)6r1Fme>EE; z@9ybYy}3FGV)r#kmpYH%WuLR__4$qUA9FAg_kUswGrXgM%AKb<7&QG$=?QF--|+)} zrtN@>0>OVB_!WRf6Gm;*2n!>&-(>jnJ}2w)E27PV+&@e718EI{S}QT(H(PIf+wm$o}mvFH~9C33^FTqQ3Drzs-N z`X*wWFHuy|Ct(7u>D>qdSUf&s(oO2LGUQ^>tx&%y=O?DSLB_(+#ffZSaLnz$GH zu&M$KFnBRy0IWF~#k88dMNoHEY@%`6_d|rOinTk%0jD2U!=sEgmYoK%;<-LZ<4&UI zxCSXbgf!BCcd|E6+_Y?acKigAez^7+8#W6R@0tbrNg|%6e0?TUp#M)=XU@+G^)Ih8 zxBQ;2DX|&1qI^2C+WQfecxEpG$OFb=ad*U&*yWj+f;4>)9aPh1IQ$kWh^89JJ8!K~ zO6Q*_`m|#Hw)FbJzr~pm9WjFgZYKdltFZ_K{ri(Z~UnYr{R5`l7e55!$Io)V!m-0}CBx5v~9j9urDk5jo zQoB@{;$q4fB!UyD=|QS+ral#18usn!e~IWFV@wX-q)Mw*~}DK#F@qZ^-2Km4wR~D#@Sj< zK}vf4Mh$HIi9oM}V zjk|3HB7S_*lGPJLIUB6`7A#{LnP>CAu5n=Cfh8H9qJzc}o4hju!nXnKSrCOy+*iU? z`c!8H8I=`_7Z}&M))wfU2V@^C;ugdXTZECi!MmBw2FI*800p4Jx%>zitA(CZc zU4`7lMbX*sj~J53CL}Yn<@1eY#t`(*o zy#JchX535f|Cs-9C#J$;7Q83rxOw5_^PjcuMNC#P3d( zjo``d{G+|}%Qzl7Cd8cuT(}403KE>rB#>%{x}l=hPjx1htew1X5Qm^tnj+2CJR6Vk zo?h*GIunwLKabEAsWYM3zI2u;t%~`VRCksHk6hr|m0A^>-GZBXcZ#~vH&Fn~6ITFV-Sma!_>#Itidk8)A2h%5ghB%5pQEX!_nHxm)nAClC zU#(9+>udAG0XYsBM#-YGfyTS|Q^xun=&JULnue;8m%GT4n%tej)9z;enP(Qp294JU z!#OPlqrn$!Hr-bB+TX9cZlgBf5TRYvjjwl!APeD1R!nRG)K@ zZYKFkWQBPGhL@%bFq+b3I^h14`HH*J-rW=X9g6281B#dpRw4i-+OxIDcrs1ep1BgQVrd)8;5j;SGvm_hadVNOJ$kLE+HyYlGm9*bU{2xw+ZQ^q^Bb z=+Wk{CE1I2NN*Q*e!Yc-fs!i4Ky$_U^gdjw)NZ=Wu8r`%ud9&q;x*M*upInft*m(=ISIc_uSCS#Ka`p( z+I%tBmR|R75YO|WM3eE)>I?{_>X*T~(b5?*hOhneqN#_Z^CaF8-Q0>RmFWv&qymXp z(OAH2zp_^de_Zvus~xS+;+j_oz179#t>2Bbt0Nz?-T8bU@33O>ZK+myZtQtm-C&5f z1Nnqdl34Y56P#0FjK#0RKtR1Lu4OOxb1gYuw^LtpjM!Z!n)0{)`ZOThvek>jwk#cG zklDGB4bR|`BujYWkr9uJq?8(tFfi^F zkXm^YI=sKNzujf@7?Xr2MKp*94PiPTrhh#WY^? zd!80oh8VrEc5mT=y{mEjH4KQ(#!x}3@VH#S1qKc9N?9ig!VD;PT+;f8VKOfau&&8oL=3xkY z1iIUFV$1ZVbwV;=b=3rK&)2Q9m685^Pp+_RB+xi2Y*M^`nN$g>RT~MyS^m~3V%eI7 zJ#{sh8uE7aNPkhaW!V65fCV}X8#H7RX&iz9FD;{LtyL>@v8m$b?@qhoq)q0fJ3>X% zet`f7tzKi^#sGs%RH?lju0zlK5s^A2au7>_(zJ$-Z8*Ck(E`EVVOQk~2U2j7WozZl zyZx75%eGGz;!hl(1EuJMmcu1Z502)&zF^uci<+0FRN(LWw3`>uSc7>3f$jvRUwiVO zfEagn9d4?R(P5k9ALB&_$&!~i6XFjCU@we==4l~lGyHhr`yV4Ye6!l@$;p}B5Rq)h zll59n-#0C5y6w>3*t5v46R`w;du6aFWEglGGKdQLY98F@0?-0vljpsN{n$b4^y7iRo_hmM$+oj}?w>qZx|t zQZp8$c}gar-N$w+HSZ##wV|}ml^2_p$`kgKq$d<_R8i_pW2qZ`z@LTGtPX@i#=Er< zD@ys3TYDM6qtOxriGn;tCx`CrSezcw8phs!tz;CoVN&gdYPg0rk4mS7eIfKSBLlkP6y2je6ENkvWoOuhq6xt0yD;S?Vo2fO z-647#E^Fo;QQE|r&#%pw`<7V0vh?J?V}cH~`(LmbX(t0we1AO${rA9nP`8cy|vd+5>aOPm~Ky~FPY77gCNso3r&NIp(^nY<3W zP5voYWPdnjP`S}C>2lsy5q+wLR<{sj=rZA9njshwh`7Dh}}N+0O%NnlM`91eoSQ?*w(xH;L^W6CR|gAP;sUwn0Z#m9nu`=Q0{U1^6C z?yCC{_SM_~y5%Or3z(?81p`quXAamh{@er;DEGaX4H$*p!AI1%?o7b6dm z9Z+jA_ow)KvDQPV`8T#~$rX(8MIlwqf9*@JXhGDz%GKz`<}QT14&W#W0CBjT_N^w0 z@}#uDESq#~H?u<)LzSGEv#mWzdVyW>7xxlB>RSm*Naz5wJ;w~RHvZyP*Wt9lPnhbK zc~OH2EzfPEbnNA{sEP8*rmwe~KoQEqinu9^f$5MIK2~#A< zQ?F85S6bM`6iqpZuE(rmpUNd$@IT#b>$*)URO0Cy5gN`#{h2B3bxiC346f!V6D7f* zDp$o$n~#_r0{hR-+kR-$gUh43zBpNPGlZ^ zGvkc0O(nBRjeQH-x=*WH=9muiEmo?;PMFeG@QbWVB9iBOfqvy3*_;7xwlNITW&qEK zBVqeQHQyi{Y3^E>vhIM<9=ok&)CN09H-h$gPfLn@P$<655_O?7`97f<5{{tA5ROc5 zeCE^j1yURn=#|CdM`ew_FTk@MN)nst zTb&Z*NlE{QJ+EEgs$~tESaFmFif%{GKQ20eHm>o7&#YQ4%^;><;+L_WalEgGuOTY7 zShb0)?fXgt^um7f_;}9`hOnC&jUYU^;Uur4NoE8TkAx{DN_7zUCo;L znvu)H-4QB7H|?+1IIS-mm_J{dQ*{2mTx**sKAWK6iahN z{e?JMe7py*pUjX&Wi z5mlJd#xm!(-qJ^lVAPRYrTPQXT|wCM0oz^~vQC`4m8)&Ap2tFiZ)9`YKeVPHhLi|> zUAmz>s{NRkr-|bJV!49vbK`hm`_UXVCeHhlKm&6dXW~|(1DDcVUz7zeO-}qWJG75k zWe82TKO3fanH~70UF{+)#du~B#Fc87g^B8Up00>)1urbCja~`9HX6#F6DnV{^M@-l zz5hiwvZyq38to>qatQKui-Lrf6Mo6v1!CByga}f1;h0xbW_MzmPwbJEs%Jr+&fBu^ ze(!jmrk-L6Fex6Zi%0U@aymtycbCUkzNi=g5q&RsOod>L5>^~22vrc%Jr8YdvC(bs zT^i|F;^B~DP3T}|0?Qi(QA9=X2KEU;gs6Qj&UxBg!7M{OX`zW8{a<#jL z=)e7oGEQYK2XY~Y1Rx)SFzv7__NegC-3<0_H1IzS!7)6A28sb{TK_Bh7<>WxIvem; zfG!RV=7bJ}!R!|02L=t_4TjGCzC%li!-2JZcnn6w9!2Nn;NajPsWiv{R>+2zIlbp(ZwU$JRhw9F z5mIQ#A@kgQTO+-WKI@8%@Gz*?G4yVX#baK>=uWG!b6;_7z!kqLbLU*di{ zk?F(RrWPMX4k=L~{S%VB(@$amXGU-l&c%|PISBv_mUUoSnRqtlU5mLnS(|+KDe$h$ zPV8wK!AD+hnFG5uhYqmo*ZUf$UPGbDOX+tghhT$mOP7=DU;2jo#_1m$)Sw3yjHb;R z=@txK`Mv-7iGc*ci)~PCe~u_BNkZ|m1E1{XFzrQc92YHu=9^>7W$S**|hNImVgdaIB~=yc!n$HfIRVC+{r zph9Neuo`tkxmN`ZxUphRp(Hfcb?oKQ~%_g|AeYcCz!^TvZ*NQ*=@}VerP1fNKvZFa%rKKH0b8^<<|RK)*~*xXmOj^Cx%G$r{S=kd zw^il(3JSO9K+Cz$xwpkvvkto~Rcsl(v1RBSb|#-Ix7B2qubRh%gw*$uFc!1fAxEhz zLs3GkD%U6HWMPe z(fO%5dPHIr{kv+#u^rX)pU;K7GO|%7{ahGFNlZC>MwGe(c)N;4L6Flu7f~~^|Axmh zm3Jh6e!>=cb#aY*SpSrY>RL=*Gk$+dNHO2n1S3lrH^WjbD9cZ3()`vhrA`j&$1{At z1ta^)IBh@gVz>V!`M&l$y7Kk!`MGln7nS#m^v6z45veDSJ-JJBhj|x8Rzj_uet8)k zuwa<0;ypacDx#Kt>xIXf?u$~mR_*0I?tJ6xaz*;ywYozE^yqF}#O=-<7nf4Fl6z>X z?*C%#Eu-SvqBZT{?(S~ECAb84Cs=TIcZb5=-JReP913>{5-ZA>? z@vVPVqiWZNxn#~~z3=iD(fAGFAy(EMum>1gtX_gy!io%49wICyikzEX9tKi?X><*e|J zlPt3n5ubS(YGSVjkE~#Hb9FMoneVuN|Gm=L-69)Nnv3hle*BCs^kNNNiV7GMSn-4Z zUVOzb`#ySr=P$8UrLM|gqOerE0jJbaV_oFn>I#tJ%M%Bp3MJFg3hwDoiM} z7*GPL)>5>`8L1uwc4eMEJ;5{6hAjFx^j+PVPyVguxK~Ej-!YF`i&=Ze%}ZN$!vaDzNZTpvWSf)iIqjF+H@jN|_DwFYSdKpyhW1@rg1|88bBa&sS^h*}aD_%32DJYf1w6Dme1q zNrO(9YInWTAdzyOo6{+-IwL$?JS)<9wvdd7BMrLT96vlX_lN#+!Y*O0k8O29K1?$A zM@pKcF?}lK+@`x_@WGN_(}9xpXb;2rDo?uieymP3Uj2Mfxp(o|8g~8b%6I|s+ulRj znT@AbJ0gSa;Q78osD}*-;<7H3DH3BZZItynvpYfR8Q2vUejU&^xns-QXzc+_05ooA zY3u7wrP=SAX7Mh|`}uz*w9&dQV~P6E~4KA&dlIIS2Pt-pP z)9i*4Bx5{8&)am96KCH!D3WY11*2ZeHkX%Utpyr+Chq&a^_t<-Ns zW0N#fqK7F1fVCrT$v4=$r0|}7?IjQAG2emw&dHa1If1u-?MxGkw>-40HVI>D^JQc6 zclLC#Ij&J+iTY!#YtAgb32}|Dx7Od0T~gZWo`XQa`ydkm57Gk_hlDi;D_qMC1tS9Vj#q z03oSZqb#rNS5i9}BB#z+Uzm+THGEHZH@4rHfNy(MM|g%Sgjm&ptOA85Cmyc?o-a<1 z%hA-I!C{Q zYG1lqKc1n3BYUfiSS;^xT)iZ{`SD#c<_zJboTTW-CWbZ-UWCg z-tR|ME8!Zmeo)QRHEn?U>Q>U?QBaZfHs-=L&@I}bP=8?d?5(Jsm(Z;};Nvt*=D;v8 zw2CNvd9Ao_e>;%(^h0wMtNXVp>X)W?VKf59w?Gn3Vp!q1BVB(n`;mtaycln2V*Ktr zHld{vAv!Vr{Kh#_S$f+ZNQ=y<&R(r#m=m|Pvq*jQ(#|)v=zL(b`9K!MU#Si;@%FDJ zK(VjV@RZcHT@#IK8fo?!V|(TJu1Sxi^ObI`o<)~7lOM0)$^%m7O%{E-D+9%B&jgdb zfofKqke-v{LMfNy=Q;sPA*0sAJk|dj%9e?LO?(7-U#?BRzYvR76I%-u8{9nc*{l7s zC`I2l&8cP_NuIVruxpG77p{v%#fqrq`E6xLO6al0*T~${7$SnPh~d=JB;B7ur(yEQ!G*YCkf#%9-Cx^WTa0X7P45^e z6FFmmcY7uyJZEF?2gKC3)o03NGQiyz#*in%kHiU%^I1LR(%=H$&`zqmZ-&(dbe)|*S>T;H=v5mp>4uC=uwh`OCbq$#?Xp>&1>4h@a zjiA@@3J7hJPjLD`$&Wg3lqCurr-;F+?FoSl65M`yNawNfh;lpd`MU$_MUAE9iLLOs*SIVFP{2DwWP9u{o4?FayNWKK> z8C766ry$$TpRvKr@%-9fhz3xg_Be&?=QDrNlz6G zOP?QcK;ZSFx(|9(8ECT7Hl+KcId12oPh0a5JnaaQ0#L7L^>b(fJqo=hv^t7CL)}`p zIW_Q0cDkv&$@7d9!r{Le*3|kMHrzWQZ9-JrDqUEsi8rKq!IwP*xw*NJaC3j^E3C&& z^N?IPPbND=TJ>*!CPk;r>cV=B-mkkQ1QHKfm&V<3LeS9QFTR2tXUL1FOL5mx%w@z5 z#VrxjqU`_B?#d_3V!mx+yZkOXWHe9;t0}_?zz@#+_VYLo;dC>qkIwe%ee?^Oy*oEL zMlso;3rqO5ab))%hzpXFcqRYW*wT4PV!7Iqi@hZB-qf8zeM4ZnSw#$gj~FC@XGqSvtyd(563pS``+Xi>^5BgWdia&0 zZzLWv3w5Rmg(On&saiN?mvkux;^iMDgobm$ab|(#YAXIwe0x(&w7=#LCo#;Vfo{<^k3P z-enN`Y+m-}Kq=ag;Rq~Riqo^<^SmM+%CI{&bBhKbiOZWzV;PZsVHs^mGo8mnd+WN_4T;5pZEf$@Uxe+~7Y_L1c8>ZQbT z54r(~>1rOMcPek3jMw}oM_irN9-%%pkN15sXZ146AFe1V8%$+8wS9TLywKzTQPMwfl|JD$q{Bnz3`v3_$UJA8)I9Fxv)}$@m%>6Cb!3*ptUYbSr zvkf2u+{$ek0yb@plA*aCuGc#;V2zT!8Uaj#TgNLFOn$`mmqO(Uoz~<$$)2Q1+8f2a zFKgYTbx)N<50af4^w8BqJIU$OYN@ehKlsw2-AQxcBH;+$Q` zzCt0+`vETJ=Sh?`*O>9;$Mz)~l+&vSVz4!5OIpBH_kV?xDt3{#+Ma zP=l_qjMh+F9K)uAR_J*fC6gFt{Oob>|Xg2@;&m#Vqp|lxDI2wW^kZlN$$B5R_E7F(! zbH@%{iIE$ z&_VK>b~bDFE2J$(E&eNvqtDa4e|v2rDFAe(ONJ3*^_S`gk;xES=iLda<AgUa)Tv-@2au&tj~||zV*JSB;4SPNrJ2}uMg_MkREtF> zBH7_%e<-g0=r>#|BsAMO1x*^kIn~idar%hWleeMon4dNIaUCC1;6) z_O5(c{xEm2r94Gzs8TK5{NC8_&FYuRV!_NAO}-eA-!B3I(=ew#-nDcA*I&i09_DKv zH~AwGE8xVRCe$;m%1&VJokid{RTaCI#L9d@narr#5XWkN1~fv{7-{+SEbw737vWei z`zV)uAsSm|h9lq=Fl`9km*S1ocv;S^LYpBnMY@;gh7^t&K~!c@kL#rW6r9{hTP?jZ zPl)Q>^FfKfdxe2U17x~$B*@q&?tBpa+F}{nMsAGP^FD9w z(veAo7AJ#^im6zT;CiL2uglVLV{|N~BkI$){XsRD}gd$eA*E?{e7B97{(dJgHWP!WiGxR`yl-;dT9u(Su#A^q)5+o5#tP9#4Yb{}=S zh?dtE!v(gi;LQ+k5ArHEgz(jjAUv=pofReU1*D$v@m}Qfcr<)VcCnI;4CEpp+NNMt zRKQj0;XHf}fobOJ4+ZKlqZ)KjQmXl2XmIWkJaO@^vTkU6?+Rl~2lmr9Z`72TMfg|J zZ?GkDtSH$!(Au}3z&k9!p!RODUCBWpT7_1Y7qA%QgzZ#-LW`HG3Z2{pCCYHQqw;;- zwX3D4?_T&DdEVKLCB`G8>I5rSkX7GfnGD(BGFU`yB#6spgsPfs!z zmERDNq*fs!6K`$9TFo_*H(S0+Sc;?eh9TKmf!PCzm_ZHhW^44mF^0ziVQDl_+i>xl zLdPXV^x&RgiFe>k!g8*~k=_6)bInfH`tA&oWfi|*oEU<$B97G{ADvnGdrrYTs0z1) z`7Y`X8)#=|KYw{~!FOijttY;lbE&GGp{_dY0UXQVp<=>90Ya{;_FfAmOX)T>psjf41%QrMc+^i1Bl0sF55cJ6 z+|^5={FA2Vr>@yefF1|nSx-QZ1I_f|v1mYcLan8yk1_Rx{F3QbTSg>WH6${$?7VUb zq&y*VhumsfyDvUl`~2bTvA;@uVee+jmZz<(mSfbq=H5mU6AGV2y->{M^3yX5Gcw}M z;6_9Gcs1wK^$)FXI)SgV2kZ!*3?&yj!?1gO&(8Y8%^9~-vy7uqe^(?fQc1|~cQtvY z)^4(h^Eodwr(Q_mjc}>4U&1S*`0~tv@E&h$0cuDaXzPj{m^wL)L{l+v3bClc=8Ve) zJ5C#tUk=zEkhv$|e3Z%HJw_!Ui!k`8ME27+#FL37yaYxmdX=27?-9|^Cx|^aNOz3{J3!LXk3sdIeoq{m>{sR4W z=OUDd82i|bEMa?;y`ZF21|1U8k~>$5hUyG`p!M~PE)aObbDzdnVkk0;@Ak!b`q~<2 zpyJL%&cB@X$LuNDvqpN4zy6rVvmS3Rpl*?&u{OiF9Ksq-ue*5#F&K$a;BN0NG@%>M zapOx+t$%qrJ~24}V|zK?&`iJ0WS{gYJybsRGu>KgLj96@RwKaPuOqo(5S`Leb3#C( zR;Uuch zrAL2pO{Cm@i*!ZzXKD}98|B&XrBpn?4(9$DxDg7e%VF++nA*1LVMpYSpPqk}y6^)+ z7!fxhWuZCZcB_xNS^WzjtCo(|rLpEk52*!_Im^&;$gFt|A0`2fic26bg!F^-O-O!_ zVQ_|^nK2*o6R`kl1SIWH z6UD%fO&9vv{+myVIZXcQosn{qo-+D%#XHaMxZu<*9WL}=?MHdZ3E?`kSS#9c_ z>A9>}EB^fU(duSP7eRH7{jtUFiO6>n*TEW@tmt#Zh9T0mbNy+rWsh!cY;i9-EPvbK>#SJxK%ItO6up_0?<5JxWO?* z#Pgg%m+7+ZOMm$g7LYrz+ z`c+w%*}DSl^{>iVEd3nGsuy{nzw{63ZPT$eod#86yc*R6cztz%r?;9H(k||#+(e^9 z9!;5|F^{2!dA1nEX{t4#nO?3d@pGCgtMSqdLyeSRD|wWrXbZX`bR z^PfcOiP>nw&idWWSI%&^=?)+M)&w*xrP193uTfK*Gkl>~R`+H1jpbxZGW@}_&qBPs zZO8;!xCYZ2w^@EF9pqMSqbN5}XP>ovP+$|}*5Q1`oisdSbdk5&XNNp90}|1rt=>M| zj#H7+Q4lN^-orAJidz6GL~?~)K_Wby1{T()hvt)sZ`oekEC~YNcm8?%oZ+y{U{!&q(Jm*rxr+@EnNEbEFQEgQ zpT+NERzu!#hTy*tz=1%iHLQ|ZeMzTCVA6#ngs;~L#?s@b|5FJRXUHQx%;=K(JUUFo$vDsfUEW5`n@FfILVIQLou@t z{RFFPy!O{FS2a8RRDYiX|FJ9Ef8zYgGRy<5Cqg>z8Vj&2uA#fr;{{Y;4XkS&99&50 zNmMS`cwV|&H@Bu--0XkI2M8|M2cu@VCI+P3XRCm<-M5(ZAn%=HneP z^cIbR!cyJHTC%}*&NRN9b|md!7$b7+v_S)spA-eY#&-Q>T>|x>80ov<^&{{9$n0wtJKeuAbd=HJu4SWw9hr4eM`hY)Dn$($Z`4S`kyFFrd_}d z;+7sQ6GV`)ZF3hoWmmQ)Zl#VsVm`$rd;BFD8V-Pu_^hMDdN@|5u_!EHS$IGFqz=MC zmf^!Nmtn*HWX;%WEx$>JZMY_))U3rSn&U2l7=a?okQJV*Z+9PI<@&B3l4lZLdr9U8 z{fG3R!mQq@ff+(rJdS(BM-W$$M;)KPNwj4eL+78|r^m}Z%g9rvTX$yqRWKT1`UbnO zqT5mxmhJ7)K~iaMuCuhtZlI=jfC|Fs#pC>u`lMV-eI4t+!X#`lRu`LIE7NM{b*~X| zURI|sN*68s%&GE_qci+uPACymN{|Xi7j^u?<{s%=W#7#{Hb~e$m=i)$p zF(?dNFBDY<;0J{ZYJs(4w^jYHY9*i>yIbc#*1t^R4K;BPG^#I?{bQ+C`uaEy)n{%P z;fs6{BofC}ze(v&>$xgD{T(L?SZLo38?HC}*xYY&buAQ6b?3X&UiO^i5>#{TPY#7^lqY`TF&2%gl?P zB~>pm;|-e?5ST#y3sSA;;zkxB)&q$T+`VYCg9)}x37c=PDmf3qoM4B(`t=e!J&a02?T5?@| zUpCHjP{VI6w~)&w`VVavp6k`qbNi!yl)E`E(STQl_4l{qd)13n5pFRp&&0iMqa<5} z`n?%ZM$v5bzv?o@p;{*`jFw9yawe$TLNtKyUDAF`GlN+t&Ixvcaz82fHy z6>$B5B1X=M<(UJeH8O>z{-l-BEy^=`lLOPa=aP ztBpwbzecRIducuM;GRt|E%haj_g%_PamK3q;j79!aAQ^=qAlqtb$)2OUF*Jp3L2tU zAUl;K?NqlqKKk@rHQd`Y%H^y&NcM>X1`zRP^L?GWab>ultT^YO>_ENqgph$>vg<=x zC+u;q(v*P|B!W-fW(hXFB#lV6CZKtr)2m^f6jOV60L+Aem6fG7VbLi)C2_Ln8-1}4 zOJ|?FjCbPx6K2yN+97Xvy{Kh`1)>?XVLs+xxpE^t!l;7;6y2I62TVXkP6Sy>%_A*l zEB)%ZH<)O}paN`r=%=D+2hu`C%BRWcuVB!hlcRt|alBfho)dH615cc3u^~>kKiy5(qn~|Hd??kI*3~*OJ9f}O1RdN>WhAWGzo8KyQnnWzjspP_H(+DSX^}(l z2z8E^=XZ-4`(^LMBTNf#hC$EUfuXVTop^*8ZKDk9l|hGQYT=QR{!j#AxtAeP>Se%q z8%KcE$97;RI#4S>=G?(gUQyec_6PRsUU}sNRt!qs1Jm+kKHtM-sc8@RUc)`oVg8!m zyiF_L=lq23BW<&#VnfncEg<>_SI~pPoz{9(=Uu7gou|7K*5|`s>|Z*ACtepox7=-A zNS@O)q&naNgz9o-+apfBmZe9)-0khL*+OUpPT={ul7a%ZJ@?Dj6t;)fHR$ALH&hqC zw6oKr^LMM&ggvwkHQOUUiR_q1#KL2e(B2Y4PMGYz906-d1XHEF0UnICnT}JVL-1yT)B94zx)YCtNQ2`7dins+3UZq7!68VZB zWw#=@j#MMzrRI;kh|!iZI1un&RZJ>(jmSQJB05sTwc5Am#B*1xVzp1M*0oqMnrjGC z-^3z0*Kxtfse}$$OH=@_=#2T=N|jnJ&`EAMvkj;2#0r+dfunmCybjcV;H--xxPzvX z9O~JG@LE>ih^-yYJ4brNGn6wX-LnUUl&w^M0zZMX+G@1k&1T)RXf}t8r1t}NbRE6l-beyM)beLFf zUVJVeXi13M=f6U4-_z-7b)!GU7hp6~ZjAymaneC?$YUPSli?)V2&?PLh>Jp}!LwZ6 zP*_Pa_O&c)xH(bbYK!XDvet1zs$o;D-5nWIsyoh{k!s!{CrD)n2kQ-SArJ=X#+3?7 z>@77iVRB%1=sH~2xkfNkmB$f{@sdg=}Q-JFTP?E8- z;}*#6kUj3N>E$TApKTbZ+_qSv=Ji7A%@&=p@;<2Ho`ouGOi0)(nUfQ0B#BL#1gh>2 zR%eem6SE@aA&k{GvKMEFwP?pB`hx+^jR&_Qp74hDpqu zv&uz1dcf%3m_c={S`%&KH<@UD{gZTE0_*^0aNRxK}NqKWTeKXQ;$ zD!L~2wajCUV$|EWR_o31 zQOHN~gPusGa5qI5cb`+V^$}`ZobqG1Dx>aNpYBkP&78Ksoz3h%X^KXk&`zHShs)(a;q{x&cli0 zGJEJkws2yZDbs$6%F0jl^*!ejqra1G@;{@Ci-nT{6pe9bY^JU6Ldj!^e5ZOFjoRsWktAJDjV-!P=C0VcxO>(m;v_RaUK%9sNGA%5o&)>kI_AhHnxyn(Pr5)f+=g zZ|n^+ea6&dnvx6vR?%KVG+ZgUvZT}i4G;= zm{mUx@z*cy9nke=_r8{s>izn<~8KG7sJnA9CS3SbPFV2bXe zyN;!OthUqDA&9to7#kQ{fsmSq8=Pk4bJ}yPsVS>&3i!9+m;8*DY)pUiIE$5e-=8j+5oeZmTQcOW@}^HX;d9+s zKP+{qTM%h}^)=S3W0#0JaXLcXecyne%ESwj;PH)eEM1MyHHO}WfVpGl9I`Vxp8?h> zsymp(zM!^4H@(}GQgGV50vHTmyy?RujqEPh)U)!1jfRZdN5Jz`9T^P1R5V^Eq1MWK z@sz4GBtqe^JxX5Dm@-{z5weB3P6^w+ANhDkZ!^#GPLl`+`npN`vRlCginCMn63|Ce zW@wCK%6w+-4Tf948+C-_-b6cXm+Y=H2tUKW8U3J%?8xsP-_|0}V(}>ypJtpEZ~0_R zy89G_B~1M@jpp8pLD}Ze{QBt=LK!#fFec*!#~U-w0an$40L!5#DOSl{{3Z|`r=0U? z%rd8Zrk$_kp-1|DZ3MdEX=L5=L`{s0JcAEw=#_pWqmWZZit3~`(C6~cMs^}G;ISTi z%s0qlqCi_Uzu?ByOmiZpZ>{b$3pTgMlc(0@X)(Wu4{p$RqiN;{ur^z=JN*)M&q8H=&m8G5;xKEAP&RGS}Ssr=C^ zz+&u9wC_EZ?_*qJY1X|#AFfENd&)=j0U2Q4G{8SH)`arnk5Ad@=CEI1AVH!`Y7fShWMrbq)$HlS)ne3^$$gQ4Rb3T9$_OlnOovb}95xII4= zA(FQ6)Kj$L%|RXTw8-^(ml+fq(t|Rd=@4O0k9+KhC^CZyStL3B=q0jk6Ky{X^Ebh? zkvcycU0o!y=OmuB=4mc#G-p=}PbA0~JuA1-3q3?X0I@LmqA@DpAi9(_W8Tn>!+3D8 z*bThaKCqRZKzmZuV|{|{YFo=B8@LM(bidW@QPYv4PO4bQ|JDQh^ElG?t_umN45$hF z|C0j3Quti~;S?qDf1!YwBwLTo zZ2nMCW6N}k{+frK>A@KjhOol4X?EZ!L^@_BOwjV-1lQZ|Wm&u{P6F~%a|;DFUiA*K zgDR~usi_zqq{Ke8YYp7%r;5&Iqyn&`o~cgOIZD>s$W}0BUqL$i3N(yHQf2 zZOEc$%7y^Fh4797nkJvgG5ZO11Si`TIWQ5=r4Qz9=;fXE)tHo5 z`z-{ymx$$7;$8VDsrSiAGf8i@LjEhZUQ{&g7MJ-XUby6Xx$OE+M_%^85|;9~z3O2q zX4}s^Y~M~kBuNW9Vb@_|NtcAK^Npc&)=y*mhV8DSz)i$(i`AYcce}1SCk4Kn-zAO*s0Qz=KAxEsweVH=0j(=q= zQzxlPKz3!RGB~=vTVF2yo{hfBL=x1*Jl_PHE(cG=4}orbM6*=Q<V;F9*rT7+si4YxK-P6`;xeF=st8B0^BS1f(pAPww`-9%Dk&lp;E#bNLO9SF5jHe+7>mM;(fNf(?>j%{YHvUz>?%Q3ptY!C>WL{> zj=hYIKc;)w;Ds>{MMYRdhEc*os>I?j|G6DtZ%@D9qyKm}M*2&s&I9V;)>ZBdf6u|N zwZeC2rWqd0snq!a$j%%hG1Qru=ld<}$!BZPV<=lW*m!#{1H6UDaj`@nxiJ!e(yhdv zz{)k^j4HCBGqcS&K>miK_9BmY!(E8b0Ld3XQvJPW6kwu1pCnH0t=N@S(55~o*nhtW z(#PDH=i`O5c55$QDd?&1HYa>ZKqIhmxCbbdpFr$g;dD+9JHHm%ud626|ANQK*)-Tp z21ES=V{>(&)6O0@px`lUZu-*Uh2%-}p;EjK;X>xQV$PmIO73+f6^=0@d%>_(O#Q!Pgl}CioR~SZnYuVnGB@g*j;J0n(SFJR6wXKWQREe?mA5By zhI(z%B4LY6x~Tfgzk=u zYv8`adOV+(vV|>t*m<(qVLJR*6R{|8Us!UVj^OYGJBzF6XCF$m zJ>e;~Z*T`DjD=ETt^1eN0h5VJ^ND2sQX$P1kqnUmkq=c_#v}mM{f@Mm^Pf0o7I!GG zM%A`Zy@QVg&ttRhSzOueY0?ow{{OlmmH~5kB6uZxNe$gZZ0}=sZx>%M zm4H&M(1*0OJ#CS7P$9HYII`uN4pCBy-c+a;?f zx@#_)j;3U?8Zl|FXKUzFN20^nX^8d6gnoNf!oOMBI0>K?{FrbB9ARxaplv|U+lxFi z!#l__)8LWH!nUFp%`iZ{;|Fu;!95J3{RH&x^DJCA;;6le;?pLeE)sr~c5&cExc3Jg z6ZZView=q3Tt;;W7)V@#SwSHYFSJu4j|h7yTEV(OKRCA`P`$Q3=mg3${I~XDkaNc# zUO3C5$Id8P-XpwPBkPlRkK4B@bR5nO2kKV$d0~1gjG1JDZyGJ#UF9MH>510I?&Lmr znXFO)Eu>52ER^vs$wBa~UF0UK@Itgl{tJUT^*&!M(Pg4PNZklmPoj`TJJ8|}GMR2= zhQ@ZYZf)2I{f^-HJjwCZe^yz9KFDtBT+TEw8ejMLRo>WE)rpjnWUy=J4d! zLp_bINoJM6qZU6#yt%HL-hM{QB7>kpx!Rl2&v)P)h!uUQO&wEg=fKqOH@5rQROS>* zw3-HTiRKqd65nsoPg20c;HAc@3%#}8Rp*bHk*mjeK+^q$d4;uJyfdG7hgL*NwOeZ+ z=WyR*o!?*b`+maZN^c`ldj7?ez(zDPe|@N_I?$TPim^rc2a79gl^sWRD%DSEy~8i= za2cF3M;CXtLQ~#+oZ`Ol#EtgIM{TqUvKnAjRaKDo4gNh#h!a)SdU1VQf*^5Zje`6S zj6W1lkxBR;)iBPsuuj#J{pf9jbOh{AF^Q^#O@kPBkJivGCFL)i|4}fsxA_nV$7&O_ z87PX7I^2-+|2BC5a6NA$v1SXcW}rTrcyYM~AN~SUNNQ+?VGoN6Ysm6qp*G+!*NR++ z)VOW^W-h?y2^IIG$V)}(dcFv+Pwmd)hMn{6Q2%nRXz_t(P528M3$=cXRp*B78E(${ zO(QwpP-}%WOYB|_Cm2Oj zC>gt}*U+utrMC%=TEfl8D}Go!8c)Ollq8yNoQ_kV{=_cOyZBvFe#zx{V=>diTn_+y z-b=ITS#cV+uj8B;0sIXbI*!Vqp5fbo*~I~29~^tUir4b{^CT&Wge`nX2(z_Aqva5o z4=Tipbx_&ccS0WluEY#L=pad|^B^EuYemN(BeVma#WtUupcJflqwj~OT{M*B_-L!J z8%lDALiQmkaBe58no@Do$QSx3FKd)QxFkO5|LKSzP@%8eWL(z-#VcC4{I3)hk4=H( z(`aEDtBvObPgI+iPShV|#Ai>8&{-m?|LPC+mHyQqz+0q^J%165fH95jUC1>-I+a{3 zj_89gj$%)cBQ8=137BO~U7Ql!tOYj9ijo@UCpRR>L-rq2MoBX_3pP^2)_Yl@Fg=jZ zAPv|mlQFd=NaYh1JN9Jb@UpKWvHLiNPr?rv2!6G^k3{Mgwnn*35MuuHgHUxx5;88} zXLVbFb{nJ_`w3~uI-Fk*dSFiL#27|X&R=y0@VC07-1T2|M>x_@#8Y&GKt!Y=Oy3R0 z@Dj-^P0N&~y3W#BP^-*ye&$@kbt=odTmhQH_xkh&HQl?P4^$)?WBLWPYArvNmD7Im ze$gM<9Ox6u?GnYTw{?SfYYF9QiG<f55~N#Lp{gr z;Uqu0!K3Y?R;G>y-QImf$P6l&t%+#RxC@9knQ66775=TAziK%Hw9Ty^{&j>nIR9~k zBn=med*5Nn98ba8Al}xfwRC%q!0f|T8@~8{Er^~*{MeLyFMqCIvA?B(O3f-{lIvK2 zt3ad8toJpTKgtTvF~!>vPt3(4G9B?_v-{29$l5MxZ1V%M6)GMY4v*|`ZtAaX`ze5U z)upZNVCno~HB(aQ&vvTaF}z6bJ|CvX!@Ir_;j0U|`gDalUAGJ`*)c1m4e6=*NrGs^ zDzo)9JXY5+u@VOgKvx36i+=TaFX#)}CKgKZ%WM(;pcec4i4d{P;&4s`-%;W+L#p#T z$quMUw}$*n`G*$Y+*W}lth?iWBe z_DUJo3jT?HiPPt($5-qd>2#~F?^dA2mpr=PRv@(BlQKT}b@o3hmg9@)s+)^TKT*zc zIV2iwlT7k0I&EvixMrYJ~TO_b>rbvCBclR!Y_*~&DdOO7yk zu;ROegLm@2#6J07Z9>wAo;Kd_OEHjqIsCrw+g4`b3r(r|sZ)YMkh+2XzLPKQx#zF! z*VWo!M5kz(14Zv<4mU)_*Z=hbiSX|aSwUvmL%45O0Yj9c&|1lOKOOPN?x1B`BQAAD z3?fMyt(|KNJbTnv^S5Q>{V}OA_5Y!S_~Q@x|7H;Rf8itlr&lEjnWLsz+7sN-S7`?P z7$`mTKrn%Y>F`qMcA+@+7HlGV;G6@^fx7?mV~TFdAI_QG?6vOJ*q^5_4D#w?yTe6qTVxk7B=4uJ z!b<|fSD!y>zQOrn1;QsA^O_ffOaHVDz6!DW483?MpXcmzAi~u6_<&&F{@z>@n@Jf z#u#D>;D>{atEuiqsBSvEgbFBfo0AA`=e2XhfQ(`bqp*o8=kq{{c@y#DJcgQa(1QH-twB4%P_H9jQ11ZWQ`N=PAckkQJFxfLsEgkk)rI1`g*r zUmis0Y3Blpzo9IKX0OG3R+k>)FKnY>q3%K$yH;BNWexH9+Us8REXsOufR`Q-!CACd za<3U9yt^#qUHaOEKo*_MPetAn$vztg_oHeGY60jCjvr>E0Lb_nPg~Gw4 zLEkU%U3M!tMi_ar1pgiXOX(IX^id4GSV+9zIAqws{Ub|>P@jlf>njpTumC3rpu-2D zobj}GzpK@*;Vkm|aIp~+s~05bif(s1u%L##2A8{1iduDq^xZsLF=cPeOEn(LpvJxt zL$m+05oP7wsdsxW4BXj^jexH>vx(}WxC=kpHoW^lfu3z>KY%?m`H$Vf@Wd*{{Ygz< z0Z*QjI&1xO9&3~|5-8huR-&Sj%an{W!!VZ0&1AUr4QclzwI4_MKXDW7huo}+GnUmj zFVri@2H}DwM1>YMkq{C~``SVn0K$LmR_Sgy(yHbYI}Q)3EpPqTY9hty0l8lAb1%+V z<*r(o8OG~7OuI+)VDPz$$)|K1pXsg1Z7RZnidSoe`LHyOzdjI`-9GQQpzB?!X)5cG zA|E|-_m)?QYQR4XruyrCE8Wx+<}n&_Qki zH3nBq;O*PsgXvLI=J%8$I~TNqo&VG5f!ULnr+_-FM*}V*SA~G`UdC|zkKVolDvoB| zHb{ox?(QMzkl+^F5;V9wf#4c6xVr}rAy|SA65QPb1h>I`Ah^sMNd9xqf6jexy?fVN zkHtc|Yr4AXtFB$WSABbj+Zva)u-U| zlL}|5+j}Pd@7K!%u{~EGF?pI0bXuqw=m@}5f){UmaY-e8meot&iLM##HKc};eZwHe zR$bAlMo@nad0{I{ReUyY`GhX01stILZEUs#?u$OhL<8{}(luN|8pLA%E6OCZ!K%BU zlSSD-ayL4+jIyB)h#d<{T>Ws3Yg8w9nZ z3J`#?f8plp>51#oB~gtXfn@Gb=kDZ+7dt&;05n z@D7bTdmpa=IkkMLJjHrbbEFEgn;{6;IN*wHUsH2e8zZZtxy+Xrwc0J3DQgI&7iw5O zS^6RWRAktF9HM@FR3Seqz5on;SLxho=S^mvl} zC}yYn=n8Zj>ZAL?Kat~==L`jF0cs0;tSv24F1T@-hpRoOHqun79^K){B~ifkH_M=V z48rN184szVVxbRE8wH0*&$k;MvWY<7<9c|!Xe$>{k*hi;T3|ybHa4GjVf&rt;cp_x z#KII|A9-TmbMbs|9Y$U3a1bG-))fl#BC=(wuhb%+j>%De|4~sRuhw`=OZr|*;M=ID zlR^q%B24f$00@MzNGcUHw!~z$WKEJtV{e3mWA?bc%xg_;Av`9 z{u-b7Ulc_yBl z-@9@A#4@L$!;n?^(|pb%cSLr(shZ4>OM4Y;CvKm8trU{T_Q)cGCHlu7x(c?XVuIfA ze3`-WVv%5;3$P2OU76ow)&=AJ5K;CtAQ4 z6uzar@sUeRB33n8lJMuzY2J_tO#V_n96=HOh-K1_OpMf+02K5I8a*C(lMRWc!5Wyk z1A4nw7<03mG<=<&X+H}P%3p`#kFGeZ3A2!0@qgsn4W(`qaDezZ7&&cd+TP4S);4#k z*CX<;9t*!5XSBFS3Ws~7_=*6W%fAolU(^S=SNiwne{vu6-uiL{y&k5yp8ljr>c)d} ziKSL4t~zV|*{L3lW_4gRhxB^v;x^m9hbUXC^ZD1M8qAuMc_zy=fyWwkF|1iq|0%2y z;Pk8KkuhvLQF8=3#EJr0FR3;h{(9w2NJPewz{*u#uko!`r2QO%_>x zi;fgn$scUm!0+1iDO6%@=Z6@u@(Yl|>S)eTIvCNmjaQL!%cS&*O4#+_Lz0e&_)t7! zBTbEbyl7bEo{O4!7GI-Al^d4Dt4qTXkz;?Jl7RC!kAGU^1-XdqO{f}UzCp;}y`;4`JB=Hlwz(NDkXZGNRg zikJFGfxy@rxZXKv++9F(p*;iJ1bM{s?sQ+|?35`c-I)K0oW?B3esFL35%m3+bPgUp z$A5V|VVhhhfz#71Ky9yjBnZ4%Y`9$m|EHlf6PY3Q&Whp`oqPF5ujXg{(majX@KffCUZ0Ijf> zAqVgTr(2N~E%|X}tbS}b&l_#VHU_{lOryCRNm?@G_q7?4UUb2yFj3!-b4W982Z9hcRIZ9nQ?Oq<(m zBQ&Ug8=bdiu-#HcDYwXZesiP!X)*A~n3bj`B?*l{(kMBG6`mnmLXH~j_B(|Haz&j0 z`SFl(;+RT`SpCr(pCTZCU+wBd)y-+T$~dL`iw1d}uSd?shno9z1V5M}(tnZwUSm)7mq6)?-ohWgmnwhPM79b9r3QG8x*wT?Bh zfw(t#l)tsRi6M=o@#5$(DowyVPc^NVDqt{yXl5FYJVmNa#xHws3)3@*l0brVHb6Ea4>nFp=xDI})|Ar&b>oY*9T2 z+;KT$mZP`gIt=4G0pwvg;39JVok@9};z;JCwdC@qeJ1a5Jq!tZ;|u!5NIxU6lpG@Z z18T&DEX=+CQn?Uq#=bmnbAFZIlT9u6@7XFJ6vhdIoVtVlFd+L#1j)4^kw%wTw?911 zt9K6nF06q^ZEP%VeuCGH^=V{a3r{Cze02G)%@FNig3LDhtX!2pN6Onb@{0a-&9?&M zmc2VA0vHvWjeI{}W8ipBR~*f zSHbKR@6F&@K2bsEeVSzNU>E!|=wE!HJ&ZSs&m>EXZL#%t~(YT)431+7k zXFyT!(@2<>T*Rwus_cafLNXZBI9m>s#!Qd2a%rxQ3584MNaq|=2VhJ7>IItlO+ryX z^X`|INjqmsl`Ts;RczWWq`_R+G2ti71DW<XI}R+2;R<{-#CHKk)|sbI6D^k_9DV)w@@f6tQ*H z>^l?Qq^L3TlH8=bAge-2lTWZ^-zc?*nZ=8fV}D$j@t4v%5B!`eGf!XZZJ5IY<#@oxG2^6BgzZwA^9fN>KOB2AI50!tw=nr&ud zCwEh@Y3+68Qp&rot;<`-_Z9t<_e2Z-@6?OMfmdbJdu=k3o$%mO(88|j$R&Sx$pH8UYx!h08cHV3Ama}V%W+|ZVi@P@(7t6|G(PX!Dp(J z{vXsu+)0AaY-dO6WDEKZKU1#r*$3!nlc%ke7o%T*&CR;n7}&Tg+gBoiM0bY%ik^u3 z*MQr`g&dHZRKmdz2hKB=WVE9YB$J4HMUDz)0?DpP7ugVCUM=Q4S*n1}$RjV%m0%@r z{l>mQkf@E|N{+LCgMk4{gkh9dsDU)-g9-lQuQrKS4XdI8T1(5KgfZR;9yv)3sBfNG z)Oor{juz>P6BOyGkgM>sFU!T0yvgn~ymV){0X}Y;<@Qg2vY> zEvk{$maTo-)<|A8>IYWrgm}qu&<7+(lj<~+n;+^0LqUb;N#d_x?B5W(&U3@4AwGul z$#K_pm#~qP3~0i!Rwe~evlTwz%5%%bgM%MNc3eH0p`aZNWz1#=Jg#f`SS7m z+urHVe>RQ;yD!h`UT~h6*_lK=yMm~-*A(Ly&sLsHqlyRt-vC<^Be&x&Y3rFAIW(Z| zjqrQV{ba6L#$8tyNaWC_ZH~x}$w-etXCEv7s0T@#_8HCsoU0%m{yKxFhm;*(wqM|h z?ERp1=(1M&wTRYMGyK0{Shf!X-D9oumIc3DadlYq5RVAHz>}kadGCJc?W?A~UsX#f zBIPm+ms)McEQHaU!(>NfBqg&^0!=w`b`RKyhs7^|E8&N ztm>~kjYEn#I(zHxdK-C~muJe(g*Ji=n=5YM zv0QbLL6wwi)i~T20F7p4+l{5DL--}WA4d_Vt$xIH({9{ZOF@;lkz6%S@7`47MMzIb z=PAn@RdX$KnK3pKM@&I@40EBBu9U9Y+zO(u0cUj(yMd#sE3-D6hUi^h!P4dxkIBiC z)L(&`BROBYw+7MXo8;~=T;}@g(;0HBTyt>1XOKlN=`S5NQZ)|@h*=kTKPZ8%Uggf}f0yIqt5G)*OV z%X6O%@dkd9^nH2jl-=R)shtC^BQsf{c-4}_&E{!lV3@A&adx5_gB^o5<%W%OqnxMX{+XK!D1v(}A@zE5fY6`NYf70^p_56oymw zlUF61s|Q=}DkBF?9cH*uV{}jseL2upb(F^yW7sD%VSR!%#iV!=Q>ga~J~}FJ?py5* z#*0_P(U`YOgZ(NTRU%$Z1%{JrRW}_wKEX}k`lxIXGC%H_g!09YTgAQ03{B+pqBNV8 zQ6I3q=|yecxS0AFcEmkN9m^Xg2I=T?;HF%8tZcJ(FUd>iHaE{xrsFzKF7!U(72OrT z-Rt#kWb_KyNEETZaM3*&2!`H@*WjumLDatmUGR45LAm#4+k=s}hy?IXZlO=^%BwsV zFnnP8pJ*bategTX#UUGD>Gw@~wY%jo_1u2aQVl(!XeM`PK=z@wB6#TiIw;-2s9?h~ z@uMjSH-;a${q%Ye!HjE8~H59bYwd z|CcVNKk>wxJKll%Rp=ayec8Q3WOxZ+o;b8I9d&BLuWOQ3jnq>0_k~tqdkAMm;FwU7 zp1Grmkok}XtPXchn3QGDHV*(jPS-yKjimRi ze_kr~HRm1B)GGFY!h=D#VuK`_sOZvc5T7X8Q!OX5vHTI_{+tvvid$qm{UwrbrDo`V-bGhT zwx$iygg%+=(vSMCvYX*xNjgVqhv==N6PX_WQ9N_N>*8BmA-TOjzz5ewNOWDtXu+Ce zgXzGo&W+O48(6s*0 znMFeT<}y@@>qTwbnoWd5fO1DQ7a6f8pboA!5^2eHHcaK_ zLyu?or;~+&^4dDQ5I2?{gc;<}qF=~YLRo_fqP26I;A@0qF+yp{2fE^O*sx~%cAm`2gRa4u?CMs$+bwxu50F$gNLBueVASTgqa2` zzMnWq3KTiykc)5ypKJ$=y{Iv^yC~gF_K9%F1dr}E$3)$kW;iuWEyp<}B;Kv5C>Gr5 z&NT1Gf>T5(S3MR&%mgCABK4?;F_uC63yg*VEjmT}-^r|d=g_}>8@*~-a4h3qIAi4S za{`EOpXX+RoMOHqO6tXRl8*6Q2?ZT~~e#KS%v} z(qo+sa>{icqa0o9KBrE<*vaMIx?a^cljOqSbY)qYX*n*O-$PSIn+9K+_V023WI9Tg$$&_H#;O&q`wTiU+cz3LKaiWnmVi8Wmy zPS|Bdt+0FVXSZxt>u+bRr@kl@;8aaeTDs`wJz|e27rMCZr!25R%#U{h(Bm%#r{!=* z`$UcvnB_p3buytCz!2`nu(-_{v5qym&u&D4Z&ABxb>4R{_v!dURKzdGrUzZOo?8JN z6WLoOMTR?4|$x)Q8A>-^`&yWT=8D|n$GfQ;O$j#!>^X2lmLm(RC;v|meHvroRU*C9AL?QiPyQ9O(Q)}}J|Q|R*gq7DBc3~XU@x=-0p znCLL=`w{RS5#{W&pQxCP4)h9;$&S#jDH%Vf>pRPyt;v)DT(K5=Az#5WSpmWtL2riP zqa~mtQ5ib#WX4a6l<)yVwF86qiF^^r4&9qBB-&?z504=Z7g0@)vz)T}+B zicW@?K2|q;cSvV?`!=WtDyXcABiP@X@fA7$Uy5TG&Eyg0o)n?SW~7E*5!=`=h7umB zjgsqdaovo@WCf0=%&-&vI82vB|nSOi7WCT9o#~*8&)C7+DUwoo4Bb*0M8Ydj7 z6k$e~X`d*}iYC}dp?zz76VXg5;lX<_)>7P!2Il(wqd>v--j@*ON7xoBohB^#`=2oG z&b(KDJe>n2NLQ7=C@TN9ivEOt|Diut(PP2xiQ9i13Sn0i?El5oPj&CCECZsZFuTJ0 z?QKXmixtD^9nL9pZ&i(B^WUvT#-;r5r`Mon17*kNjlW;n8a6^v(1e6l-cM!`5z2HP zyYAU)Yshv%HqKwi2T=cUk1{S)<9P#EOyc*&d3Xr<`1qc(upp`u{JF&6irOde(bTP^ z&|X=1O-NZ$bH&YWoyIG3gd5s_W>6t*(%1jztrsI$<3%Dzsu4EnJ8C6X#7sz)r4at3 zn__o9a9UFK8*b&I-FriFVfE*DKMlwYdFXL1SWGWS*=GWbF_IrI5;XKx$DFlV85AN$XvzdUe6NyuiW!QoAr|Y zOCDRBIU?^Yy%3rC0a9e*d1x2fytf&AW($?m!IykC9i3wxy7HHTdarjqhU2osgoq zhZW9_nQPais_=7Z1sBRm$5hZq<#W z&J|()tm394vCU%2aJX8lmxLclXCN4jHo3fid3f_kz(6N*V2m)afWrc~;rpHZaTon` z%Lbft(E_RO0=2xvycO;CAhbRHTZod%jj!f=1I&p7VdU?3Ts*54S;$*2c7$$@bbxXw zHMDMXqF{)wU{Yr2u$x!tzI3?q(ZZ60mNr0&jqhEJEbPgJ4VN%Enr8t^k&@O+lJ1up z-hQT!Z57XrdUY$BIf>s*fapo`8K`zQf~E^Zga(mI(5`mvsr8GG@K+{@GSmDTH2Rik zY=J~a+M<`nZ`tnvEQu{Gq%j!PS4PQ|)7eqDV@y--x{agRDl8Prlu=TwkN=E^@UTL( zgVf+EFLIz!Kyz#FSS|1=x4kLHt_Y#=d2-rTN^&sVb6@UX^o|d8j#9+VeKAm)>MyzD-1~ov)#ydW`>AgRN6r(S)c_E5 zig&mH(Y}`kC&6j0i7donphV%+Msool=49z)6H{?D0GETR8HWYgZ1-6Y=~Zt|B+(St zj?QPHgP7OpNlzXor6NBGb-++VSc1SxvIguo=6-j#B(8&U!kY|%$rW2;yww3|PwJwf z%nLfPTHFu~fZxL59mVTa9iv`Q45VXGERjUoXDj9Ph3yr{-nKdghb_lVv3GoL{KsiMkM_T0N?k93`}Xjh8@z>^MW}+cB4K-7TI+38 z9MZX&vHyDRL1@X)VM77a33&-IIdPES?X!6iPazC)&uF#)DY@F^b)UDrM8`|hYIl~? zIJU%y(W{%12^@R#H8P5_FTIR8NkCh{$|tS}(o^8B-TFLPW5M|GIdHga1klCs2TDJc z(l4-J20ifqG~?NRJc%&y;J(56o^8W7Mq3^GQO4$%$2YwO zf}o(|>;|CKe@?Ig#MbAOq>pL+?n|z3Y|t<=hKLnP{F#=I#r^>{D&%|DTubai9Yfe+ z@tb9TgNCyh|2{M2pv)`7Jh%kmGkMHi&&qb5an-F``mwzYH}%}kWySR0NC4)Gj${HVY&}|gM5z! zMVwEY^ZRoyrePxE+kn^T+9V(#ubv3Uz4b5FYSjHTSJhTER<#%-(WXxSz-#*hqUv)# z)mPu=Ox1g5J zJ8pP7P+VCPgBiLWbwJav|G3@T5nBB333YO2N=b$?TbCOI|bf%QLJUBBMpT16bNC26tWmx4$)5Ob-JEBb|Dr#knhA1AO@xLSVm#= zM{Bv^>xcjo)|sDc6R##(FY+IYhd=bxSondIzk9-kYI4~PquJMn(5~7E<+l1}jv>Ot zEzT`2{=#8$kdKqnD|HO9QkQ`>>F=acwlTKb%-38tzwbc0QRYTQP}WPfQT9ewu>Zr7X?wrH?UR+(n#w{6+k_!pcO@lYcP zHi!*#7j}hk!z6v0nok2c{QQ(gOp=H-ol?q6 zZ;8>5%tSTHqG1VWvr!oJ$hq`E$wd8a#WHaBgHPWB}Vs;?Ilb{Z39PTQCPnss48P-Jlvi3Xl8G`2&w?GGYK|Y37Xum z?##eZ1r#;l8IL5bH;fpd~buV<5)A&EE zLB;w<$@^bFdZQ_uM(%5+ad)hy7KICV7BY`%rD#wC93;is3N z@`dz_jZ^70&;TZ;kxO=PiuqT@EEhTtA3|kx|yWzuMf|!`h!timv z%}i*iX78gG_&&yu_Q=_k%*^vAM4V!_>4Y<6+7v$|JlyKA6%!MO1F)b&zCoQyYhP83`pk%;bT-=WiFd3Qte%|}|iOR{`ib>&$%%45{ z4}xBl96HLDltia(n_d|$_%MybKSlGo%G;-eJW2^M<5uNn%DG(XC1epVpyWI5lzLTB z5eH7@Xrokom^ncqPq%%$S)bwAc+btvO+-Xo98EjT#8h&J?08@GfQ3=uJX;wuu?;re z>N?&O086WK=@$St@@kt-Z0?`>l)~xC9Bvh=no_THkjZFj^aF=SN7O0mV0`Eq`cI=% zp@hhA(AJL*t8rZ-i)2PL+JU#=aLfCbJUwp`6|-(H;>tnwHue_Q3VXt4ik zS_`qcZR$X(;=p>u{;RhK)zl=I?&_P&sv#3Q)sP1c9SP(Sbm>i(2CV%wX`aV{nHi+| zBbn3MDsoy&9z2e6)V?>~3Ret&Th&Ro^~X;ee3(CM9cpg@dZQV|%v2Ozq8TL}u=-%M z#9W+e|B1xY_A5Lql)AjsAGSLyh`!V3BFNU9F6~i(mTG(8g78bZ*0O0*3mLDNvOnH1N6Vv0K zU(6sphq&!i%5q`0$(5wTdd(Nmd=968BXxi8e##*Y7DmIZOw@XOC2v(&yJQ6wIQL~* zReg(a0gg<;^O&?h5rhc92LWrc*tGlV{OzxI$2l)21?dk^xgBgCe`2Q2B^uV)w;yTQ zT}KaI@7c@m?Um|qA1k-->k&r7up{<=7e0S~X7w;ghRiO+{pPHPIL0~i0y>R| z7~H?Txg6*RVRTCHA|l{@*m$;2pS*R|qv&msR-vSJ3~HwWVq0q45*$hJwwdp@)pUKugr$8}b+};VScqfrq>c*YEmV zSX$Alpdgykt4%4jqnF%&dZw;59K`+H>ZgOF zcKYgp52cZog6nKpYItQJfe%2=6^y=sR&^jU=!gY8<&x^~77*Et`&`u^7C^+R0#^L8 zZ$%HqH7!SxbsZrlrcv`+7QmDrqj}Ca1PO}x_J=zO>q1`M_?I&wNgo!w)|E|w699tE zG2qd=SK2txWMeg#YZ83MRZyIan#2WFj0Lh6g!5YHS`W#41H?w7;os5SXq5wx_K*?r&4uRn83s>lxjb%R{3kaYfKb467qA-BX(K!bT1gOdl?CNb!Bq4$ zJYZ*iP}rW}*pF*dt&TJp(AB$j&|F4N;r+97%Z>G6U*g!=cXVlj@i#{lN%SqtCpaQM}%o z#w*KL5$m{T7z@_N*ppd$zW(jefTz(}|GsZA`(AL^TcImD0<;Rdd?#PX;*(m7KV6>M z#V_SHV5z9|sf*X|gNV(TG9|5Uj!VoXD1ctD*BR{aJT}VvsJ3baxELdgDD_BZ8*6M2 z7wZ{+FP*`znc`C1tM4WxjFKs$vr7#KMlR?ar4qI&p~!MDLO~6AVqDRrU-q@&?aoIY z1J$fb!YGMKcjVD*_grHud9iB}Myg&xYDfrc&?@_iocMaE+#T~W-nOE_kmic3*?~eS z8?52Lf`Llv>B`?bIB^1%3Ae*u*D2WV79+<>l0@U`-RQkg(lO5McPQOTOxJv&d z^@;ksT1gK_3?>tHe8ParFS{AK7ia@MvduIO78sU&0ER- zJGaugSk;fA#2)n@Q=0x6HZm=%zRrSb&Mlvjd?kCj)QF`?DK8?xrRZMbWz<`*RNlS( zLJNzF>L*xG$g=&*>MjOkFD8y6>z5#7`C#&xTVr|WI`&FQ^{v~N6eQ4SuJg<-o?ktv ztIKVs)3aK85F=d1AvL7BdXg8ut+cb5H0W_goO5$TR%)O&D)ibI82RPB>*fS3fCXP=ize`gTUDGN%5UN7E6d zkcxD}sEyIo@%GJ08^%D94L+u0Kbd`x{~cCzM>$w@H206`moVVXOwW#?p3VsYzkL)G z;$~txrU4{bpcG?b+WVa>0Xtj>+W+mR_I~U=2w3FneiVMH^4r;>fR_pUVJaXyuK)3| ziya5wM*hbyIDo8t=l|uW!%HqemyAw?tI1!@uljR|MqGi4h%+a`z2ECP{e5mPK}A+F zglYrQZ3Q%tY>%P-=SPYK9OgY~x{gOTM>6;)uH34QRq$OcK2Tj(G(b}`V^Q5!grP01 z)A_l7CP{Uin6T62aCj&7(_i80nG^FG$vwdS01KMPcl6+{8`#{m8|yZ;^cef`go|f> z`Fq@`b*YD-T+p2q8ZW0Y0-Db)Qz#bxQ6B| zGwfXN;M6U(vvU)C^7x63{uOEZuA%wP#8}eS=5V)E#le5JoHN3T@+Z7n?WJHo^tR?Y z#IQNJt>k2_OunnNu7{hpMD!2V&L)?uQ6|@m=hZ5>1&=W zlq~qi+FE)#zPbU=7-~8BmD9H^-nH|~HTU7>wDkIKX3ow9N2F?LuG_!hz4$t{+-bNC z^rp%{rurHXG}1>2Q2joCDV7Pl&QpKe#1M3xrTFuTDXMw5YN&NvDIdPOw&o}OZe(*q z#e81lB`BdSe#k(@#;qkp(9Sa2#Om)@(GvlRbS|~L1^fBE&hS=9twsHf(pnW2Z`%f( zbbXk1tzh#5l-F%;=i8>v7565ROmk+Qzp%blkYVkg{T|Udlu)5;QMzj98eiQoWjb0m zuT5Ri`O5a@{_#n&8~OIe>yE0BNiF_H){#v92C-{mX7*msg)El##3DFY%%9Z{2YuEB z>2O&XzB4*4E_$(JW!w~i-oF=Cn+J)ib$p9=$7pZRvxpOlHcIJXNX?*fC&j`d4;GiS z@N>P=54}R&=z|rT#?_wbjf(3&dt$6^w1Uf!SIkFnqW;DN!<3#D`Af!F`W7oHy_9?~ zU>yVm6G_Hx1$VSAdZBmZy*Y958~frFQQt5w^{DWYkGSR6U;rPw$xh|fZ1h`B$S-zi z;e1!jtYPu-^zN{Zm6cJ`2~)$Xq)8t=^^!_z&UzT5uqKQVkZ>ffnI&`}rb}enATNaSjN&bVHC`X;mUC5(BX#G_ZvD&dBXxA&>Cdg@djWH*RV)}TM zPD@patfWUmRT9=e9zxMGy|jo4t(WzCFeKUh5OD{q-UN!#s3h!tLq z0>zl#+Qvztj1`2(8tf_!+Ho~we=X^DPW&3@Taj~biHWIqpUi+tKZ#X(A7Oft7)px( zV7%p8O6R#~uEw^QeGu(zWs!pM#Gi-iVG58?E57PFXQ*dL9#P5r(gb&zzBSIbepCZj zZ}+a%c`QT`;q@wZsPbXHhh@H|!fUsHsr;IXu$G!VjE>9NkX|yT95K`w5bw868oVU> z@^~q`7`KB}5&|K$?diF-?fLB=IhjSuY+|Fodxb%3bEMT%PFpdyaLN9i zT&MvgST>*jGqPK-jakuk5ans?ZLE?WI#qFz(DJo5o0GBK1-gBji^FUlEj zgmeiwOE)O4YZXy@fHtN3eoQJSkkP!BQmK;t_OwF~d%D^?qbp~0PjJz47Orjm=-LzM zi=pe`KR!dT7t*Pnd-GUjrt!$@e4(C#%@+kf7~G4>=THCXf6EV1W8>AGPo%2ZWNeRq zek)&jhCg~Vf9I~`D+BK{A(@raYGc?E;f+nz>ecjxJL+f0wd(!VYlGY6TJUZ)G7-J! z;u5dSg=#NKC_eigJGv%xYZ4v)CJj7HF?GmTD{!@p3$))Y5_7qQG=ht}nv`e**nrIAx!(A`1q?A=8BDHg=~R>8YjIM+37cYe>awA8(cwz?F|e0lHr*4k3*hG( z{6uW54(j^1rt$!|MiWb`nRbjy`I-LO}8Bv4fOl_FaxoC($eecSHbn}Lkqp> zXLsOFEK<74Y)bnr%1pAuS)?77O<2J-OJ~ACLqE9GM^NT2tkj!&A@OI5Cl+Tl1X@9qGdrxe9FHGEg}e3(A^uz5@9o!S9uKjk|_R?b2Gfe{vpo zkLW)5*k7?&fobK*Xk zndP>7XN)VjO2!F_p7^U)+QUa(1~O2?ulOE1IFVPY9{|>`fz!BFJp5bghtJl7K2kHL zI~3Noijw_Y%i2A1BOte9=)~8&D2E@VoF?I;is)+%m+EW^<@~rE=;*eN&^qlr;tfUG z_(3MVK`#F%fFta73y6mpa7W0;KVU8+`>skt{3~Fe(q$jT@XWj`twl!RFDgCF^7=2v?m@6 zM`CkJ`f87fZS4jA{8WYhTn+=ZKy#}W1#3btj!o+tMRCE z>aVp%t#9e8RR7O6tm_Ji!Y>;1j))B_DXozVr);SJ=TvS4;`14p3pO=Tsh51-2FottfMcft(>hqSMk=U!h%V`ov=}n1mj~Ck310MGs zb*Jp5DlC;Ti2(%retB`O9((L$#?kJbsfAuIH37nTTrNyzI^GnB$EaWy`_C&awDlAX zHDu0g_4Esc9eV;Uw}tydgWz_xcFjz$6+nO;#{qXe+Z83BO!T@z8yAqQ9&|b$!PZ?S zSn+GLTQQ6_t`=`;Cu!r{{fMBL8~MCEK0wf7cPra+z-AWS z@@)7ugUvN0w^h_wlsTxrRlHQyPz;F^Opf$E1zAMxCO$&$hCKr|blX5m!YW#g9?Z;5+|u$vJPWIY8L`*_Rp?@xD#0>=ua;@d6t8=ph4qS_c+S!ZuM9Cm%T&( zK??Z!%V1NyTNwsAJ*1t8Aw<>l76I7Dj2Um>GWj;`9E%l1Ba&H{dlOqWk?GVmy2NG3*!1?r@`2#W_xHv{uNRRTW%c6r&6tkQG zD#7gBxoDCKgl0b<&f~BVF&=d@1NOE273UkdPA!gcor{XsSgu11E{Q@;fK`CZx_gv0 zCj6y;Uma_P#*{#=FNVEI*`CHO9*u;l_O{W%5?@eba-1zV=_;pHpXvl3R=yM)l_hG# zC=kipfrs}DP;_klBWuM>}@~ zdc${@-kEX#i3j(6Ao1;8uU4b(;cxT)dDlO=>93Jo3&PP+nWob9}qu%^*Bl)VD&s}wso!h{D1X? z-HyOl{QOsd z_Wu{%aAi~-3E#kvRR>HVVWBNqefkxJ6?Q?@tD*3^)8}|XUHxIK4@~B4UW-Zm*W9-V zP2t_7Ip=MtI_P7fPLw&4lxu4-%h zcc-MJF}LU#@y5>Qe$=I6m8(8Iwq$X1_9y>Bvl@HFeA97F^3Fc0{m$FJ(_^ z%j$|V#;37nZ#Eq{McqV|npIe&8>lGSEH5tyKm2Gs#$rr?3_dO7TVAsjf1g|4qfnG) zlV0ML8$qQjo$LAX#fVnC6T@sFv z@?%(^KL@a`*kE(ki3LXg%hr37I85wEM`WTfl*HJT%P=U@6+#WH1BO0 z`RJEJo{Q{Xz~^}Y69u&F5J{{k?v@f*;nceTc=q{A9VHh3ki3~n@@G@+qDFNp;GqN6 z65Ieuw{(WTHaWp7d)0G9Ct!+?uQPdV#WneUh@b1*^yy)vSVd~=FLA*?_^PXX4p0&j zJltBifNtiBlM}+ccJaF*WZ^z>ORZmaSCBG2SN8aKhZcZ#JFy)K$RLE^ASaAsvG5{( zxy30tY%b}KqXM`L>%7!fpY&Enk7W#l{@jtWsE|q!^wCY7WBXv}lJpY9H?rldh8#)A zSB{q*N`#MH4Sktd_DNK(qbH4#A`nXCmqfp6cJMApzk@eLi_4$?U1t14s{)=d)Mv;j zf{pB@tdj5CBlruN&zgDEG)lAg97Rd!`gLrSRV62I9w2Y)eyi zqeJFl+3(JCY4xQ(%qhXCRObpbZX4I~p+GqH1?|-U)cO`|u)roof*{S% zqAjhf3~Ye6q}jRuhWdQn`!KosLxpW^kNZAmzvvYcCkZ%O9f;Yh$#ivs!R!hUo8{r@Fu1?W??;v*tgg)m5^ zkb~$bC@v1H^_yk^eptp*)0zTOlg>5yyLI&;(z6g{@Azch-RGoD>pVyEdNZVNtkZrW zC1Sx%7TIOi`N}Lj?j1wDNv5FxP=DpZS7SLFs2JxW|hHLW&fgpggpg) zg}Gb?ZN$01C*dlL?5YXvx>)LnDcJ^CKy*qaC2`-+o{n^80(t(r=>Jayb$Gf{e(+vH zbg;zMHAA*Por}+bWV)?5WJW;xBxhxn2lLnzkf+xy{nBc?X`j92Z#UH+xpsB^nif|= zwR1Bb{lp@Ew-~jGc15ZvQIR(z%S=@Bt_6%9*2i&h{{+fNC=j{HLn_^?+Y(X(ld>60 z@vz?b)ryOM6f60`QGPhSjNCRZfr*@ZlH`G)MTW6(e4uT5r7-Vb3FRR)%iHfieobo1 zOHFsagIqYY=)SRchl^*yy`S2UUVT~AB%{y`dTYel{at``JfMuY8nVO~wvmb(u-*RL zEH&D?rXK9#)~Rmr$2LbrI${(C^xAZqtR+*rL#OVnGt*ZK#7Dn3D=0AD68!r4s{OEH zF*0sT8*P|vsn)xGE14CqDq3wM+ptJO!6sdbd;aof^>A)(lfc=>w;K`f%N!~0?H;2! zo{cLu!PNp!Ldw}vh-bdq=jQV6C$5>-&;K9fE#6!nGPNnfIrUl(V!~ouX-LmQEJ0{L zYyHy&Dd85f@M>j)f{{Y~Q|}usclC!Q+oI$eA0Z?9rr&3NzDUZTyf0Urm1${_Hd)(o zR3K->FK@Jjn|u<2X5PAIN2-$ko#py5+SCo#I55_zm z50Utb7x{vp7u>9pUK)?cN&s<#q%kiHYX^&v=ec;ei*n>Xap*;E?s#l3r9A`3(X(=+ zC09ooo4wv`MU($JYPT}aCIla_tqelgw zaL|9AGxYQ@Os|ZVw!HFq{p`@u65w%>&OPKI_qS&3 zsP{e&qs4{PRJfr^=y!8gFkw3td!J5v`-(z*{Uu&}dO(sV)R5gT0~zbI_a%E_M684ATQ}nD>Snc+ zaUtuho^0pVE%(;?g$}uKT=&y&1N*`z7e)_BFO7*Qn&= zDIGOy@l1VD8K)OdmF` zkJHdpM*@ZI@@%|Hod4~oW{E387HQqb(b&Reph(~!dr)41u+&~&uJv1RW8M5#10ubf z&n}q{W9V2u@QzJyKDGgg7jst+k)F;FzE9d?XAtEETs@ijT2g*&jCNlfO_y4FEWoMz`d`$XB>VIZ1rXR17E&xM4JJKE_e%`kAxDj_hBX zQL7o5n=MqZ6#Yt9T|)auUmA50>gT5}PV)(UF@Yx@N2SycjJmkE>STs}SH0;}+&>$; z`DofNM)1cYkDt+OD6^a$82w%tiJl+P7Fch)gWMF%7Av{bG4bIZP8KrM*9)$7A)Y6Z z?>smfuxi}53RkFNJRCiSIxoC%xsbCSvhkI43Gtd#(H|#x^Ls~h^L8zxlJ$9+wel<9 znkG%W8E;r(%|IGHDw;GbYAju|FEOUjH_+`%$5^GZtL}-@&QG))r z^*qL_zI3yX&86AeQ&ic`zj5w+y=%2$H3yfwC^PXz`q<^3I(jD$ifWt-8M(i+GFG0f z%(!C#tH2Sc3VdkEi`g5wXvsUgDy^Fjh*;u>2-a8O8mlH*{Z~|J^?*1mu*}nUt{=mi zAS37f$Sul=?ztVx@*sPPQ%M;eNHo?^R0*N?Bqn%M zT6VuM51uZU4qx)cMjC~{`?HkL&0R6EC#vs~=-bnlfFLryw4NR533L-RF!f`vUr#;` znNlP-bFzYwhgK>#z?BbGH(&SxlGI$`7#Zj~y>RvB>G3xBuPhm;^;gFvnbUm=pXTia zf06LxRB|iLbJO-OK!&IpKVDv)F&bvi`r~XHWeQM&hO_W!k#lWSa0dRFDz7cH@S8G2 z*On11Id4lmqLNj99YFYfRp)I~vh3VZl&&Yh8#gx{g)oiFye*GQ*~X^>8u&K%lz5iG zQrK+T(aqHg_vMndextY(!ebvNHr#95^0Pbxy^AaaYo6vA9hL1Jp6TUcL@1bj+e_o8 z479|TOht80gkDz}a=B`O-;gtd#}+Id~I$*;7zG#h*; zx8d@Ra?f8MKE!hx{8dPYvBuY-ZpL%^3lu;9_DSs9`S?dTJOeHFxRg_hP;R>4M#;&^3EEa9MpTDtB zAWYh8Kr*5$2Sqr!yR~All;~!a8Z_lx0oui>Uge<{QI7cJvz*Y^Z{`U;ptFhrP5s=H z*iZ!ZoVa7Wk5vn^+*T86qmCw{v`!=BI^;eoka&g2*hs(b-!?T?bn$@38xqYy*oT<@ z~E*(87*tV4zl|yg={LS(Ew_jnlm%X19Qx~(3E41a%U~j#iCv9A<)m$J46mi+ym$(B!2xQivbca8koOh?o0zHZ#Ci4dJ>4+o`RXK{nk$1r2JpVFAY{={3( z=T%OlwHn9CfNnWqwwgY%N0d$x!7^;l-78{dfh3tgloVUTSsb6GY*Vc`To>z|^@*WL z0R!>9@JIHssqnvQ-h5TQKXFu>##rdhM_gnHlE7NGJ_(xJW!DsBsrlZa?5cpQuD5TG za6LA|hI$R>sCCG#?9%c~+Gz4SQ#S0Xf>VatgmerPZ^!UBh*Y)KPKhMQwv3Li^+z=y zAZDK5s%BR7xX6RCRrJ6hT|tgMf#LTaF%mE9#~g9oN(Th-u02Ut2fvFakoZ_$OFXD~ zIEbk?*bMd<=stP&`i0<7wx)9bU2y#bvG)f-aaT=(g-S6zC1GBY%OLI4Dd+Kv@ z-~k?^WFQmh1?f@x1U*M&hdfFRUXYi!(;O+zxq85joiu2qufUd?H+@G-!@@%Y!xZ(W zdBD)=IZMj0xRe=UliJ9b#eV*eUT0aiBH-P%rqzAP4kcCOZJv?hBK*C9l=8cyeA9&? zw^l6^wX=-t(_~(l&)w>nX${^PyxjA}^}W9-k-YRD0`W2S{G)+NHq9?qXY zt*@IuzMvg$(_K=8b`i^})$L4R(?KzVx)i=+Zg_(h#}qg-PM`N`bq6C&9S~lG4)F5c z&Ke_TWi0yD`FMQHle+{JVeXuoS5H1b0+5b^nCR-bx>yI)wD2MiD+pOVw|XfylZQ5C z>w+*+lqEn&N@k7vD$$VXxbg8;L=*k|)E=roKy^%1(VJa4O@#96&K57Njqcg0)&CMY zU1vYm9u$kn2tVwf75(yx^S9?%VF*}QFlT$dOpf-xsW|j1Y6=W?wtv=yS3vn^lLEy3r;t7n74XrC23U(|H(uCZ>GX{deTk&n z?Z2w0IXlbSe8@y9mX31tZBu!EGJ`Y3uncPwjJL?#ZmIp0vvmq+2jlJfsCD`*H%K6& z3s@!$?m(`{`F#uRw?&KSmo6?*(<KswI93r8#SpH2H`;!x#50*(Djt>lR6mR_a5x&vmGwy44u;gML8YNzQeta&3(#7SQ@XBsPV4;dC@j%z7mQpDhouK zx)QoV&R2vn_6BFGA9ihdsDQnWLRASNnz`q!%Q+l^V;ex9{aoqWray?aQQ>J1D<0&YRPtJFn`? z?L_-%6UAu9it5=Dgbpb79Bo|TyUfLpSRMXCg*ln*0jXD@)E)M8T>2hBeS#ecGwl5ua?$ToTo&(EZZMoDKA8TNXJ}h$Zew_5Xgl< z3qQkUFRTU0kg@I!3X8Qn4^GjEa^er+bCPkjAi^EqC6{>!|B(1rX{>C z8$>va!4Ql6A}p&9&KX=`DQZ3t-mU;m6g7-fc6VlMM_6$$1->}WcW(}%z49m=Boo{d zhtqmK9%)yoG;tKHJwV;E$7-pJyI%45*_RuOIVbHOiY5lx@PzCR2pqVdG`)xTI@BVJ z*3!i1;lF>2SK4#U?cT*kU190Tj9w=_mfUJ8@r7`0PPb z4~hZGz!430(m9D?j@(GT#dm=%T4{I7*lwxZtLo1^{;KM6!BIiVM_ zXOB7Nu0fQ@v&P&d*jYPIptD<)u>M%>Bwxdi$6EYWSLR1>^Z;zGS=~3SV+ukk%(q{( zy{2b!E^9p5)I@H81?+`1IlyD9&rFdUp4`wo{!=#F-D$E{6FATlQOr`?J_L#z&y(*=dg*$9ZY^aNH+vztw zhes7Tvv74JmjEvnw$x;E=h~$kh$uj0z%aNzk1vOBq23TQ!a-~yvHBuT!lljc5Q3r| z>!I(mWjogUo|yxIXTczbr{IHC_cyi6A!Y*yg|(ZbrxMRO$X8Xxg=G$$s%d2w=bpoU zkt94-u-Cr{=&2h+1Y5)nqnvV)pPvh5%=QRu+?MGpy)SqphN4N{7KDW0>S-X zv9s@^vv`cm0cGY_(;pljed)96$fYALss4|lXX5;nIp=*_XZ*Y;XZ&V}b~A|X3dl7s z#W>qUhc=qu3}h~5__#M9i|nf%_VN#SOZ4Io5bf2y_zWoiUMP4ObSotgW_fO2s)EnH zJh?h(6@BG6>W*NJB(Se&XCaGbw$L|$LJ^$nAJiq97THASDhDmhMLMdw#i2HZSlSTw zf$CP1VuyE}3UGW2cdNR`k?pYV#pZeh>@hf%e^U8#c||*!p1ed2C0A7LX9mBGCY9(K z!8RJ_*5a#->Al!nGksbOK_cEy3d9&Yivjfe13TeU3{Jl%TuI(S7DjiuECf5KbeZY5 z?F)Y1ks$8oj&o+l7mM)9+So6JIRjm4XUU0H_(4q!tj;keQT6Z%TwAz$oz3=aa9=AR zCrDoW1?dyZXcs%xH~Vtc5#>`w8LNn=hh9{Z5Y4GfkhX{5B|^^kCcNhGAmdvG{aSKA zP6DtahXQ?>1~>A@Mu`B!K&-YsG`V-vdn9Ynm8H}7HO6<0r?H!razx0m?c9i#O z3&PK^_DXbk>pg;VN_A8@*6vhHzH{biQZe}JNZyHk9j*b;E#gayt4H%VmE5tl-r*Yd(02qq}ZGvd|SWD^u0YZXSea_K*)O! zz8$$BD+s>}cq=TVU-8*fyML~t<$D6HrR_65+kShjm%MjrD0KHFeP?E&K5X_I?ve0Z z^J%44v)zsU!w5Sp-LPwoS*Mr-t@b+SsTflE%da)m*GcI2j@2oYu@x{iaZrFZb@Moj z8>E4T9{;>zSr(&I;K~_~Q%15wOqb+>qQkFqH-h3G##5{WX6_SLE46naY2ki#tS$#B z8ZSxHpH(u1(KlJZ&M!=6n6+in(S5`8rFX(hzaRqu!m!~3j|pr`^n*JEC^aFERCA%i z_>R?NRuoY^N57FDX0YE&)mGt0f-zwj`lcGqtj%&VxdFCUKQ8fg!hTMLB3snO|ha0jkm!A3+K$4!D!VniS zv^$qKal*zj4xbcJb%=PnCl2LU{WV;&NN>)L+Fl1s9cV2^ht|gxAYRZR-Amt$&-lX6 z8@PjfT_V|96%Hx<#m3?) zF;{cF11HaZn)|IB#UeAhjnwk64JU6V(^2ICdH2$Wb5VJs-g}~13EvPa_PIRVh6h(p zpN8+^KVA`_7084OG9HF)?qWOe_9S5}IDsva&OR@CjYYI<8rJQMtMni! zZv!Ocxr_@_Zf88X@z|G>G7euC6srbruRgsf(NT4;Rq{eLQ^!>qm$v~L20%L&K-OoW zb8n@;O>JpO9&MvYeyG~0p0|Lt;g&82L^%m%F$efha(8?Xbua`9h%$AEP`b^nrY@PU z!9o4K&$|qjck&*2mIQLv;*^OKP1*=~VE%BUZhn>KGS=PNJ7Dkge%ud5a9nhbR}XI2 zB|OG9%J81l5!u&cTsrSSnkd}eQa67i4+>9HHyfdva%n4^>`aJrOXEPxF`j!OmewnK zv9cH|(M|;^%+-3fN;;ah`XZnI0?bQc91~sBhk|!DD`^2&m+(5N64nij?A2RaiFSYH zCTz+hE-2da4LTr%2}V|nSR2@)TjC`}yHn&RvGDgoTG*|!TsOo+8b&4qGI{V|KosD9 zlaQKMeuqiYTY>#mj)F!n>R@AiAvR@!+TRYNX8)?W?avOOVFrB<%F(oBnrv60xCT*P z--z%_1}#&T886VEZz&pvbo2q9r#nZtw2}#X6V8G;UcViA3soDEmnq0{RPr_|uBrE) z%l7B;9qTcdf!{D^Y6kE!KtD$3+T1Taq9?O8aPiqWgw!v4JdZj<1154U2i8OYA@1z0 zLTZ0o&c-d(?deS7EX&;}b4}1O(`WaYM6ty2YV_+$HHw2!IT-k=VFvvE%?nMX|Iwrf$woRn6t`wcWE6@4miVM@}d_mjgGjGb#d#jg5JU- zdAz?fk#3aq6Hnp|o(opGYH?LQB?V_#5RgkL`Vp{PBjOXt?R(8TiSFqukHZpxA&rt_ zYRHmywIj3zB{TLdRr~^`s+*Z)tV#1(F{|9EA{y%wT$zdiMZQiJC!lIZHN+G7+KFC8 zhrBM|W;RG!;qb=3oZ9*;Q{RYAEy7OT^S3P$*yg$Vila29wdl|n z7oGy&dpaj?FOE)5WyT1QH=g;ooT>l#{>W%i#Glh6|91ymMrHpP={!`( z_Mb_a9H5=D)f-~hkN2x?-Jt|4$hKs)hR*jk(kSCSfX<3*U(fK**vyq=b)>p!*0A|< z>T;h&ZjHm@DK4%#SHkB(UU^vd+34^RV6f)j(^P*7K#~{BV#N3yxS;%{mVCCQNBoA( z$wL{G?>Ha7pIC9(_$R7uP0PB{ausoXZF9j>8(k3oYvWznD<{o0~#S84gM}gk-5b zxq4mhOS_UiS0#p8t)x~OZ+Q;mzzAq&;gK9to|r5`TX?aUo5I{Zi55Rh3&2AfYC zG^vv(5?^>Vs3DWfe0!GzR@&7KY*1Z$l!NfH<&L4$)W3?`Y`jrf2zwQrjQjE!nY7k= ztcc@(eA6F-4K~XtX;kqwInw=614GM3Q}^s#pY)S4W~;-Seep|i9@oak`bs&AOUrH< zdgQni1l1kLWcpLrBhxW-v1Jo6yh*ogHA$!!>*2a9342%C-#75)3E3m>{c*#h&=%aN zCx)BbuP?F2bK6+6@2+;0rQ6Peuo&On zG7B1bWjR7L(w(BJS8~Gd@$el<{DZvRPwY!bJ%OPCQiE9Eba8_Xc{sn2)8WS);Lrb> z#7gQBN-@icb-YO_%zk3Yx`HU3SoZV#!6jR?{06ap#7Gk-TH-V-xU{}8oNP;0v+-ua_k&#j_P+nc zrxlEaFwdD;0O7yRA7g61?*XUy@yAK*$H4zz2h;xB{YZ;-^Z=tJ2<2gCvbQz}-h<0O zC#a$P3%Y$xyXuc&IbAwOsg6~yV(~biW331hCdh5VJhBMg(bcPN_x~qqr2M=8K@spID!I+%1&%VHIEC~0m3|NgwK^bVo&|I;E8x0R%8MsijgGIFIY%q_X>PSVCOm$_am|(Is}g2@O*= zio#v!Mab$R9tfF(;NMP_ogLSNrl-c`@iyP)PT}J385&Vl8f{SbsP&{31hZ!6LRSx6 zId$HFA0%x{$1fweO+#u1j{2}^g|Xln&T!1~ z|7qT=4vElm*~vCt`&64gQjwuh(`S}pphQ_FmZ3bXpWGE!CYP4;<4XJpbt~A~_*U#2 zGV$c`{n5OCMjDeQgfOAKf%Rn($S;X;*Nho5WCEy_Qyzs#A8N^Ogx6^uWr;}&d)%T- zPAgt80LH=Wx|H=p3e#LhhLn4Wqt;VhNDR<0_CrsVH_#PJ=-=mi{942=%XNr-u`T7o zv58d_ff_PIi$Y%6rt{0kAF^w$;3kI^tM{=4z~7Zis$kwPv3=fxJu~O?Taq#I@t-UC zP-GO|X%NK)X8iJ*;B3fBOMq&X-?L9x_wO~I_UD&&hd-2;oySw-Zt~|z+1A|20jdsXTNP z=Px3nT%Z?NO!JWDguJE=I50)CGlR3V^l~@i;neejINqjvGT-hC))9--x(oUylu@s& z*{utfeiaVTasI&c+H>J@o|i8{gB~+@XA~yRwR9^NqrKw1Jmqh5+t)K?>lRb#=Ra;F z5F5?&D7gwHR%p!r-#_S zxt7Dc`*3ReXd#ZzeY&9b<}GlsW;GiXk~_*jI&&ax<%VCt+#-~^+w0GZs=Hoiy|g#= zf3Wt}QBk&CAE**ar*ugx-5t_MN)HW#lz?=XG(#iOCEYR7FoZC43DQV+ch?zw;(gxl zd%m^KS?m1g!h5d!iXFfGyY}9h>WdWU;`u$H*C@#XoZ{>i=0 zGBLM$y>*NZ-=oMA-EcP-&>w=z4P9swBLlZby}l-p5$s=v06KSMiu6-OQd+LQ9_OSk zd{x;?hs9ZC59&6JN)tnaE2q~xCe^*Ytl}3G_`s_)wSML5+xivOlFdUi#r<&|;r#t$ zP0Ih$MRc&kx^J##vw7kWf%Cx7>$xw}zOfGBRoq3ojLj!k9%KwmnqotAiaxD1De(g! zJXOOkmBEL?hQ^55T%l?1Z&=3BW-XICbJAsFEs&`+b;oOG^={*megzha6$&683q@%{ zdhmzNEI2#@@`(xl%tE!3Q7m~WZQ|*ykn1x~eOqNGQD4H^he|BQdw!VmM0!LRWC_bK z|6&*&fuH^2{Zh5gHBR%O(!Gf)9QAys#BXoh{Z{j$EB47hymb)~aBsZYRcC9Z;@62V zS(R_Xd<|#>Q}(I}-%9;pXvCIc_lNV>7QL&WdFLQ?k``fI?poZ(lIdw^%5i5X+f{tv0Ug7WdiJ3&~fKf}bjy=}2J ztdy&^yBRoj-yvT5$&q+W&9-__-7M9`qxmKz1>7JzBcSHp=%SuFpipCZ5j;=ErJov= z`JJ5dp8{+KqtogBv7G;JDdvCYWM|?6wa-_z9!D2y2rGmRbf(f-G?a{tG z$%eHduxglj*wr*;Ib?Yr^;rA;N%TOL$@SCkQV~@?=uE-BYi`km_6CEnaC7c$>523K zYTWjZ-Ff2r+@2=F(BJm=k=?}qy~cW&bNT3LQdPJ7;;%j-esyqvJoQK6xw^hY=^(Y? zkAshms^~){IVY?Q1{V-^-H;j`<_b}@*4^Yik2L|)dADGn31_R*x^|nmvF&?`&Ay6B zjdav|jk>$Ml649@13~#=y=&@bVc)_G$QsAE;6=f9<6y%0WL%u<&dH@x9Frp_r9OJzV9R`R7yW_J{qqpStAHZPtPL$hg*4^@V|oLJVo1kS@Zk) zs#<@#@#>I?KN+I zvuF)NJ&rfr4FqUr=JD|6xl04fR6=w|sb_Eh2Nc)3zGY9p807h)d&%Ug&w4q#t`rB^I9nepM`R=+|__yh2)ZI$?c`z0-a;Eq3TxmN6@z63RMWScNiN^HmDPt-rJHsdp-tIy7BG2G$Z#!au>PRbi}8sECujI*eJfe*BS_015b z)I7ECL_YVb`Lji`j}Ch^-i^pl+W&KEQ_4zPk>jK~{%XKZoGsIAuS?fp_!HlV!BdAc+xg zP_4=EL0uVhcI$yt_46OiflAS}bsfZi_e3cj)Sj*4vG}V@@~qb6_j*65f)W+6fhwY#t@eA2EcG}J_v6*i z9G0WG7Rh|}*>nm?Ut!I#tYCfWhy`6rAComla%3JG^}!lo0jfDg+zyS-6W5)ck z+q>pg|EM1yn#rgUvkF&ga;np?70id#L!;!;#s3zyFU9&Z=(=)`HPT_WmV!>85+==5 zWopwNsv7cd?~()X3&-hC#vR)9YBoi62XDNKCa;Hnh>E7=Yk4S-^f%LO<+*m_{+X!W zH4{}s`7iJNBSpKoj_h%Hc@CYk(fR6oIIO8u&|gdVVo^|0HQv4Z zdVA|dChVau6Gf^5>y~qR@WL~5 z24+%f_^muAo|Q4{q*m8%eJpwM2{#0b@k|b49fnns^5`|+z(|4LjY+<4Q$ppM|D3{O zcK>5t%5N`O2s=pC3fM{EV1Rc?R42;yOITZPIdqiY`hcx$FJ8{qjXy?T{*Sj}k2X_7 z8G;p_wlbFZHLYX2x&QH3JAR2w+BkRp_yxiGo=wkPSRogWR^=bBfHj$0B`q*`H-yca zD#r)?<`hBVxjijh>ABP_3S$~Rz5Ek1ycvhx=}>JH65l#RxlNBb^WM{dvHBCTK7_jZ zKAI=7|1L=Tx(y-##yYB#9l;*&FK=Gz4g?g@&EGv*7X*G4O8ifDu+iV0!KgZ$-;dz< zq{XD_IzyZO$6F;rHEKHh`Inh*>JILoQ)(82{(Rq`py5+-2v*65@I*(buFJM~=`VPO zQ(>$5lfl&8!N=5>=j7i=U|umUI7F@!vBj_z(#2tag7eK4?dHVbx!6 z)_9TcJ94$PQM@mexOMYzR{!kdVaq;3;WFh!U5jIX5fXU9>gK`xKxi?W@0!=gUwX07 zUzNrsGCOpRP>t#B*o!!eY&v(fdFbS(p_(EmC=4$9%hbq}rZrcn+95 zqN>2d8JYG_Ik8gT9w-%(|I5{vxZy7uFgd`me@9@huz}B4x{37JHWv{2zIZDWzE-?e zJ>|3t9G*1n*5AKaGFF09dKR+W_p_3w2Z}>EhdDz1f^TmpI;5SCY*n!|m#lRueQ0pe z!US2D023|62glVO&w$+daNVD4K6Y~HCz!`$SW(lPL4p6t0j2&(sUIHGUP|_cmZLqL zmgBCy*TSLcfCz5H$eg~h%?PTa8X!qnI>gkdKXjs!N2RU0+(UD!(iu~|DD1PV$!*iV zUA1a^qcMROk06|Tai}E1!zhJK`ks-cC8~Ly$f3X~&3*|n_?{BBL?r*100k!hLZRQw zW)q3%f?hWfrCd3p?1p`BB3OPG_0()aO1Zjx98+H7SpdstgTTJo&8G)8Rcxhd5`fn> zi@Qf6aM6h=6!jEU7&)FblHQE+d^IFtU$3Y~euOHP;xjjC_=7akf+6}6cAW*B*~$0S z9hPQ5Z#7JnluAp97>{^c0m~R(FuCNO^kH&p4=a=S`O(5ii;MDr(lZ=$NQ6MefMnQu z+h(s_$ql~ddoZRw(yk@)1-oFZT^$ypwmCM}52CXWn`JqZ%BWhuoExJ7{>*@78N^qw zCXxV5BIGUUc>c)%@ZmxE>hUcBF9kl8s0aD8DM6F>o8CqTNK;%ye$CoJZ8?JV_S;W} z@=rdC&;jox=7YCnBVM%mW+WMheN;@Al@Wf0Q?>xL z1^X$tbDnB?qh2>`2HPASCc|5zEYQU}^(4@tppn6x% z7ox5j?PIVFl1l@{hc_8_U~%hY@l?8nk&2?#;r6G!v4KuN9Xb$35GSIS1PRP<-M-v# zdSe?@%;Ndc9)xDxRdJUFe+>L^|FfoO)99KB=fr|0Oxz5u@Li48heCmCuFz*?~UtE2AX`m^5@32Dv7l3`C!- zjEvrL23EFe>%=_;45co`w*p@(^gtPMUR{&uEv5oiTEsH0ZG@0l&48xVUh9*av*p;^ zvjFiTE}3+lsLOk#@cxc%%rBdpxE*)i#G<@qAxlm21_tjB+yo+^Vg^b*hQaq?EJ*K? z4ZJ$!0?2W#9$rn27sETwFQ3Rcawd6yQ^E75_dtcTxDiF_&nyLq`ePR~&SaqdAA&v) zW#Fzdfch#M2Cm*FhP+0~ydW}QbL>p2yzzh_t(#1Vt(jZa?*`T8OJEP&@5Ez$D1xRI48{5u3{~5IaofF4*z@jGOqQkedoi(qt z6vR%9xrJN#m+yj|1Sp=w6KyvWURPh*GfDdK z6NL=IikgEa{jUZodfN!tz)J4-X*0ZM;s!S+TIvqZLX=-8nt*cI=1`God;uODype=w zP3S+m&vrefb9qv!K&h^xCy zew5)LSc=AVLC&wdjyzT)ttpL5=Q`<-k?-{>-J~_*tF#$iLAg|m9(>|Mv?~}VkbRi8 zynN2}!0exS1xxc3eGkM&5W{ka0huC=9PZ4)i)72=V`+p;c_)jY*x3x4TNqEnWmYt^ z00dXJek*6-k?{asg2+kna;KGl}^?H7hWzVU2VapbogQRUe++EM1I)Zr`&U<@!=I6<~|aE6|J?t zPR?*4Z773xh^ zFeFI|Uizt5@s+i<5g#S;DfQA$TA zJ`w2s;$U4d3IczbZz_08q*D9fbiPGN>#bTNQDf{LK9|^Q z|GWVH=KFLFW!eiRi_L9+AHM<>kJRqi<`a3YEe;};?1vBfK7Toa5vYUVt>|Tck`{4T z)J;}}j0qorz2f`R^1YjtrnQZ6E1xR2*R0~ZykBgA_P?4S#MFj1Lu)q3GIigR8k{*A zNx&ct{w7=;yfDDSZv!gUqcW$+G$?9@H~+TnX+=vV`0j-u4FSx}MtK4rVpS`tt6l{0 z@zfHfJ=8ruqo`rDdCF>WSs5Y9H|1|$jq9boo>Opt zE>bp2>YFj{wazDkkG|I`MtIZo3j2HOsf@01|MnB&poSWgnMei?m6~XhR4hd=^GFIS!VZ94F z)Wv+~^g!q0J&Q41a{-kaCvgGV{M2Gi$mg*(NdIKAg{k7S0S7TCMrE8Ozx=3-L;gZo z^7iwEvH1z!dGW`uXX9e;Wz1f;OXv6msPN@prE#FLzRr!HgY^dk+W6?<%EJ#saaM*< zAf_|OKKAXQ$A8%t5IGX7B(`id>QOR~r3ID=4o4z023P1FiD@Rgz*PZr<^Jmgl^EXe>OAW)ww>2?s zp~H-lk6YACMO9lXfw_GSvbmj_?;B#q^^{jLIgR@V70YBXO)u^~G<4ACGZ~cFczxN@Yiv5_m7JWSm4lm8yLPaNR3pj*uQnFRzK|&UwTof z3M2n4IV%iNc<&0{-`JrFnX95Y56IWz_?mpwzL6U-0aD_$@^E$}3I;8${edf1U=VXf zdSC+!m2(OzV80x=9g^YJ3j1n}@MD+XknJy{w9BFhS!E8hK`zHw-@p&CE z5Y9suh+gdFx+32%eR-y?eR}6ikn21(C zt+z^9pfLEw7ktuAG{jEuqUenNXnb?HUifnaHBo-D1gBQfu-WP7CNFq(JLWH((z7vS zBIZ{ORwWg{IU{|*yd~iLXnXZSX?>9W{rXeAVYesy+a1l-gp%~&NrKMfiLzEV0Ador zwf^MYEPM<2KPpaX28;3trS zB{VBWPp+*)7P`_iXbCYcBNdkSuQa0^_4b(-_D1yNV7v61EP(s4$>pgfVc`r>rHIZs zc>p^2_N)auL#M?$$91j9)F5CdjKxFVoH8DeH%cy{xxco<4HCo&tdn8+w*VEBd+jdd@9%lBZ58S#)8;l#9S4kGuP48q2P z`>pp~umEdZ894tU8896BcjVnq=srp$jrSIDlJeq-bj|)JP%IAWXCmZ=riT#xIf&iT zYmK-+bnVgG(6ieX^TU20{Ey!k8NqLX*n$OwJpY_+3`paS1}3)dO2yo6Zv>Ob}L$g1Lnrh8622Z}sD5eqbaHVn-!qc0(ED5LNF7m|P-H$0hM zt6Wb^Q!_z{w8#NEB)kJZLD0^}Zrit*46w$>A_8b&{{GXyhTc#GCLYvKZ&B2axABY< z&r4YYmw@x?;RI-Dpw4!rl{fzy31GtB+B`&uMy(MEy%rz1d5K#>O!W^mErk{T7{iKT zJ??ZDGq?roLzqFv!J94 zl}e_41K!k1hVdyK0Ck5p>tG+7)R z5se%4l7{TNiV3Yzlfudp1DEjVe@`(*YcB<0eA#92G)UYaDyJh5ng1JmMFpI20X=fN z$Y789d~GNSuG4W$_TS@6AAl6p{{s-}}hec)Sn^`3>OO2uaTb ze~ZG_WR%HGvHRt$EefQ$pw0GLs8qmBgJ`@Y6+)c4Gj0?PPd?zD^W^f}*X#C~> zSPVC81ArIIZ7-CS-8_`qoy^{wcCGvvwftp{zaAamjT4&_$AXzWBFNS+h}D0QE+ei( z=itZ@>u@JDq%S|of4t&Nc=Wh&mvdk>E})`QPA>*7$G62S+Xsr(;6+ zT^`fFaYkww{TKgXjE<;8Hr1b33@uO6KUHf=T8>W!K`M`_|5Z$6#*+XIvLaR3Kj}F; z6`?;PgX*|6B5<%%GxX$*8zl(Iy=(@vFlh%M=W;Aa; z0<2831Kjg!@F$;f5&S-xKVTo4;pJL5#{(&%l5RV_>7b&ftw4k1K1E9YTNpHT5M>^KFJS5U6p%4OYmgdN-KC z5Qmt-8OsJPSCF~zusL*pNBHsAiYcubQ2$TV=cA3qqUf({!?KHU({{`)_8^sPdUWBk zsMeH!c~^a%zp|TIW_-0IP>50S=5LxOYTF7pCj)iZm$tpefC`UA^$Hzhdik4F!)Ja9 z;T>KE>YVYQk(Z!jE`v=pvCioU5}wT|^M}vv;2Qj%KXv4I8 zDJ(ej3}zfxCO3G43mE`=e<=tj_()l69@DlXYy=;Lk&Y1yHkq|JF}wUNtw zL=UuhCK<4{glqz1*$Pr&hj@5VzzB z0q>=H>YzT@rn38crE!Dgh_x2)tGkm68k~`TudI`Q0xObOCl+=X2_ccTdKBzX5L_K-Glo6-l zZfQBU^;syg16r(Y1w48M@kYb-(8&t8FfE)c$4LStHvgFTjUN%0vgvhFG1{MvlU2L5 zFzGjW7`|LxRJOC>BbLc%ZzT`=+f0woLXX7`!8w3UPE^mhKA(~xI!*g|Zc+d)f^RL4 zG(ZanpR(_NT)vCCZj8ZSsCA_%hFW7Mtc#s0)_8mTj7-}K>RVDU_G*Z zq94!55w$9NUGXt~jUv2X`~i8JR73xkdq<9>2+}#jWCoo3e$-ioozR7eOJxoOZ-4YV zD1G-uvo7V$pI!-O$mxb`4ktZ=>~7{GlfLUxTb=J)QK2>&c9$n-6xZve*9)y0pmmMC zmai10L)0#w)*C^}=;8$<1miA1!)61L<1`n)*wNt&c3Ghhz28ZoPccW7FJ*;7qSrM9 zaZ5f=LL14WVjO$xJN8@u!+_oV1C)MTLP42QlwgAM0A$Y<+JyF-TLGnjLxM_n_YU-9 zEeV03AoT&CK_dMo9Mim~xPp6-3c~a#8trt$E!cNF<>#Ab<^ZFsq@W{Q%Jt9>Y22V+_ zlKXh{fbP*=?H?k|-r<({4m(ru= zuyZ8|!{RY+A z@@q+XLcoW$msjl~rG{L%KGpqNT%9^D$$th#85^*}xK!OK3y=Fn!V4ay&hsF@sievXNYZ_sY`aC)o!X(tGP z^D_O#F!-SOdE-2InvpY>DWdS@Kb+r3pryi><$)Ezt{_Fo&#)N0mahXa+sQqs0C>D?cOgZMJ~MK((UT6n&EA4=YsIiaok z!FQ}=6uUu63Kd`bq;u2nRBz4?~I{wIN?5>JQ!w)Ho*w>WAKe-G54 z!L%*yT6}hPXj!>kep2-EZx|=UNQa+l9PbW%ozH^SeP$BguTXj_k+f6ubVSua<{nmL zn;FF1q}gFRL{1a0^r27e5-#g)hm5e*he7`N>SE6V@PH$ER3XnRe0E!aK3!Qm|NT5m z9VT!n_pCm*IP)X%9bJMR*=bEy#I0KYV#Dr>zV&x=;+xjW1Hv&n-|iEz{$LO2%z<;= z-s8Kh8K6$YO(i4~PB7%%{@D#9(Vw@ee@7Uwpv+j(Se0HLFjLc(x^f}G-ShzKQuo(g zfRG>^zKlJ-64RN)yB|#7QvfYV6b?kmm{VXWx0qD_YCSWARVs%XiuGMZDD~<}yMXTi z8Yo}}$Kw+xBfarZhU7k{AglPw8=IHztWzPE5SdpjeKG^*$w@*FSfh`$Knia%U#$g- zzl(v`xx`rtpkM;wrO}SYxcCXs5{(_4yYsaI-SkEG9+c|=>(^q?Tr-5|={zU+NK)wA zzWtTs1Kz6nOW{O*Z=n0mgrSha5VSFnSxgWs&Q-+}s6P<-J?blSBj>lN6hIuenf{sI zUm+{gN&>(z)SZI47h3G|pO9ks3kY%DB)wggLV0fv`2f1~qYE)fWc;~E%g@6L2p(UG zdT6OyKfCkCSD(3UvF9VZo;|dJ_liB{hwm=o0X&Yx`IibEU8wC1ZwAt?NM@r$PF$Y- z3X)I0okI>5L?5-D(4$;~ce!_!~0dgQPAozo8 zJCSEB6%wz@pXmAT;L!L`p%j;1snEv)R2+2nbO+V=FKYOaC@2n2=1i$6C=LrNmB7Yv z9e&exZnao}rpf(+YNs84AdLf8H~ZVy8@f&XG;Myw@F>ups?D$e@DBtmdhh;6y!_=m zou;)lQ+9TCPfxMN6RS?L!4X^6LJ|!j;>VKpY2IB66&SqB{ax{l+p1_TvGKq0$sU47&2qjVnyEbqwZyR z!a6$&7@uJL(z>*gy`u|*M8cX0%--3BPhw(S3TE%_A}0y3X8Ok7+ePPFiqg&g_?ABU zB}cB_dfIhG?nDkS2Dy+dRje!x&K8jh001b$Am#fydVhC=O-vjHE2A}rwUnA__T+Wh zn+b}E!LnXxA=9n6R#?dQUI_N#+3YGS@}ldoGx}Ndmx6-21;crg zlW-vQe0m}Y8dZ(Zy~}KD&peQR)$UDN^YWLBjHv2ru3wGLsIOnY&a1%e>g=TC;nA$w zvv+dh`kxzNX~6p4BqEZVXMJkQ#3UwCiid7`YBgG8iI47a!9{c+VO!*mNBSih9|QuO z`rLCq+fkmV*rn8)+EC55@_X6m_L*IhN+SrSMxlK$y5;vN^|AiJAT2E|z1I=Ssq`_u zW88IoJyP=qYes0FkSexV{4Z|hal12|!3#yO&%G`|LAV08C4>wK32T&Rsr0bzw>4f= zV8WLcY6?AT__C?<5=o!j94%H>BP)ypOhrxomgX}#3}eAgC)Zqm_kx*$L9XWKeq8(L zHz9yQ`)x8b1588ULV!x0p`Ux5HfIM4!bQl6oPy0D;w_#j>;g9n#%!Y{j@{9LB#XU9 z+-N{=w;PSB3j0iqEREbNA%Ry`efYt!Hx$NfJA%XG%Mty5NLj-s&_(lS;z7UN+d13M zvblW(kusl?a?8WRPGP-I@}TW7!cATF?CNI=0C`zk?El?wEEP-pXkf7*iBI%OG3Fn) z%CY_?#YjaWzB2@jVnU3ek(4;SNsr2+PR>0FMIrL@V9BX8BrKOvy-1B__FmfwufPxc zG+8powiL<+X)J7=0SA(6~sg>{K8zmH`rKd%2xRcS~g{wA{MhPB@msV5X)43M8CnDn_7%}3O}7N6ghac z%1&xs0Gc@}$={NQO65fPE=%TrOoNF7s=MJEMX`CC_X~{p&vss(G121BLo_Z>U@YCo zPPUt<&9V8XhI@^y5oI+0q3w=dyh{Z<5{J~#SS~O_{tzaG$ctx|lmx8f8`0k2d{!yZ zD(OqFJLg}_EL|OG2x({-o$<%qWpHe#qy$Ub0|pjr>(5A#ad*~>FP2sXo~T_wmoQGC zD5&p@LV2YLg&j-+VPo+G%hH(Oz$}7_J7Fs5Y5nn%{J> zBktYbl0_dIA-%?}J6gF5j|!=yk*85I_`Jey$>?)w$AurHFa5y0|` ze7YWTBK5drj_LEp%$KU@>W&;>vv5yQ z(#~4o@%x#m8*6}*(72;p{mmkjx7!xFRnN8heolN~L~+WF4|z?rg2SWzfZ*zSo4i8n z*(5c&qXDdojwONAvJ}piREqDAeT6f`fyA2p1uiSaNT6ZvH7->sM zT)vxEHK6Lm|AZyCRWb_kA}%*ipc`4PeM)G)$Fwp@vP|$}rq=10k$n2Iaa&uZV`8g3 z!7$0;$-G2kwl+K?V1`?2xMF=-!O~RwUU;$D20z&O0}^8%dYbUO%%Z)I6<1Fx;KF3W z*r_6+(AE^Wz(oR^%a?{YAq7xM>KTE-SvquWggFWO1h0gGLIj%}BC7e3D&~@^_x%*X z&Y$^iO+qC( z=pN(K_z-XkfFW;4!mtzda^=glqmlxf56KUFbS7q_wNdO2I1I|X)v10GAIS#{#UE`t z$Ry^jXlca3)t~EUW98YG72Pb<$Xp3 zoWC?KcpV?3hfm^r*6#(kPFw=N>cRt(X1{757=lmWTo(iih0_{@to53fTKidEYT3?> zxknmqL}Lo;8Ce>m(_grDaDD}EOKsmz3tB*DIW$1NU$K|KF+hm8%; zY}+XRioCBc+Q)-Zxs8Fm6J+Kc-7Uw&PvZ|Zh>YWo(H_A+L*##&_Kk`dI;^PZVqZ4b zz#XtC5d@kqo%$mq3HYGWch#^@LHi;vQEix?8y%tVJ5I83DRWn=S`G-d zto&KM&*FDBjwh*Y_TB-wDZ+E8)=*$-A$tSoJ|)-%Pf<3&zz%k>zYH02bG3vVwyFO1 zSByWPa-R%&1-*#VFjvbvJtr!RK7OOyN6B}pebb~eYj^jNGVIuvif1cI!R=oYAO`r1 zq@|f(8D66<)scVQyjR@4t|iN`Isk z_)gKiFIm>UuX!zb<`4U-uGU*gF?HjsH6e&`{{<`+#=`!brA9Xj#!Qzmyz;`K2xx9*YVQkF$BGoEM;Z< zfw?o!vmG9^9XbYxMcJVKr^zgUC6EoQzOsI3rr*`^3i*MC?~5_7&-B9uim%t((^VF_ z<(89y+cNK?8!vJv$u>dS;IBK)FFW&qJ2UQs{ghp=@s}Fmh5><%jKkJwRjiAtV9U288Li(F41L(PHxrr>nS3sW+yk}w+4OX3&x&K#17wVjSeu$3-{QcZk*OI z9x!z|4rA^~BT@&KT+1<8xS9{c7(BCL-^{Z9vmK{c=*L-_wzz&FwiR zL)D3k?8>fXjQhgnSQaAdza&HsK<#et5^zaH^guKQnX6jlE9ETJ6Zi+-0;DnOulW1mV$@Kv=r z@NGgKbHh<#Uj6i@#w1yWx#Y6k`+87(@EL{R;+2YLOy0E@$#XiV?h|rD;CYlUc(q$= zq_{hi&rLpttHUG$t8(+%_|M_B zGMQ~Sh~@UvidV)Bjh`D?XuSP$iQJB^V)-t=TEqBby(f)4qyctIU|LyWc~Fp65=g`A zT)EmB#y+b%Ldk&}i5M25SDytqJUD(S%(sVm`Jf~pGR|9=_XTl^%1g1kVAe_8soZ4o za3~z!Gh|r(naCn@=2g^PTF-+=rm)Z@=aZaB_q~jVAfG|m=5upXnrqwDk%i?wk$9iD z9F{I_3En*)qBDuYGb4UmY1R8MKQ{L;I(&)CO6FUpAoWbqiOyom4bp@M0i^wNe7jvC zwD~5ScWv$c-uq|Jegod?A$t)FpN(hH3(*qX-Ew_Ufpc8FjFRZdE}M?=(&uh59tbOq z+Fu6^rN4=bs(cJIk-pSM0mINdQQU7d-!Y}Y1mhUi3r(^=outNrd28R7rE#t-nO)Q2 z=YEJ9mO3P;wIghips9El;pEc3=}o((FyAKn+VrRnAA*QG*r7&zfn_mEC`zVTM|qp5 z`L3n)MUjBJ+=A`)HaiT!RZySX>7pJmF{CEr9GMHgGC1yV9%O$lwwbf(_sOcgS^?4+ zzskLsscU-F?IYoMVmy@_rxe5E05_9z-XT8U;W5)*XR5%I>~OkH`y;t%6LfotYVU?ti_Oehpt{7 z9z1K6H#MG~bXmHI(yX+ddg9D1uoALp@g8NgQ~3a~v;S%6WFXivcQa`EEtP3ut_{#K zTr~JB32@zF_`U+!Ame(wq$0ClKbrb73q&L`_e!<)jp}4jE^DRli*0lR)LNX0-XpT3 zOlQ}I)}h73d|Mz0N}{VetO{Jhdk+*A-;_0fl~EPg+}td8_QmjNGJ-0FewhiWlaxUJ0X?hZvFj^lDiuk}fa9eQ__{IV-r2y>I`GHd0)e!7TGmR!^1 zf#a!zu z(dEQ8u?Y)Fv41sl*qVVV^#$k>6!<-kM}?oe%SHksTSd0~Hqz$~_lK>pI`O>|nx$z* zWrI()Stn%b)>oXRWG)K_(1iEmUaf#yFL$DekP1HwGLWIYi=*dN`f4+v7Dn> z?&gd9fVU=;mN|wUR!5L9Fu(j_CFCPSE6=&}KsVX`l^Jl41f4z-MC)>YwW5BWvY0ob zWe9e-yko+D0Gx%kOJbhOSxjeNs{Ud2I9Gn0j%(KsVtQ7iW(xX5*x;a=y!~zSB0$dO zoFd=00(%S8VpED$UUhMSJA5Vf;Z<;t{I>)Fv}yLVctd6u<9A4@+`<0%+tYjpOpNIt z;olF)uu6Fqp zaTNW?3M5|Wl}m}*r@O1Z{WXb){vv_`QnvfCIf+bj^R ze$+iAH=c|jY{9Tv^5&?(v;t++bA1J3 z;aOuE19BEd@*dD#uFElnbqp^N^)Kp{lst-R;@@z7WpG0R%c9uvs}Mhudx9g^5oK&0 zu48dx#pe*XR;cb`VA^eLz$T*6xEvB-YH7>rO;N*5mjHv5(=bRWd^SEgyjCv5=VPry zkZFw-yd$^W7;}mk#$p7#Sto3yL20l)?!J@Uy$0i^U_KCt@5lsOp0yp#0?1U|2e0=6@17SetI zZk3$GQPw=EA%sO!00KstqZ;ZdZ0zU(&(Z~y7#9!x`HzdCDp>>C3^?KT<$vaPy zqU)%izen$iGQ;tn&RJ+%aB(6k9e0c774ZyX&bogn$ zSP0sOfD9*(VSNs>3vRIz_8YtK5@j>9as};M7rE$e$bch~N5yL$??$*0aS4G9HoDe( zlooB00=#k);1+3O0JVwkcgTS?^yoyevt~RS)d#u3|5Wee0F(^6I`3jf)~w9<@N3Vo zqx}0rWhw!Fod*)>U@95`co)Gx~e* z)VI0yZyjAZT2&sE>N6%iAI?56dHwHXO!X}&i?=i~1(+NBWmEVhnBjbWZJhAxgCie6 zyVwQwcfmt=3gCL@w)&C7YX*e>Q8H0JSh_%3@3RwqkdXP@6IBz>u-p-56VkxQK$a#%zrNJ4ofZfKbYH2jXLSm&C`SyZ`R1Wska4N!3=-D3H8i8OnJR{nb z3vO2=dn&-)JrVmbj9;&HCVvLRNbmCeo_N3oWn;gyZ1+c{zOCEdu((0j+kx93@KN~d z?|9sv+A1S;RoCgskslw!6qmhafBMCFf*hB{9r^9VJ%|M^V0HcTg;Dt;`R5^&9Su5| z2|rGNEl;;G-w$TO4SDAv)o4i5)z)=jTEcsdS(^bk4CVzW#Y#x~(OXyu;g0NNfns2_ zhh&Aif0I9dvMFT2ah^~*PVF8kn-_~hFvd^sB6#mL3_tYC@oS_bBZNl?iC%8A(w4Z3psQS@gE9;@%6aqmzMO(Z8LIFAT30g}`pm zx)xSKmC}DxZdY*8;lJ%YEa5mFos)xW#}FIuF-F-7kAIng_XojSTuZ0GUvxjWF#h5SGQ4Qs&xUD`2dQmQWc-oMp&R*;UX&R6q}1< z>K0_gr&q7=LVh+7k=igB?=1U?{ZvjEKr*|)Vl_EWHj3EaN3jaeAUvWt66!OeOTaNi zxXwzIlE3v*s0k@U$pUG7fsm{$IEUoK<4mA8Emloq_pFRQoCLpayy;FPb*3N*ewAf$ z$sF}z-dgmUT5sDs()+g8=<}W?wE=#(tmGl<-N?i=MnXcZoy!hF@ld_xA>`^?uW7Of)z z{^_XXVH&4l;FpttaOpBO`BKKp)x_TC)DA&o4s*Er1I{@Q`PA@#DR5l87rW!sUpjG< zkFV-pY5o@M4s5pJB74rwC;y|@4Y{TB^RNf#bY63c;~wXgu;Z?Fd59mz3+u-r33Dxg z`GZ9SKda1hOXMzloDdigz+ffI5e*XY$DO#wDvz4_nxIN`)b{&6G%`5?3ah9$Z`sro zvHwPmV2JZdH{7boqmVE&W=bl1pyFIljjgpQwlW+@I2FeL6+UlhJ(dcm^v&rK?|NhjKYT`3F~?TohE!n@vIaNua!llJ9_`jJ29_DrQ3c(K|l{)GYY zk?ljbnRwx##`s%Ml~+ObuAYu+tAo}*xr*T5g4jKg*#WvYvlsXWhS}kjB3#l7K-ER( z-L!=^ZbatMaav}HvLzP_gY@{Li}{uFFYJpeU3U!lqdcH0MX8q)O`xPM_a8-aPUR!v zrGuvZ(>-lN-Y;t!(*q+u)?&TjS_1zDQq>f(?)+n-qu-<^_Wc`DhsF)+>Frh3*XL;4 z!iFI1YfpFe{C)2u>+yf?y;6}G9a9}k_?WZZcq^L2m1)o_{lc{!@vlFc;YyL5jM(gKSffz$t%?0VeO z_IPjq#_h`g`6Ge2(VXI;0=s8+H#wl{(+D`5Z-0CdK_lh65yYI z%#mbf8IsuJQ6A2G3)30F;9eYD+<|s4i1EX~?L|*GD!)G~T`K`ne(YaZ?@l^9O!8-@ z8i+8j9KZFb^lg%L9#KPeM|M{4sv9;dIX8U_Cj-mA%wyVfT1?Y!Az9kOYymxP&o!9>wS|eudW%CMG9`7v(h86=Q-*o*E z5HVk_4-UuB$i(k7TNUmxP3Io0W-jp}-|4@1WBDj+;qw<_TviTCsU0GDNP=n3DO?Nx zeWR^8(AN|2+WKKab)x_a0ilm!_8l6u#V>wk@{WPEIWDS&GC!|03s{sH$t{i>Q*h01 z*}nJ8^NOII3sm(#F@)C4Um{-G3)@3)Cd8h0fL{9w_w(TZI11x+6+JJnda;7s_~Z@M z2){Oq!GCCuWxgWMEAfOUk5us z@+6A*y-vQoH!(5cby|6LdAywPn=JtIX8+9=czn2mNswA_7n&UVVO8Bg-shI~i_M_- zupnhUU}t}f2tx}dzad|l?-c3O3+Oa&5_=_JFX+Qn{!+e3D57E%k-`uxLg^XyX`C!2 z9&nNabr>d^Re^wU1|$TuX237bL0fBFMdH4mJ^x5}KN##gyZgfh^vjPIjdl+;;CZb= z>x%lfD}5-TjP@LUO}2w+1h?}nAG9Q2-8S=eOP7W<_?x+rzC~ZHkW*U?aaH?F5P{RR+;E<}@+k-eD5E4>X`vVZicSyda z{#k#S6WOQVokU}T_E)*2;$K7oS!hbx{_o^Z{Exq>13B@q+~Xha0bT5auNx}$N*6TlSs3N17(`vLtp>$)z95C_b zkeL9(CW0RYQ-Qx6U#S--^!o3iSN8lb`1~zsu;77c zQw@_w9HveA@)5ga`z^{{_$vOZOP^Pn21ORebdhHBnMx%9(-+}Uz&`MJO?}V(j!C0s z*_+#rH-ogmnA;xqzc>}NYUo&h@ZpcZBBTGnzhU5dAE$c16Msq9%lq z@|Qgiyjb9`PwzlF|7tAo;;!fe+={VQOj|^bL`P~nc4BJSZU>%9^CO{vT0?@+_S|!V zTziI_tQaP}{?!hQsu~b`WRbr_z4r|hb6a7Tg4$Hne`^z6^`yaaezKHAJ6`~eQhyN@ z{XT(dyhBe!uUttLOcxb$C?5KTlQVRGU4eEanH!X*qiYiIi(QYCZt7UB?oNEHk2F;? zHyx-+I6b{(eXEEx?$vLTu5)_+V`dnilC3T1-O(NG`W9VSxka!Vlk;dMY#BjI(&*aH&>^@sk0#{LX)rK)du6Hb1wh8>lz6TgpM%_S(zR!1VF>Mc zauuL^Cp9NByOOEZ?^+-w%s_f=id`YQUSXdX)<^NFN&{xNK(?#BnsZSndx$ZF0pL8e z3uhQvcv{r~Ev*|gqf>#DAdw>5>0*)e#^}F|4`yQWJM?A=a37o zKwYqmx)r2%WCQ)aH#6MDu3L|N4CbWr^OqtsgMm5&VYkt2kI6Mg<=eWZTQgJZ7jM;} zW_sUvb|zY%9~iW)1Ty6}#N+DW4q@TO7~sOTVv~b0KnhE{uZ6b;Ghnrqhawmh1`PA` zly80tkhD;ethqV@~5~I`$7tch#VnT%JJ13i4hPJ(%d2g}K>J-rNDPEf zl5%M;QTkRcnQafX7e+DqP0fzk!Sh{_8FOYlI(Y8ki zigYM7Y0(H)PZgMZ&+!Y^7UVR@%}ob(i6D(7;oMyjG&1z@rNiLCxks+O4;>K$ch#?0 zGW!mDW-ejEP@>#72B*Ef6@sf?8W|bEs&gvQi}<8frYG%r^5Mpez;MJ$diyqo9`4+u zwbv={o7lJA5#}F=^YB?=0sq;5%=jhq89KZ2W6%n0VWU8D&zP7~cKYY^p%TuUi6^2G zEs+%{uSb z!Sy9=Nq6SOyB5}0;Celc;N`(CwJ=5{`+cBnC(Np)^3K5)#_9q%Arg}_uOauBUf&Ya+>U}T zdLMVRyPiilLf@4rsBQkojIYwb1!DEdcZY?)8T7H=AtH`x`E7xI1KW4A?2^b*y^hZH z&9pl^2~MR~T$lJZ!zF0;#A77WuTj#bHN{IcOlMnPmPw#G9znp}*(HdV5qrJ-8SaE)9DjsFr+d7L(I&w+=9$}zxggOqwPlT(biUbU8xpKj2WXZmCQHf;=ckyS-uRSoNcD(RTYh1}>1xrEgy9-TC4Lw93)<=r(|y z=7~?MwyoGNy|4`XKPDPm7(mA#37fQ>_5?6Up+6A=P1QmIJtqU~fb+xN&E&b0$5HVP ziYIqA?)MgKm^x^4DyGslv6+7<6BP`)KaUbv^VpJBEwf0fJ}QD=F9pwoOW}r&L`;m< z4Dj$Rsqbf$N|wf6g4!o-!Dn$2#>(=|33EVr*5#0je_So7GCe<|qA~ ze~jS&9&B%m8$HZ|8vbT{6c<0h!zh`urt=^(nbJhMMj9%k-%Iv?-LL%~y|G!YI*sFV5xiz%}xjkF)->rn))z%t8P}GP1Gm#)y&~|o~VWwbsiEI zHHRle?C{#rL@MCJN0O8(f}aMXXq7lR>6ZHG7F2Xm8@_-y{ArzW$@hM2e*}xMsTPcC zhwZ=Jsq`P-PvDtdISEWsHsr=+{wo-6)=o(_=Y7)Osm%TQ&<>|_HzFb-`vHjxrX8nc zw25W@eP?CS0oBoO<<{~$*%kf@3V|AM8vi@8y=n=fAv&DIGD{#dIgYyBIUtS6e<)b_ zw}@04N4}&Vyf!||2eXu@{fMK(4+}O+J`WjM+wtRdx4+_|zKMv7=wM&|J05L8SO`D7 zf4UrnZ!KFNK3BNn6XH}{JKcpDwq}D-4QD&t_?7y(Awd>lmxppl$W+1b*3V5m&}3!B zzX#2R(bm60M&1?5^Ov#bj(J{ZCR)L5jP$xYXOuR3g7Xvj2KrFu(4lwLS&Tr|1W>)o zqSS2KD}T_EyC^=wpGtU)o)>*AqYi}~3w13Yj|oXXa%^%5p3Wk{cTPm@!zu~0>hHxE z?t6+HYNz@!V#|-=(wf5#tMQJei(SCC_(!T{V?3XuihdhS_DP6#VS#2ZUfN%f1#M5T z**=QoF`i-HGnc=p3lzjj*M`+Sz`EEepVdeYqC`{fqf3z{06DBJ1%jd!x79hW9sN~y zFKJUYdykf)c^%H^7P``dTy6xke;t;0p^L|{zH<+hJ1qQU`ZN`BYdC&?^Ao$U{no#| zIjL#hzj^ZOzqRsIQ#Erg^3%V!F^BxD`aM_;*39tyt_ecynCnKMPTDZ^lJHzN}72-lFb*_nK`x1udBU{aJQRn z6(obWHr5|uZ12Z7+I9o0iF9~>b|h>b_CS^(^8WPcOP{at$e74;`e~Dc8p_o`G_oj} z$5Z5XvQ`pGm9eF8z4=Mk2OpcK+@HM%Vo&h7NqUxDTt`&xVNp`9ky}_JbX2BeWCbnK zuJKzrIG{hCtUCgK|M%CZRs$p}U`hagCP`-Z()~8C7F>|E(ozDfc3Rh;C&%!w{w!f6 zRUzPclqOkGu3f!0UL+6ujnvj#uQB~RJ_%PD0+6)>Y%u(BRDHQUm)8Xjy1G1$6wliU zBop%a#pDFvD3_%tBX~1XK6i z2|Dc`9vvX+{6GfZg&+Repvw8F#a?XMl=7M_kWfm^%X#620vTaM9{|B&Trdmon8mn| zwgVZOehw-Nz;)TH{g{{=?@rz_+fGN~c+*c^`2p2&J}54(oP)>mT|41d<2V{kpw6C} zHYHmIlU@08Uuy=}tV(X>NYRD862M_8ti6$J!_yv;lHI~En;h9=aKkX)fgt7E$h*y8 zlHK)mgJ&#ZiPRqI&u-#@f}+3nUzEViEZVy*bs~x`tIG;K=D&L$4+{#%@OqE z^Oo?#;!wsN+wB81JrL`(;%G)cdi``Uo~Uq6ZE>PCTYwZJ*#;wU&!#*sQ7d8_FbQna zFru(*wp`rWXI7t0GoY!=`boxmKj|^%aF#i={jhc*vUIs?Wn}3;vi2PU{45QXKSFg~ zc22z#qU0IOOb8ug>ruMy({a8_y|}&4nvsFZhk^L_t5iExwF}5v6uc|?yhx#O*rVR2 zSS{1eYrB$n6*e372_hFbuDL|!%`Sq_Yq;%$G19KJnzGqTwBzFA?R zwA)jQ%L-tpOMKJhHWckKe9PAQh%@vldAThtJx^V2k?W|7WJ@rI^cKbJ+rUIItS{YC z8W6Gx^Aciwu{B^NiT7*)8}O=xyJwO*)yre<^M^L}c&fJEWyMqqlqqYx>Fk|dNO|>o z5%cFy3L*hZ=AUH8&l65_q8J&1A6DLjBW*}?PS@E@9@PrjYP)AVU$k2l<^Q_&(0Iot z;}=W$+RM8~zz<~$z!qjOROfbX9`+hSE%+TZKyD!I6V@}wE|uYOHcv*QuY(+<-OqDQ zyj;;B?Q$1CPI4kNBbiotKZY>oeByANa0^3-kBm$e$=9lsnsXL9JYpVJL<(t|(M!W3 zi!V&_(`aGreLpqoMyohAzp@*AD*T9~Y!v5`Vs&-sdf@#M+i>Eey9RW7_VsYgNq+@7 zzSFN+tBk|d5m`Nw;AfPWvF9g}qW7luk0;&pD?cDXIt2T{J3TlW{yOnx1)C*;wdf0& zsd@Ju$x-L%Jz1^PpWC&=)j-ZoQp)gOSMqaN<@d%yKQXSP@;lHj&G1VOWL>*D$)J6;Fs=GgJn4S0O%Y^X*3O_F zz)w(_6D_AMj)k?85cSLR<~FZV-a-IYE!FJ>#Mhf<<1jpplP0KAX!@c%d_7!8Sm>Et z(NO*UdZNGN8#V?+*NFlSXBYMt_S_1~S)qr_OCET55E|-9R7abAkkt=KT73C^HJ<&s znFd2BdXtICzDI{pCdjFlXN{@!aA~HlIG0H%4leQS1B=2^YuwFYn;I4_URYsSrBidM zUSRKS8^uGvm8TAX@@_yyP;M=RwGgShm$7h%^wXX%Xu_ zh#qN_W!t1FqLj?^9r5@0&h*;X#E!KeiLh~Nr2V@@g6nkZncGOrwj%+YSJo7r-prYW z0H4r#U2Pn{?gYQ{JaMCCi6Sknbrm8qiWaG1r(GAwO@a{}+FP^jd?vKX)Rf-;;ZCd5GH_@g{DtT}amFpQ(DeEM~9C2husha-FQW}<#TcrMV6 zBwx_36TbYDmSL0|Y~sKZMtQ!kAqkq!|~$ixD_15okb=FZMArmF8~D z&TpoRLdlAq^vB@2$s8CPthKNYd#KlfoT}j+Gs&>@UHs^re;DGJ6Tq;OG|C>F;#Ln% zQ+M>-+HZuGwAYJzDH}z_9ovy|RJQj_i)&=(2_AK!H|TasuHHI%$w17c*0pApwLs`d zK)p*dIvp-3>grs}tVaoaktXs9vfQ`5C4}z=gkOIzmE{S9Bl!Fu8r&V9zh7qSX@t{L ztr{tfj+a8ZiWS>hMd98q6Il$q!G4sjs+1hD0kFuQMzZ+BmDTeBbdBJPnXRg1>#t43!wE{a=qnLc53h~(g7>-3oX$Ba5o&(H zVFH|WYKLc9gG3Yzy6Z&IZ;@(N;Y$QFSPqnEk|HF$kTq1u`{5+e2?nz@5$2LqhTio7bBv8XCj?vX=1L z)WwjoEZS_P%U+0Nbkjr(Ov~(BP0+AVOv7$LL$df8@DQcCEpt1Opi_9>X zv6B;I_-pFs1#>!1tTzkS=&z&O*fdItsHRMh=E-%j`5&{I{e0TMo+Q2~j0@?N*tzf4 zELNlq850=xY%$@=;wbNhnftefv94JR;?w}=*`M(9{~1EbwQzdrMEYX%Rq-jk0rmn1 zzA3MIm`3Yn4L)e>2N#Y3iR8j~Brc)by%NL>RsGHwqPkI#EK(9|4SYI&S z_33KcR=AJ2ViC1G3pX|3H;VGiAF)gD-CJRZkvJK@D4Dv)pKrAq8aA_IW`feA5X0UV#LoKwjnzs&+Fty>>Tb%u{Keq(Mr+0t^ ze^)pY^V3Auf?`Tvmyv0Bw#Y3ggC46qkM6y*_*@|fC{6Q^8>g$c$jkxMo5VJCBiKFg zfJQki;yy6eyc6k*VWxwewSjox8``9rk=B~A2XSUo*2qnP*aN8?HGVl+XB1YSpBnM{ zFZo#5GHLc89OF^91FX=Qk~S`-%b|-Jh^sbhszg3KCVjW*XU6y`&0{_1RtQ$kuK>z7 zV03432o`%Y*4yX{+|a4G)Byw>{=9SkI_E9<%dd?mye%xum4=R5mrjPA){zYT^G(#4 zJuoOo3Fqsq*ZVa*O5Xvt?(zKqXX;^5;bh3e)`Z)%U-<0nGfsH655I6&nT&j-`+#p~ zj5^rrefQ{nrk5Iwq>;4lC6hUFYWK+;anhvYEgwx3%t;R2EV6oVdwrHs6)M(3rko%; zXo20v-!yNn%VEKQ=l$Mj_RFp5Qt1r>&$S)^wg+l4$+=476^g_14SrSjL0AVbAs?SN zL*+tbe3@d&?Mj5a@R4=Lc;U{=dNQTn&tGUa+*%-9Q_v8jMHdbIl%BHn)lZ*;ZHocn zs=|VLT}V8@s=R6s0AzBd@CWa4xQmJfz*qWrR{ zL&L~M!-yJp1D7;-USlASNfR1|Ws|Y?XD*l$xL164f46O>T{QD@A>8h{^rRqmxq=Psx07J zqnUlXDgnX)FWSiHH)#me_04&i7}R&)_3mc# z%!@4h>)V{bGt#Rikr>melWp;1o*2;qYF1KQqO~Y9qs+ z@o_M^D^*ZHmHqZr-e)mce;BpFMAhmOr--M&G;>Db+~L~;c+ByL%LF~%8D4;P=8dIu z1P_kq2`*OLb`uRJAClarO%%GK=p~21LXh?}Ei8rbS8yT~r7fT|rz&6lEU+H#B2tZ` z&y&9vI_)afVu$;)G2GZhCe+oime0o`(#9WFzugYQeB@G04N!nR-K#q@&4JmiDj(~< ztBWvh6_GJb(c}gI9{`=d-+l|uP$!{3t1;JwPocEl+PqPch9p`pb>>vMk0H$KdU~*| z^?s%H4`eY)sKzrvzDq#J?r4OPC`5rtpE`Do@t$IwH8!zzF{9BM2CsAc7uL zz>hg;-?YxsX#^bBA5H>37X!23N$FM7oWw}|$*JPerj>~XoL|`S&nZO-jQY_k++eQ1 z_((-@dJDX-w9p+g0dN*2+be8l?DrVKt^1pcz6cXtL?v}8y2dtp_tUuAjU&;PNJfbs z5s-^YvHE+iO-RVqt{-T0MT4OUVn;T6an?YxeA&lJt^*xJhHwKZrv@(OM$ zHF;A|(~`n0aTF_zH{U>uN-j!{Y~~(`mCTvyJw{!$stZ|*`1jhBp?&KBjO#k3D#1&L zpt0#ByM%o*0&7l0Q)WU_n!0Jlg;m6DX3ldTigzN}A91RJ;OX}tLODi(Se4T4*Iz#+ zlE4Xf_>;oYkWZ&KghqnASHj(o(SG*JGvNzYN2{aB60@o*@%}SMAg|krm8;HcGEYZ? zo>fRCgRNlrLT=kYKYE)(Bh&5kZ2GqxT(rbDGy3cEdRwnv36sa~tMLMGzJ{4L7N7ul zbjRx15Y#1#O{YLw?=%!-t}{&C{Pgny{HCWzyWI6tbkwvol;jSB+!H7=VtDtTI9Hp? zmIB8s0Q~j0?lzftPsBRQQ;@@|g~W8Cs3yG(u1ptm@B({X4H3G=lQM~_XAMy@q1yt5 z(*cY0MUj@4gT#Y#1(s>f|u z0OtmR=y{+|#(M3D7=U%fYT_f_obrF|s>qAWW*19mwp4m=NZz?m<=q_c(;^_QA0kF_ zKkb=RD~Nv7M#A;ruWst@EJlitVVM^Ma8$FIQWz}p5=_=Dzq*K<^n?8J3e$lEr7x~_;!yP_BQb@D}fTa|G{H08lIL_1sTkg|H2cB zAP+r|i>1bnp$TIMIE&8RGV^~m^+YTbry3EE5gW$S!Qx^>Y(ac3R-ZdR2yrRo@GzG- zz30+)P<~+8`b;D*{OGs?jlTEE9lIhkXwGNfP42?(agSEnApE|j;h5IP1d*p8Iw^+= zhyG5@-Y+-?-X&kJO@BBjV-lv>w7-dR01{Hj4v%<4 z!{CFcHg8)akLp;K6)ZPLHxH>)Sa1WIjL4AhSf?Q@48E|M&zW7)jKX*A#U|Q`461?c zi|qQ3fvE!1mxjVHfmnU*DA-OIr%=&N3=zY9Y!V?eiTP4MdjpCF47^u{A7@U+< ziiCL)X%s{mVrog;laCmxrDnB{76WTz^|wc==paoukWzG^2Xr>1&fU>Aq!s zKw9t)vSCzpZJnd_7-E)EBEz30YXO!|8zBZ9{UEdLl%%gF`Qgz(v1tKJ!#hAY$;r=+<%dNtq$=CLr0aCjVJG4~tWuJM zH!(5&7#*yV8H4DAA=ubCd(kGH&6s{z)2QGd7}|Fbx@(=@pCkepWU~ja;=V;b%{&`B zu{pjlcXvN`Eh={Y;;hRvgIPxkvnu8ND8xfF=DoS&wAF%L*V_X+=*YQyf_dC{cHFJf zE5{o5;6IIiye_wdlv1sFcJ4vKUa-DDjk{q$D^R>bnva^0&RGK^8rfeI+dU$GEB+rSC~Lp&*YC?Ugqy@sXU(~} zU)LUbds}kbT(Wi~PWe-75)UOwCCL|4Ii<^JU^*=HxiO)+Xu)AX(t z$+}A4p@HSpLa!JF8oo9GBS~GQ1!G2U_p9Ma0Ao48M6;G$py~ZjWZY^oK^Mdhd`Byfr zB}f}1bIw!AdVR!@vt4C~dkc1<#v%C0!(Xqt>K8CFVL7B?) ztLh%W%eS~RiMQQKGtI)aSA#yZh;*js{Z-D&e?iXb5>yZc( z(Zs}}-rpBS@jmn@N1tf_jIbfKWpzpHaI=*qM5&;+tU&Ue|5m3iKaR}qY2!^y7GN8m zN=Kt4z@aLNQ9M&8ou-U6P({oqk`u8U<3pmtx8^SJ7;L{phb`WY0a=Ut#4V`wZGwdR zzW!4K*%&vC@?gv|DZoFwVIo6GX-H&IC}k<8ad2Jw%Dndh53ollA%E@BcaUHKC_I`|Im}PKB>6M92sIx#C}^#7_ae zbfUk1s s(OFJ7l|3&C05u+)5cfys#ett*YQG9iiZi=Ne+GNWNhwKIi5rLfKS|j42><{9 literal 0 HcmV?d00001 diff --git a/docs/screenshots/session-selector.png b/docs/screenshots/session-selector.png new file mode 100644 index 0000000000000000000000000000000000000000..54b233bd5a7f853a6217efbdd81fbc9411121ea7 GIT binary patch literal 291856 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

?UU8zmL5@@WE6{FltYhQ3nsLo$E* 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 z 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 eKOHw9e6ew_muJauN!A **Note on `/clear`:** The `/clear` command clears Claude's context within the current session — after that, the previous conversation context is permanently gone and cannot be resumed. To pause your current work and switch to another task temporarily, use **Save & Switch → New session** instead. The original session will remain intact and can be resumed later. **When to use what:**