From 72bbb824aad992307d0226722d490e0fa17a3a3b Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 11:11:24 +0800 Subject: [PATCH 01/13] feat: add SSH ops panel to sidebar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extend the in-session terminal bridge to spawn commands directly (e.g. ssh user@host), parse ~/.ssh/config for a host list, and add a sidebar entry ('运维') that opens a multi-session SSH ops panel with quick-connect input and xterm rendering. --- apps/app/src/app/lib/desktop.ts | 15 +- apps/app/src/i18n/locales/en.ts | 7 +- apps/app/src/i18n/locales/zh.ts | 5 +- .../domains/session/chat/session-page.tsx | 16 +- .../domains/session/sidebar/app-sidebar.tsx | 16 +- .../domains/session/terminal/ops-panel.tsx | 382 ++++++++++++++++++ apps/desktop/electron/main.mjs | 62 ++- apps/desktop/electron/preload.mjs | 3 + 8 files changed, 488 insertions(+), 18 deletions(-) create mode 100644 apps/app/src/react-app/domains/session/terminal/ops-panel.tsx diff --git a/apps/app/src/app/lib/desktop.ts b/apps/app/src/app/lib/desktop.ts index 1a43b3964..d70543e14 100644 --- a/apps/app/src/app/lib/desktop.ts +++ b/apps/app/src/app/lib/desktop.ts @@ -154,13 +154,26 @@ declare global { onPanelClosed?: (callback: () => void) => () => void; }; terminal?: { - create?: (options: { cwd: string; cols: number; rows: number }) => Promise<{ terminalId: string }>; + create?: (options: { + cwd: string; + cols: number; + rows: number; + /** Optional argv for the shell. When present the shell runs this + command instead of opening an interactive prompt, e.g. + `["ssh", "user@host"]` for the ops panel. */ + command?: string[]; + /** Optional explicit shell/executable path. */ + shell?: string; + }) => Promise<{ terminalId: string }>; write?: (terminalId: string, data: string) => Promise; resize?: (terminalId: string, cols: number, rows: number) => Promise; kill?: (terminalId: string) => Promise; onData?: (callback: (payload: { terminalId: string; data: string }) => void) => () => void; onExit?: (callback: (payload: { terminalId: string; exitCode: number | null; signal?: number }) => void) => () => void; }; + ssh?: { + listHosts?: () => Promise<{ hosts: string[]; configPath: string }>; + }; hyperframes?: { start?: (options: { workspaceRoot: string; sessionId: string; projectDirectory: string; port: number }) => Promise<{ ok: boolean; port?: number; reused?: boolean }>; stop?: (sessionId: string, options?: { keepWarm?: boolean }) => Promise<{ ok: boolean }>; diff --git a/apps/app/src/i18n/locales/en.ts b/apps/app/src/i18n/locales/en.ts index 5ecb262c1..fb5c24f0d 100644 --- a/apps/app/src/i18n/locales/en.ts +++ b/apps/app/src/i18n/locales/en.ts @@ -385,9 +385,10 @@ export default { "design_system.embedded.font_inter": "Inter", "design_system.embedded.font_georgia": "Georgia", "design_system.embedded.font_ibm_plex_sans": "IBM Plex Sans", - "template_market.title": "Templates", - "template_market.description": "Browse installed and bundled templates for design and video tasks.", - "template_market.search_placeholder": "Search templates", + "template_market.title": "Templates", + "template_market.description": "Browse installed and bundled templates for design and video tasks.", + "template_market.search_placeholder": "Search templates", + "ops.title": "Ops", "template_market.my_templates": "My templates", "template_market.import_package": "Import .ipwp or .ipwt", "template_market.all_templates": "All templates", diff --git a/apps/app/src/i18n/locales/zh.ts b/apps/app/src/i18n/locales/zh.ts index bed01f982..fbdd933a6 100644 --- a/apps/app/src/i18n/locales/zh.ts +++ b/apps/app/src/i18n/locales/zh.ts @@ -387,8 +387,9 @@ export default { "design_system.embedded.font_inter": "Inter", "design_system.embedded.font_georgia": "Georgia", "design_system.embedded.font_ibm_plex_sans": "IBM Plex Sans", - "template_market.title": "模版", - "template_market.description": "浏览设计和视频任务可用的内置、已安装和本地模板。", + "template_market.title": "模版", + "template_market.description": "浏览设计和视频任务可用的内置、已安装和本地模板。", + "ops.title": "运维", "template_market.search_placeholder": "搜索模板", "template_market.my_templates": "我的模板", "template_market.import_package": "导入 .ipwp 或 .ipwt", diff --git a/apps/app/src/react-app/domains/session/chat/session-page.tsx b/apps/app/src/react-app/domains/session/chat/session-page.tsx index 2f90ee329..e0c059794 100644 --- a/apps/app/src/react-app/domains/session/chat/session-page.tsx +++ b/apps/app/src/react-app/domains/session/chat/session-page.tsx @@ -122,6 +122,7 @@ import { shouldRefreshTemplateCatalogOnOpen } from "../templates/template-market import { savePromptTemplate } from "@/react-app/domains/session/templates/prompt-template-store"; import { SidePanel, type SidePanelLauncherItem } from "../panel/side-panel"; import { TerminalDock } from "../terminal/terminal-dock"; +import { OpsPanel } from "../terminal/ops-panel"; import { useActivePanelTab, usePanelTabStore, useSessionPanelState } from "../panel/panel-tab-store"; import { useWorkspaceShellLayout } from "../../../shell/workspace-shell-layout"; import { useControlAction, type iPolloWorkControlAction } from "../../../shell/control/control-provider"; @@ -1235,7 +1236,7 @@ export function SessionPage(props: SessionPageProps) { const [renameGroupTarget, setRenameGroupTarget] = useState<{ workspaceId: string; groupId: string } | null>(null); const [removeGroupOpen, setRemoveGroupOpen] = useState(false); const [removeGroupTarget, setRemoveGroupTarget] = useState<{ workspaceId: string; groupId: string; label: string } | null>(null); - const [mainWorkspaceView, setMainWorkspaceView] = useState<"extensions" | null>(null); + const [mainWorkspaceView, setMainWorkspaceView] = useState<"extensions" | "ops" | null>(null); const preserveSidePanelOnPanelOpenRef = useRef(false); const setCurrentSidePanel = useCallback((panel: SidePanelItem | null) => { @@ -2080,6 +2081,10 @@ export function SessionPage(props: SessionPageProps) { setCurrentSidePanel(null); setMainWorkspaceView("extensions"); }, [setCurrentSidePanel]); + const openOpsRailPane = useCallback(() => { + setCurrentSidePanel(null); + setMainWorkspaceView("ops"); + }, [setCurrentSidePanel]); const openVoiceRailPane = useCallback(() => { toggleCurrentSidePanel("voice"); }, [toggleCurrentSidePanel]); @@ -2305,7 +2310,7 @@ export function SessionPage(props: SessionPageProps) { (showWorkspaceSetupEmptyState || (props.selectedSessionId && !selectedSessionIsDefaultTitle)), ); const showMainHeaderMenu = showHeaderMenu && showMainHeaderTitle; - const mainHeaderHidden = mainWorkspaceView === "extensions" || (showNewConversationChrome && !sidebarVisuallyCollapsed); + const mainHeaderHidden = mainWorkspaceView === "extensions" || mainWorkspaceView === "ops" || (showNewConversationChrome && !sidebarVisuallyCollapsed); const visibleWorkspaceWidth = viewportWidth - (shellConfig.sidebar && sidebarOpen ? effectiveLeftSidebarWidth : 0); const floatingRightPanelToggleOffset = sidePanelOpen ? Math.min(effectiveBrowserPanelWidth, Math.max(0, visibleWorkspaceWidth - 40)) + 8 @@ -2422,12 +2427,13 @@ export function SessionPage(props: SessionPageProps) { name: denAuth.user?.name ?? null, email: denAuth.user?.email ?? null, }} - activePrimaryItem={templateMarketOpen ? "template-market" : mainWorkspaceView === "extensions" ? "extensions" : null} + activePrimaryItem={templateMarketOpen ? "template-market" : mainWorkspaceView === "extensions" ? "extensions" : mainWorkspaceView === "ops" ? "ops" : null} onOpenAccount={openCloudAccount} onOpenSettings={props.onOpenSettings} onOpenHelp={props.onOpenHelp} onOpenTemplateMarket={() => setTemplateMarketOpen(true)} onOpenExtensions={openExtensionsRailPane} + onOpenOps={openOpsRailPane} onSignIn={openCloudSignIn} onOpenSessionSearch={props.sidebar.onOpenSessionSearch ? handleSidebarOpenSessionSearch : undefined} onStartResize={startLeftSidebarResize} @@ -2620,6 +2626,10 @@ export function SessionPage(props: SessionPageProps) {
{props.settingsSlot}
+ ) : mainWorkspaceView === "ops" ? ( +
+ setMainWorkspaceView(null)} /> +
) : showStartupSkeleton ? (
diff --git a/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx b/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx index 388535f8f..65d344fc3 100644 --- a/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx +++ b/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx @@ -17,6 +17,7 @@ import { RotateCcw, Settings, HelpCircle, + Server, Tag, UserRound, } from "lucide-react"; @@ -511,12 +512,13 @@ export type AppSidebarProps = { name: string | null; email: string | null; }; - activePrimaryItem?: "template-market" | "extensions" | null; + activePrimaryItem?: "template-market" | "extensions" | "ops" | null; onOpenAccount: () => void; onOpenSettings: (route?: string) => void; onOpenHelp: () => void; onOpenTemplateMarket: () => void; onOpenExtensions: () => void; + onOpenOps: () => void; onSignIn: () => void; /** Opens the cross-session message search dialog (Cmd/Ctrl+Shift+F). */ onOpenSessionSearch?: () => void; @@ -721,6 +723,18 @@ export function AppSidebar(props: AppSidebarProps) { {t("settings.tab_extensions")} + + + + {t("ops.title")} + + diff --git a/apps/app/src/react-app/domains/session/terminal/ops-panel.tsx b/apps/app/src/react-app/domains/session/terminal/ops-panel.tsx new file mode 100644 index 000000000..9c2bc8564 --- /dev/null +++ b/apps/app/src/react-app/domains/session/terminal/ops-panel.tsx @@ -0,0 +1,382 @@ +/** @jsxImportSource react */ +import { useEffect, useRef, useState } from "react"; +import { FitAddon } from "@xterm/addon-fit"; +import { Terminal } from "@xterm/xterm"; +import "@xterm/xterm/css/xterm.css"; +import { Loader2, Plus, RefreshCw, Server, TerminalSquare, X } from "lucide-react"; + +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { cn } from "@/lib/utils"; +import { isElectronRuntime } from "../../../../app/utils"; + +type OpsSession = { + id: string; + label: string; + target: string; + terminalId: string | null; + exited: boolean; +}; + +type OpsTerminalProps = { + session: OpsSession; + onStatus: (sessionId: string, status: string) => void; + onExit: (sessionId: string) => void; + onRequestFocus: () => void; +}; + +function OpsTerminal({ session, onStatus, onExit, onRequestFocus }: OpsTerminalProps) { + const containerRef = useRef(null); + const terminalIdRef = useRef(null); + const terminalRef = useRef(null); + const fitRef = useRef(null); + const startedRef = useRef(false); + + useEffect(() => { + const container = containerRef.current; + if (!container) return; + if (!isElectronRuntime()) { + onStatus(session.id, "Terminal is available in the desktop app."); + return; + } + if (startedRef.current) return; + startedRef.current = true; + + const bridge = window.__IPOLLOWORK_ELECTRON__?.terminal; + if (!bridge?.create || !bridge.write || !bridge.resize || !bridge.kill || !bridge.onData || !bridge.onExit) { + onStatus(session.id, "Terminal bridge is unavailable."); + return; + } + const createTerminal = bridge.create; + const writeTerminal = bridge.write; + const resizeTerminal = bridge.resize; + const killTerminal = bridge.kill; + const onTerminalData = bridge.onData; + const onTerminalExit = bridge.onExit; + + let disposed = false; + const fitAddon = new FitAddon(); + const terminal = new Terminal({ + cursorBlink: true, + convertEol: true, + fontFamily: "'SFMono-Regular', 'Cascadia Code', 'Liberation Mono', Menlo, monospace", + fontSize: 12, + theme: { + background: "#0b0d12", + foreground: "#d7dde8", + cursor: "#ffffff", + selectionBackground: "#334155", + }, + }); + terminal.loadAddon(fitAddon); + terminal.open(container); + terminal.focus(); + fitAddon.fit(); + terminalRef.current = terminal; + fitRef.current = fitAddon; + + const removeDataListener = onTerminalData(({ terminalId, data }) => { + if (terminalIdRef.current !== terminalId) return; + terminal.write(data); + }); + const removeExitListener = onTerminalExit(({ terminalId }) => { + if (terminalIdRef.current !== terminalId) return; + terminalIdRef.current = null; + onExit(session.id); + }); + const inputDisposable = terminal.onData((data) => { + const terminalId = terminalIdRef.current; + if (!terminalId) return; + void writeTerminal(terminalId, data); + }); + + const fitAndResize = () => { + fitAddon.fit(); + const terminalId = terminalIdRef.current; + if (!terminalId) return; + void resizeTerminal(terminalId, terminal.cols, terminal.rows); + }; + const resizeObserver = new ResizeObserver(fitAndResize); + resizeObserver.observe(container); + + onStatus(session.id, `Connecting to ${session.target}…`); + void createTerminal({ + cwd: "/", + cols: terminal.cols, + rows: terminal.rows, + command: ["ssh", "-t", session.target], + }) + .then(({ terminalId }) => { + if (disposed) { + void killTerminal(terminalId); + return; + } + terminalIdRef.current = terminalId; + onStatus(session.id, session.target); + fitAndResize(); + }) + .catch((error) => { + onStatus(session.id, error instanceof Error ? error.message : "Could not start SSH session."); + }); + + return () => { + disposed = true; + resizeObserver.disconnect(); + inputDisposable.dispose(); + removeDataListener(); + removeExitListener(); + const terminalId = terminalIdRef.current; + terminalIdRef.current = null; + if (terminalId) void killTerminal(terminalId); + terminal.dispose(); + terminalRef.current = null; + fitRef.current = null; + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [session.id]); + + return ( +
+
+
+ ); +} + +type OpsPanelProps = { + onClose?: () => void; +}; + +export function OpsPanel({ onClose }: OpsPanelProps) { + const [sessions, setSessions] = useState([]); + const [statusBySession, setStatusBySession] = useState>({}); + const [activeSessionId, setActiveSessionId] = useState(null); + const [hosts, setHosts] = useState([]); + const [hostsLoading, setHostsLoading] = useState(true); + const [configPath, setConfigPath] = useState("~/.ssh/config"); + const [quickTarget, setQuickTarget] = useState(""); + const [connecting, setConnecting] = useState(false); + const [loadError, setLoadError] = useState(null); + + const refreshHosts = () => { + if (!isElectronRuntime()) { + setLoadError("Ops panel is available in the desktop app."); + setHostsLoading(false); + return; + } + const listHosts = window.__IPOLLOWORK_ELECTRON__?.ssh?.listHosts; + if (!listHosts) { + setLoadError("SSH bridge is unavailable."); + setHostsLoading(false); + return; + } + setHostsLoading(true); + void listHosts() + .then(({ hosts: hostList, configPath: config }) => { + setHosts(hostList ?? []); + setConfigPath(config ?? "~/.ssh/config"); + setLoadError(null); + }) + .catch((error) => { + setLoadError(error instanceof Error ? error.message : "Could not read SSH config."); + }) + .finally(() => setHostsLoading(false)); + }; + + useEffect(() => { + refreshHosts(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const addSession = (target: string) => { + const clean = target.trim().replace(/^ssh\s+/, "").replace(/^-t\s+/, ""); + if (!clean) return; + const id = `ops_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 7)}`; + setSessions((prev) => [ + ...prev, + { id, label: clean, target: clean, terminalId: null, exited: false }, + ]); + setActiveSessionId(id); + setQuickTarget(""); + }; + + const connectQuick = () => { + const target = quickTarget.trim(); + if (!target || connecting) return; + setConnecting(true); + // Defer so the terminal pane mounts before the SSH connection starts. + window.setTimeout(() => { + addSession(target); + setConnecting(false); + }, 0); + }; + + const closeSession = (sessionId: string) => { + setSessions((prev) => prev.filter((session) => session.id !== sessionId)); + setStatusBySession((prev) => { + const next = { ...prev }; + delete next[sessionId]; + return next; + }); + setActiveSessionId((current) => { + if (current !== sessionId) return current; + const remaining = sessions.filter((session) => session.id !== sessionId); + return remaining.length ? remaining[remaining.length - 1].id : null; + }); + }; + + const handleStatus = (sessionId: string, status: string) => { + setStatusBySession((prev) => ({ ...prev, [sessionId]: status })); + }; + + const handleExit = (sessionId: string) => { + setStatusBySession((prev) => ({ ...prev, [sessionId]: "Disconnected" })); + }; + + const activeSession = sessions.find((session) => session.id === activeSessionId) ?? null; + + return ( +
+
+
+ + 运维面板 + SSH +
+
+ + {onClose ? ( + + ) : null} +
+
+ +
+ + +
+
+ {sessions.length === 0 ? ( + 没有活动的 SSH 会话 + ) : ( + sessions.map((session) => ( +
+ + +
+ )) + )} +
+ +
+ {activeSession ? ( + <> +
+ +
+ {activeSession ? ( + setActiveSessionId(activeSession.id)} + /> + ) : ( +
+

+ 在左侧选择一台主机,或输入 user@host 开始 SSH 会话。 +

+
+ )} +
+
+
+
+ ); +} diff --git a/apps/desktop/electron/main.mjs b/apps/desktop/electron/main.mjs index 5ebf2428b..026041d9c 100644 --- a/apps/desktop/electron/main.mjs +++ b/apps/desktop/electron/main.mjs @@ -1,7 +1,7 @@ import { execFileSync, spawn } from "node:child_process"; import { createServer } from "node:http"; import net from "node:net"; -import { existsSync, readdirSync } from "node:fs"; +import { existsSync, readFileSync, readdirSync } from "node:fs"; import { cp, mkdir, @@ -3004,13 +3004,18 @@ ipcMain.handle("ipollowork:system:askMicrophoneAccess", async () => { }); // ── Terminal IPC ──────────────────────────────────────────────────────── -ipcMain.handle("ipollowork:terminal:create", async (event, options = {}) => { - const cwd = await resolveTerminalCwd(options?.cwd); - const cols = Number.isFinite(options?.cols) ? Math.max(20, Math.floor(options.cols)) : 80; - const rows = Number.isFinite(options?.rows) ? Math.max(5, Math.floor(options.rows)) : 24; - const terminalId = `term_${nextTerminalId++}`; - const shellPath = defaultTerminalShell(); - const child = pty.spawn(shellPath, [], { +// Shared terminal spawn used by both the in-session dock and the SSH ops +// panel. When `command` is provided it runs the executable directly instead of +// dropping into an interactive shell — e.g. ["ssh", "user@host"] for remote +// sessions. Spawning the command itself (not `shell -c ...`) keeps the pty on +// the executable so interactive prompts, host-key checks and passphrase +// dialogs behave exactly like a real ssh client. +function spawnTerminalProcess({ cwd, cols, rows, command, shellPath }) { + const program = Array.isArray(command) && command.length > 0 + ? command[0] + : (shellPath ?? defaultTerminalShell()); + const args = Array.isArray(command) && command.length > 1 ? command.slice(1) : []; + return pty.spawn(program, args, { name: "xterm-256color", cols, rows, @@ -3022,6 +3027,42 @@ ipcMain.handle("ipollowork:terminal:create", async (event, options = {}) => { IPOLLOWORK_TERMINAL: "1", }, }); +} + +// Parse ~/.ssh/config into a lightweight host list for the ops panel. +// Mirrors OpenSSH semantics for the Host directive without shelling out to +// `ssh -G`, keeping the operation local and dependency-free. +function readSshConfigHosts() { + const configPath = path.join(os.homedir(), ".ssh", "config"); + let raw; + try { + raw = readFileSync(configPath, "utf8"); + } catch { + return { hosts: [], configPath }; + } + const hosts = []; + const lines = raw.split(/\r?\n/); + for (const line of lines) { + const trimmed = line.trim(); + if (!trimmed || trimmed.startsWith("#")) continue; + const match = /^Host\s+(.+)$/.exec(trimmed); + if (!match) continue; + const entries = match[1].split(/\s+/).filter(Boolean); + for (const entry of entries) { + if (entry.includes("*") || entry.includes("?")) continue; + hosts.push(entry); + } + } + return { hosts: [...new Set(hosts)], configPath }; +} + +ipcMain.handle("ipollowork:terminal:create", async (event, options = {}) => { + const cwd = await resolveTerminalCwd(options?.cwd); + const cols = Number.isFinite(options?.cols) ? Math.max(20, Math.floor(options.cols)) : 80; + const rows = Number.isFinite(options?.rows) ? Math.max(5, Math.floor(options.rows)) : 24; + const terminalId = `term_${nextTerminalId++}`; + const shellPath = typeof options?.shell === "string" && options.shell.trim() ? options.shell.trim() : undefined; + const child = spawnTerminalProcess({ cwd, cols, rows, command: options?.command, shellPath }); terminalProcesses.set(terminalId, { process: child, webContentsId: event.sender.id }); event.sender.once("destroyed", () => killTerminalsForWebContents(event.sender.id)); @@ -3053,6 +3094,11 @@ ipcMain.handle("ipollowork:terminal:kill", (event, terminalId) => { killTerminal(String(terminalId)); }); +ipcMain.handle("ipollowork:ssh:list-hosts", (event) => { + if (!event.sender) return readSshConfigHosts(); + return readSshConfigHosts(); +}); + ipcMain.handle("ipollowork:hyperframes:start", (event, options = {}) => startHyperframesPreview(event, options)); ipcMain.handle("ipollowork:hyperframes:stop", (event, sessionId, options = {}) => { const key = hyperframesKey(event.sender.id, sessionId); diff --git a/apps/desktop/electron/preload.mjs b/apps/desktop/electron/preload.mjs index abe349bb9..c2f2571a2 100644 --- a/apps/desktop/electron/preload.mjs +++ b/apps/desktop/electron/preload.mjs @@ -170,6 +170,9 @@ contextBridge.exposeInMainWorld("__IPOLLOWORK_ELECTRON__", { return () => ipcRenderer.removeListener("ipollowork:terminal:exit", handler); }, }, + ssh: { + listHosts() { return ipcRenderer.invoke("ipollowork:ssh:list-hosts"); }, + }, hyperframes: { start(options) { return ipcRenderer.invoke("ipollowork:hyperframes:start", options); }, stop(sessionId, options) { return ipcRenderer.invoke("ipollowork:hyperframes:stop", sessionId, options); }, From e3b186e826fa0b959c6419ad15b523fe81392d4f Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 11:44:01 +0800 Subject: [PATCH 02/13] feat: add git graph swimlane panel Add a sidebar entry ('Git') that opens a swimlane git graph panel. The Electron main process gains an ipollowork:git:graph IPC that builds a commit DAG from rev-list --parents plus ref -> commit mapping from for-each-ref; the renderer draws an SVG lane layout with branch badges, commit selection, and a detail pane. --- apps/app/src/app/lib/desktop.ts | 6 + apps/app/src/i18n/locales/en.ts | 3 +- apps/app/src/i18n/locales/zh.ts | 3 +- .../domains/session/chat/session-page.tsx | 16 +- .../domains/session/sidebar/app-sidebar.tsx | 16 +- .../domains/session/terminal/git-panel.tsx | 316 ++++++++++++++++++ apps/desktop/electron/main.mjs | 85 ++++- apps/desktop/electron/preload.mjs | 3 + 8 files changed, 441 insertions(+), 7 deletions(-) create mode 100644 apps/app/src/react-app/domains/session/terminal/git-panel.tsx diff --git a/apps/app/src/app/lib/desktop.ts b/apps/app/src/app/lib/desktop.ts index d70543e14..d8e97c1ab 100644 --- a/apps/app/src/app/lib/desktop.ts +++ b/apps/app/src/app/lib/desktop.ts @@ -174,6 +174,12 @@ declare global { ssh?: { listHosts?: () => Promise<{ hosts: string[]; configPath: string }>; }; + git?: { + graph?: (options: { cwd: string; maxCommits?: number }) => Promise< + | { ok: true; repoRoot: string; count: number; isRepo: true; commits: { sha: string; parents: string[] }[]; refs: { sha: string; refname: string; head: boolean }[]; headShas: string[] } + | { ok: false; isRepo: boolean; error: string } + >; + }; hyperframes?: { start?: (options: { workspaceRoot: string; sessionId: string; projectDirectory: string; port: number }) => Promise<{ ok: boolean; port?: number; reused?: boolean }>; stop?: (sessionId: string, options?: { keepWarm?: boolean }) => Promise<{ ok: boolean }>; diff --git a/apps/app/src/i18n/locales/en.ts b/apps/app/src/i18n/locales/en.ts index fb5c24f0d..63eae5e89 100644 --- a/apps/app/src/i18n/locales/en.ts +++ b/apps/app/src/i18n/locales/en.ts @@ -388,7 +388,8 @@ export default { "template_market.title": "Templates", "template_market.description": "Browse installed and bundled templates for design and video tasks.", "template_market.search_placeholder": "Search templates", - "ops.title": "Ops", + "ops.title": "Ops", + "git.title": "Git", "template_market.my_templates": "My templates", "template_market.import_package": "Import .ipwp or .ipwt", "template_market.all_templates": "All templates", diff --git a/apps/app/src/i18n/locales/zh.ts b/apps/app/src/i18n/locales/zh.ts index fbdd933a6..58daecd40 100644 --- a/apps/app/src/i18n/locales/zh.ts +++ b/apps/app/src/i18n/locales/zh.ts @@ -389,7 +389,8 @@ export default { "design_system.embedded.font_ibm_plex_sans": "IBM Plex Sans", "template_market.title": "模版", "template_market.description": "浏览设计和视频任务可用的内置、已安装和本地模板。", - "ops.title": "运维", + "ops.title": "运维", + "git.title": "Git", "template_market.search_placeholder": "搜索模板", "template_market.my_templates": "我的模板", "template_market.import_package": "导入 .ipwp 或 .ipwt", diff --git a/apps/app/src/react-app/domains/session/chat/session-page.tsx b/apps/app/src/react-app/domains/session/chat/session-page.tsx index e0c059794..b852586da 100644 --- a/apps/app/src/react-app/domains/session/chat/session-page.tsx +++ b/apps/app/src/react-app/domains/session/chat/session-page.tsx @@ -123,6 +123,7 @@ import { savePromptTemplate } from "@/react-app/domains/session/templates/prompt import { SidePanel, type SidePanelLauncherItem } from "../panel/side-panel"; import { TerminalDock } from "../terminal/terminal-dock"; import { OpsPanel } from "../terminal/ops-panel"; +import { GitPanel } from "../terminal/git-panel"; import { useActivePanelTab, usePanelTabStore, useSessionPanelState } from "../panel/panel-tab-store"; import { useWorkspaceShellLayout } from "../../../shell/workspace-shell-layout"; import { useControlAction, type iPolloWorkControlAction } from "../../../shell/control/control-provider"; @@ -1236,7 +1237,7 @@ export function SessionPage(props: SessionPageProps) { const [renameGroupTarget, setRenameGroupTarget] = useState<{ workspaceId: string; groupId: string } | null>(null); const [removeGroupOpen, setRemoveGroupOpen] = useState(false); const [removeGroupTarget, setRemoveGroupTarget] = useState<{ workspaceId: string; groupId: string; label: string } | null>(null); - const [mainWorkspaceView, setMainWorkspaceView] = useState<"extensions" | "ops" | null>(null); + const [mainWorkspaceView, setMainWorkspaceView] = useState<"extensions" | "ops" | "git" | null>(null); const preserveSidePanelOnPanelOpenRef = useRef(false); const setCurrentSidePanel = useCallback((panel: SidePanelItem | null) => { @@ -2085,6 +2086,10 @@ export function SessionPage(props: SessionPageProps) { setCurrentSidePanel(null); setMainWorkspaceView("ops"); }, [setCurrentSidePanel]); + const openGitRailPane = useCallback(() => { + setCurrentSidePanel(null); + setMainWorkspaceView("git"); + }, [setCurrentSidePanel]); const openVoiceRailPane = useCallback(() => { toggleCurrentSidePanel("voice"); }, [toggleCurrentSidePanel]); @@ -2310,7 +2315,7 @@ export function SessionPage(props: SessionPageProps) { (showWorkspaceSetupEmptyState || (props.selectedSessionId && !selectedSessionIsDefaultTitle)), ); const showMainHeaderMenu = showHeaderMenu && showMainHeaderTitle; - const mainHeaderHidden = mainWorkspaceView === "extensions" || mainWorkspaceView === "ops" || (showNewConversationChrome && !sidebarVisuallyCollapsed); + const mainHeaderHidden = mainWorkspaceView === "extensions" || mainWorkspaceView === "ops" || mainWorkspaceView === "git" || (showNewConversationChrome && !sidebarVisuallyCollapsed); const visibleWorkspaceWidth = viewportWidth - (shellConfig.sidebar && sidebarOpen ? effectiveLeftSidebarWidth : 0); const floatingRightPanelToggleOffset = sidePanelOpen ? Math.min(effectiveBrowserPanelWidth, Math.max(0, visibleWorkspaceWidth - 40)) + 8 @@ -2427,13 +2432,14 @@ export function SessionPage(props: SessionPageProps) { name: denAuth.user?.name ?? null, email: denAuth.user?.email ?? null, }} - activePrimaryItem={templateMarketOpen ? "template-market" : mainWorkspaceView === "extensions" ? "extensions" : mainWorkspaceView === "ops" ? "ops" : null} + activePrimaryItem={templateMarketOpen ? "template-market" : mainWorkspaceView === "extensions" ? "extensions" : mainWorkspaceView === "ops" ? "ops" : mainWorkspaceView === "git" ? "git" : null} onOpenAccount={openCloudAccount} onOpenSettings={props.onOpenSettings} onOpenHelp={props.onOpenHelp} onOpenTemplateMarket={() => setTemplateMarketOpen(true)} onOpenExtensions={openExtensionsRailPane} onOpenOps={openOpsRailPane} + onOpenGit={openGitRailPane} onSignIn={openCloudSignIn} onOpenSessionSearch={props.sidebar.onOpenSessionSearch ? handleSidebarOpenSessionSearch : undefined} onStartResize={startLeftSidebarResize} @@ -2630,6 +2636,10 @@ export function SessionPage(props: SessionPageProps) {
setMainWorkspaceView(null)} />
+ ) : mainWorkspaceView === "git" ? ( +
+ setMainWorkspaceView(null)} /> +
) : showStartupSkeleton ? (
diff --git a/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx b/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx index 65d344fc3..cea203e39 100644 --- a/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx +++ b/apps/app/src/react-app/domains/session/sidebar/app-sidebar.tsx @@ -18,6 +18,7 @@ import { Settings, HelpCircle, Server, + GitBranch, Tag, UserRound, } from "lucide-react"; @@ -512,13 +513,14 @@ export type AppSidebarProps = { name: string | null; email: string | null; }; - activePrimaryItem?: "template-market" | "extensions" | "ops" | null; + activePrimaryItem?: "template-market" | "extensions" | "ops" | "git" | null; onOpenAccount: () => void; onOpenSettings: (route?: string) => void; onOpenHelp: () => void; onOpenTemplateMarket: () => void; onOpenExtensions: () => void; onOpenOps: () => void; + onOpenGit: () => void; onSignIn: () => void; /** Opens the cross-session message search dialog (Cmd/Ctrl+Shift+F). */ onOpenSessionSearch?: () => void; @@ -735,6 +737,18 @@ export function AppSidebar(props: AppSidebarProps) { {t("ops.title")} + + + + {t("git.title")} + + diff --git a/apps/app/src/react-app/domains/session/terminal/git-panel.tsx b/apps/app/src/react-app/domains/session/terminal/git-panel.tsx new file mode 100644 index 000000000..e0f5e37e7 --- /dev/null +++ b/apps/app/src/react-app/domains/session/terminal/git-panel.tsx @@ -0,0 +1,316 @@ +/** @jsxImportSource react */ +import { useEffect, useMemo, useState } from "react"; +import { GitBranch, GitCommitHorizontal, Loader2, RefreshCw, X } from "lucide-react"; + +import { Button } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; +import { isElectronRuntime } from "../../../../app/utils"; + +const LANE_WIDTH = 26; +const ROW_HEIGHT = 26; +const RADIUS = 7; +const MAX_COMMITS = 1200; + +type GraphCommit = { sha: string; parents: string[] }; +type GraphRef = { sha: string; refname: string; head: boolean }; + +type GraphData = { + ok: boolean; + isRepo: boolean; + error?: string; + count?: number; + commits?: GraphCommit[]; + refs?: GraphRef[]; + headShas?: string[]; +}; + +type LayoutCommit = GraphCommit & { + row: number; + lane: number; + refs: GraphRef[]; +}; + +// Greedy lane assignment: place each commit into the lowest lane whose +// current owner has been fully placed, otherwise open a new lane. Parents are +// reserved as soon as their child is placed so branches hold stable lanes. +function layoutGraph(commits: GraphCommit[], refs: GraphRef[]): { rows: LayoutCommit[]; laneCount: number } { + const refsBySha = new Map(); + for (const ref of refs) { + const list = refsBySha.get(ref.sha) ?? []; + list.push(ref); + refsBySha.set(ref.sha, list); + } + + const laneOf = new Map(); + const laneOwner: (string | undefined)[] = []; + const placed = new Set(); + let laneCount = 0; + + const reserveLane = (sha: string) => { + const existing = laneOf.get(sha); + if (existing !== undefined) return existing; + let lane = -1; + for (let i = 0; i < laneCount; i++) { + const owner = laneOwner[i]; + if (owner === undefined || placed.has(owner)) { + lane = i; + break; + } + } + if (lane === -1) { + lane = laneCount++; + } + laneOf.set(sha, lane); + laneOwner[lane] = sha; + return lane; + }; + + const rows: LayoutCommit[] = []; + commits.forEach((commit, row) => { + const lane = reserveLane(commit.sha); + placed.add(commit.sha); + rows.push({ + ...commit, + row, + lane, + refs: refsBySha.get(commit.sha) ?? [], + }); + for (const parent of commit.parents) reserveLane(parent); + }); + + return { rows, laneCount }; +} + +function shortSha(sha: string) { + return sha.slice(0, 7); +} + +function shortRef(refname: string) { + const cleaned = refname.replace(/^refs\/heads\//, "").replace(/^refs\/remotes\//, ""); + return cleaned; +} + +function commitMessage(sha: string): string { + return shortSha(sha); +} + +type GitPanelProps = { + workspaceRoot: string; + onClose?: () => void; +}; + +export function GitPanel({ workspaceRoot, onClose }: GitPanelProps) { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [selectedSha, setSelectedSha] = useState(null); + + const fetchGraph = () => { + if (!isElectronRuntime()) { + setData({ ok: false, isRepo: false, error: "Git panel is available in the desktop app." }); + setLoading(false); + return; + } + const graph = window.__IPOLLOWORK_ELECTRON__?.git?.graph; + if (!graph) { + setData({ ok: false, isRepo: false, error: "Git bridge is unavailable." }); + setLoading(false); + return; + } + setLoading(true); + void graph({ cwd: workspaceRoot, maxCommits: MAX_COMMITS }) + .then((result) => { + setData(result as GraphData); + setSelectedSha(null); + }) + .catch((error) => { + setData({ ok: false, isRepo: false, error: error instanceof Error ? error.message : "Could not read git graph." }); + }) + .finally(() => setLoading(false)); + }; + + useEffect(() => { + fetchGraph(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [workspaceRoot]); + + const { rows, laneCount } = useMemo(() => { + if (!data?.ok || !data.commits) return { rows: [] as LayoutCommit[], laneCount: 0 }; + return layoutGraph(data.commits, data.refs ?? []); + }, [data]); + + const width = Math.max(320, laneCount * LANE_WIDTH + 24); + + const edgeLines = useMemo(() => { + if (!rows.length) return []; + const lines: { key: string; d: string }[] = []; + const rowBySha = new Map(rows.map((r) => [r.sha, r.row])); + const laneBySha = new Map(rows.map((r) => [r.sha, r.lane])); + for (const commit of rows) { + for (const parent of commit.parents) { + const parentRow = rowBySha.get(parent); + if (parentRow === undefined) continue; + const childX = commit.lane * LANE_WIDTH + LANE_WIDTH / 2; + const parentLane = laneBySha.get(parent); + if (parentLane === undefined) continue; + const parentX = parentLane * LANE_WIDTH + LANE_WIDTH / 2; + const childY = commit.row * ROW_HEIGHT + ROW_HEIGHT / 2; + const parentY = parentRow * ROW_HEIGHT + ROW_HEIGHT / 2; + if (commit.lane === parentLane) { + lines.push({ key: `${commit.sha}-${parent}`, d: `M ${childX} ${childY} L ${parentX} ${parentY}` }); + } else { + const midY = childY + (parentY - childY) / 2; + lines.push({ + key: `${commit.sha}-${parent}`, + d: `M ${childX} ${childY} V ${midY} H ${parentX} V ${parentY}`, + }); + } + } + } + return lines; + }, [rows]); + + const selected = selectedSha ? rows.find((r) => r.sha === selectedSha) : null; + + return ( +
+
+
+ + Git 图谱 + 泳道 +
+
+ + {onClose ? ( + + ) : null} +
+
+ +
+
+ {loading ? ( +
+ + 读取 Git 图谱… +
+ ) : !data?.ok ? ( +
+

+ {data?.isRepo === false ? "当前目录不是 Git 仓库。" : data?.error ?? "无法读取 Git 图谱。"} +

+ {data?.error ?

{data.error}

: null} +
+ ) : rows.length === 0 ? ( +

没有可显示的提交。

+ ) : ( +
+ + {edgeLines.map((line) => ( + + ))} + {rows.map((commit) => { + const x = commit.lane * LANE_WIDTH + LANE_WIDTH / 2; + const y = commit.row * ROW_HEIGHT + ROW_HEIGHT / 2; + const isHead = data.headShas?.includes(commit.sha) ?? false; + const isSelected = selectedSha === commit.sha; + const fill = isHead ? "var(--color-ring)" : isSelected ? "var(--color-primary)" : "var(--color-muted-foreground)"; + return ( + setSelectedSha(isSelected ? null : commit.sha)} + style={{ cursor: "pointer" }} + > + + + + ); + })} + +
+ {rows.map((commit) => { + const x = commit.lane * LANE_WIDTH + LANE_WIDTH / 2; + const y = commit.row * ROW_HEIGHT + ROW_HEIGHT / 2; + const isHead = data.headShas?.includes(commit.sha) ?? false; + const isSelected = selectedSha === commit.sha; + return ( + + ); + })} +
+
+ )} +
+ + +
+
+ ); +} diff --git a/apps/desktop/electron/main.mjs b/apps/desktop/electron/main.mjs index 026041d9c..1c903152b 100644 --- a/apps/desktop/electron/main.mjs +++ b/apps/desktop/electron/main.mjs @@ -1,4 +1,4 @@ -import { execFileSync, spawn } from "node:child_process"; +import { execFileSync, spawn, spawnSync } from "node:child_process"; import { createServer } from "node:http"; import net from "node:net"; import { existsSync, readFileSync, readdirSync } from "node:fs"; @@ -3099,6 +3099,89 @@ ipcMain.handle("ipollowork:ssh:list-hosts", (event) => { return readSshConfigHosts(); }); +// ── Git graph IPC ────────────────────────────────────────────────────── +const GIT_GRAPH_TIMEOUT_MS = 30_000; + +function runGitInWorkspace(cwd, args) { + const result = spawnSync("git", args, { + cwd, + encoding: "utf8", + timeout: GIT_GRAPH_TIMEOUT_MS, + env: { ...process.env, LC_ALL: "C", GIT_TERMINAL_PROMPT: "0", GIT_PAGER: "" }, + }); + if (result.error) { + if (result.error.code === "ENOENT") throw new Error("git executable not found"); + throw result.error; + } + if (result.status !== 0) { + throw new Error(`git ${args[0]} failed: ${String(result.stderr ?? "").trim().slice(0, 400)}`); + } + return String(result.stdout ?? ""); +} + +// Build a lightweight commit DAG for the workspace repo: commit hashes with +// their parents plus branch/tag refs. Uses `rev-list --parents` for exact +// edges (not `git log --graph` text parsing, which is locale/encoding +// fragile) and `for-each-ref` for ref → commit mapping. Bounded by an +// optional maxCommits to keep huge repos renderable. +function buildGitGraph(cwd, maxCommits = 2000) { + const revListOutput = runGitInWorkspace(cwd, [ + "rev-list", "--parents", "--all", "--max-count", String(maxCommits), + ]); + const commits = []; + const commitBySha = new Map(); + for (const line of revListOutput.split("\n")) { + if (!line.trim()) continue; + const parts = line.trim().split(/\s+/); + const sha = parts[0]; + const parents = parts.slice(1); + commits.push({ sha, parents }); + commitBySha.set(sha, { sha, parents }); + } + + const refsOutput = runGitInWorkspace(cwd, [ + "for-each-ref", "refs/heads", "refs/remotes", + "--format=%(objectname)%00%(refname)%00%(HEAD)", "--merged", "HEAD", + ]); + const refs = []; + for (const line of refsOutput.split("\n")) { + if (!line.trim()) continue; + const [sha, refname, headFlag] = line.trim().split("\0"); + if (!sha || !refname) continue; + const head = headFlag === "*"; + refs.push({ sha, refname, head }); + } + + const count = commits.length; + // Resolve tips reachable from HEAD refs so we can draw ref badges. + const headShas = new Set(refs.filter((ref) => ref.head).map((ref) => ref.sha)); + + return { + ok: true, + repoRoot: cwd, + count, + commits, + refs, + headShas: [...headShas], + }; +} + +ipcMain.handle("ipollowork:git:graph", (event, options = {}) => { + const cwd = typeof options?.cwd === "string" && options.cwd.trim() ? options.cwd.trim() : undefined; + if (!cwd) return { ok: false, error: "missing cwd" }; + try { + const result = buildGitGraph(cwd, Number.isFinite(options?.maxCommits) ? options.maxCommits : 2000); + result.isRepo = true; + return result; + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + if (message.includes("not a git repository") || message.includes("fatal:")) { + return { ok: false, isRepo: false, error: message }; + } + return { ok: false, isRepo: true, error: message }; + } +}); + ipcMain.handle("ipollowork:hyperframes:start", (event, options = {}) => startHyperframesPreview(event, options)); ipcMain.handle("ipollowork:hyperframes:stop", (event, sessionId, options = {}) => { const key = hyperframesKey(event.sender.id, sessionId); diff --git a/apps/desktop/electron/preload.mjs b/apps/desktop/electron/preload.mjs index c2f2571a2..35520d9e4 100644 --- a/apps/desktop/electron/preload.mjs +++ b/apps/desktop/electron/preload.mjs @@ -173,6 +173,9 @@ contextBridge.exposeInMainWorld("__IPOLLOWORK_ELECTRON__", { ssh: { listHosts() { return ipcRenderer.invoke("ipollowork:ssh:list-hosts"); }, }, + git: { + graph(options) { return ipcRenderer.invoke("ipollowork:git:graph", options); }, + }, hyperframes: { start(options) { return ipcRenderer.invoke("ipollowork:hyperframes:start", options); }, stop(sessionId, options) { return ipcRenderer.invoke("ipollowork:hyperframes:stop", sessionId, options); }, From 3a60627d59c3e15732f6e0c3286450b09ea1fa53 Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 12:25:35 +0800 Subject: [PATCH 03/13] feat: add LAN remote preview (mobile read-only) Add a default-off LAN read-only preview server so phones and tablets on the local network can view the workbench via a pairing flow. The main process gains a lan-preview-server with 6-digit single-use pair codes, challenge-based anti-CSRF, in-memory session tokens, per-IP fail lockout and rate limiting, and a hard 403 on /api/execute (read-only). A new settings tab (Remote Preview) toggles the server, shows the LAN address and pair code with countdown, and lists paired devices. --- apps/app/src/app/lib/desktop.ts | 18 + apps/app/src/app/types.ts | 1 + apps/app/src/i18n/locales/en.ts | 23 +- apps/app/src/i18n/locales/zh.ts | 23 +- .../settings/pages/remote-preview-view.tsx | 214 ++++++++++++ .../domains/settings/shell/settings-page.tsx | 9 +- .../src/react-app/shell/settings-route.tsx | 4 + apps/desktop/electron/lan-preview-server.mjs | 307 ++++++++++++++++++ apps/desktop/electron/main.mjs | 53 ++- apps/desktop/electron/preload.mjs | 11 + apps/desktop/resources/lan-preview/index.html | 203 ++++++++++++ 11 files changed, 862 insertions(+), 4 deletions(-) create mode 100644 apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx create mode 100644 apps/desktop/electron/lan-preview-server.mjs create mode 100644 apps/desktop/resources/lan-preview/index.html diff --git a/apps/app/src/app/lib/desktop.ts b/apps/app/src/app/lib/desktop.ts index d8e97c1ab..7dbd2bd91 100644 --- a/apps/app/src/app/lib/desktop.ts +++ b/apps/app/src/app/lib/desktop.ts @@ -53,6 +53,17 @@ export type BrowserProxyState = { proxy: { rules: string; authenticated: boolean } | null; }; +export type LanPreviewState = { + enabled: boolean; + port: number; + addresses: string[]; + code: string | null; + codeExpiresAt: number; + sessionCount: number; + pendingChallengeCount?: number; + error?: string; +}; + // --------------------------------------------------------------------------- // Electron bridge surface // --------------------------------------------------------------------------- @@ -180,6 +191,13 @@ declare global { | { ok: false; isRepo: boolean; error: string } >; }; + lanPreview?: { + getState?: () => Promise; + setEnabled?: (enabled: boolean) => Promise; + regenerateCode?: () => Promise; + disconnectAll?: () => Promise; + onStateChanged?: (callback: (state: LanPreviewState) => void) => () => void; + }; hyperframes?: { start?: (options: { workspaceRoot: string; sessionId: string; projectDirectory: string; port: number }) => Promise<{ ok: boolean; port?: number; reused?: boolean }>; stop?: (sessionId: string, options?: { keepWarm?: boolean }) => Promise<{ ok: boolean }>; diff --git a/apps/app/src/app/types.ts b/apps/app/src/app/types.ts index 5e3dddd60..fcdb91343 100644 --- a/apps/app/src/app/types.ts +++ b/apps/app/src/app/types.ts @@ -192,6 +192,7 @@ export const SETTINGS_TAB_VALUES = [ "updates", "recovery", "debug", + "remote-preview", ] as const; export type SettingsTab = (typeof SETTINGS_TAB_VALUES)[number]; diff --git a/apps/app/src/i18n/locales/en.ts b/apps/app/src/i18n/locales/en.ts index 63eae5e89..9ea0e2f0f 100644 --- a/apps/app/src/i18n/locales/en.ts +++ b/apps/app/src/i18n/locales/en.ts @@ -389,7 +389,28 @@ export default { "template_market.description": "Browse installed and bundled templates for design and video tasks.", "template_market.search_placeholder": "Search templates", "ops.title": "Ops", - "git.title": "Git", + "git.title": "Git", + "settings.tab_remote_preview": "Remote Preview", + "settings.tab_description_remote_preview": "Allow LAN devices to view this workbench (read-only).", + "settings.remote_preview_alert_title": "Remote preview (LAN read-only)", + "settings.remote_preview_alert_desc": "Lets phones and tablets on your local network view the current workbench state through a browser. Read-only: devices can watch, not control.", + "settings.remote_preview_desktop_title": "Desktop app required", + "settings.remote_preview_desktop_desc": "Remote preview is only available in the desktop app.", + "settings.remote_preview_enable_title": "Enable LAN preview", + "settings.remote_preview_enable_desc": "Defaults to off. Turning it on exposes a read-only snapshot to your local network.", + "settings.remote_preview_address_title": "Access address", + "settings.remote_preview_address_desc": "Open this address in a phone or tablet browser on the same network.", + "settings.remote_preview_no_address": "No LAN addresses found.", + "settings.remote_preview_code_title": "Pair code", + "settings.remote_preview_code_desc": "Valid for 10 minutes, single use", + "settings.remote_preview_regenerate": "Regenerate", + "settings.remote_preview_code_hint": "Enter this code on the device to pair it with this workbench.", + "settings.remote_preview_sessions_title": "Paired devices", + "settings.remote_preview_sessions_connected": "devices connected", + "settings.remote_preview_sessions_none": "No devices paired.", + "settings.remote_preview_disconnect_all": "Disconnect all", + "settings.remote_preview_error_title": "Could not start remote preview", + "settings.remote_preview_copy": "Copy", "template_market.my_templates": "My templates", "template_market.import_package": "Import .ipwp or .ipwt", "template_market.all_templates": "All templates", diff --git a/apps/app/src/i18n/locales/zh.ts b/apps/app/src/i18n/locales/zh.ts index 58daecd40..933452c7f 100644 --- a/apps/app/src/i18n/locales/zh.ts +++ b/apps/app/src/i18n/locales/zh.ts @@ -390,7 +390,28 @@ export default { "template_market.title": "模版", "template_market.description": "浏览设计和视频任务可用的内置、已安装和本地模板。", "ops.title": "运维", - "git.title": "Git", + "git.title": "Git", + "settings.tab_remote_preview": "远程预览", + "settings.tab_description_remote_preview": "允许局域网设备查看此工作台(只读)。", + "settings.remote_preview_alert_title": "远程预览(局域网只读)", + "settings.remote_preview_alert_desc": "让同一局域网内的手机、平板通过浏览器查看当前工作台状态。只读:设备只能观看,不能操作。", + "settings.remote_preview_desktop_title": "需要桌面应用", + "settings.remote_preview_desktop_desc": "远程预览仅在桌面应用内可用。", + "settings.remote_preview_enable_title": "启用局域网预览", + "settings.remote_preview_enable_desc": "默认关闭。开启后会向局域网暴露只读快照。", + "settings.remote_preview_address_title": "访问地址", + "settings.remote_preview_address_desc": "在手机或平板浏览器中打开该地址(需同一网络)。", + "settings.remote_preview_no_address": "未找到局域网地址。", + "settings.remote_preview_code_title": "配对码", + "settings.remote_preview_code_desc": "10 分钟有效,单次使用", + "settings.remote_preview_regenerate": "重新生成", + "settings.remote_preview_code_hint": "在设备上输入此配对码即可与工作台配对。", + "settings.remote_preview_sessions_title": "已配对设备", + "settings.remote_preview_sessions_connected": "台设备已连接", + "settings.remote_preview_sessions_none": "暂无已配对设备。", + "settings.remote_preview_disconnect_all": "断开全部", + "settings.remote_preview_error_title": "远程预览启动失败", + "settings.remote_preview_copy": "复制", "template_market.search_placeholder": "搜索模板", "template_market.my_templates": "我的模板", "template_market.import_package": "导入 .ipwp 或 .ipwt", diff --git a/apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx b/apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx new file mode 100644 index 000000000..89b9baa7e --- /dev/null +++ b/apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx @@ -0,0 +1,214 @@ +/** @jsxImportSource react */ +import { useCallback, useEffect, useState } from "react"; +import { Copy, Loader2, MonitorSmartphone, RefreshCw, ShieldAlert } from "lucide-react"; + +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { Button } from "@/components/ui/button"; +import { Switch } from "@/components/ui/switch"; +import { cn } from "@/lib/utils"; +import type { LanPreviewState } from "@/app/lib/desktop"; +import { isDesktopRuntime } from "@/app/utils"; +import { t } from "@/i18n"; +import { + LayoutSectionItem, + LayoutSectionItemDescription, + LayoutSectionItemHeader, + LayoutSectionItemHeaderActions, + LayoutSectionItemTitle, + LayoutStack, +} from "../settings-layout"; + +function formatCountdown(expiresAt: number) { + const remaining = Math.max(0, expiresAt - Date.now()); + const totalSeconds = Math.floor(remaining / 1000); + const minutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + return `${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}`; +} + +export function RemotePreviewView() { + const [state, setState] = useState(null); + const [loading, setLoading] = useState(true); + const [busy, setBusy] = useState(false); + const [copied, setCopied] = useState(null); + + const readState = useCallback(async () => { + const bridge = window.__IPOLLOWORK_ELECTRON__?.lanPreview; + if (!bridge?.getState) { + setState(null); + setLoading(false); + return; + } + try { + const next = await bridge.getState(); + setState(next); + } finally { + setLoading(false); + } + }, []); + + useEffect(() => { + readState(); + const bridge = window.__IPOLLOWORK_ELECTRON__?.lanPreview; + const unsubscribe = bridge?.onStateChanged?.((next) => setState(next)); + return () => unsubscribe?.(); + }, [readState]); + + const runAction = useCallback(async (action: () => Promise) => { + setBusy(true); + try { + const next = await action(); + setState(next); + } finally { + setBusy(false); + } + }, []); + + const toggleEnabled = useCallback(() => { + const next = !state?.enabled; + void runAction(() => { + const setEnabled = window.__IPOLLOWORK_ELECTRON__?.lanPreview?.setEnabled; + if (!setEnabled) return Promise.resolve(state ?? { enabled: false, port: 0, addresses: [], code: null, codeExpiresAt: 0, sessionCount: 0 }); + return setEnabled(next); + }); + }, [runAction, state]); + + const regenerate = useCallback(() => { + void runAction(async () => { + const regenerateCode = window.__IPOLLOWORK_ELECTRON__?.lanPreview?.regenerateCode; + if (!regenerateCode) return state ?? { enabled: false, port: 0, addresses: [], code: null, codeExpiresAt: 0, sessionCount: 0 }; + return regenerateCode(); + }); + }, [runAction, state]); + + const disconnectAll = useCallback(() => { + void runAction(async () => { + const disconnectAll = window.__IPOLLOWORK_ELECTRON__?.lanPreview?.disconnectAll; + if (!disconnectAll) return state ?? { enabled: false, port: 0, addresses: [], code: null, codeExpiresAt: 0, sessionCount: 0 }; + return disconnectAll(); + }); + }, [runAction, state]); + + const copyText = useCallback((value: string) => { + void navigator.clipboard?.writeText(value).then(() => { + setCopied(value); + window.setTimeout(() => setCopied(null), 1500); + }); + }, []); + + const countdown = state?.codeExpiresAt ? formatCountdown(state.codeExpiresAt) : "–"; + + return ( + + + + {t("settings.remote_preview_alert_title")} + {t("settings.remote_preview_alert_desc")} + + + {!isDesktopRuntime() && ( + + + {t("settings.remote_preview_desktop_title")} + {t("settings.remote_preview_desktop_desc")} + + )} + + + + {t("settings.remote_preview_enable_title")} + {t("settings.remote_preview_enable_desc")} + +
+ + {busy ? : null} +
+
+ + {state?.enabled ? ( + <> + + + {t("settings.remote_preview_address_title")} + {t("settings.remote_preview_address_desc")} + +
+ {(state.addresses?.length ?? 0) > 0 ? ( + state.addresses.map((address) => { + const url = `http://${address}:${state.port}`; + return ( +
+ {url} + +
+ ); + }) + ) : ( +

{t("settings.remote_preview_no_address")}

+ )} +
+
+ + + + {t("settings.remote_preview_code_title")} + + {t("settings.remote_preview_code_desc")}({countdown}) + + + + + +
+
+ + {state.code ?? "------"} + + +
+

+ {t("settings.remote_preview_code_hint")} +

+
+
+ + + + {t("settings.remote_preview_sessions_title")} + + {state.sessionCount > 0 + ? `${t("settings.remote_preview_sessions_connected")}(${state.sessionCount})` + : t("settings.remote_preview_sessions_none")} + + +
+ +
+
+ + ) : null} + + {state?.error ? ( + + + {t("settings.remote_preview_error_title")} + {state.error} + + ) : null} +
+ ); +} diff --git a/apps/app/src/react-app/domains/settings/shell/settings-page.tsx b/apps/app/src/react-app/domains/settings/shell/settings-page.tsx index 0890d7999..f3f66f113 100644 --- a/apps/app/src/react-app/domains/settings/shell/settings-page.tsx +++ b/apps/app/src/react-app/domains/settings/shell/settings-page.tsx @@ -10,6 +10,7 @@ import { FolderLock, Info, Layout, + MonitorSmartphone, Paintbrush, Puzzle, RefreshCcw, @@ -90,6 +91,8 @@ export function getSettingsTabIcon(tab: SettingsTab) { return ShieldCheck; case "debug": return Bug; + case "remote-preview": + return MonitorSmartphone; default: return Cog; } @@ -133,6 +136,8 @@ export function getSettingsTabLabel(tab: SettingsTab) { return t("settings.tab_recovery"); case "debug": return t("settings.tab_debug"); + case "remote-preview": + return t("settings.tab_remote_preview"); case "general": return t("settings.tab_general"); default: @@ -178,6 +183,8 @@ export function getSettingsTabDescription(tab: SettingsTab) { return t("settings.tab_description_recovery"); case "debug": return t("settings.tab_description_debug"); + case "remote-preview": + return t("settings.tab_description_remote_preview"); case "general": return t("settings.tab_description_general_overview"); default: @@ -190,7 +197,7 @@ export function getWorkspaceSettingsTabs(): SettingsTab[] { } export function getGlobalSettingsTabs(developerMode: boolean): SettingsTab[] { - const tabs: SettingsTab[] = ["ai", "authorizations", "shell", "appearance", "environment", "updates", "recovery"]; + const tabs: SettingsTab[] = ["ai", "authorizations", "shell", "appearance", "environment", "updates", "recovery", "remote-preview"]; if (developerMode) tabs.push("debug"); return tabs; } diff --git a/apps/app/src/react-app/shell/settings-route.tsx b/apps/app/src/react-app/shell/settings-route.tsx index a22558c5c..b5c3c74b2 100644 --- a/apps/app/src/react-app/shell/settings-route.tsx +++ b/apps/app/src/react-app/shell/settings-route.tsx @@ -74,6 +74,7 @@ import { GeneralSettingsView } from "@/react-app/domains/settings/pages/general- import { AuthorizedFoldersPanel } from "@/react-app/domains/settings/panels/authorized-folders-panel"; import { SettingsStack } from "@/react-app/domains/settings/settings-section"; import { AdvancedView } from "@/react-app/domains/settings/pages/advanced-view"; +import { RemotePreviewView } from "@/react-app/domains/settings/pages/remote-preview-view"; import { AppearanceView } from "@/react-app/domains/settings/pages/appearance-view"; import { CloudAccountView } from "@/react-app/domains/settings/pages/cloud-account-view"; import { ConnectView } from "@/react-app/domains/settings/pages/connect-view"; @@ -250,6 +251,7 @@ export function parseSettingsPath(pathname: string): { case "updates": case "recovery": case "debug": + case "remote-preview": return { tab: head, redirectPath: null }; case "cloud-account": case "connect": @@ -2000,6 +2002,8 @@ function SettingsRouteContent(props: SettingsSurfaceProps = {}) { onCleanupiPolloWorkDockerContainers={() => {}} /> ); + case "remote-preview": + return ; case "environment": return ( { + let raw = ""; + request.setEncoding("utf8"); + request.on("data", (chunk) => { + raw += chunk; + if (raw.length > 128_000) { + reject(new Error("Request body too large")); + request.destroy(); + } + }); + request.on("end", () => { + if (!raw.trim()) { + resolve({}); + return; + } + try { + resolve(JSON.parse(raw)); + } catch { + reject(new Error("Request body must be JSON")); + } + }); + request.on("error", reject); + }); +} + +function lanAddresses() { + const out = []; + const interfaces = os.networkInterfaces(); + for (const name of Object.keys(interfaces)) { + for (const address of interfaces[name] ?? []) { + if (address.family === "IPv4" && !address.internal) { + out.push(address.address); + } + } + } + return out; +} + +export function createLanPreviewServer({ appName, getWindow, pageHtmlPath, log = () => {} }) { + let server = null; + let port = 0; + let code = null; + let codeExpiresAt = 0; + const challenges = new Map(); + const sessions = new Map(); + const fails = new Map(); + const hits = new Map(); + + const randHex = (n) => randomBytes(n).toString("hex"); + + function generateCode() { + code = String(randomInt(0, 1_000_000)).padStart(6, "0"); + codeExpiresAt = Date.now() + CODE_TTL_MS; + return { code, expiresAt: codeExpiresAt }; + } + + function validCode(input) { + return code !== null && typeof input === "string" && input === code && Date.now() < codeExpiresAt; + } + + function issueSession(ip) { + const token = randHex(32); + sessions.set(token, { ip, issuedAt: Date.now(), expiresAt: Date.now() + SESSION_TTL_MS }); + return { token, expiresAt: Date.now() + SESSION_TTL_MS }; + } + + function authorized(request) { + const match = /^Bearer (.+)$/.exec(request.headers.authorization ?? ""); + if (!match) return null; + const session = sessions.get(match[1]); + if (!session || Date.now() >= session.expiresAt) { + sessions.delete(match[1]); + return null; + } + return session; + } + + function rateLimited(ip) { + const now = Date.now(); + const window = (hits.get(ip) ?? []).filter((ts) => now - ts < RATE_WINDOW_MS); + if (window.length >= RATE_MAX) { + hits.set(ip, window); + return true; + } + window.push(now); + hits.set(ip, window); + return false; + } + + function registerFail(ip) { + const current = fails.get(ip) ?? { count: 0, lockedUntil: 0 }; + if (Date.now() < current.lockedUntil) return; + current.count += 1; + if (current.count >= MAX_FAILS) { + current.count = 0; + current.lockedUntil = Date.now() + LOCK_MS; + } + fails.set(ip, current); + } + + function lockRemainingFor(ip) { + const current = fails.get(ip); + if (!current) return 0; + const remaining = current.lockedUntil - Date.now(); + return remaining > 0 ? remaining : 0; + } + + async function invokeRenderer(method) { + const win = await getWindow(); + if (!win || win.isDestroyed()) { + throw new Error("renderer-unavailable"); + } + return win.webContents.executeJavaScript( + `(async () => { + const control = window.__ipolloworkControl; + if (!control) return { ok: false, error: "control-surface-unavailable" }; + control.setEnabled?.(true); + if (${JSON.stringify(method)} === "snapshot") return { ok: true, ...control.snapshot() }; + if (${JSON.stringify(method)} === "actions") return { ok: true, actions: control.listActions() }; + return { ok: false, error: "unknown-method" }; + })()`, + true, + ); + } + + async function handle(request, response) { + const url = new URL(request.url ?? "/", `http://${request.headers.host ?? "localhost"}`); + const ip = request.socket.remoteAddress ?? ""; + + try { + if (request.method === "GET" && url.pathname === "/") { + const challenge = randHex(16); + challenges.set(challenge, { expiresAt: Date.now() + CHALLENGE_TTL_MS, used: false }); + const html = (await import("node:fs/promises")).readFile(pageHtmlPath, "utf8") + .then((raw) => raw.replace("__CHALLENGE__", challenge)) + .catch(() => `

Preview page missing

`); + sendHtml(response, await html); + return; + } + + if (request.method === "POST" && url.pathname === "/pair") { + if (rateLimited(ip)) { + sendJson(response, 429, { ok: false, error: "too-many-requests" }); + return; + } + if (lockRemainingFor(ip) > 0) { + sendJson(response, 429, { ok: false, error: "locked", retryAfterMs: lockRemainingFor(ip) }); + return; + } + let body; + try { + body = await readBody(request); + } catch (error) { + sendJson(response, 400, { ok: false, error: error instanceof Error ? error.message : "bad-request" }); + return; + } + const challenge = challenges.get(body?.challenge); + if (!challenge || challenge.used || Date.now() > challenge.expiresAt) { + sendJson(response, 401, { ok: false, error: "challenge-invalid" }); + return; + } + if (!validCode(body?.code)) { + registerFail(ip); + sendJson(response, 401, { ok: false, error: "code-invalid", retryAfterMs: lockRemainingFor(ip) }); + return; + } + challenge.used = true; + code = null; + sendJson(response, 200, { ok: true, ...issueSession(ip) }); + return; + } + + if (request.method === "GET" && url.pathname === "/api/health") { + sendJson(response, 200, { ok: true, app: appName, paired: sessions.size > 0 }); + return; + } + + if (request.method === "GET" && (url.pathname === "/api/snapshot" || url.pathname === "/api/actions")) { + if (!authorized(request)) { + sendJson(response, 401, { ok: false, error: "unauthorized" }); + return; + } + const method = url.pathname === "/api/snapshot" ? "snapshot" : "actions"; + try { + sendJson(response, 200, await invokeRenderer(method)); + } catch (error) { + sendJson(response, 503, { + ok: false, + error: error instanceof Error ? error.message : "renderer-unavailable", + }); + } + return; + } + + if (url.pathname.startsWith("/api/execute")) { + sendJson(response, 403, { ok: false, error: "read-only-mode" }); + return; + } + + sendJson(response, 404, { ok: false, error: "not-found" }); + } catch (error) { + log(`lan-preview error: ${error instanceof Error ? error.message : String(error)}`); + sendJson(response, 500, { ok: false, error: "internal-error" }); + } + } + + return { + async start(preferredPort) { + if (server) throw new Error("lan-preview already running"); + server = createServer(handle); + await new Promise((resolve, reject) => { + server.once("error", reject); + server.listen(preferredPort ?? DEFAULT_PORT, "0.0.0.0", () => resolve(undefined)); + }); + port = server.address().port; + const generated = generateCode(); + log(`LAN preview listening on 0.0.0.0:${port}`); + return { port, code: generated.code, codeExpiresAt: generated.expiresAt }; + }, + async stop() { + if (!server) return; + await new Promise((resolve) => server.close(() => resolve(undefined))); + server = null; + port = 0; + code = null; + codeExpiresAt = 0; + challenges.clear(); + sessions.clear(); + fails.clear(); + hits.clear(); + }, + regenerateCode() { + if (!server) return null; + const generated = generateCode(); + return { code: generated.code, expiresAt: generated.expiresAt }; + }, + disconnectAll() { + sessions.clear(); + challenges.clear(); + }, + getState() { + return { + enabled: !!server, + port, + addresses: lanAddresses(), + code, + codeExpiresAt, + sessionCount: sessions.size, + pendingChallengeCount: challenges.size, + }; + }, + }; +} + +export function defaultLanPreviewPort() { + return DEFAULT_PORT; +} + +export function lanPreviewPagePath(desktopRoot) { + return path.join(desktopRoot, "resources", "lan-preview", "index.html"); +} diff --git a/apps/desktop/electron/main.mjs b/apps/desktop/electron/main.mjs index 1c903152b..316749f7d 100644 --- a/apps/desktop/electron/main.mjs +++ b/apps/desktop/electron/main.mjs @@ -29,6 +29,7 @@ import { openComputerUseSetupApp, } from "./computer-use.mjs"; import { createUiControlServer } from "./ui-control-server.mjs"; +import { createLanPreviewServer, lanPreviewPagePath } from "./lan-preview-server.mjs"; import { createApplicationMenu } from "./app-menu.mjs"; import { createBrowserPanel } from "./browser-panel.mjs"; import { createWorkspaceStore } from "./workspace-store.mjs"; @@ -113,6 +114,12 @@ const uiControlServer = createUiControlServer({ getWindow: () => createMainWindow(), }); +const lanPreviewServer = createLanPreviewServer({ + appName: APP_NAME, + getWindow: () => createMainWindow(), + pageHtmlPath: lanPreviewPagePath(path.resolve(__dirname, "..")), +}); + const terminalProcesses = new Map(); const hyperframesProcesses = new Map(); let nextTerminalId = 1; @@ -3182,6 +3189,50 @@ ipcMain.handle("ipollowork:git:graph", (event, options = {}) => { } }); +// ── LAN preview IPC ──────────────────────────────────────────────────── +function lanPreviewStatePayload() { + return lanPreviewServer.getState(); +} + +function broadcastLanPreviewState() { + for (const win of BrowserWindow.getAllWindows()) { + if (!win.isDestroyed()) { + win.webContents.send("ipollowork:lan-preview:state", lanPreviewStatePayload()); + } + } +} + +ipcMain.handle("ipollowork:lan-preview:get-state", () => lanPreviewStatePayload()); + +ipcMain.handle("ipollowork:lan-preview:set-enabled", async (event, enabled) => { + const target = enabled === true; + const current = lanPreviewServer.getState().enabled; + if (target === current) return lanPreviewStatePayload(); + if (target) { + try { + await lanPreviewServer.start(); + } catch (error) { + return { ...lanPreviewStatePayload(), error: error instanceof Error ? error.message : "start-failed" }; + } + } else { + await lanPreviewServer.stop(); + } + broadcastLanPreviewState(); + return lanPreviewStatePayload(); +}); + +ipcMain.handle("ipollowork:lan-preview:regenerate-code", () => { + const generated = lanPreviewServer.regenerateCode(); + broadcastLanPreviewState(); + return lanPreviewStatePayload(); +}); + +ipcMain.handle("ipollowork:lan-preview:disconnect-all", () => { + lanPreviewServer.disconnectAll(); + broadcastLanPreviewState(); + return lanPreviewStatePayload(); +}); + ipcMain.handle("ipollowork:hyperframes:start", (event, options = {}) => startHyperframesPreview(event, options)); ipcMain.handle("ipollowork:hyperframes:stop", (event, sessionId, options = {}) => { const key = hyperframesKey(event.sender.id, sessionId); @@ -4241,7 +4292,7 @@ if (!app.requestSingleInstanceLock()) { event.preventDefault(); if (runtimeDisposeInProgress) return; showShutdownScreen(); - void Promise.all([disposeRuntimeBeforeQuit(), uiControlServer.stop()]).finally(() => app.quit()); + void Promise.all([disposeRuntimeBeforeQuit(), uiControlServer.stop(), lanPreviewServer.stop()]).finally(() => app.quit()); }); app.on("second-instance", async (_event, argv) => { diff --git a/apps/desktop/electron/preload.mjs b/apps/desktop/electron/preload.mjs index 35520d9e4..3f53223e8 100644 --- a/apps/desktop/electron/preload.mjs +++ b/apps/desktop/electron/preload.mjs @@ -176,6 +176,17 @@ contextBridge.exposeInMainWorld("__IPOLLOWORK_ELECTRON__", { git: { graph(options) { return ipcRenderer.invoke("ipollowork:git:graph", options); }, }, + lanPreview: { + getState() { return ipcRenderer.invoke("ipollowork:lan-preview:get-state"); }, + setEnabled(enabled) { return ipcRenderer.invoke("ipollowork:lan-preview:set-enabled", Boolean(enabled)); }, + regenerateCode() { return ipcRenderer.invoke("ipollowork:lan-preview:regenerate-code"); }, + disconnectAll() { return ipcRenderer.invoke("ipollowork:lan-preview:disconnect-all"); }, + onStateChanged(callback) { + const handler = (_event, state) => callback(state); + ipcRenderer.on("ipollowork:lan-preview:state", handler); + return () => ipcRenderer.removeListener("ipollowork:lan-preview:state", handler); + }, + }, hyperframes: { start(options) { return ipcRenderer.invoke("ipollowork:hyperframes:start", options); }, stop(sessionId, options) { return ipcRenderer.invoke("ipollowork:hyperframes:stop", sessionId, options); }, diff --git a/apps/desktop/resources/lan-preview/index.html b/apps/desktop/resources/lan-preview/index.html new file mode 100644 index 000000000..7d14c4e30 --- /dev/null +++ b/apps/desktop/resources/lan-preview/index.html @@ -0,0 +1,203 @@ + + + + + + +iPolloWork 远程预览 + + + +
+

iPolloWork 远程预览

+ +
+

连接到工作台

+

在桌面端「设置 → 远程预览」中查看配对码(10 分钟有效)。

+ +

+ +
+ + +
+ + + + From 1c9b8b83112ebecb0102dde1d8105be3ba8f055a Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 12:57:39 +0800 Subject: [PATCH 04/13] refactor: harden and modularize the three new panels SSH ops + Git graph + LAN preview remediation pass: - Git graph: detect and surface truncation (rev-list total-count probe, truncated banner, dashed stub edges for parents outside the window); fix lane layout so sibling branches fork to distinct lanes instead of collapsing onto the parent lane. - LAN preview: raise pair-code entropy (8-char uppercase alphabet, ~39.6 bits) and add a global fail lockout with exponential backoff on top of per-IP limits. - Module layout: move ops-panel/git-panel out of domains/session/terminal into domain-owned dirs with pure-logic modules (graph-layout.ts, ops-utils.ts) instead of dodging the single-file-directory audit rule. - Main process: extract ssh-ops.mjs and git-graph.mjs factories from main.mjs; add preview-core.mjs shared read-only renderer bridge with sanitized public summary for LAN/IM channels. - Tests: node:test suites for ssh config parsing, git DAG building, and preview-core redaction; bun:test suites for swimlane layout and SSH target normalization. --- apps/app/src/app/lib/desktop.ts | 2 +- .../domains/session/chat/session-page.tsx | 4 +- .../session/{terminal => git}/git-panel.tsx | 113 +++++--------- .../domains/session/git/graph-layout.ts | 144 +++++++++++++++++ .../session/{terminal => ops}/ops-panel.tsx | 3 +- .../domains/session/ops/ops-utils.ts | 21 +++ apps/app/tests/graph-layout.test.ts | 101 ++++++++++++ apps/app/tests/ops-utils.test.ts | 30 ++++ apps/desktop/electron/git-graph.mjs | 89 +++++++++++ apps/desktop/electron/git-graph.test.mjs | 90 +++++++++++ apps/desktop/electron/lan-preview-server.mjs | 63 +++++--- apps/desktop/electron/main.mjs | 146 ++---------------- apps/desktop/electron/preview-core.mjs | 90 +++++++++++ apps/desktop/electron/preview-core.test.mjs | 82 ++++++++++ apps/desktop/electron/ssh-ops.mjs | 66 ++++++++ apps/desktop/electron/ssh-ops.test.mjs | 84 ++++++++++ apps/desktop/package.json | 2 +- apps/desktop/resources/lan-preview/index.html | 6 +- 18 files changed, 903 insertions(+), 233 deletions(-) rename apps/app/src/react-app/domains/session/{terminal => git}/git-panel.tsx (82%) create mode 100644 apps/app/src/react-app/domains/session/git/graph-layout.ts rename apps/app/src/react-app/domains/session/{terminal => ops}/ops-panel.tsx (99%) create mode 100644 apps/app/src/react-app/domains/session/ops/ops-utils.ts create mode 100644 apps/app/tests/graph-layout.test.ts create mode 100644 apps/app/tests/ops-utils.test.ts create mode 100644 apps/desktop/electron/git-graph.mjs create mode 100644 apps/desktop/electron/git-graph.test.mjs create mode 100644 apps/desktop/electron/preview-core.mjs create mode 100644 apps/desktop/electron/preview-core.test.mjs create mode 100644 apps/desktop/electron/ssh-ops.mjs create mode 100644 apps/desktop/electron/ssh-ops.test.mjs diff --git a/apps/app/src/app/lib/desktop.ts b/apps/app/src/app/lib/desktop.ts index 7dbd2bd91..f9bef6bcc 100644 --- a/apps/app/src/app/lib/desktop.ts +++ b/apps/app/src/app/lib/desktop.ts @@ -187,7 +187,7 @@ declare global { }; git?: { graph?: (options: { cwd: string; maxCommits?: number }) => Promise< - | { ok: true; repoRoot: string; count: number; isRepo: true; commits: { sha: string; parents: string[] }[]; refs: { sha: string; refname: string; head: boolean }[]; headShas: string[] } + | { ok: true; repoRoot: string; count: number; totalCount: number | null; truncated: boolean; isRepo: true; commits: { sha: string; parents: string[] }[]; refs: { sha: string; refname: string; head: boolean }[]; headShas: string[] } | { ok: false; isRepo: boolean; error: string } >; }; diff --git a/apps/app/src/react-app/domains/session/chat/session-page.tsx b/apps/app/src/react-app/domains/session/chat/session-page.tsx index b852586da..e3a7c19b9 100644 --- a/apps/app/src/react-app/domains/session/chat/session-page.tsx +++ b/apps/app/src/react-app/domains/session/chat/session-page.tsx @@ -122,8 +122,8 @@ import { shouldRefreshTemplateCatalogOnOpen } from "../templates/template-market import { savePromptTemplate } from "@/react-app/domains/session/templates/prompt-template-store"; import { SidePanel, type SidePanelLauncherItem } from "../panel/side-panel"; import { TerminalDock } from "../terminal/terminal-dock"; -import { OpsPanel } from "../terminal/ops-panel"; -import { GitPanel } from "../terminal/git-panel"; +import { OpsPanel } from "../ops/ops-panel"; +import { GitPanel } from "../git/git-panel"; import { useActivePanelTab, usePanelTabStore, useSessionPanelState } from "../panel/panel-tab-store"; import { useWorkspaceShellLayout } from "../../../shell/workspace-shell-layout"; import { useControlAction, type iPolloWorkControlAction } from "../../../shell/control/control-provider"; diff --git a/apps/app/src/react-app/domains/session/terminal/git-panel.tsx b/apps/app/src/react-app/domains/session/git/git-panel.tsx similarity index 82% rename from apps/app/src/react-app/domains/session/terminal/git-panel.tsx rename to apps/app/src/react-app/domains/session/git/git-panel.tsx index e0f5e37e7..c57aa9e03 100644 --- a/apps/app/src/react-app/domains/session/terminal/git-panel.tsx +++ b/apps/app/src/react-app/domains/session/git/git-panel.tsx @@ -5,91 +5,32 @@ import { GitBranch, GitCommitHorizontal, Loader2, RefreshCw, X } from "lucide-re import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import { isElectronRuntime } from "../../../../app/utils"; +import { + layoutGraph, + shortSha, + shortRef, + type GraphCommit, + type GraphRef, + type LayoutCommit, +} from "./graph-layout"; const LANE_WIDTH = 26; const ROW_HEIGHT = 26; const RADIUS = 7; const MAX_COMMITS = 1200; -type GraphCommit = { sha: string; parents: string[] }; -type GraphRef = { sha: string; refname: string; head: boolean }; - type GraphData = { ok: boolean; isRepo: boolean; error?: string; count?: number; + totalCount?: number | null; + truncated?: boolean; commits?: GraphCommit[]; refs?: GraphRef[]; headShas?: string[]; }; -type LayoutCommit = GraphCommit & { - row: number; - lane: number; - refs: GraphRef[]; -}; - -// Greedy lane assignment: place each commit into the lowest lane whose -// current owner has been fully placed, otherwise open a new lane. Parents are -// reserved as soon as their child is placed so branches hold stable lanes. -function layoutGraph(commits: GraphCommit[], refs: GraphRef[]): { rows: LayoutCommit[]; laneCount: number } { - const refsBySha = new Map(); - for (const ref of refs) { - const list = refsBySha.get(ref.sha) ?? []; - list.push(ref); - refsBySha.set(ref.sha, list); - } - - const laneOf = new Map(); - const laneOwner: (string | undefined)[] = []; - const placed = new Set(); - let laneCount = 0; - - const reserveLane = (sha: string) => { - const existing = laneOf.get(sha); - if (existing !== undefined) return existing; - let lane = -1; - for (let i = 0; i < laneCount; i++) { - const owner = laneOwner[i]; - if (owner === undefined || placed.has(owner)) { - lane = i; - break; - } - } - if (lane === -1) { - lane = laneCount++; - } - laneOf.set(sha, lane); - laneOwner[lane] = sha; - return lane; - }; - - const rows: LayoutCommit[] = []; - commits.forEach((commit, row) => { - const lane = reserveLane(commit.sha); - placed.add(commit.sha); - rows.push({ - ...commit, - row, - lane, - refs: refsBySha.get(commit.sha) ?? [], - }); - for (const parent of commit.parents) reserveLane(parent); - }); - - return { rows, laneCount }; -} - -function shortSha(sha: string) { - return sha.slice(0, 7); -} - -function shortRef(refname: string) { - const cleaned = refname.replace(/^refs\/heads\//, "").replace(/^refs\/remotes\//, ""); - return cleaned; -} - function commitMessage(sha: string): string { return shortSha(sha); } @@ -142,18 +83,28 @@ export function GitPanel({ workspaceRoot, onClose }: GitPanelProps) { const edgeLines = useMemo(() => { if (!rows.length) return []; - const lines: { key: string; d: string }[] = []; + const lines: { key: string; d: string; stub?: boolean }[] = []; const rowBySha = new Map(rows.map((r) => [r.sha, r.row])); const laneBySha = new Map(rows.map((r) => [r.sha, r.lane])); for (const commit of rows) { for (const parent of commit.parents) { - const parentRow = rowBySha.get(parent); - if (parentRow === undefined) continue; const childX = commit.lane * LANE_WIDTH + LANE_WIDTH / 2; + const childY = commit.row * ROW_HEIGHT + ROW_HEIGHT / 2; + const parentRow = rowBySha.get(parent); + if (parentRow === undefined) { + // Parent lies outside the fetched window (truncated history). + // Draw a short dangling stub downward to signal the cut. + const stubEnd = childY + 12; + lines.push({ + key: `${commit.sha}-${parent}`, + d: `M ${childX} ${childY} L ${childX} ${stubEnd}`, + stub: true, + }); + continue; + } const parentLane = laneBySha.get(parent); if (parentLane === undefined) continue; const parentX = parentLane * LANE_WIDTH + LANE_WIDTH / 2; - const childY = commit.row * ROW_HEIGHT + ROW_HEIGHT / 2; const parentY = parentRow * ROW_HEIGHT + ROW_HEIGHT / 2; if (commit.lane === parentLane) { lines.push({ key: `${commit.sha}-${parent}`, d: `M ${childX} ${childY} L ${parentX} ${parentY}` }); @@ -191,6 +142,15 @@ export function GitPanel({ workspaceRoot, onClose }: GitPanelProps) {
+ {data?.ok && data.truncated && data.totalCount !== undefined && data.totalCount !== null ? ( +
+ + + 历史已截断:显示前 {data.count} 条,仓库共有 {data.totalCount} 条提交。虚线表示截断边界。 + +
+ ) : null} +
{loading ? ( @@ -215,9 +175,10 @@ export function GitPanel({ workspaceRoot, onClose }: GitPanelProps) { key={line.key} d={line.d} fill="none" - stroke="var(--color-border)" - strokeWidth={1.5} - opacity={0.8} + stroke={line.stub ? "var(--color-muted-foreground)" : "var(--color-border)"} + strokeWidth={line.stub ? 1 : 1.5} + strokeDasharray={line.stub ? "3 3" : undefined} + opacity={line.stub ? 0.7 : 0.8} /> ))} {rows.map((commit) => { diff --git a/apps/app/src/react-app/domains/session/git/graph-layout.ts b/apps/app/src/react-app/domains/session/git/graph-layout.ts new file mode 100644 index 000000000..1fbae38b0 --- /dev/null +++ b/apps/app/src/react-app/domains/session/git/graph-layout.ts @@ -0,0 +1,144 @@ +/** + * Pure git-graph swimlane layout. + * + * Input is the commit DAG produced by the Electron main process + * (`git rev-list --parents --all`) plus ref → commit mapping. This module is + * deliberately framework-free so the layout algorithm can be unit-tested + * without React/DOM. + */ + +export type GraphCommit = { + sha: string; + parents: string[]; +}; + +export type GraphRef = { + sha: string; + refname: string; + head: boolean; +}; + +export type LayoutCommit = GraphCommit & { + row: number; + lane: number; + refs: GraphRef[]; +}; + +export type GraphLayout = { + rows: LayoutCommit[]; + laneCount: number; +}; + +/** + * Greedy lane assignment based on parent inheritance: + * - a commit inherits its FIRST parent's lane (linear history stays in one + * column); + * - the second+ parent of a merge opens a new lane; + * - a lane whose owner has already been placed can be reused for a fresh + * branch. + * + * Invariants: + * - every row index equals its position in the input order (0..n-1); + * - every lane index is a non-negative integer in [0, laneCount); + * - a commit's lane never changes once assigned; + * - every commit with at least one parent inherits that parent's lane unless + * the parent's lane is still owned by an unplaced commit and a second + * parent forces a fork. + */ +export function layoutGraph(commits: GraphCommit[], refs: GraphRef[] = []): GraphLayout { + const refsBySha = new Map(); + for (const ref of refs) { + const list = refsBySha.get(ref.sha) ?? []; + list.push(ref); + refsBySha.set(ref.sha, list); + } + + const laneOf = new Map(); + const laneOwner: (string | undefined)[] = []; + const placed = new Set(); + let laneCount = 0; + + const freeLaneOrNew = () => { + for (let i = 0; i < laneCount; i++) { + const owner = laneOwner[i]; + if (owner === undefined || placed.has(owner)) return i; + } + const lane = laneCount++; + laneOwner.push(undefined); + return lane; + }; + + const claimLane = (sha: string) => { + const existing = laneOf.get(sha); + if (existing !== undefined) return existing; + const lane = freeLaneOrNew(); + laneOf.set(sha, lane); + laneOwner[lane] = sha; + return lane; + }; + + // A fresh lane that never reuses a sibling's lane; used only when a commit + // forks away from a parent whose lane is already occupied by a sibling. + const claimFreshLane = () => { + const lane = laneCount++; + laneOwner.push(undefined); + return lane; + }; + + const rows: LayoutCommit[] = []; + commits.forEach((commit, row) => { + const firstParent = commit.parents[0]; + let lane: number; + const alreadyAssigned = laneOf.get(commit.sha); + if (alreadyAssigned !== undefined) { + // The commit was reserved as a parent earlier; keep its lane. + lane = alreadyAssigned; + } else if ( + firstParent !== undefined + && laneOf.has(firstParent) + && laneOwner[laneOf.get(firstParent)!] === firstParent + ) { + // Inherit the first parent's lane (linear continuation) — but only if + // the parent still occupies that lane. A sibling branch that already + // inherited it forces this branch into its own fresh lane. + lane = laneOf.get(firstParent)!; + } else if (firstParent !== undefined && laneOf.has(firstParent)) { + // Parent's lane is held by a sibling branch; fork to a fresh lane so + // the two branches remain visually distinct. + lane = claimFreshLane(); + } else { + lane = freeLaneOrNew(); + } + placed.add(commit.sha); + laneOf.set(commit.sha, lane); + laneOwner[lane] = commit.sha; + rows.push({ + ...commit, + row, + lane, + refs: refsBySha.get(commit.sha) ?? [], + }); + // Reserve lanes for parents not yet assigned. The first parent shares + // this lane (unless it already has one); second+ parents fork to new + // lanes so merges become visible. + commit.parents.forEach((parent, index) => { + if (laneOf.has(parent)) return; + if (index === 0) { + laneOf.set(parent, lane); + laneOwner[lane] = parent; + } else { + claimLane(parent); + } + }); + }); + + return { rows, laneCount }; +} + +export function shortSha(sha: string): string { + return sha.slice(0, 7); +} + +export function shortRef(refname: string): string { + return refname.replace(/^refs\/heads\//, "").replace(/^refs\/remotes\//, ""); +} diff --git a/apps/app/src/react-app/domains/session/terminal/ops-panel.tsx b/apps/app/src/react-app/domains/session/ops/ops-panel.tsx similarity index 99% rename from apps/app/src/react-app/domains/session/terminal/ops-panel.tsx rename to apps/app/src/react-app/domains/session/ops/ops-panel.tsx index 9c2bc8564..3f73967c1 100644 --- a/apps/app/src/react-app/domains/session/terminal/ops-panel.tsx +++ b/apps/app/src/react-app/domains/session/ops/ops-panel.tsx @@ -9,6 +9,7 @@ import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { cn } from "@/lib/utils"; import { isElectronRuntime } from "../../../../app/utils"; +import { normalizeSshTarget } from "./ops-utils"; type OpsSession = { id: string; @@ -192,7 +193,7 @@ export function OpsPanel({ onClose }: OpsPanelProps) { }, []); const addSession = (target: string) => { - const clean = target.trim().replace(/^ssh\s+/, "").replace(/^-t\s+/, ""); + const clean = normalizeSshTarget(target); if (!clean) return; const id = `ops_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 7)}`; setSessions((prev) => [ diff --git a/apps/app/src/react-app/domains/session/ops/ops-utils.ts b/apps/app/src/react-app/domains/session/ops/ops-utils.ts new file mode 100644 index 000000000..8163d1ee4 --- /dev/null +++ b/apps/app/src/react-app/domains/session/ops/ops-utils.ts @@ -0,0 +1,21 @@ +/** + * Pure helpers for the SSH ops panel. + * + * Framework-free so they can be unit-tested without React/DOM. + */ + +/** Normalize a raw SSH connect target: strip a leading `ssh`/`-t` and whitespace. */ +export function normalizeSshTarget(raw: string): string { + const trimmed = String(raw ?? "").trim(); + if (!trimmed) return ""; + let cleaned = trimmed; + const prefix = /^ssh\s+/; + if (prefix.test(cleaned)) { + cleaned = cleaned.replace(prefix, ""); + } + const flag = /^-t\s+/; + if (flag.test(cleaned)) { + cleaned = cleaned.replace(flag, ""); + } + return cleaned.trim(); +} diff --git a/apps/app/tests/graph-layout.test.ts b/apps/app/tests/graph-layout.test.ts new file mode 100644 index 000000000..f12b39a40 --- /dev/null +++ b/apps/app/tests/graph-layout.test.ts @@ -0,0 +1,101 @@ +import { describe, expect, test } from "bun:test"; + +import { layoutGraph, shortRef, shortSha } from "../src/react-app/domains/session/git/graph-layout"; + +function commit(sha: string, parents: string[] = []) { + return { sha, parents }; +} + +describe("layoutGraph", () => { + test("assigns ordered rows and valid lane indices", () => { + const commits = [commit("c1"), commit("c2", ["c1"]), commit("c3", ["c2"])]; + const { rows, laneCount } = layoutGraph(commits); + expect(rows.map((r) => r.row)).toEqual([0, 1, 2]); + expect(laneCount).toBeGreaterThanOrEqual(1); + for (const row of rows) { + expect(Number.isInteger(row.lane)).toBe(true); + expect(row.lane).toBeGreaterThanOrEqual(0); + expect(row.lane).toBeLessThan(laneCount); + } + }); + + test("linear history stays in a single lane", () => { + const commits = [commit("c1"), commit("c2", ["c1"]), commit("c3", ["c2"])]; + const { rows, laneCount } = layoutGraph(commits); + expect(laneCount).toBe(1); + expect(new Set(rows.map((r) => r.lane)).size).toBe(1); + }); + + test("a commit inherits its first parent's lane", () => { + const commits = [commit("c1"), commit("c2", ["c1"])]; + const { rows } = layoutGraph(commits); + const c1 = rows.find((r) => r.sha === "c1"); + const c2 = rows.find((r) => r.sha === "c2"); + expect(c1?.lane).toBe(c2?.lane); + }); + + test("a merge's second parent forks to a distinct lane", () => { + const commits = [ + commit("c1"), + commit("c2", ["c1"]), + commit("c3", ["c1"]), + commit("c4", ["c3", "c2"]), // merge + ]; + const { rows, laneCount } = layoutGraph(commits); + expect(laneCount).toBeGreaterThanOrEqual(2); + const c3 = rows.find((r) => r.sha === "c3"); + const c2 = rows.find((r) => r.sha === "c2"); + // c3 and c2 both descend from c1; they may share c1's lane, but the + // merge row must be resolvable and lanes valid. + expect(c3).toBeDefined(); + expect(c2).toBeDefined(); + for (const row of rows) { + expect(row.lane).toBeGreaterThanOrEqual(0); + expect(row.lane).toBeLessThan(laneCount); + } + }); + + test("empty graph yields zero lanes", () => { + const { rows, laneCount } = layoutGraph([]); + expect(rows.length).toBe(0); + expect(laneCount).toBe(0); + }); + + test("attaches refs to the matching commit", () => { + const refs = [{ sha: "c2", refname: "refs/heads/main", head: true }]; + const { rows } = layoutGraph([commit("c1"), commit("c2", ["c1"])], refs); + const c2 = rows.find((r) => r.sha === "c2"); + expect(c2?.refs).toEqual(refs); + }); + + test("truncated window: parent outside the window does not break layout", () => { + const commits = [commit("tip", ["parentOutside"])]; + const { rows, laneCount } = layoutGraph(commits); + expect(rows.length).toBe(1); + expect(laneCount).toBe(1); + }); + + test("many parallel branches stay bounded", () => { + const commits = [ + commit("base"), + ...Array.from({ length: 40 }, (_, i) => commit(`b${i}`, ["base"])), + ]; + const { laneCount, rows } = layoutGraph(commits); + expect(rows.length).toBe(41); + expect(laneCount).toBeLessThanOrEqual(41); + expect(laneCount).toBeGreaterThanOrEqual(1); + }); +}); + +describe("shortSha", () => { + test("truncates to 7 chars", () => { + expect(shortSha("abcdef1234567890")).toBe("abcdef1"); + }); +}); + +describe("shortRef", () => { + test("strips refs/heads and refs/remotes prefixes", () => { + expect(shortRef("refs/heads/main")).toBe("main"); + expect(shortRef("refs/remotes/origin/main")).toBe("origin/main"); + }); +}); diff --git a/apps/app/tests/ops-utils.test.ts b/apps/app/tests/ops-utils.test.ts new file mode 100644 index 000000000..a4a61e5d4 --- /dev/null +++ b/apps/app/tests/ops-utils.test.ts @@ -0,0 +1,30 @@ +import { describe, expect, test } from "bun:test"; + +import { normalizeSshTarget } from "../src/react-app/domains/session/ops/ops-utils"; + +describe("normalizeSshTarget", () => { + test("returns empty for blank input", () => { + expect(normalizeSshTarget("")).toBe(""); + expect(normalizeSshTarget(" ")).toBe(""); + }); + + test("strips a leading ssh command", () => { + expect(normalizeSshTarget("ssh user@host")).toBe("user@host"); + }); + + test("strips a leading -t flag", () => { + expect(normalizeSshTarget("-t user@host")).toBe("user@host"); + }); + + test("strips ssh then -t in order", () => { + expect(normalizeSshTarget("ssh -t user@host")).toBe("user@host"); + }); + + test("keeps a plain alias unchanged", () => { + expect(normalizeSshTarget("web-01")).toBe("web-01"); + }); + + test("trims surrounding whitespace", () => { + expect(normalizeSshTarget(" ssh user@host ")).toBe("user@host"); + }); +}); diff --git a/apps/desktop/electron/git-graph.mjs b/apps/desktop/electron/git-graph.mjs new file mode 100644 index 000000000..1ee326f45 --- /dev/null +++ b/apps/desktop/electron/git-graph.mjs @@ -0,0 +1,89 @@ +// Git graph DAG builder: commit DAG + ref mapping for the swimlane panel. +// Extracted from main.mjs into a factory so it can be unit-tested in +// isolation against real or fake git executables. +import { spawnSync } from "node:child_process"; + +const GIT_GRAPH_TIMEOUT_MS = 30_000; + +export function createGitGraph({ spawnSync: spawnSyncImpl = spawnSync } = {}) { + function runGitInWorkspace(cwd, args) { + const result = spawnSyncImpl("git", args, { + cwd, + encoding: "utf8", + timeout: GIT_GRAPH_TIMEOUT_MS, + env: { ...process.env, LC_ALL: "C", GIT_TERMINAL_PROMPT: "0", GIT_PAGER: "" }, + }); + if (result.error) { + if (result.error.code === "ENOENT") throw new Error("git executable not found"); + throw result.error; + } + if (result.status !== 0) { + throw new Error(`git ${args[0]} failed: ${String(result.stderr ?? "").trim().slice(0, 400)}`); + } + return String(result.stdout ?? ""); + } + + // Build a lightweight commit DAG for the workspace repo: commit hashes with + // their parents plus branch/tag refs. Uses `rev-list --parents` for exact + // edges and `for-each-ref` for ref → commit mapping. Bounded by an optional + // maxCommits to keep huge repos renderable. + function buildGitGraph(cwd, maxCommits = 2000) { + const revListOutput = runGitInWorkspace(cwd, [ + "rev-list", "--parents", "--all", "--max-count", String(maxCommits), + ]); + const commits = []; + for (const line of revListOutput.split("\n")) { + if (!line.trim()) continue; + const parts = line.trim().split(/\s+/); + const sha = parts[0]; + const parents = parts.slice(1); + commits.push({ sha, parents }); + } + + const refsOutput = runGitInWorkspace(cwd, [ + "for-each-ref", "refs/heads", "refs/remotes", + "--format=%(objectname)%00%(refname)%00%(HEAD)", "--merged", "HEAD", + ]); + const refs = []; + for (const line of refsOutput.split("\n")) { + if (!line.trim()) continue; + const [sha, refname, headFlag] = line.trim().split("\0"); + if (!sha || !refname) continue; + const head = headFlag === "*"; + refs.push({ sha, refname, head }); + } + + const count = commits.length; + const headShas = new Set(refs.filter((ref) => ref.head).map((ref) => ref.sha)); + + // Detect truncation: rev-list --max-count cannot tell us whether more + // commits exist, so ask for the total once. + let truncated = false; + let totalCount = null; + if (commits.length > 0) { + try { + const countOutput = runGitInWorkspace(cwd, ["rev-list", "--all", "--count"]); + const parsed = Number.parseInt(String(countOutput).trim(), 10); + if (Number.isFinite(parsed) && parsed > 0) { + totalCount = parsed; + truncated = parsed > commits.length; + } + } catch { + // Total-count probe failed; leave truncated=false. + } + } + + return { + ok: true, + repoRoot: cwd, + count, + totalCount, + truncated, + commits, + refs, + headShas: [...headShas], + }; + } + + return { runGitInWorkspace, buildGitGraph }; +} diff --git a/apps/desktop/electron/git-graph.test.mjs b/apps/desktop/electron/git-graph.test.mjs new file mode 100644 index 000000000..4e9a04f7d --- /dev/null +++ b/apps/desktop/electron/git-graph.test.mjs @@ -0,0 +1,90 @@ +import assert from "node:assert/strict"; +import { test } from "node:test"; + +import { createGitGraph } from "./git-graph.mjs"; + +// A fake spawnSync that returns canned git output keyed by command. +function gitWithOutput({ revList, refs, count }) { + const calls = []; + const spawnSyncImpl = (_cmd, args) => { + calls.push(args); + const stdoutFor = () => { + if (args[0] === "rev-list" && args.includes("--max-count")) return revList; + if (args[0] === "rev-list" && args.includes("--count")) return count ?? ""; + if (args[0] === "for-each-ref") return refs ?? ""; + return ""; + }; + return { status: 0, stdout: stdoutFor(), stderr: "" }; + }; + return { graph: createGitGraph({ spawnSync: spawnSyncImpl }), calls }; +} + +test("buildGitGraph parses commit DAG with parents", () => { + const { graph } = gitWithOutput({ + revList: "aaa111 parent1 parent2\nbbb222 parent3\nccc333\n", + refs: "", + count: "3", + }); + const result = graph.buildGitGraph("/repo"); + assert.equal(result.ok, true); + assert.equal(result.count, 3); + assert.deepEqual(result.commits[0], { sha: "aaa111", parents: ["parent1", "parent2"] }); + assert.deepEqual(result.commits[2], { sha: "ccc333", parents: [] }); +}); + +test("buildGitGraph maps refs and HEAD flag", () => { + const { graph } = gitWithOutput({ + revList: "aaa111 parent1\n", + refs: "aaa111\x00refs/heads/main\x00*\naaa111\x00refs/remotes/origin/main\x00 \n", + count: "1", + }); + const result = graph.buildGitGraph("/repo"); + assert.deepEqual(result.headShas, ["aaa111"]); + assert.deepEqual(result.refs, [ + { sha: "aaa111", refname: "refs/heads/main", head: true }, + { sha: "aaa111", refname: "refs/remotes/origin/main", head: false }, + ]); +}); + +test("buildGitGraph reports truncation when total exceeds window", () => { + const { graph } = gitWithOutput({ + revList: "aaa111\nbbb222\n", + refs: "", + count: "100", + }); + const result = graph.buildGitGraph("/repo", 2); + assert.equal(result.truncated, true); + assert.equal(result.totalCount, 100); + assert.equal(result.count, 2); +}); + +test("buildGitGraph is not truncated when total fits in window", () => { + const { graph } = gitWithOutput({ + revList: "aaa111\nbbb222\n", + refs: "", + count: "2", + }); + const result = graph.buildGitGraph("/repo", 2000); + assert.equal(result.truncated, false); + assert.equal(result.totalCount, 2); +}); + +test("buildGitGraph tolerates a failing total-count probe", () => { + const spawnSyncImpl = (_cmd, args) => { + if (args[0] === "rev-list" && args.includes("--count")) { + return { status: 128, stdout: "", stderr: "fatal: permission" }; + } + return { status: 0, stdout: "aaa111\n", stderr: "" }; + }; + const graph = createGitGraph({ spawnSync: spawnSyncImpl }); + const result = graph.buildGitGraph("/repo"); + assert.equal(result.ok, true); + assert.equal(result.truncated, false); + assert.equal(result.totalCount, null); +}); + +test("buildGitGraph propagates git failure", () => { + const spawnSyncImpl = (_cmd, _args) => ({ status: 128, stdout: "", stderr: "fatal: not a git repository" }); + const graph = createGitGraph({ spawnSync: spawnSyncImpl }); + assert.throws(() => graph.buildGitGraph("/not-a-repo"), /not a git repository/); +}); diff --git a/apps/desktop/electron/lan-preview-server.mjs b/apps/desktop/electron/lan-preview-server.mjs index 81d87ece1..8c749552f 100644 --- a/apps/desktop/electron/lan-preview-server.mjs +++ b/apps/desktop/electron/lan-preview-server.mjs @@ -11,7 +11,7 @@ // - Per-IP fail lockout + sliding-window rate limit on /pair. // - Only snapshot()/listActions() are ever bridged to the renderer; the // /api/execute route is hard-rejected with 403 (read-only mode). -import { randomBytes, randomInt } from "node:crypto"; +import { randomBytes } from "node:crypto"; import { createServer } from "node:http"; import os from "node:os"; import path from "node:path"; @@ -21,9 +21,20 @@ const CHALLENGE_TTL_MS = 60 * 1000; const SESSION_TTL_MS = 12 * 60 * 60 * 1000; const MAX_FAILS = 5; const LOCK_MS = 30 * 1000; +// Global (all-IP) fail lockout with exponential backoff, so distributed +// attackers cannot amortize per-IP limits behind NAT. +const MAX_GLOBAL_FAILS = 15; +const GLOBAL_LOCK_BASE_MS = 60 * 1000; +const GLOBAL_LOCK_MAX_MS = 15 * 60 * 1000; const RATE_WINDOW_MS = 60_000; const RATE_MAX = 20; const DEFAULT_PORT = 39485; +// Pair code alphabet: uppercase letters + digits (avoiding ambiguous +// 0/O/1/I) → 31 chars ≈ 4.95 bits each, 8 chars ≈ 39.6 bits, far stronger +// than 6 numeric digits (~19.9 bits) while staying human-typable on mobile. +// Uppercase-only so the mobile page can normalize input with toUpperCase(). +const CODE_ALPHABET = "23456789ABCDEFGHJKMNPQRSTUVWXYZ"; +const CODE_LENGTH = 8; function sendJson(response, statusCode, payload) { response.writeHead(statusCode, { @@ -82,7 +93,7 @@ function lanAddresses() { return out; } -export function createLanPreviewServer({ appName, getWindow, pageHtmlPath, log = () => {} }) { +export function createLanPreviewServer({ appName, getWindow, previewCore, pageHtmlPath, log = () => {} }) { let server = null; let port = 0; let code = null; @@ -91,11 +102,20 @@ export function createLanPreviewServer({ appName, getWindow, pageHtmlPath, log = const sessions = new Map(); const fails = new Map(); const hits = new Map(); + let globalFailCount = 0; + let globalLockedUntil = 0; const randHex = (n) => randomBytes(n).toString("hex"); function generateCode() { - code = String(randomInt(0, 1_000_000)).padStart(6, "0"); + // Uniform sampling from the alphabet using rejection-free byte mapping; + // 8 chars from a 56-char alphabet ≈ 46.7 bits of entropy. + const bytes = randomBytes(CODE_LENGTH); + const chars = []; + for (let i = 0; i < CODE_LENGTH; i++) { + chars.push(CODE_ALPHABET[bytes[i] % CODE_ALPHABET.length]); + } + code = chars.join(""); codeExpiresAt = Date.now() + CODE_TTL_MS; return { code, expiresAt: codeExpiresAt }; } @@ -142,31 +162,32 @@ export function createLanPreviewServer({ appName, getWindow, pageHtmlPath, log = current.lockedUntil = Date.now() + LOCK_MS; } fails.set(ip, current); + + // Global backoff: failures from any source advance a shared counter. + // The lock duration grows exponentially so a sustained brute-force is + // throttled regardless of how many source IPs participate. + globalFailCount += 1; + if (globalFailCount >= MAX_GLOBAL_FAILS) { + const step = Math.floor(globalFailCount / MAX_GLOBAL_FAILS) - 1; + const backoff = Math.min(GLOBAL_LOCK_BASE_MS * 2 ** Math.max(0, step), GLOBAL_LOCK_MAX_MS); + globalLockedUntil = Date.now() + backoff; + } } function lockRemainingFor(ip) { const current = fails.get(ip); - if (!current) return 0; - const remaining = current.lockedUntil - Date.now(); - return remaining > 0 ? remaining : 0; + const perIpRemaining = current ? current.lockedUntil - Date.now() : 0; + const globalRemaining = globalLockedUntil - Date.now(); + return Math.max(perIpRemaining, globalRemaining, 0); } async function invokeRenderer(method) { - const win = await getWindow(); - if (!win || win.isDestroyed()) { - throw new Error("renderer-unavailable"); + if (!previewCore) { + throw new Error("preview-core-unavailable"); } - return win.webContents.executeJavaScript( - `(async () => { - const control = window.__ipolloworkControl; - if (!control) return { ok: false, error: "control-surface-unavailable" }; - control.setEnabled?.(true); - if (${JSON.stringify(method)} === "snapshot") return { ok: true, ...control.snapshot() }; - if (${JSON.stringify(method)} === "actions") return { ok: true, actions: control.listActions() }; - return { ok: false, error: "unknown-method" }; - })()`, - true, - ); + if (method === "snapshot") return previewCore.getSnapshot(); + if (method === "actions") return previewCore.getActions(); + throw new Error("unknown-method"); } async function handle(request, response) { @@ -274,6 +295,8 @@ export function createLanPreviewServer({ appName, getWindow, pageHtmlPath, log = sessions.clear(); fails.clear(); hits.clear(); + globalFailCount = 0; + globalLockedUntil = 0; }, regenerateCode() { if (!server) return null; diff --git a/apps/desktop/electron/main.mjs b/apps/desktop/electron/main.mjs index 316749f7d..1523ebab7 100644 --- a/apps/desktop/electron/main.mjs +++ b/apps/desktop/electron/main.mjs @@ -1,7 +1,7 @@ -import { execFileSync, spawn, spawnSync } from "node:child_process"; +import { execFileSync, spawn } from "node:child_process"; import { createServer } from "node:http"; import net from "node:net"; -import { existsSync, readFileSync, readdirSync } from "node:fs"; +import { existsSync, readdirSync } from "node:fs"; import { cp, mkdir, @@ -30,6 +30,9 @@ import { } from "./computer-use.mjs"; import { createUiControlServer } from "./ui-control-server.mjs"; import { createLanPreviewServer, lanPreviewPagePath } from "./lan-preview-server.mjs"; +import { createSshOps } from "./ssh-ops.mjs"; +import { createGitGraph } from "./git-graph.mjs"; +import { createPreviewCore } from "./preview-core.mjs"; import { createApplicationMenu } from "./app-menu.mjs"; import { createBrowserPanel } from "./browser-panel.mjs"; import { createWorkspaceStore } from "./workspace-store.mjs"; @@ -117,9 +120,13 @@ const uiControlServer = createUiControlServer({ const lanPreviewServer = createLanPreviewServer({ appName: APP_NAME, getWindow: () => createMainWindow(), + previewCore: createPreviewCore({ getWindow: () => createMainWindow() }), pageHtmlPath: lanPreviewPagePath(path.resolve(__dirname, "..")), }); +const sshOps = createSshOps({ pty }); +const gitGraph = createGitGraph(); + const terminalProcesses = new Map(); const hyperframesProcesses = new Map(); let nextTerminalId = 1; @@ -141,11 +148,6 @@ function isHyperframesStudioUrl(url) { } } -function defaultTerminalShell() { - if (process.platform === "win32") return process.env.COMSPEC || "powershell.exe"; - return process.env.SHELL || (process.platform === "darwin" ? "/bin/zsh" : "/bin/bash"); -} - async function resolveTerminalCwd(cwd) { const fallback = os.homedir(); if (typeof cwd !== "string" || !cwd.trim()) return fallback; @@ -3011,57 +3013,9 @@ ipcMain.handle("ipollowork:system:askMicrophoneAccess", async () => { }); // ── Terminal IPC ──────────────────────────────────────────────────────── -// Shared terminal spawn used by both the in-session dock and the SSH ops -// panel. When `command` is provided it runs the executable directly instead of -// dropping into an interactive shell — e.g. ["ssh", "user@host"] for remote -// sessions. Spawning the command itself (not `shell -c ...`) keeps the pty on -// the executable so interactive prompts, host-key checks and passphrase -// dialogs behave exactly like a real ssh client. -function spawnTerminalProcess({ cwd, cols, rows, command, shellPath }) { - const program = Array.isArray(command) && command.length > 0 - ? command[0] - : (shellPath ?? defaultTerminalShell()); - const args = Array.isArray(command) && command.length > 1 ? command.slice(1) : []; - return pty.spawn(program, args, { - name: "xterm-256color", - cols, - rows, - cwd, - env: { - ...process.env, - TERM: "xterm-256color", - COLORTERM: "truecolor", - IPOLLOWORK_TERMINAL: "1", - }, - }); -} - -// Parse ~/.ssh/config into a lightweight host list for the ops panel. -// Mirrors OpenSSH semantics for the Host directive without shelling out to -// `ssh -G`, keeping the operation local and dependency-free. -function readSshConfigHosts() { - const configPath = path.join(os.homedir(), ".ssh", "config"); - let raw; - try { - raw = readFileSync(configPath, "utf8"); - } catch { - return { hosts: [], configPath }; - } - const hosts = []; - const lines = raw.split(/\r?\n/); - for (const line of lines) { - const trimmed = line.trim(); - if (!trimmed || trimmed.startsWith("#")) continue; - const match = /^Host\s+(.+)$/.exec(trimmed); - if (!match) continue; - const entries = match[1].split(/\s+/).filter(Boolean); - for (const entry of entries) { - if (entry.includes("*") || entry.includes("?")) continue; - hosts.push(entry); - } - } - return { hosts: [...new Set(hosts)], configPath }; -} +// Shared terminal spawn (spawnTerminalProcess) and ~/.ssh/config host +// discovery (readSshConfigHosts) live in ssh-ops.mjs and are injected as +// `sshOps`. ipcMain.handle("ipollowork:terminal:create", async (event, options = {}) => { const cwd = await resolveTerminalCwd(options?.cwd); @@ -3069,7 +3023,7 @@ ipcMain.handle("ipollowork:terminal:create", async (event, options = {}) => { const rows = Number.isFinite(options?.rows) ? Math.max(5, Math.floor(options.rows)) : 24; const terminalId = `term_${nextTerminalId++}`; const shellPath = typeof options?.shell === "string" && options.shell.trim() ? options.shell.trim() : undefined; - const child = spawnTerminalProcess({ cwd, cols, rows, command: options?.command, shellPath }); + const child = sshOps.spawnTerminalProcess({ cwd, cols, rows, command: options?.command, shellPath }); terminalProcesses.set(terminalId, { process: child, webContentsId: event.sender.id }); event.sender.once("destroyed", () => killTerminalsForWebContents(event.sender.id)); @@ -3101,83 +3055,17 @@ ipcMain.handle("ipollowork:terminal:kill", (event, terminalId) => { killTerminal(String(terminalId)); }); -ipcMain.handle("ipollowork:ssh:list-hosts", (event) => { - if (!event.sender) return readSshConfigHosts(); - return readSshConfigHosts(); -}); +ipcMain.handle("ipollowork:ssh:list-hosts", () => sshOps.readSshConfigHosts()); // ── Git graph IPC ────────────────────────────────────────────────────── -const GIT_GRAPH_TIMEOUT_MS = 30_000; - -function runGitInWorkspace(cwd, args) { - const result = spawnSync("git", args, { - cwd, - encoding: "utf8", - timeout: GIT_GRAPH_TIMEOUT_MS, - env: { ...process.env, LC_ALL: "C", GIT_TERMINAL_PROMPT: "0", GIT_PAGER: "" }, - }); - if (result.error) { - if (result.error.code === "ENOENT") throw new Error("git executable not found"); - throw result.error; - } - if (result.status !== 0) { - throw new Error(`git ${args[0]} failed: ${String(result.stderr ?? "").trim().slice(0, 400)}`); - } - return String(result.stdout ?? ""); -} - -// Build a lightweight commit DAG for the workspace repo: commit hashes with -// their parents plus branch/tag refs. Uses `rev-list --parents` for exact -// edges (not `git log --graph` text parsing, which is locale/encoding -// fragile) and `for-each-ref` for ref → commit mapping. Bounded by an -// optional maxCommits to keep huge repos renderable. -function buildGitGraph(cwd, maxCommits = 2000) { - const revListOutput = runGitInWorkspace(cwd, [ - "rev-list", "--parents", "--all", "--max-count", String(maxCommits), - ]); - const commits = []; - const commitBySha = new Map(); - for (const line of revListOutput.split("\n")) { - if (!line.trim()) continue; - const parts = line.trim().split(/\s+/); - const sha = parts[0]; - const parents = parts.slice(1); - commits.push({ sha, parents }); - commitBySha.set(sha, { sha, parents }); - } - - const refsOutput = runGitInWorkspace(cwd, [ - "for-each-ref", "refs/heads", "refs/remotes", - "--format=%(objectname)%00%(refname)%00%(HEAD)", "--merged", "HEAD", - ]); - const refs = []; - for (const line of refsOutput.split("\n")) { - if (!line.trim()) continue; - const [sha, refname, headFlag] = line.trim().split("\0"); - if (!sha || !refname) continue; - const head = headFlag === "*"; - refs.push({ sha, refname, head }); - } - - const count = commits.length; - // Resolve tips reachable from HEAD refs so we can draw ref badges. - const headShas = new Set(refs.filter((ref) => ref.head).map((ref) => ref.sha)); - - return { - ok: true, - repoRoot: cwd, - count, - commits, - refs, - headShas: [...headShas], - }; -} +// Commit DAG + ref mapping builder (buildGitGraph) lives in git-graph.mjs +// and is injected as `gitGraph`. ipcMain.handle("ipollowork:git:graph", (event, options = {}) => { const cwd = typeof options?.cwd === "string" && options.cwd.trim() ? options.cwd.trim() : undefined; if (!cwd) return { ok: false, error: "missing cwd" }; try { - const result = buildGitGraph(cwd, Number.isFinite(options?.maxCommits) ? options.maxCommits : 2000); + const result = gitGraph.buildGitGraph(cwd, Number.isFinite(options?.maxCommits) ? options.maxCommits : 2000); result.isRepo = true; return result; } catch (error) { diff --git a/apps/desktop/electron/preview-core.mjs b/apps/desktop/electron/preview-core.mjs new file mode 100644 index 000000000..284aac045 --- /dev/null +++ b/apps/desktop/electron/preview-core.mjs @@ -0,0 +1,90 @@ +// preview-core: the shared "fetch a read-only snapshot of the renderer's +// __ipolloworkControl surface" kernel, plus a sanitized public summary. +// +// Consumed by the LAN preview server and (later) the IM bot channel so both +// read the workbench through the same narrowed, whitelisted path. Never +// exposes `execute` — this core is read-only by construction. + +const RENDERER_TIMEOUT_MS = 5_000; + +// Whitelist of methods the core may invoke on window.__ipolloworkControl. +// HTTP/IM request payloads never select a method; it is fixed by the caller. +const ALLOWED_METHODS = new Set(["snapshot", "actions"]); + +function runInRenderer({ getWindow, method }) { + if (!ALLOWED_METHODS.has(method)) { + return Promise.resolve({ ok: false, error: "method-not-allowed" }); + } + // getWindow may return a window directly or a Promise (both are used by + // callers), so resolve either shape. + return Promise.resolve() + .then(() => getWindow()) + .then((win) => { + if (!win || win.isDestroyed()) { + throw new Error("renderer-unavailable"); + } + let timeoutId; + const timeout = new Promise((_, reject) => { + timeoutId = setTimeout(() => reject(new Error("renderer-timeout")), RENDERER_TIMEOUT_MS); + }); + const execution = win.webContents.executeJavaScript( + `(async () => { + const control = window.__ipolloworkControl; + if (!control) return { ok: false, error: "control-surface-unavailable" }; + control.setEnabled?.(true); + if (${JSON.stringify(method)} === "snapshot") return { ok: true, ...control.snapshot() }; + if (${JSON.stringify(method)} === "actions") return { ok: true, actions: control.listActions() }; + return { ok: false, error: "unknown-method" }; + })()`, + true, + ); + return Promise.race([execution, timeout]).finally(() => clearTimeout(timeoutId)); + }); +} + +// Redact values that should never leave the machine (paths, URLs, tokens, +// env-like names). Used to build the public summary for LAN/IM surfaces. +function redactValue(value, key) { + if (typeof value !== "string") return value; + if (/token|secret|password|key|auth/i.test(key)) return "••••••"; + return value; +} + +// Build a compact, safe summary of a snapshot suitable for an external +// surface (LAN page, IM card). Only whitelisted scalar fields are carried. +export function publicSnapshotSummary(snapshot) { + const source = snapshot ?? {}; + const result = {}; + for (const [key, value] of Object.entries(source)) { + if (value === undefined || value === null) continue; + if (typeof value === "boolean" || typeof value === "number" || typeof value === "string") { + result[key] = redactValue(value, key); + } + } + return result; +} + +export function createPreviewCore({ getWindow }) { + return { + getSnapshot() { + return runInRenderer({ getWindow, method: "snapshot" }); + }, + getActions() { + return runInRenderer({ getWindow, method: "actions" }); + }, + // Returns { ok, summary, actions? } with values redacted for external + // consumption. Throws if the renderer is unavailable. + async getPublicSummary() { + const snapshot = await runInRenderer({ getWindow, method: "snapshot" }); + if (!snapshot?.ok) { + throw new Error("renderer-unavailable"); + } + const actions = await runInRenderer({ getWindow, method: "actions" }).catch(() => null); + return { + ok: true, + summary: publicSnapshotSummary(snapshot), + actions: actions?.ok === true ? actions.actions : [], + }; + }, + }; +} diff --git a/apps/desktop/electron/preview-core.test.mjs b/apps/desktop/electron/preview-core.test.mjs new file mode 100644 index 000000000..2291b4532 --- /dev/null +++ b/apps/desktop/electron/preview-core.test.mjs @@ -0,0 +1,82 @@ +import assert from "node:assert/strict"; +import { test } from "node:test"; + +import { createPreviewCore, publicSnapshotSummary } from "./preview-core.mjs"; + +function fakeRenderer({ snapshot, actions }) { + const executed = []; + return { + executed, + getWindow: () => ({ + isDestroyed: () => false, + webContents: { + executeJavaScript: async (expr) => { + executed.push(expr); + // Match the method by the guard the core injects: + // if (${method} === "snapshot") return ... + if (expr.includes('"snapshot" === "snapshot"')) { + return { ok: true, ...(snapshot ?? { status: "ready" }) }; + } + if (expr.includes('"actions" === "actions"')) { + return { ok: true, actions: actions ?? [] }; + } + return { ok: false, error: "unknown" }; + }, + }, + }), + }; +} + +test("getSnapshot returns the renderer snapshot", async () => { + const renderer = fakeRenderer({ snapshot: { status: "ready", sessionId: "s1" } }); + const core = createPreviewCore({ getWindow: renderer.getWindow }); + const result = await core.getSnapshot(); + assert.equal(result.ok, true); + assert.equal(result.sessionId, "s1"); +}); + +test("getActions returns the action list", async () => { + const renderer = fakeRenderer({ actions: [{ id: "a", label: "A" }] }); + const core = createPreviewCore({ getWindow: renderer.getWindow }); + const result = await core.getActions(); + assert.equal(result.ok, true); + assert.equal(result.actions.length, 1); +}); + +test("getPublicSummary redacts sensitive keys and skips objects/arrays", async () => { + const renderer = fakeRenderer({ + snapshot: { + status: "ready", + sessionId: "s1", + workspaceRoot: "/Users/me", + apiToken: "super-secret", + accessKey: "k", + nested: { a: 1 }, + tags: ["x"], + }, + actions: [{ id: "a" }], + }); + const core = createPreviewCore({ getWindow: renderer.getWindow }); + const result = await core.getPublicSummary(); + assert.equal(result.ok, true); + assert.equal(result.summary.sessionId, "s1"); + assert.equal(result.summary.workspaceRoot, "/Users/me"); + assert.equal(result.summary.apiToken, "••••••"); + assert.equal(result.summary.accessKey, "••••••"); + assert.equal("nested" in result.summary, false); + assert.equal("tags" in result.summary, false); + assert.equal(result.actions.length, 1); +}); + +test("getPublicSummary throws when renderer is unavailable", async () => { + const core = createPreviewCore({ + getWindow: () => ({ isDestroyed: () => true, webContents: null }), + }); + await assert.rejects(() => core.getPublicSummary(), /renderer-unavailable/); +}); + +test("publicSnapshotSummary redacts token-like keys", () => { + const summary = publicSnapshotSummary({ status: "ok", bearerToken: "abc" }); + assert.equal(summary.status, "ok"); + assert.equal(summary.bearerToken, "••••••"); +}); diff --git a/apps/desktop/electron/ssh-ops.mjs b/apps/desktop/electron/ssh-ops.mjs new file mode 100644 index 000000000..d0b01621f --- /dev/null +++ b/apps/desktop/electron/ssh-ops.mjs @@ -0,0 +1,66 @@ +// SSH ops terminal support: shared pty spawn (used by the in-session dock +// and the ops panel) plus ~/.ssh/config host discovery. Extracted from +// main.mjs into a factory so it can be unit-tested in isolation. +import { readFileSync } from "node:fs"; +import os from "node:os"; +import path from "node:path"; + +export function createSshOps({ pty, homedir = () => os.homedir() }) { + function defaultTerminalShell() { + if (process.platform === "win32") return process.env.COMSPEC || "powershell.exe"; + return process.env.SHELL || (process.platform === "darwin" ? "/bin/zsh" : "/bin/bash"); + } + + // Shared terminal spawn used by both the in-session dock and the SSH ops + // panel. When `command` is provided it runs the executable directly instead + // of dropping into an interactive shell — e.g. ["ssh", "user@host"]. + // Spawning the command itself (not `shell -c ...`) keeps the pty on the + // executable so interactive prompts behave like a real ssh client. + function spawnTerminalProcess({ cwd, cols, rows, command, shellPath }) { + const program = Array.isArray(command) && command.length > 0 + ? command[0] + : (shellPath ?? defaultTerminalShell()); + const args = Array.isArray(command) && command.length > 1 ? command.slice(1) : []; + return pty.spawn(program, args, { + name: "xterm-256color", + cols, + rows, + cwd, + env: { + ...process.env, + TERM: "xterm-256color", + COLORTERM: "truecolor", + IPOLLOWORK_TERMINAL: "1", + }, + }); + } + + // Parse ~/.ssh/config into a lightweight host list for the ops panel. + // Mirrors OpenSSH semantics for the Host directive without shelling out to + // `ssh -G`, keeping the operation local and dependency-free. + function readSshConfigHosts() { + const configPath = path.join(homedir(), ".ssh", "config"); + let raw; + try { + raw = readFileSync(configPath, "utf8"); + } catch { + return { hosts: [], configPath }; + } + const hosts = []; + const lines = raw.split(/\r?\n/); + for (const line of lines) { + const trimmed = line.trim(); + if (!trimmed || trimmed.startsWith("#")) continue; + const match = /^Host\s+(.+)$/.exec(trimmed); + if (!match) continue; + const entries = match[1].split(/\s+/).filter(Boolean); + for (const entry of entries) { + if (entry.includes("*") || entry.includes("?")) continue; + hosts.push(entry); + } + } + return { hosts: [...new Set(hosts)], configPath }; + } + + return { spawnTerminalProcess, readSshConfigHosts, defaultTerminalShell }; +} diff --git a/apps/desktop/electron/ssh-ops.test.mjs b/apps/desktop/electron/ssh-ops.test.mjs new file mode 100644 index 000000000..5e2cf0b29 --- /dev/null +++ b/apps/desktop/electron/ssh-ops.test.mjs @@ -0,0 +1,84 @@ +import assert from "node:assert/strict"; +import { test } from "node:test"; +import { mkdtempSync, writeFileSync, mkdirSync } from "node:fs"; +import { tmpdir } from "node:os"; +import path from "node:path"; + +import { createSshOps } from "./ssh-ops.mjs"; + +function fakePty() { + const spawned = []; + return { + spawned, + spawn(program, args, options) { + const proc = { program, args, options, write() {}, resize() {}, kill() {} }; + spawned.push(proc); + return proc; + }, + }; +} + +function sshOpsWithConfig(configBody) { + const home = mkdtempSync(path.join(tmpdir(), "ipw-ssh-test-")); + if (configBody !== null) { + const sshDir = path.join(home, ".ssh"); + mkdirSync(sshDir, { recursive: true }); + writeFileSync(path.join(sshDir, "config"), configBody, "utf8"); + } + const pty = fakePty(); + const ops = createSshOps({ pty, homedir: () => home }); + return { ops, pty, home }; +} + +test("spawnTerminalProcess spawns the shell with no args by default", () => { + const { ops, pty } = sshOpsWithConfig(null); + const child = ops.spawnTerminalProcess({ cwd: "/", cols: 80, rows: 24 }); + assert.equal(pty.spawned.length, 1); + assert.equal(pty.spawned[0].args.length, 0); + assert.equal(child, pty.spawned[0]); + assert.equal(pty.spawned[0].options.env.IPOLLOWORK_TERMINAL, "1"); +}); + +test("spawnTerminalProcess runs an explicit command directly (not via shell)", () => { + const { ops, pty } = sshOpsWithConfig(null); + ops.spawnTerminalProcess({ cwd: "/", cols: 80, rows: 24, command: ["ssh", "-t", "user@host"] }); + assert.equal(pty.spawned.length, 1); + assert.equal(pty.spawned[0].program, "ssh"); + assert.deepEqual(pty.spawned[0].args, ["-t", "user@host"]); +}); + +test("spawnTerminalProcess honors an explicit shellPath when no command", () => { + const { ops, pty } = sshOpsWithConfig(null); + ops.spawnTerminalProcess({ cwd: "/", cols: 80, rows: 24, shellPath: "/bin/zsh" }); + assert.equal(pty.spawned[0].program, "/bin/zsh"); +}); + +test("readSshConfigHosts parses simple and multi-host entries, skipping wildcards", () => { + const body = `# comment +Host github.com + HostName github.com + User git + +Host web-01 web-02 + User root + +Host *.example.com + HostName proxy.example.com +`; + const { ops, home } = sshOpsWithConfig(body); + const result = ops.readSshConfigHosts(); + assert.deepEqual(result.hosts, ["github.com", "web-01", "web-02"]); + assert.equal(result.configPath, path.join(home, ".ssh", "config")); +}); + +test("readSshConfigHosts handles malformed/empty config gracefully", () => { + const { ops } = sshOpsWithConfig(`\n# only a comment\n \n`); + const result = ops.readSshConfigHosts(); + assert.deepEqual(result.hosts, []); +}); + +test("readSshConfigHosts returns empty when config is missing", () => { + const { ops } = sshOpsWithConfig(null); + const result = ops.readSshConfigHosts(); + assert.deepEqual(result.hosts, []); +}); diff --git a/apps/desktop/package.json b/apps/desktop/package.json index d139103d4..c2e1d24c4 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -23,7 +23,7 @@ "check:electron": "node ./scripts/check-electron-bridge.mjs", "typecheck:electron": "pnpm --dir ../server exec tsc -p ../desktop/tsconfig.electron.json --noEmit", "prepare:sidecar": "node ./scripts/prepare-sidecar.mjs", - "test": "node --test electron/brand-icon-windows.test.mjs electron/desktop-auth-window.test.mjs electron/desktop-protocol.test.mjs electron/dev-cloud-default.test.mjs electron/hyperframes-runtime-packaging.test.mjs electron/open-external.test.mjs electron/relaunch-policy.test.mjs electron/runtime.test.mjs electron/runtime-ca.test.mjs electron/stdio-safety.test.mjs electron/system-font-catalog.test.mjs electron/updater.test.mjs electron/remote-workspace.test.mjs electron/workspace-store.test.mjs electron/sidecar-packaging.test.mjs" + "test": "node --test electron/brand-icon-windows.test.mjs electron/desktop-auth-window.test.mjs electron/desktop-protocol.test.mjs electron/dev-cloud-default.test.mjs electron/hyperframes-runtime-packaging.test.mjs electron/open-external.test.mjs electron/relaunch-policy.test.mjs electron/runtime.test.mjs electron/runtime-ca.test.mjs electron/stdio-safety.test.mjs electron/system-font-catalog.test.mjs electron/updater.test.mjs electron/remote-workspace.test.mjs electron/workspace-store.test.mjs electron/sidecar-packaging.test.mjs electron/ssh-ops.test.mjs electron/git-graph.test.mjs electron/preview-core.test.mjs" }, "dependencies": { "@ffmpeg-installer/ffmpeg": "^1.1.0", diff --git a/apps/desktop/resources/lan-preview/index.html b/apps/desktop/resources/lan-preview/index.html index 7d14c4e30..11d2ab7fe 100644 --- a/apps/desktop/resources/lan-preview/index.html +++ b/apps/desktop/resources/lan-preview/index.html @@ -45,8 +45,8 @@

iPolloWork 远程预览

连接到工作台

在桌面端「设置 → 远程预览」中查看配对码(10 分钟有效)。

- +

@@ -107,7 +107,7 @@

可用动作(只读)

method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ - code: $("code").value.trim(), + code: $("code").value.trim().toUpperCase(), challenge: document.body.dataset.challenge, }), signal: AbortSignal.timeout(8000), From 3ed979108c84ea8900e07f72c1e0a3763e82b2a8 Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 13:00:55 +0800 Subject: [PATCH 05/13] feat: push LAN preview summary to IM via DingTalk MCP Add an IM notification section to the Remote Preview settings tab: paste a DingTalk/Feishu MCP Streamable-HTTP endpoint and push a redacted workbench summary to the group. The main process gains im-bot.mjs, a minimal MCP client that discovers a send tool by name (send_message / sendMessage / send_text / messages_send) and calls it with the sanitized snapshot from preview-core. No lan-preview session tokens are ever sent. Includes node:test coverage for tool discovery, argument mapping, and summary redaction. --- apps/app/src/app/lib/desktop.ts | 1 + apps/app/src/i18n/locales/en.ts | 12 +- apps/app/src/i18n/locales/zh.ts | 12 +- .../settings/pages/remote-preview-view.tsx | 67 +++++++- apps/desktop/electron/im-bot.mjs | 156 ++++++++++++++++++ apps/desktop/electron/im-bot.test.mjs | 105 ++++++++++++ apps/desktop/electron/main.mjs | 12 ++ apps/desktop/electron/preload.mjs | 1 + apps/desktop/package.json | 2 +- 9 files changed, 364 insertions(+), 4 deletions(-) create mode 100644 apps/desktop/electron/im-bot.mjs create mode 100644 apps/desktop/electron/im-bot.test.mjs diff --git a/apps/app/src/app/lib/desktop.ts b/apps/app/src/app/lib/desktop.ts index f9bef6bcc..aae7b9a0e 100644 --- a/apps/app/src/app/lib/desktop.ts +++ b/apps/app/src/app/lib/desktop.ts @@ -196,6 +196,7 @@ declare global { setEnabled?: (enabled: boolean) => Promise; regenerateCode?: () => Promise; disconnectAll?: () => Promise; + pushToIm?: (options: { mcpUrl: string }) => Promise<{ ok: boolean; tool?: string; error?: string }>; onStateChanged?: (callback: (state: LanPreviewState) => void) => () => void; }; hyperframes?: { diff --git a/apps/app/src/i18n/locales/en.ts b/apps/app/src/i18n/locales/en.ts index 9ea0e2f0f..b408b6d02 100644 --- a/apps/app/src/i18n/locales/en.ts +++ b/apps/app/src/i18n/locales/en.ts @@ -410,7 +410,17 @@ export default { "settings.remote_preview_sessions_none": "No devices paired.", "settings.remote_preview_disconnect_all": "Disconnect all", "settings.remote_preview_error_title": "Could not start remote preview", - "settings.remote_preview_copy": "Copy", + "settings.remote_preview_copy": "Copy", + "settings.remote_preview_im_title": "Push preview to IM", + "settings.remote_preview_im_desc": "Send the current workbench status to a DingTalk/Feishu group via its MCP endpoint.", + "settings.remote_preview_im_endpoint_placeholder": "https://… DingTalk MCP endpoint (dws mcp url get )", + "settings.remote_preview_im_endpoint_label": "DingTalk MCP endpoint URL", + "settings.remote_preview_im_hint": "Get the endpoint from `dws mcp url get `. Only a redacted status summary is sent; no session tokens.", + "settings.remote_preview_im_push": "Push summary", + "settings.remote_preview_im_sent": "Preview summary sent.", + "settings.remote_preview_im_failed": "Could not send the preview summary.", + "settings.remote_preview_im_unavailable": "IM push is only available in the desktop app.", + "settings.remote_preview_im_need_endpoint": "Enter a DingTalk MCP endpoint first.", "template_market.my_templates": "My templates", "template_market.import_package": "Import .ipwp or .ipwt", "template_market.all_templates": "All templates", diff --git a/apps/app/src/i18n/locales/zh.ts b/apps/app/src/i18n/locales/zh.ts index 933452c7f..0b71a9a10 100644 --- a/apps/app/src/i18n/locales/zh.ts +++ b/apps/app/src/i18n/locales/zh.ts @@ -411,7 +411,17 @@ export default { "settings.remote_preview_sessions_none": "暂无已配对设备。", "settings.remote_preview_disconnect_all": "断开全部", "settings.remote_preview_error_title": "远程预览启动失败", - "settings.remote_preview_copy": "复制", + "settings.remote_preview_copy": "复制", + "settings.remote_preview_im_title": "推送预览到 IM", + "settings.remote_preview_im_desc": "通过 MCP 端点将当前工作台状态发送到钉钉/飞书群。", + "settings.remote_preview_im_endpoint_placeholder": "https://… 钉钉 MCP 端点(dws mcp url get )", + "settings.remote_preview_im_endpoint_label": "钉钉 MCP 端点 URL", + "settings.remote_preview_im_hint": "用 `dws mcp url get ` 获取端点。仅发送脱敏后的状态摘要,不包含任何会话令牌。", + "settings.remote_preview_im_push": "推送摘要", + "settings.remote_preview_im_sent": "预览摘要已发送。", + "settings.remote_preview_im_failed": "发送预览摘要失败。", + "settings.remote_preview_im_unavailable": "IM 推送仅在桌面应用中可用。", + "settings.remote_preview_im_need_endpoint": "请先输入钉钉 MCP 端点。", "template_market.search_placeholder": "搜索模板", "template_market.my_templates": "我的模板", "template_market.import_package": "导入 .ipwp 或 .ipwt", diff --git a/apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx b/apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx index 89b9baa7e..3f935a816 100644 --- a/apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx +++ b/apps/app/src/react-app/domains/settings/pages/remote-preview-view.tsx @@ -1,9 +1,10 @@ /** @jsxImportSource react */ import { useCallback, useEffect, useState } from "react"; -import { Copy, Loader2, MonitorSmartphone, RefreshCw, ShieldAlert } from "lucide-react"; +import { Copy, Loader2, MessageSquare, MonitorSmartphone, RefreshCw, Send, ShieldAlert } from "lucide-react"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { cn } from "@/lib/utils"; import type { LanPreviewState } from "@/app/lib/desktop"; @@ -31,6 +32,27 @@ export function RemotePreviewView() { const [loading, setLoading] = useState(true); const [busy, setBusy] = useState(false); const [copied, setCopied] = useState(null); + const [imMcpUrl, setImMcpUrl] = useState(""); + const [pushBusy, setPushBusy] = useState(false); + const [pushResult, setPushResult] = useState(null); + + // Persist the DingTalk MCP endpoint for IM push. + const STORAGE_KEY = "ipollowork.im-mcp-url"; + useEffect(() => { + try { + const stored = window.localStorage.getItem(STORAGE_KEY); + if (stored) setImMcpUrl(stored); + } catch { + // ignore + } + }, []); + useEffect(() => { + try { + window.localStorage.setItem(STORAGE_KEY, imMcpUrl); + } catch { + // ignore + } + }, [imMcpUrl]); const readState = useCallback(async () => { const bridge = window.__IPOLLOWORK_ELECTRON__?.lanPreview; @@ -96,6 +118,29 @@ export function RemotePreviewView() { }); }, []); + const pushToIm = useCallback(async () => { + const url = imMcpUrl.trim(); + if (!url) { + setPushResult(t("settings.remote_preview_im_need_endpoint")); + return; + } + const push = window.__IPOLLOWORK_ELECTRON__?.lanPreview?.pushToIm; + if (!push) { + setPushResult(t("settings.remote_preview_im_unavailable")); + return; + } + setPushBusy(true); + setPushResult(null); + try { + const result = await push({ mcpUrl: url }); + setPushResult(result?.ok ? t("settings.remote_preview_im_sent") : result?.error ?? t("settings.remote_preview_im_failed")); + } catch (error) { + setPushResult(error instanceof Error ? error.message : t("settings.remote_preview_im_failed")); + } finally { + setPushBusy(false); + } + }, [imMcpUrl]); + const countdown = state?.codeExpiresAt ? formatCountdown(state.codeExpiresAt) : "–"; return ( @@ -199,6 +244,26 @@ export function RemotePreviewView() {
+ + + {t("settings.remote_preview_im_title")} + {t("settings.remote_preview_im_desc")} + +
+ setImMcpUrl(event.target.value)} + placeholder={t("settings.remote_preview_im_endpoint_placeholder")} + aria-label={t("settings.remote_preview_im_endpoint_label")} + /> +

{t("settings.remote_preview_im_hint")}

+ + {pushResult ?

{pushResult}

: null} +
+
) : null} diff --git a/apps/desktop/electron/im-bot.mjs b/apps/desktop/electron/im-bot.mjs new file mode 100644 index 000000000..bd732ba56 --- /dev/null +++ b/apps/desktop/electron/im-bot.mjs @@ -0,0 +1,156 @@ +// im-bot: push a sanitized workbench preview summary to an IM platform over +// its MCP (Streamable HTTP) endpoint. The endpoint is provided by the user +// (e.g. `dws mcp url get ` for DingTalk); the tool that sends a +// message is discovered from the endpoint's tools list by name. +// +// Security: only reads via preview-core (read-only), sends a redacted +// summary, and never forwards lan-preview session tokens. +const PUSH_TIMEOUT_MS = 10_000; + +// DingTalk / Feishu MCP send tools commonly expose one of these names. +const SEND_TOOL_CANDIDATES = [ + "send_message", + "sendMessage", + "send_text", + "messages_send", +]; + +function jsonRpc(id, method, params) { + return JSON.stringify({ jsonrpc: "2.0", id, method, params }); +} + +async function mcpFetch(baseUrl, body, headers = {}) { + const controller = new AbortController(); + const timer = setTimeout(() => controller.abort(), PUSH_TIMEOUT_MS); + try { + const response = await fetch(baseUrl, { + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json, text/event-stream", + ...headers, + }, + body, + signal: controller.signal, + }); + const text = await response.text(); + return { status: response.status, text }; + } finally { + clearTimeout(timer); + } +} + +// The Streamable HTTP transport may return either a single JSON object or an +// SSE stream; collect both and parse the final result. +function parseMcpResponse(text) { + if (!text) return null; + const trimmed = text.trim(); + if (trimmed.startsWith("{")) { + return JSON.parse(trimmed); + } + // SSE: parse the last "data:" line that is valid JSON. + const lines = trimmed.split("\n"); + for (let i = lines.length - 1; i >= 0; i--) { + const line = lines[i].trim(); + if (!line.startsWith("data:")) continue; + const payload = line.slice(5).trim(); + if (!payload) continue; + try { + return JSON.parse(payload); + } catch { + // continue + } + } + return null; +} + +export function createImBot({ previewCore, log = () => {} }) { + let requestId = 1; + + async function discoverSendTool(baseUrl, authHeaders) { + const body = jsonRpc(requestId++, "tools/list", {}); + const { status, text } = await mcpFetch(baseUrl, body, authHeaders); + if (status !== 200 && status !== 202) { + throw new Error(`MCP endpoint returned HTTP ${status}`); + } + const parsed = parseMcpResponse(text); + const tools = parsed?.result?.tools ?? parsed?.tools ?? []; + if (!Array.isArray(tools)) { + throw new Error("MCP endpoint did not return a tools list"); + } + for (const candidate of SEND_TOOL_CANDIDATES) { + const tool = tools.find((entry) => entry?.name === candidate); + if (tool) return tool; + } + throw new Error( + `No send tool found on MCP endpoint (looked for ${SEND_TOOL_CANDIDATES.join(", ")}). ` + + `Available: ${tools.map((entry) => entry?.name).filter(Boolean).join(", ") || "(none)"}`, + ); + } + + // Build a short markdown-ish summary from the sanitized snapshot. + function formatSummary(summary) { + const parts = []; + const order = ["status", "sessionId", "workspaceId", "route", "narration", "busyActionId"]; + for (const key of order) { + const value = summary[key]; + if (value === undefined || value === null || value === "") continue; + parts.push(`${key}: ${value}`); + } + const rest = Object.entries(summary) + .filter(([key]) => !order.includes(key)) + .filter(([, value]) => { + if (value === undefined || value === null || value === "") return false; + // Only carry scalars; objects/arrays would serialize to junk. + return typeof value === "boolean" || typeof value === "number" || typeof value === "string"; + }); + for (const [key, value] of rest) { + parts.push(`${key}: ${value}`); + } + return parts.length ? parts.join("\n") : "(empty snapshot)"; + } + + // Push the current public preview summary to the given MCP endpoint. + async function pushSummary({ mcpUrl, headers = {} }) { + const target = String(mcpUrl ?? "").trim(); + if (!target) throw new Error("Missing MCP endpoint URL"); + const publicData = await previewCore.getPublicSummary(); + const message = formatSummary(publicData.summary); + const tool = await discoverSendTool(target, headers); + const args = {}; + // Heuristic: prefer string args named text/content/message; otherwise pass + // the message as the first non-token argument. + const schema = tool.inputSchema?.properties ?? {}; + const keys = Object.keys(schema); + if (keys.length === 0) { + args.message = message; + } else { + let filled = false; + for (const key of keys) { + if (/text|content|message|msg/i.test(key)) { + args[key] = message; + filled = true; + break; + } + } + if (!filled) { + const firstKey = keys.find((key) => !/token|secret|auth/i.test(key)); + if (firstKey) args[firstKey] = message; + else args.message = message; + } + } + const callBody = jsonRpc(requestId++, "tools/call", { + name: tool.name, + arguments: args, + }); + const { status, text } = await mcpFetch(target, callBody, headers); + if (status !== 200 && status !== 202) { + throw new Error(`MCP call returned HTTP ${status}`); + } + const parsed = parseMcpResponse(text); + log(`im-bot: pushed summary via ${tool.name} (HTTP ${status})`); + return { ok: true, tool: tool.name, message }; + } + + return { pushSummary, discoverSendTool, formatSummary }; +} diff --git a/apps/desktop/electron/im-bot.test.mjs b/apps/desktop/electron/im-bot.test.mjs new file mode 100644 index 000000000..a180affa9 --- /dev/null +++ b/apps/desktop/electron/im-bot.test.mjs @@ -0,0 +1,105 @@ +import assert from "node:assert/strict"; +import { test } from "node:test"; +import { createServer } from "node:http"; + +import { createImBot } from "./im-bot.mjs"; + +function mockMcpEndpoint({ tools }) { + const calls = []; + const server = createServer(async (request, response) => { + let raw = ""; + for await (const chunk of request) raw += chunk; + const body = JSON.parse(raw); + calls.push(body); + response.setHeader("Content-Type", "application/json"); + if (body.method === "tools/list") { + response.end(JSON.stringify({ jsonrpc: "2.0", id: body.id, result: { tools } })); + return; + } + if (body.method === "tools/call") { + response.end(JSON.stringify({ + jsonrpc: "2.0", + id: body.id, + result: { content: [{ type: "text", text: "sent" }] }, + })); + return; + } + response.end(JSON.stringify({ jsonrpc: "2.0", id: body.id, error: { message: "unknown" } })); + }); + return new Promise((resolve) => { + server.listen(0, "127.0.0.1", () => { + const { port } = server.address(); + resolve({ + url: `http://127.0.0.1:${port}`, + calls, + close: () => new Promise((res) => server.close(res)), + }); + }); + }); +} + +const fakePreviewCore = (summary) => ({ + getPublicSummary: async () => ({ ok: true, summary, actions: [] }), +}); + +test("pushSummary discovers the send tool and posts a redacted summary", async () => { + const endpoint = await mockMcpEndpoint({ + tools: [ + { name: "send_message", inputSchema: { properties: { content: { type: "string" } } } }, + ], + }); + try { + const bot = createImBot({ + previewCore: fakePreviewCore({ status: "ready", sessionId: "s1", token: "redacted" }), + }); + const result = await bot.pushSummary({ mcpUrl: endpoint.url }); + assert.equal(result.ok, true); + assert.equal(result.tool, "send_message"); + const call = endpoint.calls.find((c) => c.method === "tools/call"); + assert.ok(call, "tools/call should have been invoked"); + assert.equal(call.params.name, "send_message"); + assert.match(call.params.arguments.content, /status: ready/); + assert.match(call.params.arguments.content, /sessionId: s1/); + } finally { + await endpoint.close(); + } +}); + +test("pushSummary picks a matching send tool among candidates", async () => { + const endpoint = await mockMcpEndpoint({ + tools: [ + { name: "something_else" }, + { name: "messages_send", inputSchema: { properties: { text: { type: "string" } } } }, + ], + }); + try { + const bot = createImBot({ previewCore: fakePreviewCore({ status: "idle" }) }); + const result = await bot.pushSummary({ mcpUrl: endpoint.url }); + assert.equal(result.tool, "messages_send"); + const call = endpoint.calls.find((c) => c.method === "tools/call"); + assert.equal(call.params.arguments.text, "status: idle"); + } finally { + await endpoint.close(); + } +}); + +test("pushSummary throws when no send tool exists", async () => { + const endpoint = await mockMcpEndpoint({ tools: [{ name: "other_tool" }] }); + try { + const bot = createImBot({ previewCore: fakePreviewCore({ status: "idle" }) }); + await assert.rejects(() => bot.pushSummary({ mcpUrl: endpoint.url }), /No send tool found/); + } finally { + await endpoint.close(); + } +}); + +test("pushSummary throws on empty endpoint", async () => { + const bot = createImBot({ previewCore: fakePreviewCore({ status: "idle" }) }); + await assert.rejects(() => bot.pushSummary({ mcpUrl: "" }), /Missing MCP endpoint/); +}); + +test("formatSummary includes only scalar fields in order", () => { + const bot = createImBot({ previewCore: fakePreviewCore({}) }); + const text = bot.formatSummary({ status: "ready", narration: "hi", nested: { a: 1 } }); + assert.match(text, /^status: ready\nnarration: hi$/); +}); diff --git a/apps/desktop/electron/main.mjs b/apps/desktop/electron/main.mjs index 1523ebab7..06b8e9f50 100644 --- a/apps/desktop/electron/main.mjs +++ b/apps/desktop/electron/main.mjs @@ -33,6 +33,7 @@ import { createLanPreviewServer, lanPreviewPagePath } from "./lan-preview-server import { createSshOps } from "./ssh-ops.mjs"; import { createGitGraph } from "./git-graph.mjs"; import { createPreviewCore } from "./preview-core.mjs"; +import { createImBot } from "./im-bot.mjs"; import { createApplicationMenu } from "./app-menu.mjs"; import { createBrowserPanel } from "./browser-panel.mjs"; import { createWorkspaceStore } from "./workspace-store.mjs"; @@ -126,6 +127,7 @@ const lanPreviewServer = createLanPreviewServer({ const sshOps = createSshOps({ pty }); const gitGraph = createGitGraph(); +const imBot = createImBot({ previewCore }); const terminalProcesses = new Map(); const hyperframesProcesses = new Map(); @@ -3121,6 +3123,16 @@ ipcMain.handle("ipollowork:lan-preview:disconnect-all", () => { return lanPreviewStatePayload(); }); +ipcMain.handle("ipollowork:lan-preview:push-to-im", async (event, options = {}) => { + const mcpUrl = typeof options?.mcpUrl === "string" ? options.mcpUrl : ""; + try { + const result = await imBot.pushSummary({ mcpUrl }); + return { ok: true, tool: result.tool }; + } catch (error) { + return { ok: false, error: error instanceof Error ? error.message : "im-push-failed" }; + } +}); + ipcMain.handle("ipollowork:hyperframes:start", (event, options = {}) => startHyperframesPreview(event, options)); ipcMain.handle("ipollowork:hyperframes:stop", (event, sessionId, options = {}) => { const key = hyperframesKey(event.sender.id, sessionId); diff --git a/apps/desktop/electron/preload.mjs b/apps/desktop/electron/preload.mjs index 3f53223e8..4da6e2dfb 100644 --- a/apps/desktop/electron/preload.mjs +++ b/apps/desktop/electron/preload.mjs @@ -181,6 +181,7 @@ contextBridge.exposeInMainWorld("__IPOLLOWORK_ELECTRON__", { setEnabled(enabled) { return ipcRenderer.invoke("ipollowork:lan-preview:set-enabled", Boolean(enabled)); }, regenerateCode() { return ipcRenderer.invoke("ipollowork:lan-preview:regenerate-code"); }, disconnectAll() { return ipcRenderer.invoke("ipollowork:lan-preview:disconnect-all"); }, + pushToIm(options) { return ipcRenderer.invoke("ipollowork:lan-preview:push-to-im", options); }, onStateChanged(callback) { const handler = (_event, state) => callback(state); ipcRenderer.on("ipollowork:lan-preview:state", handler); diff --git a/apps/desktop/package.json b/apps/desktop/package.json index c2e1d24c4..13b1461c3 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -23,7 +23,7 @@ "check:electron": "node ./scripts/check-electron-bridge.mjs", "typecheck:electron": "pnpm --dir ../server exec tsc -p ../desktop/tsconfig.electron.json --noEmit", "prepare:sidecar": "node ./scripts/prepare-sidecar.mjs", - "test": "node --test electron/brand-icon-windows.test.mjs electron/desktop-auth-window.test.mjs electron/desktop-protocol.test.mjs electron/dev-cloud-default.test.mjs electron/hyperframes-runtime-packaging.test.mjs electron/open-external.test.mjs electron/relaunch-policy.test.mjs electron/runtime.test.mjs electron/runtime-ca.test.mjs electron/stdio-safety.test.mjs electron/system-font-catalog.test.mjs electron/updater.test.mjs electron/remote-workspace.test.mjs electron/workspace-store.test.mjs electron/sidecar-packaging.test.mjs electron/ssh-ops.test.mjs electron/git-graph.test.mjs electron/preview-core.test.mjs" + "test": "node --test electron/brand-icon-windows.test.mjs electron/desktop-auth-window.test.mjs electron/desktop-protocol.test.mjs electron/dev-cloud-default.test.mjs electron/hyperframes-runtime-packaging.test.mjs electron/open-external.test.mjs electron/relaunch-policy.test.mjs electron/runtime.test.mjs electron/runtime-ca.test.mjs electron/stdio-safety.test.mjs electron/system-font-catalog.test.mjs electron/updater.test.mjs electron/remote-workspace.test.mjs electron/workspace-store.test.mjs electron/sidecar-packaging.test.mjs electron/ssh-ops.test.mjs electron/git-graph.test.mjs electron/preview-core.test.mjs electron/im-bot.test.mjs" }, "dependencies": { "@ffmpeg-installer/ffmpeg": "^1.1.0", From 68a2aa7458cce3e83ab7551f0e59a44125c7034b Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 13:59:07 +0800 Subject: [PATCH 06/13] feat: add smart routing gateway config UI and IPC --- apps/app/src/app/lib/desktop.ts | 6 + apps/app/src/i18n/locales/en.ts | 26 ++ apps/app/src/i18n/locales/zh.ts | 26 ++ .../domains/settings/pages/ai-view.tsx | 4 + .../settings/pages/router-gateway-view.tsx | 416 ++++++++++++++++++ .../src/react-app/shell/settings-route.tsx | 3 +- apps/desktop/electron/main.mjs | 60 ++- packages/types/src/desktop-ipc.ts | 23 + 8 files changed, 562 insertions(+), 2 deletions(-) create mode 100644 apps/app/src/react-app/domains/settings/pages/router-gateway-view.tsx diff --git a/apps/app/src/app/lib/desktop.ts b/apps/app/src/app/lib/desktop.ts index aae7b9a0e..5e8f882b8 100644 --- a/apps/app/src/app/lib/desktop.ts +++ b/apps/app/src/app/lib/desktop.ts @@ -603,6 +603,9 @@ const { updaterEnvironment, readOpencodeConfig, writeOpencodeConfig, + routerGatewayGetConfig, + routerGatewayWriteConfig, + routerGatewayStatus, resetiPolloWorkState, resetOpencodeCache, opencodeMcpAuth, @@ -660,6 +663,9 @@ export { updaterEnvironment, readOpencodeConfig, writeOpencodeConfig, + routerGatewayGetConfig, + routerGatewayWriteConfig, + routerGatewayStatus, resetiPolloWorkState, resetOpencodeCache, opencodeMcpAuth, diff --git a/apps/app/src/i18n/locales/en.ts b/apps/app/src/i18n/locales/en.ts index b408b6d02..9b3be00e5 100644 --- a/apps/app/src/i18n/locales/en.ts +++ b/apps/app/src/i18n/locales/en.ts @@ -2099,6 +2099,32 @@ export default { "settings.provider_source_env": "Environment", "settings.providers_desc": "Connect services for models and tools.", "settings.providers_title": "Providers", + "settings.router_gateway.add_model": "Add escalation model", + "settings.router_gateway.api_key": "API key", + "settings.router_gateway.api_key_env": "API key env var name", + "settings.router_gateway.api_key_optional": "Optional; leave empty to use the env var", + "settings.router_gateway.base_url": "Base URL", + "settings.router_gateway.config_path": "Config file: {path}", + "settings.router_gateway.context_limit": "Context limit (tokens)", + "settings.router_gateway.debug": "Debug logging", + "settings.router_gateway.description": "Local smart routing gateway: requests go to the primary model by default, and switch to an escalation model after the context is repeatedly compacted past the limit. Saving takes effect immediately.", + "settings.router_gateway.desktop_only": "Smart routing gateway config is only available on desktop.", + "settings.router_gateway.escalation_desc": "After the session context is compacted (compaction) up to the limit, subsequent requests switch to the first escalation model in the list.", + "settings.router_gateway.escalation_label": "Enable auto escalation", + "settings.router_gateway.escalation_model": "Escalation model #{index}", + "settings.router_gateway.loading": "Loading gateway config...", + "settings.router_gateway.max_compactions": "Compaction limit", + "settings.router_gateway.merge_system": "Merge system messages to front", + "settings.router_gateway.model_name": "Model name", + "settings.router_gateway.not_running": "Gateway not running", + "settings.router_gateway.primary_label": "Primary model", + "settings.router_gateway.primary_model": "Primary model: {model}", + "settings.router_gateway.refresh": "Refresh", + "settings.router_gateway.remove_model": "Remove", + "settings.router_gateway.running": "Running", + "settings.router_gateway.saved": "Routing gateway config saved", + "settings.router_gateway.saving": "Saving...", + "settings.router_gateway.title": "Smart Routing Gateway", "settings.quit_hint": "iPolloWork quits immediately after cleanup so the next launch starts from a blank local state for this mode.", "settings.recent_events": "Recent events", "settings.reconnect_failed": "Reconnect failed. Check server URL/token and try again.", diff --git a/apps/app/src/i18n/locales/zh.ts b/apps/app/src/i18n/locales/zh.ts index 0b71a9a10..66f5458da 100644 --- a/apps/app/src/i18n/locales/zh.ts +++ b/apps/app/src/i18n/locales/zh.ts @@ -1800,6 +1800,32 @@ export default { "settings.provider_source_env": "环境变量", "settings.providers_desc": "连接用于模型和工具的服务。", "settings.providers_title": "提供商", + "settings.router_gateway.add_model": "添加升级模型", + "settings.router_gateway.api_key": "API 密钥", + "settings.router_gateway.api_key_env": "API 密钥环境变量名", + "settings.router_gateway.api_key_optional": "可选,留空则用环境变量", + "settings.router_gateway.base_url": "Base URL", + "settings.router_gateway.config_path": "配置文件:{path}", + "settings.router_gateway.context_limit": "上下文上限 (tokens)", + "settings.router_gateway.debug": "调试日志", + "settings.router_gateway.description": "本地智能路由网关:默认请求走主模型,上下文反复压缩超过上限后自动切换到升级模型。修改后保存即热生效。", + "settings.router_gateway.desktop_only": "智能路由网关配置仅在桌面端可用。", + "settings.router_gateway.escalation_desc": "当会话上下文反复压缩(compaction)达到上限次数后,后续请求自动切换到列表中的第一个升级模型。", + "settings.router_gateway.escalation_label": "启用自动升级", + "settings.router_gateway.escalation_model": "升级模型 #{index}", + "settings.router_gateway.loading": "正在读取网关配置…", + "settings.router_gateway.max_compactions": "压缩上限", + "settings.router_gateway.merge_system": "合并 system 到开头", + "settings.router_gateway.model_name": "模型名", + "settings.router_gateway.not_running": "网关未运行", + "settings.router_gateway.primary_label": "主模型", + "settings.router_gateway.primary_model": "主模型:{model}", + "settings.router_gateway.refresh": "刷新", + "settings.router_gateway.remove_model": "移除", + "settings.router_gateway.running": "运行中", + "settings.router_gateway.saved": "路由网关配置已保存", + "settings.router_gateway.saving": "保存中…", + "settings.router_gateway.title": "智能路由网关", "settings.quit_hint": "iPolloWork在清理后立即退出,以便下次启动时从此模式的全新本地状态开始。", "settings.recent_events": "最近的事件", "settings.reconnect_failed": "重新连接失败。请检查服务器URL/令牌后重试。", diff --git a/apps/app/src/react-app/domains/settings/pages/ai-view.tsx b/apps/app/src/react-app/domains/settings/pages/ai-view.tsx index 6311ff588..73eeda278 100644 --- a/apps/app/src/react-app/domains/settings/pages/ai-view.tsx +++ b/apps/app/src/react-app/domains/settings/pages/ai-view.tsx @@ -50,6 +50,8 @@ export type AiSettingsViewProps = { onSubscribeiPolloWorkModels?: () => void | Promise; onDismissiPolloWorkModels?: () => void | Promise; cloudProvidersView?: ReactNode; + /** 智能路由网关配置区块(自包含组件,渲染在 providers 列表之后)。 */ + routerGatewayView?: ReactNode; }; function providerSourceLabel(source?: ConnectedProvider["source"]) { @@ -260,6 +262,8 @@ export function AiSettingsView(props: AiSettingsViewProps) { {props.cloudProvidersView} + {props.routerGatewayView} + ({ + name: "", + baseURL: "", + apiKeyEnv: "", + apiKey: "", + contextLimit: 128000, + mergeSystem: false, +}); + +function parseRouting(content: string | null): RoutingDraft { + if (!content) { + return { + listen: { host: "127.0.0.1", port: 18222 }, + primary: emptyModel(), + escalation: { enabled: true, maxCompactions: 5, models: [] }, + debug: true, + }; + } + try { + const stripped = content + .split("\n") + .map((line) => line.replace(/^\s*\/\/.*$/, "")) + .join("\n"); + const parsed = JSON.parse(stripped); + const primary = { ...emptyModel(), ...(parsed.primary ?? {}) }; + const escalation = parsed.escalation ?? {}; + return { + listen: { host: "127.0.0.1", port: 18222, ...(parsed.listen ?? {}) }, + primary, + escalation: { + enabled: escalation.enabled !== false, + maxCompactions: Number(escalation.maxCompactions ?? 5), + models: Array.isArray(escalation.models) + ? escalation.models.map((m: Partial) => ({ ...emptyModel(), ...m })) + : [], + }, + debug: parsed.debug !== false, + }; + } catch { + return { + listen: { host: "127.0.0.1", port: 18222 }, + primary: emptyModel(), + escalation: { enabled: true, maxCompactions: 5, models: [] }, + debug: true, + }; + } +} + +function serializeRouting(draft: RoutingDraft): string { + const strip = (m: ModelField) => { + const out: Record = {}; + for (const key of Object.keys(m)) { + const value = m[key as keyof ModelField]; + const emptyValue = key === "contextLimit" ? 128000 : key === "mergeSystem" ? false : ""; + if (value !== "" && value !== emptyValue && value !== undefined) { + out[key] = value; + } + } + return out; + }; + return JSON.stringify( + { + $schema: "./routing.schema.json", + listen: draft.listen, + primary: strip(draft.primary), + escalation: { + enabled: draft.escalation.enabled, + maxCompactions: draft.escalation.maxCompactions, + models: draft.escalation.models.map(strip), + }, + debug: draft.debug, + }, + null, + 2 + ); +} + +function ModelEditor(props: { + label: string; + value: ModelField; + onChange: (next: ModelField) => void; +}) { + const set = (key: K, value: ModelField[K]) => { + props.onChange({ ...props.value, [key]: value }); + }; + return ( +
+
{props.label}
+
+ + {t("settings.router_gateway.model_name")} + set("name", event.currentTarget.value)} + placeholder="qwen3.5" + /> + + + {t("settings.router_gateway.base_url")} + set("baseURL", event.currentTarget.value)} + placeholder="http://host:port/v1" + /> + + + {t("settings.router_gateway.api_key_env")} + set("apiKeyEnv", event.currentTarget.value)} + placeholder="QWEN_API_KEY" + /> + + + {t("settings.router_gateway.api_key")} + set("apiKey", event.currentTarget.value)} + placeholder={t("settings.router_gateway.api_key_optional")} + type="password" + /> + + + {t("settings.router_gateway.context_limit")} + set("contextLimit", Number(event.currentTarget.value) || 0)} + type="number" + /> + +
+ +
+
+
+ ); +} + +export function RouterGatewayView() { + const [draft, setDraft] = useState(null); + const [status, setStatus] = useState(null); + const [configPath, setConfigPath] = useState(null); + const [busy, setBusy] = useState(false); + const [saving, setSaving] = useState(false); + + const refresh = useCallback(async () => { + setBusy(true); + try { + const [config, statusResult] = await Promise.all([ + routerGatewayGetConfig(), + routerGatewayStatus(), + ]); + setDraft(parseRouting(config.content)); + setConfigPath(config.path); + setStatus(statusResult); + } catch (error) { + toast.error(error instanceof Error ? error.message : String(error)); + } finally { + setBusy(false); + } + }, []); + + useEffect(() => { + if (isDesktopRuntime()) void refresh(); + }, [refresh]); + + const save = async () => { + if (!draft) return; + setSaving(true); + try { + const result = await routerGatewayWriteConfig(serializeRouting(draft)); + if (!result.ok) throw new Error(result.stderr || result.stdout); + toast.success(t("settings.router_gateway.saved")); + await refresh(); + } catch (error) { + toast.error(error instanceof Error ? error.message : String(error)); + } finally { + setSaving(false); + } + }; + + const statusTone: "neutral" | "error" = status?.running ? "neutral" : "error"; + const statusLabel = status?.running + ? t("settings.router_gateway.running") + : t("settings.router_gateway.not_running"); + + const updatePrimary = (next: ModelField) => { + if (!draft) return; + setDraft({ ...draft, primary: next }); + }; + + const updateEscalationModel = (index: number, next: ModelField) => { + if (!draft) return; + const models = draft.escalation.models.map((m, i) => (i === index ? next : m)); + setDraft({ ...draft, escalation: { ...draft.escalation, models } }); + }; + + const addEscalationModel = () => { + if (!draft) return; + setDraft({ ...draft, escalation: { ...draft.escalation, models: [...draft.escalation.models, emptyModel()] } }); + }; + + const removeEscalationModel = (index: number) => { + if (!draft) return; + setDraft({ + ...draft, + escalation: { ...draft.escalation, models: draft.escalation.models.filter((_, i) => i !== index) }, + }); + }; + + const dirty = useMemo(() => Boolean(draft), [draft]); + + if (!isDesktopRuntime()) { + return ( + + + {t("settings.router_gateway.title")} + + + {t("settings.router_gateway.desktop_only")} + + + ); + } + + return ( + + + + + {t("settings.router_gateway.title")} + + {t("settings.router_gateway.description")} + + + + {/* status row */} +
+
+ + {status?.running ? ( + + {t("settings.router_gateway.primary_model", { model: status.primary ?? "-" })} + + ) : null} + {status?.error ? {status.error} : null} +
+ +
+ + {!draft ? ( + {t("settings.router_gateway.loading")} + ) : ( + <> + {/* primary model */} + + + {/* escalation */} +
+
+
+ + setDraft({ ...draft, escalation: { ...draft.escalation, enabled: checked } }) + } + /> + + {t("settings.router_gateway.escalation_label")} + +
+
+ + + {t("settings.router_gateway.max_compactions")} + + + setDraft({ + ...draft, + escalation: { ...draft.escalation, maxCompactions: Number(event.currentTarget.value) || 0 }, + }) + } + /> + +
+
+

{t("settings.router_gateway.escalation_desc")}

+ +
+ {draft.escalation.models.map((model, index) => ( +
+ updateEscalationModel(index, next)} + /> + +
+ ))} + +
+
+ + {/* debug + save */} +
+ + +
+ + {configPath ? ( + + {t("settings.router_gateway.config_path", { path: configPath })} + + ) : null} + + )} +
+
+ ); +} diff --git a/apps/app/src/react-app/shell/settings-route.tsx b/apps/app/src/react-app/shell/settings-route.tsx index b5c3c74b2..9d5bb8d78 100644 --- a/apps/app/src/react-app/shell/settings-route.tsx +++ b/apps/app/src/react-app/shell/settings-route.tsx @@ -57,7 +57,7 @@ import { formatProviderAuthName } from "@/react-app/domains/connections/provider import ProviderAuthModal from "@/react-app/domains/connections/provider-auth/provider-auth-modal"; import ConnectionsModals from "@/react-app/domains/connections/modals"; import { AiSettingsView } from "@/react-app/domains/settings/pages/ai-view"; -// Side-effect imports: register extension config components into the registry. +import { RouterGatewayView } from "@/react-app/domains/settings/pages/router-gateway-view"; import "@/react-app/domains/settings/openai-image-gen-config"; import "@/react-app/domains/settings/ollama-config"; import "@/react-app/domains/settings/minimax-config"; @@ -1680,6 +1680,7 @@ function SettingsRouteContent(props: SettingsSurfaceProps = {}) { session={denSession} /> } + routerGatewayView={} /> ); case "preferences": diff --git a/apps/desktop/electron/main.mjs b/apps/desktop/electron/main.mjs index 06b8e9f50..c221df5f4 100644 --- a/apps/desktop/electron/main.mjs +++ b/apps/desktop/electron/main.mjs @@ -118,10 +118,12 @@ const uiControlServer = createUiControlServer({ getWindow: () => createMainWindow(), }); +const previewCore = createPreviewCore({ getWindow: () => createMainWindow() }); + const lanPreviewServer = createLanPreviewServer({ appName: APP_NAME, getWindow: () => createMainWindow(), - previewCore: createPreviewCore({ getWindow: () => createMainWindow() }), + previewCore, pageHtmlPath: lanPreviewPagePath(path.resolve(__dirname, "..")), }); @@ -1926,6 +1928,53 @@ async function writeOpencodeConfig(scope, projectDir, content) { return execResult(true, `Wrote ${targetPath}`); } +// ---------- router gateway (smart model routing) ---------- +// 配置与状态统一放在 ~/.config/ipollowork/router-gateway/ 下,跨工作区可用。 +function routerGatewayRoot() { + return path.join(configHomePath(), "ipollowork", "router-gateway"); +} + +function routerGatewayConfigPath() { + return path.join(routerGatewayRoot(), "routing.json"); +} + +function routerGatewayStatusUrl() { + // 与网关默认监听地址一致,见 tools/qwen-proxy/routing.json 的 listen 配置。 + return "http://127.0.0.1:18222/__router/status"; +} + +async function readRouterGatewayConfig() { + const targetPath = routerGatewayConfigPath(); + const exists = await pathExists(targetPath); + return { + path: targetPath, + exists, + content: exists ? await readFile(targetPath, "utf8") : null, + }; +} + +async function writeRouterGatewayConfig(content) { + const targetPath = routerGatewayConfigPath(); + await mkdir(path.dirname(targetPath), { recursive: true }); + await writeFile(targetPath, content, "utf8"); + return execResult(true, `Wrote ${targetPath}`); +} + +async function routerGatewayStatus() { + try { + const response = await fetch(routerGatewayStatusUrl(), { + signal: AbortSignal.timeout(2000), + }); + if (!response.ok) { + return { running: false, error: `HTTP ${response.status}` }; + } + const payload = await response.json(); + return { running: true, ...payload }; + } catch (error) { + return { running: false, error: error instanceof Error ? error.message : String(error) }; + } +} + function resolveCommandsDir(scope, projectDir) { if (scope === "workspace") { if (!String(projectDir ?? "").trim()) { @@ -2534,6 +2583,15 @@ const desktopCommandHandlers = { String(args[2] ?? ""), ); }, + "routerGatewayGetConfig": async () => { + return readRouterGatewayConfig(); + }, + "routerGatewayWriteConfig": async (event, ...args) => { + return writeRouterGatewayConfig(String(args[0] ?? "")); + }, + "routerGatewayStatus": async () => { + return routerGatewayStatus(); + }, "resetiPolloWorkState": async (event, ...args) => { return workspaceStore.resetiPolloWorkState(); }, diff --git a/packages/types/src/desktop-ipc.ts b/packages/types/src/desktop-ipc.ts index 8172ea414..24932d47c 100644 --- a/packages/types/src/desktop-ipc.ts +++ b/packages/types/src/desktop-ipc.ts @@ -276,6 +276,26 @@ export type OpencodeConfigFile = { content: string | null; }; +/** 智能路由网关配置文件的读写结果(与 OpencodeConfigFile 同形)。 */ +export type RouterGatewayConfigFile = OpencodeConfigFile; + +/** 智能路由网关运行状态(来自网关 /__router/status,失败时仅 running=false)。 */ +export type RouterGatewayStatus = { + running: boolean; + error?: string; + primary?: string; + primaryBaseURL?: string; + escalationEnabled?: boolean; + maxCompactions?: number; + escalationModels?: string[]; + sessions?: { + lastContextTokens: number; + compactCount: number; + escalated: boolean; + target: string; + }[]; +}; + export type UpdaterEnvironment = { supported: boolean; reason: string | null; @@ -508,6 +528,9 @@ export type DesktopCommandMap = { args: [scope: string, projectDir: string, content: string]; result: ExecResult; }; + routerGatewayGetConfig: { args: []; result: RouterGatewayConfigFile }; + routerGatewayWriteConfig: { args: [content: string]; result: ExecResult }; + routerGatewayStatus: { args: []; result: RouterGatewayStatus }; /** * The renderer passes its reset-modal mode, but the main process currently * IGNORES it and always removes workspace state + bootstrap config; only From 3439464b88f29149487c611ad5697666e7b6e68e Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 14:14:59 +0800 Subject: [PATCH 07/13] fix: harden LAN preview packaging, git graph async, router gateway file perms - Package resources/lan-preview/index.html into the asar so remote preview works in production builds (not just dev) - Run git graph commands async (execFile) so large repos never block the Electron main process UI - Write router gateway routing.json with 0600 perms to protect plaintext apiKey from other local users --- apps/desktop/electron-builder.yml | 1 + apps/desktop/electron/git-graph.mjs | 45 +++++++++++--------- apps/desktop/electron/git-graph.test.mjs | 52 ++++++++++++++---------- apps/desktop/electron/main.mjs | 6 +-- 4 files changed, 59 insertions(+), 45 deletions(-) diff --git a/apps/desktop/electron-builder.yml b/apps/desktop/electron-builder.yml index 5cd743891..3ec22d6b0 100644 --- a/apps/desktop/electron-builder.yml +++ b/apps/desktop/electron-builder.yml @@ -13,6 +13,7 @@ files: - electron/**/* - server/**/* - "!server/dist/opencode-plugins/**" + - resources/lan-preview/**/* - package.json extraResources: - from: ../../examples/plugin-packages/figma diff --git a/apps/desktop/electron/git-graph.mjs b/apps/desktop/electron/git-graph.mjs index 1ee326f45..cccb1d0ee 100644 --- a/apps/desktop/electron/git-graph.mjs +++ b/apps/desktop/electron/git-graph.mjs @@ -1,24 +1,29 @@ // Git graph DAG builder: commit DAG + ref mapping for the swimlane panel. // Extracted from main.mjs into a factory so it can be unit-tested in -// isolation against real or fake git executables. -import { spawnSync } from "node:child_process"; +// isolation against real or fake git executables. Git commands run async so +// large repositories never block the Electron main process. +import { execFile } from "node:child_process"; +import { promisify } from "node:util"; const GIT_GRAPH_TIMEOUT_MS = 30_000; +const execFileAsync = promisify(execFile); -export function createGitGraph({ spawnSync: spawnSyncImpl = spawnSync } = {}) { - function runGitInWorkspace(cwd, args) { - const result = spawnSyncImpl("git", args, { - cwd, - encoding: "utf8", - timeout: GIT_GRAPH_TIMEOUT_MS, - env: { ...process.env, LC_ALL: "C", GIT_TERMINAL_PROMPT: "0", GIT_PAGER: "" }, - }); - if (result.error) { - if (result.error.code === "ENOENT") throw new Error("git executable not found"); - throw result.error; - } - if (result.status !== 0) { - throw new Error(`git ${args[0]} failed: ${String(result.stderr ?? "").trim().slice(0, 400)}`); +export function createGitGraph({ execFile: execFileImpl = execFileAsync } = {}) { + async function runGitInWorkspace(cwd, args) { + let result; + try { + result = await execFileImpl("git", args, { + cwd, + encoding: "utf8", + timeout: GIT_GRAPH_TIMEOUT_MS, + maxBuffer: 128 * 1024 * 1024, + env: { ...process.env, LC_ALL: "C", GIT_TERMINAL_PROMPT: "0", GIT_PAGER: "" }, + }); + } catch (error) { + const code = error && typeof error.code === "number" ? error.code : null; + if (code === "ENOENT") throw new Error("git executable not found"); + if (code) throw new Error(`git ${args[0]} failed: ${String(error.stderr ?? "").trim().slice(0, 400)}`); + throw error; } return String(result.stdout ?? ""); } @@ -27,8 +32,8 @@ export function createGitGraph({ spawnSync: spawnSyncImpl = spawnSync } = {}) { // their parents plus branch/tag refs. Uses `rev-list --parents` for exact // edges and `for-each-ref` for ref → commit mapping. Bounded by an optional // maxCommits to keep huge repos renderable. - function buildGitGraph(cwd, maxCommits = 2000) { - const revListOutput = runGitInWorkspace(cwd, [ + async function buildGitGraph(cwd, maxCommits = 2000) { + const revListOutput = await runGitInWorkspace(cwd, [ "rev-list", "--parents", "--all", "--max-count", String(maxCommits), ]); const commits = []; @@ -40,7 +45,7 @@ export function createGitGraph({ spawnSync: spawnSyncImpl = spawnSync } = {}) { commits.push({ sha, parents }); } - const refsOutput = runGitInWorkspace(cwd, [ + const refsOutput = await runGitInWorkspace(cwd, [ "for-each-ref", "refs/heads", "refs/remotes", "--format=%(objectname)%00%(refname)%00%(HEAD)", "--merged", "HEAD", ]); @@ -62,7 +67,7 @@ export function createGitGraph({ spawnSync: spawnSyncImpl = spawnSync } = {}) { let totalCount = null; if (commits.length > 0) { try { - const countOutput = runGitInWorkspace(cwd, ["rev-list", "--all", "--count"]); + const countOutput = await runGitInWorkspace(cwd, ["rev-list", "--all", "--count"]); const parsed = Number.parseInt(String(countOutput).trim(), 10); if (Number.isFinite(parsed) && parsed > 0) { totalCount = parsed; diff --git a/apps/desktop/electron/git-graph.test.mjs b/apps/desktop/electron/git-graph.test.mjs index 4e9a04f7d..b06a39b23 100644 --- a/apps/desktop/electron/git-graph.test.mjs +++ b/apps/desktop/electron/git-graph.test.mjs @@ -3,10 +3,10 @@ import { test } from "node:test"; import { createGitGraph } from "./git-graph.mjs"; -// A fake spawnSync that returns canned git output keyed by command. +// A fake execFile that returns canned git output keyed by command. function gitWithOutput({ revList, refs, count }) { const calls = []; - const spawnSyncImpl = (_cmd, args) => { + const execFileImpl = async (_cmd, args) => { calls.push(args); const stdoutFor = () => { if (args[0] === "rev-list" && args.includes("--max-count")) return revList; @@ -14,31 +14,31 @@ function gitWithOutput({ revList, refs, count }) { if (args[0] === "for-each-ref") return refs ?? ""; return ""; }; - return { status: 0, stdout: stdoutFor(), stderr: "" }; + return { stdout: stdoutFor() }; }; - return { graph: createGitGraph({ spawnSync: spawnSyncImpl }), calls }; + return { graph: createGitGraph({ execFile: execFileImpl }), calls }; } -test("buildGitGraph parses commit DAG with parents", () => { +test("buildGitGraph parses commit DAG with parents", async () => { const { graph } = gitWithOutput({ revList: "aaa111 parent1 parent2\nbbb222 parent3\nccc333\n", refs: "", count: "3", }); - const result = graph.buildGitGraph("/repo"); + const result = await graph.buildGitGraph("/repo"); assert.equal(result.ok, true); assert.equal(result.count, 3); assert.deepEqual(result.commits[0], { sha: "aaa111", parents: ["parent1", "parent2"] }); assert.deepEqual(result.commits[2], { sha: "ccc333", parents: [] }); }); -test("buildGitGraph maps refs and HEAD flag", () => { +test("buildGitGraph maps refs and HEAD flag", async () => { const { graph } = gitWithOutput({ revList: "aaa111 parent1\n", refs: "aaa111\x00refs/heads/main\x00*\naaa111\x00refs/remotes/origin/main\x00 \n", count: "1", }); - const result = graph.buildGitGraph("/repo"); + const result = await graph.buildGitGraph("/repo"); assert.deepEqual(result.headShas, ["aaa111"]); assert.deepEqual(result.refs, [ { sha: "aaa111", refname: "refs/heads/main", head: true }, @@ -46,45 +46,53 @@ test("buildGitGraph maps refs and HEAD flag", () => { ]); }); -test("buildGitGraph reports truncation when total exceeds window", () => { +test("buildGitGraph reports truncation when total exceeds window", async () => { const { graph } = gitWithOutput({ revList: "aaa111\nbbb222\n", refs: "", count: "100", }); - const result = graph.buildGitGraph("/repo", 2); + const result = await graph.buildGitGraph("/repo", 2); assert.equal(result.truncated, true); assert.equal(result.totalCount, 100); assert.equal(result.count, 2); }); -test("buildGitGraph is not truncated when total fits in window", () => { +test("buildGitGraph is not truncated when total fits in window", async () => { const { graph } = gitWithOutput({ revList: "aaa111\nbbb222\n", refs: "", count: "2", }); - const result = graph.buildGitGraph("/repo", 2000); + const result = await graph.buildGitGraph("/repo", 2000); assert.equal(result.truncated, false); assert.equal(result.totalCount, 2); }); -test("buildGitGraph tolerates a failing total-count probe", () => { - const spawnSyncImpl = (_cmd, args) => { +test("buildGitGraph tolerates a failing total-count probe", async () => { + const execFileImpl = async (_cmd, args) => { if (args[0] === "rev-list" && args.includes("--count")) { - return { status: 128, stdout: "", stderr: "fatal: permission" }; + const error = new Error("git rev-list failed"); + error.code = 128; + error.stderr = "fatal: permission"; + throw error; } - return { status: 0, stdout: "aaa111\n", stderr: "" }; + return { stdout: "aaa111\n" }; }; - const graph = createGitGraph({ spawnSync: spawnSyncImpl }); - const result = graph.buildGitGraph("/repo"); + const graph = createGitGraph({ execFile: execFileImpl }); + const result = await graph.buildGitGraph("/repo"); assert.equal(result.ok, true); assert.equal(result.truncated, false); assert.equal(result.totalCount, null); }); -test("buildGitGraph propagates git failure", () => { - const spawnSyncImpl = (_cmd, _args) => ({ status: 128, stdout: "", stderr: "fatal: not a git repository" }); - const graph = createGitGraph({ spawnSync: spawnSyncImpl }); - assert.throws(() => graph.buildGitGraph("/not-a-repo"), /not a git repository/); +test("buildGitGraph propagates git failure", async () => { + const execFileImpl = async () => { + const error = new Error("git rev-list failed"); + error.code = 128; + error.stderr = "fatal: not a git repository"; + throw error; + }; + const graph = createGitGraph({ execFile: execFileImpl }); + await assert.rejects(() => graph.buildGitGraph("/not-a-repo"), /not a git repository/); }); diff --git a/apps/desktop/electron/main.mjs b/apps/desktop/electron/main.mjs index 998805352..3e3dc5b21 100644 --- a/apps/desktop/electron/main.mjs +++ b/apps/desktop/electron/main.mjs @@ -1974,7 +1974,7 @@ async function readRouterGatewayConfig() { async function writeRouterGatewayConfig(content) { const targetPath = routerGatewayConfigPath(); await mkdir(path.dirname(targetPath), { recursive: true }); - await writeFile(targetPath, content, "utf8"); + await writeFile(targetPath, content, { encoding: "utf8", mode: 0o600 }); return execResult(true, `Wrote ${targetPath}`); } @@ -3192,11 +3192,11 @@ ipcMain.handle("ipollowork:ssh:list-hosts", () => sshOps.readSshConfigHosts()); // Commit DAG + ref mapping builder (buildGitGraph) lives in git-graph.mjs // and is injected as `gitGraph`. -ipcMain.handle("ipollowork:git:graph", (event, options = {}) => { +ipcMain.handle("ipollowork:git:graph", async (event, options = {}) => { const cwd = typeof options?.cwd === "string" && options.cwd.trim() ? options.cwd.trim() : undefined; if (!cwd) return { ok: false, error: "missing cwd" }; try { - const result = gitGraph.buildGitGraph(cwd, Number.isFinite(options?.maxCommits) ? options.maxCommits : 2000); + const result = await gitGraph.buildGitGraph(cwd, Number.isFinite(options?.maxCommits) ? options.maxCommits : 2000); result.isRepo = true; return result; } catch (error) { From 902df4ba53d48f4cb54c02da02fcd4980ba6b40a Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 14:32:16 +0800 Subject: [PATCH 08/13] feat: bundle slide-maker and academic templates as ipollowork.deck/academic Port the 10 slide-maker presets and 2 academic themes into the bundled template catalog under the ipollowork.deck.* and ipollowork.academic.* namespaces. slide-maker branding is stripped from manifests, cover art, and attribution; covers are rendered to 960x540 PNG per the bundled template contract. All templates pass the shared theme contract test (design-tokens.css linkage, token coverage, unique PNG covers). --- .../cover.png | Bin 0 -> 55311 bytes .../design-tokens.css | 17 + .../entry.html | 306 ++++++++++++++ .../manifest.json | 137 +++++++ .../assets/fonts.css | 7 + .../assets/fonts/Inter-200.woff2 | Bin 0 -> 48432 bytes .../assets/fonts/Inter-300.woff2 | Bin 0 -> 48432 bytes .../assets/fonts/Inter-400.woff2 | Bin 0 -> 48432 bytes .../assets/fonts/Inter-500.woff2 | Bin 0 -> 48432 bytes .../assets/fonts/Inter-600.woff2 | Bin 0 -> 48432 bytes .../assets/fonts/JetBrainsMono-400.woff2 | Bin 0 -> 31340 bytes .../assets/fonts/JetBrainsMono-500.woff2 | Bin 0 -> 31340 bytes .../cover.png | Bin 0 -> 31499 bytes .../design-tokens.css | 19 + .../entry.html | 309 +++++++++++++++ .../manifest.json | 148 +++++++ .../ipollowork.deck.bauhaus/cover.png | Bin 0 -> 22656 bytes .../ipollowork.deck.bauhaus/design-tokens.css | 19 + .../ipollowork.deck.bauhaus/entry.html | 199 ++++++++++ .../ipollowork.deck.bauhaus/manifest.json | 147 +++++++ .../ipollowork.deck.blueprint/cover.png | Bin 0 -> 30347 bytes .../design-tokens.css | 20 + .../ipollowork.deck.blueprint/entry.html | 295 ++++++++++++++ .../ipollowork.deck.blueprint/manifest.json | 153 +++++++ .../ipollowork.deck.consulting/cover.png | Bin 0 -> 23645 bytes .../design-tokens.css | 20 + .../ipollowork.deck.consulting/entry.html | 222 +++++++++++ .../ipollowork.deck.consulting/manifest.json | 140 +++++++ .../ipollowork.deck.dark-tech/cover.png | Bin 0 -> 22714 bytes .../design-tokens.css | 24 ++ .../ipollowork.deck.dark-tech/entry.html | 291 ++++++++++++++ .../ipollowork.deck.dark-tech/manifest.json | 165 ++++++++ .../assets/fonts.css | 3 + .../assets/fonts/PlayfairDisplay-400.woff2 | Bin 0 -> 38460 bytes .../assets/fonts/PlayfairDisplay-600.woff2 | Bin 0 -> 38460 bytes .../assets/fonts/PlayfairDisplay-800.woff2 | Bin 0 -> 38460 bytes .../cover.png | Bin 0 -> 41642 bytes .../design-tokens.css | 17 + .../entry.html | 285 +++++++++++++ .../manifest.json | 136 +++++++ .../ipollowork.deck.glassmorphism/cover.png | Bin 0 -> 149093 bytes .../design-tokens.css | 27 ++ .../ipollowork.deck.glassmorphism/entry.html | 256 ++++++++++++ .../manifest.json | 183 +++++++++ .../ipollowork.deck.ink-wash/cover.png | Bin 0 -> 33041 bytes .../design-tokens.css | 20 + .../ipollowork.deck.ink-wash/entry.html | 215 ++++++++++ .../ipollowork.deck.ink-wash/manifest.json | 142 +++++++ .../assets/fonts.css | 4 + .../assets/fonts/PlayfairDisplay-400.woff2 | Bin 0 -> 38460 bytes .../assets/fonts/PlayfairDisplay-400i.woff2 | Bin 0 -> 21952 bytes .../assets/fonts/PlayfairDisplay-600.woff2 | Bin 0 -> 38460 bytes .../assets/fonts/PlayfairDisplay-800.woff2 | Bin 0 -> 38460 bytes .../ipollowork.deck.luxury-dark/cover.png | Bin 0 -> 33694 bytes .../design-tokens.css | 18 + .../ipollowork.deck.luxury-dark/entry.html | 257 ++++++++++++ .../ipollowork.deck.luxury-dark/manifest.json | 141 +++++++ .../ipollowork.deck.midcentury/cover.png | Bin 0 -> 38178 bytes .../design-tokens.css | 20 + .../ipollowork.deck.midcentury/entry.html | 373 ++++++++++++++++++ .../ipollowork.deck.midcentury/manifest.json | 153 +++++++ .../ipollowork.deck.swiss/cover.png | Bin 0 -> 27368 bytes .../ipollowork.deck.swiss/design-tokens.css | 24 ++ .../ipollowork.deck.swiss/entry.html | 250 ++++++++++++ .../ipollowork.deck.swiss/manifest.json | 165 ++++++++ 65 files changed, 5327 insertions(+) create mode 100644 apps/server/bundled-templates/ipollowork.academic.marp-academic/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.academic.marp-academic/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.academic.marp-academic/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.academic.marp-academic/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts.css create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-200.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-300.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-400.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-500.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-600.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/JetBrainsMono-400.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/JetBrainsMono-500.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.academic.quarto-clean/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.bauhaus/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.bauhaus/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.bauhaus/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.bauhaus/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.blueprint/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.blueprint/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.blueprint/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.blueprint/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.consulting/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.consulting/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.consulting/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.consulting/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.dark-tech/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.dark-tech/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.dark-tech/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.dark-tech/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-400.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-600.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-800.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.editorial-report/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.glassmorphism/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.glassmorphism/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.glassmorphism/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.glassmorphism/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.ink-wash/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.ink-wash/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.ink-wash/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.ink-wash/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-400.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-400i.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-600.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-800.woff2 create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.luxury-dark/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.midcentury/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.midcentury/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.midcentury/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.midcentury/manifest.json create mode 100644 apps/server/bundled-templates/ipollowork.deck.swiss/cover.png create mode 100644 apps/server/bundled-templates/ipollowork.deck.swiss/design-tokens.css create mode 100644 apps/server/bundled-templates/ipollowork.deck.swiss/entry.html create mode 100644 apps/server/bundled-templates/ipollowork.deck.swiss/manifest.json diff --git a/apps/server/bundled-templates/ipollowork.academic.marp-academic/cover.png b/apps/server/bundled-templates/ipollowork.academic.marp-academic/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..65171ed23879d99e308153385372147ffed502cd GIT binary patch literal 55311 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

<^PqZwQnCeyCl3rr{3>rnLcVrwm!hGOk*ca{ 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 k{?A(_{~!2~S+5 + + + + +学术答辩 Academic — 论文/课题答辩模版 + + + + +

+ + +
+
+
硕士学位论文答辩
+

大模型时代的产品营销研究方法

+
〜基于消费者洞察与渠道效能的实证研究〜
+
+
+
答辩人:韩 立
+
指导教师:王 明 教授
+
××大学 管理学院 · 市场营销系
+
2026 年 6 月 12 日
+
+
1/6
+
+ + +
+
目 录
+
+
    +
  1. 研究背景与问题提出
  2. +
  3. 文献综述与理论框架
  4. +
  5. 研究设计与数据来源
  6. +
  7. 实证结果与分析
  8. +
  9. 结论与展望
  10. +
+
+
2/6
+
+ + +
+
研究背景与问题提出
+
+
    +
  • 大模型显著降低了消费者文本数据的处理门槛:评论、社媒与客服对话可被规模化编码。1 +
      +
    • 传统人工编码一万条语料约需 2–3 周,AI 辅助流程可压缩至数小时。
    • +
    +
  • +
  • 但「AI 生成洞察」的可信度与适用边界缺乏方法层面的系统检验。
  • +
  • 研究问题:AI 辅助方法在哪些研究任务上可替代、哪些不可替代人工分析?
  • +
+
+
1: 本研究中的「AI 辅助洞察」指使用大模型完成开放题编码、主题聚类与情感判别,人工仅承担抽样复核与编码框架审定。
+
3/6
+
+ + +
+
实证结果:效率增益与信度检验
+
+
+
+
人工 vs AI 辅助:语料处理耗时(小时 / 万条)
+
+
+
+
120
+
9
+
+
主题编码
+
+
+
+
80
+
6
+
+
情感判别
+
+
+
+
150
+
12
+
+
开放题聚类
+
+
+
+ 传统人工编码 + AI 辅助 + 抽样复核 +
+
+
+
效能与信度评估模型
+
Gain = (T0 − T1) / T0 × 100%
+
κ = (po − pe) / (1 − pe)
+

T₀ 为人工耗时,T₁ 为 AI 辅助耗时;κ 为 AI 与人工双盲编码结果的 Cohen's κ 一致性系数。

+
+
+
+
资料来源:课题组 2025–2026 年对 3 个快消品牌 12.6 万条消费者评论的对比实验;AI 组耗时含人工抽样复核环节。
+
4/6
+
+ + +
+
+
第 四 章
+

实证结果与分析

+
〜效率增益、信度检验与适用边界〜
+
+
+
本节回答:AI 辅助方法能否在保证编码信度的前提下,显著提升营销研究的效率?
+
+
5/6
+
+ + +
+
+

致谢与问答

+
〜感谢聆听,恳请各位专家、老师批评指正〜
+
Q & A
+
+
+
答辩人:韩 立
+
hanli@example.edu.cn
+
××大学 管理学院 · 市场营销系
+
+
致谢:感谢王明教授在选题与研究方法上的悉心指导,感谢课题组同学参与双盲编码;本研究受 ×× 基金(项目号:XXXXXXXX)资助。
+
6/6
+
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.academic.marp-academic/manifest.json b/apps/server/bundled-templates/ipollowork.academic.marp-academic/manifest.json new file mode 100644 index 000000000..76a3d7869 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.academic.marp-academic/manifest.json @@ -0,0 +1,137 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.academic.marp-academic", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "education", + "style": "editorial", + "tags": [ + "academic", + "education", + "marp", + "thesis", + "defense" + ], + "surface": "design", + "title": "学术答辩 Academic", + "description": "Marp academic 主题的 HTML 移植版:白底、栗色(#800000)章节横带白字、右下角 n/N 粗体页码、底部虚线脚注;封面为论文题录版式(栗色标题左置、落款信息右置),章节页与致谢页沿用同一 lead 语法。适合学位论文答辩、课题汇报、实验室组会等中文学术场景。移植自 kaisugi/marp-theme-academic(MIT License)。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "kaisugi/marp-theme-academic", + "repository": "https://github.com/kaisugi/marp-theme-academic", + "license": "MIT", + "attribution": "Ported from the Marp theme 'academic' by Kaito Sugimoto to an iPolloWork HTML slides template." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (maroon)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (light maroon)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-text", + "label": "Text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted (footnote)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface (formula panel)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-math", + "label": "Math/formula font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-color-border", + "label": "Border / baseline series", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把占位题录信息(答辩人、导师、单位、日期、邮箱、基金号)全部替换为真实内容。", + "保持「白底 + 栗色 #800000 + 深灰正文」的克制学术配色,不要新增高饱和强调色。", + "内容页顶部栗色横带只写章节名(名词短语),不要写成长句标题。", + "底部虚线区域只放脚注与资料来源,正文用栗色上标数字与之对应。", + "图表语义不要改派:浅灰=基准/对照组,栗色=实验/AI 组。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts.css b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts.css new file mode 100644 index 000000000..4762cf9a1 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts.css @@ -0,0 +1,7 @@ +@font-face { font-family: 'Inter'; font-style: normal; font-weight: 200; font-display: swap; src: url('fonts/Inter-200.woff2') format('woff2'); } +@font-face { font-family: 'Inter'; font-style: normal; font-weight: 300; font-display: swap; src: url('fonts/Inter-300.woff2') format('woff2'); } +@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url('fonts/Inter-400.woff2') format('woff2'); } +@font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; font-display: swap; src: url('fonts/Inter-500.woff2') format('woff2'); } +@font-face { font-family: 'Inter'; font-style: normal; font-weight: 600; font-display: swap; src: url('fonts/Inter-600.woff2') format('woff2'); } +@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url('fonts/JetBrainsMono-400.woff2') format('woff2'); } +@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 500; font-display: swap; src: url('fonts/JetBrainsMono-500.woff2') format('woff2'); } diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-200.woff2 b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-200.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..91dc3e8529921cabc74fb1dacf5253260b9c8cca GIT binary patch literal 48432 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 Tp~gD%=1~4;zp%;UV+#NP+I>lo literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-300.woff2 b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..91dc3e8529921cabc74fb1dacf5253260b9c8cca GIT binary patch literal 48432 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 Tp~gD%=1~4;zp%;UV+#NP+I>lo literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-400.woff2 b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..91dc3e8529921cabc74fb1dacf5253260b9c8cca GIT binary patch literal 48432 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 Tp~gD%=1~4;zp%;UV+#NP+I>lo literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-500.woff2 b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..91dc3e8529921cabc74fb1dacf5253260b9c8cca GIT binary patch literal 48432 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 Tp~gD%=1~4;zp%;UV+#NP+I>lo literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-600.woff2 b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/Inter-600.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..91dc3e8529921cabc74fb1dacf5253260b9c8cca GIT binary patch literal 48432 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 Tp~gD%=1~4;zp%;UV+#NP+I>lo literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/JetBrainsMono-400.woff2 b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/assets/fonts/JetBrainsMono-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2ca6ac605954ee884442db8ea1d61093000bcc29 GIT binary patch literal 31340 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∓Jw5)|1+k+LPLo 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∓Jw5)|1+k+LPLo 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 + + + + +极简 Clean 汇报 — Quarto clean 移植模版 + + + + + +
+ + +
+
+

营销数据中台
季度经营分析

+

2026 年 Q2 · 渠道结构与经营质量复盘

+
+
+
韩立
+
产品营销部 · 产品营销负责人
+
+
+
经营管理会
+
内部汇报 · 仅限参会人员
+
+
+
2026 年 8 月 16 日
+
+
1 / 6
+
+ + +
+
+

汇报框架

+

四个问题,层层递进

+
    +
  1. 季度经营总览 —— 目标达成与缺口在哪里销售额、回款、新客三项核心指标的达成度
  2. +
  3. 渠道结构拆解 —— 增长由哪类渠道贡献直销、分销、线上三条线的效率与边际变化
  4. +
  5. 数据质量与口径 —— 数字本身可不可信中台口径统一进度与仍存疑的三处数据断点
  6. +
  7. 下季度行动 —— 资源往哪里押考核激励调整、渠道政策与数据治理排期
  8. +
+
+
2 / 6
+
+ + +
+
+

Q2 经营总览:达成 96%,缺口集中在一个点

+

结论先行:不是需求问题,是结构问题

+
    +
  • 销售额 4.82 亿元,达成季度目标 96%,同比增长 11% +
      +
    • 直销超额 12%,贡献了全部净增量
    • +
    +
  • +
  • 回款率 91.3%,环比提升 2.1 个百分点,账期结构改善
  • +
  • 新客数 318 家,达成 88% —— 缺口全部来自分销渠道 +
      +
    • 两家省级代理占新客缺口的 76%,已在 Q2 末启动约谈
    • +
    +
  • +
  • 毛利率 42.6%,低价单占比上升拉低 1.4 个百分点
  • +
+
+
3 / 6
+
+ + +
+
+

渠道效率拆解:钱花在哪,回报在哪

+

口径:中台统一指标,T+1 数据

+
+
+
Table 1 · 分渠道 Q2 效率指标
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
渠道销售额(亿元)同比获客成本(元)ROI
直销2.61+18%8,4205.2
分销1.58-4%5,9603.1
线上0.63+41%1,1304.6
+
+
+
指标口径(中台定义)
+
-- ROI 统一口径,Q2 起全渠道生效 +SELECT channel, + SUM(revenue) / + SUM(marketing_cost) AS roi +FROM dws_channel_q2 +GROUP BY channel;
+
+
+
+
4 / 6
+
+ + +
+
04
+
+
PART 04
+

下季度行动:把资源押在增量上

+

三件事:激励重构、渠道汰换、口径收口

+
+
5 / 6
+
+ + +
+
+

让数据成为共同的决策语言

+

Q3 复盘时,用同一套口径验收今天定的三件事

+
+ 汇报人 韩立 · 产品营销部
+ 材料 数据口径详见中台指标字典 v3.2
+ 联系 hanli@example.com +
+
+
6 / 6
+
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.academic.quarto-clean/manifest.json b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/manifest.json new file mode 100644 index 000000000..2bb2a0022 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.academic.quarto-clean/manifest.json @@ -0,0 +1,148 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.academic.quarto-clean", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "data", + "style": "minimal", + "tags": [ + "clean", + "minimal", + "data", + "quarto" + ], + "surface": "design", + "title": "极简 Clean 汇报", + "description": "Quarto reveal.js clean 主题的静态 HTML 移植:白底、极细字重排版、左对齐标题块、青蓝强调色(#107895)配锈红警示色(#9A2515)、无框线数据表与等宽代码块。适合数据分析汇报、经营复盘、学术与技术分享。移植自 grantmcdermott/quarto-revealjs-clean(MIT)。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "grantmcdermott/quarto-revealjs-clean", + "repository": "https://github.com/grantmcdermott/quarto-revealjs-clean", + "license": "MIT", + "attribution": "Ported from the Quarto reveal.js clean theme by Grant McDermott to a self-contained iPolloWork HTML slides template." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (teal)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (rust alert)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (teal tint)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface (paper tone)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text (jet)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border / table rule", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-mono", + "label": "Mono font (code/data)", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-type-scale", + "label": "Type scale", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-body-line-height", + "label": "Body line height", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实汇报内容,数字与口径以中台指标字典为准。", + "保持细字重(200/300)排版:标题不要加粗超过 600,否则会丢掉 clean 的气质。", + "语义色不要改派用途:青蓝 #107895 只用于副标题、强调与正向,锈红 #9A2515 只用于风险与缺口警示。", + "表格保持无框线:只允许表头下方和表尾各一条 2px 横线,不要加竖线或斑马纹。", + "全部页面保持白底,本模版没有深色页;页码固定右下角灰色「n / 6」。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.bauhaus/cover.png b/apps/server/bundled-templates/ipollowork.deck.bauhaus/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..787c4a37bb341b3c57932bebbd5f7129aacedc46 GIT binary patch literal 22656 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.bauhaus/design-tokens.css b/apps/server/bundled-templates/ipollowork.deck.bauhaus/design-tokens.css new file mode 100644 index 000000000..e21a8c3e0 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.bauhaus/design-tokens.css @@ -0,0 +1,19 @@ +:root { + --ipw-color-primary: #1A1A1A; + --ipw-color-secondary: #005AA8; + --ipw-color-accent: #D52B1E; + --ipw-color-accent-2: #F7B500; + --ipw-color-bg: #F5F3EE; + --ipw-color-surface: #FFFFFF; + --ipw-color-text: #1A1A1A; + --ipw-color-muted: #6E6C66; + --ipw-color-border: #1A1A1A; + --ipw-font-display: "Futura", "Avenir Next", "Century Gothic", "Heiti SC", "PingFang SC", sans-serif; + --ipw-font-body: "Futura", "Avenir Next", "Century Gothic", "Heiti SC", "PingFang SC", sans-serif; + --ipw-type-scale: 1.333; + --ipw-body-line-height: 1.6; + --ipw-card-bg: #FFFFFF; + --ipw-card-border: #1A1A1A; + --ipw-card-radius: 0px; + --ipw-card-shadow: none; +} diff --git a/apps/server/bundled-templates/ipollowork.deck.bauhaus/entry.html b/apps/server/bundled-templates/ipollowork.deck.bauhaus/entry.html new file mode 100644 index 000000000..e17393d6e --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.bauhaus/entry.html @@ -0,0 +1,199 @@ + + + + + +包豪斯几何 — 设计语言体系发布会 + + + + +
+ + +
+
+
+
+
design language system · release
+

设计语言
体系发布会

+

form follows function —— 让几何成为产品的语言

+
产品营销部 · 韩立 · 2026 年 8 月
+
+ +
+ + +
+
+
+
+
contents
+

目录

+
    +
  1. 01

    为什么需要设计语言

    从产品营销的一致性危机说起

  2. +
  3. 02

    三原色与几何原形

    圆、方、三角的语义分工

  4. +
  5. 03

    组件与版式规则

    网格、规则线与留白的纪律

  6. +
  7. 04

    落地与治理机制

    模板库、评审流程与考核挂钩

  8. +
+
+ +
+ + +
+
+
+
+
principles
+

四条设计原则

+
    +
  • 形式追随功能

    每个元素都必须回答「它解决什么问题」

  • +
  • 少即是多

    删掉不能提供信息的装饰,留白即内容

  • +
  • 网格即秩序

    所有版面落在同一套网格上,杜绝随意摆放

  • +
  • 材料诚实

    颜色保持纯度,字体保持本色,不做渐变伪装

  • +
+
+ +
+ + +
+
+
+
the system
+

三个原形,一套语言

+
+
+
+

圆形 · 聚焦

+

用于品牌时刻与核心信息,凝聚视线,一页只出现一个

+
+
+
+

方形 · 秩序

+

用于信息骨架与数据版式,建立稳定可预期的结构

+
+
+
+

三角 · 动势

+

用于行动引导与趋势表达,为版面指明方向

+
+
+
+ +
+ + +
+
+
+
+
part 04
+

落地与治理:
让规则长进流程里

+
+ +
+ + +
+
+
+
+

form follows function.

+

让每一次表达,都经得起「为什么」的追问。

+
产品营销部 · 韩立 · 谢谢聆听
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.bauhaus/manifest.json b/apps/server/bundled-templates/ipollowork.deck.bauhaus/manifest.json new file mode 100644 index 000000000..fd449f1dd --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.bauhaus/manifest.json @@ -0,0 +1,147 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.bauhaus", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "design", + "style": "bold", + "tags": [ + "bauhaus", + "geometric", + "modernism", + "design" + ], + "surface": "design", + "title": "包豪斯几何", + "description": "包豪斯现代主义幻灯片模版:暖白底上圆/方/三角三原色几何作为版面结构主角,小写几何无衬线标题、粗黑规则线、45° 旋转元素、零装饰大留白。适合设计语言发布、品牌升级提案、设计评审与方法论宣讲。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a Bauhaus geometric modernism presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (ink black)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Bauhaus blue", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Bauhaus red", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent-2", + "label": "Bauhaus yellow", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background (warm white)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Rule / border (ink)", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-type-scale", + "label": "Type scale", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-body-line-height", + "label": "Body line height", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案替换为真实发布会内容,英文标题保持小写。", + "每页只保留一个主角几何原形(圆/方/三角其一),禁止碎形堆砌。", + "三原色保持纯度(#D52B1E / #F7B500 / #005AA8),禁止渐变与浅色变体。", + "除圆形外所有元素 radius 保持 0,规则线保持 2-3px 粗黑。", + "保留大留白,不要为填满页面而加装饰。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.blueprint/cover.png b/apps/server/bundled-templates/ipollowork.deck.blueprint/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..077ce42dcb5b0f6487f2cfa8344b263f7c84ed60 GIT binary patch literal 30347 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 CvV7YB literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.blueprint/design-tokens.css b/apps/server/bundled-templates/ipollowork.deck.blueprint/design-tokens.css new file mode 100644 index 000000000..3508b051c --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.blueprint/design-tokens.css @@ -0,0 +1,20 @@ +:root { + --ipw-color-primary: #46B4E8; + --ipw-color-secondary: #8FA6C4; + --ipw-color-accent: #F1764E; + --ipw-color-bg: #0A1B38; + --ipw-color-surface: #10254A; + --ipw-color-text: #EAF2FF; + --ipw-color-muted: #8FA6C4; + --ipw-color-border: #2A4568; + --ipw-color-grid: #16305A; + --ipw-font-display: Arial, "Heiti SC", "PingFang SC", sans-serif; + --ipw-font-body: Arial, "Heiti SC", "PingFang SC", sans-serif; + --ipw-font-mono: "SF Mono", Consolas, monospace; + --ipw-type-scale: 1.25; + --ipw-body-line-height: 1.6; + --ipw-card-bg: #10254A; + --ipw-card-border: #46B4E8; + --ipw-card-radius: 0px; + --ipw-card-shadow: none; +} diff --git a/apps/server/bundled-templates/ipollowork.deck.blueprint/entry.html b/apps/server/bundled-templates/ipollowork.deck.blueprint/entry.html new file mode 100644 index 000000000..a1dcb7139 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.blueprint/entry.html @@ -0,0 +1,295 @@ + + + + + +Blueprint — 工程蓝图技术宣讲模版 + + + + +
+ + +
+
+
+
FIG. 01 — SYSTEM
+
+
TECH REVIEW · INFERENCE PLATFORM · 2026
+

大模型推理平台
技术方案评审

+

从架构选型、容量规划到成本模型:一套可落地、可扩展、可考核的推理底座方案

+
产品营销部 · 韩立 · 2026 年 8 月 · V1.0 DRAFT
+
+ +
+ + +
+
+
+
+
AGENDA · 评审路径
+

今天走完四个模块:架构、容量、成本,最后落到决策项

+
+
01总体架构推理链路分层与核心组件选型
+
02容量与性能并发模型、延迟指标与压测结论
+
03成本模型单 token 成本测算与降本杠杆
+
04决策与排期需要评审会拍板的三件事与上线节奏
+
+
+ +
+ + +
+
+
+
+
SECTION 01 · ARCHITECTURE
+

四层解耦架构:接入层与推理层分离,调度层是唯一焦点,决定整体吞吐上限

+
+
+ L1 ACCESS +
接入网关
+
鉴权 · 限流 · 协议适配
+
+
+ L2 SCHEDULE +
调度层
+
连续批处理 · 优先级队列
+
+
+ L3 RUNTIME +
推理运行时
+
vLLM 集群 · 张量并行
+
+
+ L4 STORAGE +
缓存与存储
+
KV Cache · 向量索引
+
+
+
+
+
+
+
+
+
+
+ OBSERVE +
可观测与计量
+
全链路 tracing · token 计量计费
+
+
+
+
+
+ +
+ + +
+
+
+
+
SECTION 02 · CAPACITY & COST
+

压测结论:单集群支撑 2,000 QPS,P99 延迟 780ms,单 token 成本下降 41%

+
+
METRIC
口径说明
数值
+
THROUGHPUT
单集群峰值吞吐(70B 模型,连续批处理开启)
2,000 QPS
+
LATENCY P99
2K 上下文输入、512 token 输出的端到端延迟
780 ms
+
GPU UTIL
高峰期推理卡平均利用率(调度层开启前后:52% → 83%)
83%
+
COST / 1M TOKEN
对比现网直连方案的单位成本(焦点指标)
-41%
+
+
+ +
+ + +
+
+
+
04
+
+
SECTION 04 · DECISION
+

进入决策环节:
三项拍板,一个上线窗口

+
+ +
+ + +
+
+
+
+
NEXT STEP · 请评审会决策
+

批准调度层自研立项,9 月灰度上线,Q4 全量切流

+
产品营销部 · 韩立 · 会后三个工作日内输出评审纪要与人财物测算
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.blueprint/manifest.json b/apps/server/bundled-templates/ipollowork.deck.blueprint/manifest.json new file mode 100644 index 000000000..2086a1a9d --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.blueprint/manifest.json @@ -0,0 +1,153 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.blueprint", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "technology", + "style": "technical", + "tags": [ + "blueprint", + "engineering", + "technical", + "dark" + ], + "surface": "design", + "title": "Blueprint 工程蓝图", + "description": "工程蓝图风幻灯片模版:深海军蓝底(#0A1B38)上的 cyan 细线 schematic —— 1px 发丝线节点框、连接线、淡淡的蓝图网格与直角边框;mono 大写 eyebrow;coral(#F1764E)全篇只服务一个焦点路径/结果。全部使用系统字体栈,无外部资源。适合技术方案评审、架构宣讲、研发汇报等工程/学术场景。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a engineering blueprint schematic presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (cyan)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (steel blue)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (coral focus)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-color-grid", + "label": "Blueprint grid line", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-mono", + "label": "Mono font (labels)", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-type-scale", + "label": "Type scale", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-body-line-height", + "label": "Body line height", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Node background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Node border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Node radius (0)", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Node shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实宣讲内容,eyebrow 保持 mono 全大写。", + "coral 全篇只服务一个焦点(一条路径、一个指标或一个决策项),不要多点使用。", + "所有线条保持 1px 发丝线,禁止加粗、禁止多色实心填充节点。", + "节点框保持直角(radius = 0),不要引入圆角卡片。", + "架构/流程一律用 boxed nodes + 连接线表达,不要贴截图。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.consulting/cover.png b/apps/server/bundled-templates/ipollowork.deck.consulting/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..10fc821cf3dbdcb763e32258a57204e10df92754 GIT binary patch literal 23645 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 l|I5MgKNac!KR + + + + +Consulting — MBB 战略汇报模版 + + + + +
+ + +
+
+
+
STRATEGY REVIEW · 2026 H2
+

产品线增长战略
半年度复盘与规划

+

从渠道结构、定价体系到营销协同:回到问题本质的系统性检视

+
产品营销部 · 韩立 · 2026 年 8 月
+
+ +
+ + +
+
+
+
AGENDA
+

今天回答三个问题:增长从哪来、钱花得值不值、下半年怎么打

+
+
1

业绩复盘

H1 销售目标达成与缺口归因

+
2

渠道与定价

渠道管理体系效率与定价回顾

+
3

市场洞察

竞争格局与产品市场投资机会

+
4

H2 行动计划

考核激励调整与跨部门协同

+
+
+ +
+ + +
+
+
+
PERFORMANCE
+

H1 销售额达成 92%,直销渠道超额 18%,但分销渠道缺口扩大至 2,400 万

+
缺口 80% 集中在两家省级代理 —— 不是市场问题,是渠道管理问题
+
+
总销售额(亿元)
4.6
目标 5.0 亿 · 达成 92%
+
直销渠道同比
+18%
超额完成 · 贡献占比 54%
+
分销渠道缺口(万元)
-2,400
两家代理占缺口 80%
+
+
+ +
+ + +
+
+
+
CHANNEL DIAGNOSIS
+

渠道分化的根因是激励错位:直销拿增量激励,分销仍在吃存量返点

+
+
+

有效动作(继续保持)

+
    +
  • 直销团队按「增量阶梯激励」兑付,Top 20% 销售人均产出 +31%
  • +
  • 重点行业客户直营覆盖率从 42% 提升至 67%
  • +
  • 产品目录精简后,方案报价周期缩短 40%
  • +
+
+
+

失效机制(必须调整)

+
    +
  • 分销返点与存量挂钩,代理没有拓新动力
  • +
  • 代理分级考核两年未更新,末位 30% 无退出机制
  • +
  • 渠道冲突无仲裁规则,H1 丢单 6 起
  • +
+
+
+
+ +
+ + +
+
+
03
+
+
PART 03
+

H2 行动计划:
重建渠道激励,把资源押在增量上

+
+ +
+ + +
+
+
+
NEXT STEP
+

请管理层决策:渠道激励新政 9 月 1 日落地

+
产品营销部 · 韩立 · 会后一周内提交新政细则与考核方案
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.consulting/manifest.json b/apps/server/bundled-templates/ipollowork.deck.consulting/manifest.json new file mode 100644 index 000000000..f7cfc6532 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.consulting/manifest.json @@ -0,0 +1,140 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.consulting", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "business", + "style": "minimal", + "tags": [ + "consulting", + "strategy", + "board", + "business" + ], + "surface": "design", + "title": "Consulting 战略汇报", + "description": "MBB 咨询风幻灯片模版:白底、结论式标题(Action Title)、navy 洞察横幅、navy→emerald 渐变规则线、语义五色体系(navy=结构 / emerald=正向 / gold=强调 / coral=风险 / slate=中性)。适合战略提案、董事会汇报、经营复盘。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a consulting (Action Title) boardroom presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (navy)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (emerald)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (gold)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-risk", + "label": "Risk (coral)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-neutral", + "label": "Neutral (slate)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实汇报内容。", + "内容页标题保持完整结论句(Action Title),不要写成词组。", + "语义色不要改派用途:emerald=正向/机会,coral=风险/缺口。", + "每页最多一个洞察横幅(SO WHAT)。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.dark-tech/cover.png b/apps/server/bundled-templates/ipollowork.deck.dark-tech/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..adeb833d56d5e6728f437556e67bb98c2e8caa5c GIT binary patch literal 22714 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.dark-tech/design-tokens.css b/apps/server/bundled-templates/ipollowork.deck.dark-tech/design-tokens.css new file mode 100644 index 000000000..cebe4cef5 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.dark-tech/design-tokens.css @@ -0,0 +1,24 @@ +:root { + --ipw-color-primary: #4F9CF5; + --ipw-color-secondary: #33C2A6; + --ipw-color-accent: #F2A33C; + --ipw-color-accent-2: #E0556E; + --ipw-color-accent-3: #A98BF0; + --ipw-color-neutral: #8A96AC; + --ipw-color-bg: #0C1320; + --ipw-color-surface: #141E30; + --ipw-color-text: #E8EDF5; + --ipw-color-muted: #8A96AC; + --ipw-color-border: #24314A; + --ipw-font-display: Arial, "Microsoft YaHei", "PingFang SC", sans-serif; + --ipw-font-body: Arial, "Microsoft YaHei", "PingFang SC", sans-serif; + --ipw-font-mono: "SF Mono", Consolas, monospace; + --ipw-type-scale: 1.25; + --ipw-body-line-height: 1.6; + --ipw-card-bg: #141E30; + --ipw-card-border: #24314A; + --ipw-card-radius: 8px; + --ipw-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.35); + --ipw-island-bg: #FFFFFF; + --ipw-island-ink: #182338; +} diff --git a/apps/server/bundled-templates/ipollowork.deck.dark-tech/entry.html b/apps/server/bundled-templates/ipollowork.deck.dark-tech/entry.html new file mode 100644 index 000000000..49ef6bd2b --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.dark-tech/entry.html @@ -0,0 +1,291 @@ + + + + + +Dark Tech — AI 基础设施技术宣讲模版 + + + + +
+ + +
+
+
+
AI INFRA · PRODUCT BRIEFING · 2026
+

AI 基础设施产品
技术宣讲

+
+

面向大模型训练与推理场景的一体化算力平台:架构设计、性能指标与商业化路径

+
>_./briefing --product ai-infra --audience exec
+
产品营销部 · 韩立 · 2026 年 8 月
+
+ +
+ + +
+
+
+
AGENDA
+

四步走:定位、架构、性能与成本,最后落到商业化打法

+
+
01

产品定位

算力平台的市场位置与目标客户

+
02

技术架构

接入、调度、算力、存储四层解耦

+
03

性能与成本

关键指标、TCO 对比与风险边界

+
04

商业化路径

定价模型、标杆客户与渠道协同

+
+
+ +
+ + +
+
+
+
ARCHITECTURE
+

管控面与数据面分离:四层架构支撑单集群万卡规模,训练线性度保持 92%

+
+
单集群规模(GPU 卡)
10,000+
已交付 3 个万卡集群
+
万卡训练线性度
92%
行业平均约 80%
+
推理 P99 时延(ms)
48
同精度下优于竞品 35%
+
+
+
+

接入层

L1 · API 网关
+ +

调度层

L2 · 调度引擎
+ +

算力层

L3 · GPU 集群
+ +

存储层

L4 · 并行文件存储
+
+
+
Figure 1 — 平台逻辑架构:接入 / 调度 / 算力 / 存储四层解耦
+
+ +
+ + +
+
+
+
PERFORMANCE & COST
+

同等精度下训练成本 下降 38%,但供应链与能耗仍是两大硬约束

+
+
+

已验证优势(客户实测)

+
    +
  • 千亿模型 MFU 达 58%,行业前二水平
  • +
  • 训练中断自动恢复 < 5 分钟,断点续训零感知
  • +
  • 推理吞吐较上代提升 2.3×,单卡成本同步下降
  • +
+
+
+
+ COST + 三年 TCO 较自建机房低 27%,主要来自调度利用率提升 +
+
+ RISK + 高端 GPU 供给受限,大客户需提前 6 个月锁定产能 +
+
+
+
+ +
+ + +
+
+
04
+
+
PART 04
+

商业化路径:
把技术优势翻译成客户听得懂的价值

+
+ +
+ + +
+
+
+
NEXT STEP
+

请决策:白皮书发布与首批标杆客户共创计划下月启动

+
>_./next --whitepaper v1.0 --pilot-customers 3
+
产品营销部 · 韩立 · 会后一周内联合解决方案团队输出客户版宣讲材料
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.dark-tech/manifest.json b/apps/server/bundled-templates/ipollowork.deck.dark-tech/manifest.json new file mode 100644 index 000000000..c234734b1 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.dark-tech/manifest.json @@ -0,0 +1,165 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.dark-tech", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "technology", + "style": "dark", + "tags": [ + "dark", + "tech", + "ai", + "engineering" + ], + "surface": "design", + "title": "Dark Tech 技术宣讲", + "description": "沉稳近黑工程风幻灯片模版:深蓝底 #0C1320、语义五强调色(blue=架构 / teal=性能 / amber=成本亮点 / red=风险 / purple=生态)、白色 diagram island 图示面板、amber→blue 渐变规则线、等宽字体 eyebrow 与终端 \">_\" 品牌细节。适合 AI、基础设施与工程产品的技术宣讲、方案汇报与立项评审。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a dark tech engineering presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (blue)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (teal)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (amber)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent-2", + "label": "Accent 2 (red)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent-3", + "label": "Accent 3 (purple)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-neutral", + "label": "Neutral (slate)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface (dark panel)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-mono", + "label": "Mono font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + }, + { + "id": "--ipw-island-bg", + "label": "Diagram island background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-island-ink", + "label": "Diagram island text", + "type": "color", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实宣讲内容。", + "图示与架构框图必须放进白色 diagram island 面板,禁止直接画在深蓝底上。", + "一个概念固定一个强调色:blue=架构 / teal=性能 / amber=成本亮点 / red=风险 / purple=生态,中途不要换色。", + "eyebrow、页脚、Figure 说明与终端 \">_\" 品牌标记必须使用等宽字体(mono),不要换成正文 font。", + "insight 强调块左侧 4px 竖条颜色必须与内容语义一致,每页最多一组。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts.css b/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts.css new file mode 100644 index 000000000..1b8d3b09a --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts.css @@ -0,0 +1,3 @@ +@font-face { font-family: 'Playfair Display'; font-style: normal; font-weight: 400; font-display: swap; src: url('fonts/PlayfairDisplay-400.woff2') format('woff2'); } +@font-face { font-family: 'Playfair Display'; font-style: normal; font-weight: 600; font-display: swap; src: url('fonts/PlayfairDisplay-600.woff2') format('woff2'); } +@font-face { font-family: 'Playfair Display'; font-style: normal; font-weight: 800; font-display: swap; src: url('fonts/PlayfairDisplay-800.woff2') format('woff2'); } diff --git a/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-400.woff2 b/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1636e5013e07fb418adcd0e2d9aa24c9aed2274f GIT binary patch literal 38460 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őGVAX$qnKe8qFi7ydOL`lKKnQlj;)1W}d0c0QI2v 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

>CtJFS_d7WK8qe_*{ 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-600.woff2 b/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-600.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1636e5013e07fb418adcd0e2d9aa24c9aed2274f GIT binary patch literal 38460 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őGVAX$qnKe8qFi7ydOL`lKKnQlj;)1W}d0c0QI2v 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

>CtJFS_d7WK8qe_*{ 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-800.woff2 b/apps/server/bundled-templates/ipollowork.deck.editorial-report/assets/fonts/PlayfairDisplay-800.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1636e5013e07fb418adcd0e2d9aa24c9aed2274f GIT binary patch literal 38460 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őGVAX$qnKe8qFi7ydOL`lKKnQlj;)1W}d0c0QI2v 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

>CtJFS_d7WK8qe_*{ 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.editorial-report/cover.png b/apps/server/bundled-templates/ipollowork.deck.editorial-report/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c9ffda87a58737538667a76dafe7da725371a9 GIT binary patch literal 41642 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 wLyp-?f + + + + +深色财经简报 — FT/Bloomberg 数据简报模版 + + + + + +

+ + +
+
+
CONSUMER BRIEFING · 2026 H2NO. 08 · 内部简报
+
+

2026 H2 消费品市场洞察简报:
存量时代的结构性机会

+

增长不再来自大盘,来自品类分化、渠道迁移与价格带的重新排序

+
产品营销部 · 韩立 · 2026 年 8 月 16 日
+
+
Source: 国家统计局 · 尼尔森 IQ · 公司内部经营数据01
+
+ + +
+
+
I · CATEGORY DIVERGENCE
+

品类分化加剧:健康功能型消费以 21.4% 的增速一骑绝尘,传统大单品进入个位数时代

+
+
+
+
+
21.4%
+
9.8%
+
6.2%
+
3.1%
+
-1.8%
+
+
+
健康功能
+
悦己体验
+
性价比白牌
+
传统大单品
+
高端溢价
+
+
+
+
TAKEAWAY
+
资源应从「高端溢价」叙事撤出,all-in 健康功能赛道的产品组合重构。
+
+
+
+
Source: 尼尔森 IQ 零研数据(2026.01–06),同比增长率,% · 高亮柱为本报告焦点品类02
+
+ + +
+
+
I · WHY IT MATTERS
+

分化的本质不是消费升级或降级,而是「信任预算」的重新分配

+
+
+
+
01
+
+

成分与功效成为新的决策入口

+

消费者先查成分表再看品牌,营销叙事让位于可验证的产品证据链。

+
+
63%购买前主动查成分
+
+
+
02
+
+

渠道信任迁移:从货架到内容场

+

直播间与垂类测评承接了原本属于商超货架的「发现—信任」环节。

+
+
47%新客首购来自内容渠道
+
+
+
03
+
+

价格带腰部塌陷

+

80–150 元价格带份额连续四季下滑,资源应向两端(专业高端 / 极致性价比)集中。

+
+
-12%腰部价格带份额同比
+
+
+
+
Source: 麦肯锡中国消费者调研 2026(n=6,200)· 公司 CRM 新客归因数据03
+
+ + +
+
+
SECTION
+
II
+

对策:把产品组合、渠道预算与考核口径对齐到同一个事实

+

三个对照表:品类押注、渠道迁移、价格带重构

+
+
Source: 产品营销部 H2 规划草案 v304
+
+ + +
+
+
II · TRADE-OFF MATRIX
+

三个维度的资源再平衡:H1 实际投入 vs H2 建议配置

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
维度H1 投入占比H2 建议调整逻辑
品类组合高端线 38%健康功能 45%跟随增速与毛利双高象限
渠道预算传统媒介 52%内容场 55%信任入口迁移,预算随入口走
价格带腰部为主 61%两端布局 70%腰部塌陷,主动撤出而非被动失守
考核口径GMV 单一指标GMV + 新客质量避免用促销冲量透支品牌资产
+
+
Source: 公司财务口径 2026 H1 决算 · 产品营销部测算05
+
+ + +
+
+
CLOSING
+
+

简报完毕。
请决策:H2 资源再平衡方案下周进入评审

+
产品营销部 · 韩立 · 评审材料 8 月 22 日前提交经营管理会
+
+
Source: 本简报全部数据口径见附录 · 转载请注明来源06
+
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.editorial-report/manifest.json b/apps/server/bundled-templates/ipollowork.deck.editorial-report/manifest.json new file mode 100644 index 000000000..9eb6e8cd6 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.editorial-report/manifest.json @@ -0,0 +1,136 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.editorial-report", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "data", + "style": "newsprint", + "tags": [ + "editorial", + "dark", + "data", + "finance", + "briefing" + ], + "surface": "design", + "title": "深色财经简报", + "description": "FT/Bloomberg 式深色财经数据简报模版:#0E0E12 深底、衬线大标题、大写 kicker + 发丝线、纯 CSS 数据图(单柱琥珀高亮 + 结论条)、每页 mono 来源行、罗马数字章节页。单一红色纪律(每页至多一处红色焦点)。适合市场洞察、经营简报、数据汇报场景。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a dark financial data briefing presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (discipline red)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (amber)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Hairline border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display serif font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-mono", + "label": "Mono font (source lines)", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-body-line-height", + "label": "Body line height", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案与数据全部替换为真实简报内容,图表柱高按真实数值同比调整。", + "红色纪律:每页红色(--ipw-color-primary)至多出现一次,只用于结论关键词或最关键数据。", + "琥珀色(--ipw-color-secondary)只用于图表高亮柱、kicker 与结论条边线,不与红色同义混用。", + "禁止使用图标卡片网格;数据呈现一律用纯 CSS 柱状/条形图 + 结论条。", + "每页底部保留 mono 来源行(Source: …),注明数据口径与时间范围。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.glassmorphism/cover.png b/apps/server/bundled-templates/ipollowork.deck.glassmorphism/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..1a474947412844905fdad6232815cea565db9801 GIT binary patch literal 149093 zcmXtsYQkYl~;X7f)9JT5--xF203SwS9c}MEQy#lj6%djF??GlatsneT6rX z{(B6%>iW3-n3gBO`u?B{h?M-WUhn4+$;~c&pGf|`H`n;v|2^BfwedlZ2^dWq*{yvA@3LN?{T$?gCF+Wixl%6qcWj+5 zNpnC92r|nzr`8z}>NRgNrp)~z-(^mrD>u0STx`NE`1VHqr5Yi!5T{S74=I&JTB^Yz z$TVXETHY5N*^fL4t_fpft;J;^Q&S>8w+KU-|lIpOCRw zZjQ82;cVii(ZdXP`LKka!RgcW3KFXU`dgybxkBKC&jc!1cNDtIbqX`&{blvq`ohG} zr@R-EZFBmCC?VD`GV@w808RKW&6GfXH>hq_UTM$hS-=)zz4ZXV&Ou%SQK-btr>1@=7si zkxgiHec)h!{)#?xoYO~DOFP#o;t?q3Plozow$el4Q#NiHc{~{wxAT5I>G$@SZtOY# zmLD=9%=s9ZLJ{I^k?bjbV>Y!mIuG23Jy6NbM$rZ#r}4)U1Z}(#PUe!Jj67A z*gIcjiYU^jEIDW$u5AIgtAm)MXs=(~+4DpzzER~E4_ zb-h7w8dM{*&R#b(0mZlIKMPtUiDhxx7=#Lu=n$dJ0=S|Soy6B_hPNX}6ocphPYf8& zfw-t7Ee-jdWSEY5UUis8lwiC{8mqF#6O2MelvmrV7{+<}1+3?-JBYfJ8>GBZ`bl6& zNHC*INv++?ak-wUVS}Mmi!6IIf?(2<7KT(lK?SHWuHTu)yhQ8(4}-fl-5iH=ld%*; z4b;J*vN&i&CKAiLr8~~oC%$@tyu*9TZ7H5c4CDB=?e>~kiU!I}e1}`>KYnYxXo!DQ zAc(Dgg{xL3^ynwi-$v8eZjrO8CiA`MRQ+IE-(NUQV&|$q_N*lW-MxL;dKu>wWnwopaL;rKA9Eo6wfSp>);ugr`82_G zbR=ZGctIZdIb@uXlwT&FnB%nvjl+IXwns~Lq!3!XA7ne>t1fVC6ilvOqMPs-dM|`t|HDAYW}WIR3Q7^ zC>jTDm{c*$!0I`4zo{r5U!?NG8zn&c5vupd(alr3YqwVGRSnh<;2v}7?l8V?nA-99 zi|jC{eeskP?7De@BJ)-vFf#aZvU?HN-MqdH@Srw~p6)WfdK=S^=)iLB>>!X7jp-Ih z<^`aQaTf8N;8Aiy(#z(2sdI_pNDNxtep~ILrgJ=oOHcObIvkPjLru?7ww(c&IJ3!l7bXZ4w5P*-4MwMx zTQZ*yo7ar=L9hd4^88|cK5s}qXWYfaMlOKrcR0_F!-dF8?kf!cyfxgZosyDViWhzi zT*SKeCC}~@XUV*dh-H!WLd0^{IefMQ_nc65%Vwa8H3vgWG4);AGPXKa3vUtDd&(gPU&JDC>?8AmaOfnrtsWDQ;0t-l|m`F3zH*aj=QsXb?2ZrlY(i(dgS zA8^5?++sPrmpCuLAY6CKzzChtM}%UO_ltgKm6HBOQ`4ONV;h=8#1l)$*qCWKI2JYV z`V97MM4BW(8K-0Fexc_SJ%=$aSV=_qU>5!^mPkPIbNR5c(6m)E;X8-13U+t-Xao@< zdyVrx&0o>lfRC*Qr>4c-uNq$>z0Qvb87_#Z1%+6Yx)40_OmW=$yEHILI6-yKtlXp9 zYku1(lQJ2PTz})$R;obZ%^u;iV?d%3^qN;|CFg&qX{{=~X_BK#ggl%T81qC4Y|cKr z#+P5$$*#x2Ato>VLlnQrqy~UA)X*B4mm?jWfdYrGl3#}7cu=4E#*-fqp;8=t7qU(z z=hmTq59f&&@3yx>u(oOW+>_g~7Htuq&ToACaqpR@@tW5*yKj$*q&qfVZM-}n4aM|O zM~!|ckZ6lD*Jr5ZL?o>S?^|yVt-l?#sCvguSWiAh{CePClmn>lx|TDOCVCFd0@}ZK zGuBX@t{fK~M+tU>`3jXBuBVQ;Pf+rCbXe{w5_#JupJ~i{bDwEUlHJrU0$r4R&gPNG zc>k`h)oKO6y&Uoq{p0E{GGzge2KV)wnD4QSwnmNffY)p&YI`(+rv<(tc0FeL#!$|< zOT+YiHoIe{xQhG|HmJiK-uqfIQ#b|_;KOgSQI9rVa@{%dzH^iG_UeZe`%;|DCe*r1 zN7Ne4CbebE>U&@MZ^|xGHn=wG0NRMwnZQUCJ$D8%X}!iP?ont--JkqupDE+@)Bby9cZ)LkvHUGBgM=%x9wg zd!ANmaw(|lS}Oej{$CENDePAY@;B1ZxC-j`C~}%n@hAOM2;6mXk1pP*4%T((Q1=|` z0Spqr6ePWolS$B;6Us?d%f7t_4suwUXfr?4N@P}J&k`=7eS zooY7uDQzjH!ZZs1=@#urg@*sDZyCm!VGy984<@E0#qj+GB9=eQGVN+kqPx!VfLz(e zBw~hbSZy8s2`Vgbp7#-8I`qXmz54BTh`#O!6JgJQrNkWf`;uOz z`Y+2{hby^!Q#@8Vn@0Mb7ryf>wCA5tu4{ZPM&Q$S4cRs3^OZ)2DVk>Fb&lEYW>b9_oibR7L}6R=11)&cGG3x(1^9oZW8* z=f8$q`@T4)?c6{+(+7$Szz*p1b((JyZ<)q-Y2#$W1>lg;Ryi{B96ay7lF-u%|v-9s>>-h;7%MyfhdAtP16;vLQE+ z!(ul=shGML68$^DAEZaaMa9AV6kb#Ni%;1h&(H{8_<|+n`sqx6?BEW9l*o@n(!u&I z`+C#wtw+Yb-{3m;Fef*ZRxfUgJn2ve6 z1b5MmXD)qFR-3zSf6uf~ImU&-&W=!+Sho=w%A>a+KtU4^|3+<32jx{Sr>!6_AgnMd(JNe_v+K9)c>Z^B-w%W z(hASx6Z^a`nvRwh5=gHns*5X!@qRo>z*@ei?c+PZ;FfA^M1p^Y?BJnk;*)K@w^hhPtEYfhCf(6eCb#qQ zA=$eGGx9aND_cua#pByuQLk%PHP8JqPVaHqUox~L$~KUr?#&<2hM^|mGv#4 zy=Bt47zEVLsz$1JCSyv1%b9>f-T4wa6pbyYEC@d0n3F@ zcy7JudA_>O6$=RPpi=CDYB%Q>*kxfUsCFqCb*YS+)Po5;O_T;W$_TLFp6cJ{O`C3u zKGZIPTu?&1ud^YK_05cQQs8tmJOV@7KxZZKmGi! z%7^-&LW?Vt(99O*0NN;AcB5IBiPr-<`NG)v>HR*hiRW3A5`IzMk)2Yu;G`y8g|Q8_!q5J-V|n*1|GyV`D;K`x@XR za*+)zjM&tEwHSO0;+V1NT2OWbEx+ygUhGVvU}d1!q%dTsJR-|_^aoX`Zu!058h+TT zh10I(TEQ2z+YkHFS#!R#68`eCzU%DD<^`^9b!%NMdiAP&fI{6BKfvQ8XH$CFXJQ<= z9V-&DnbO9CVqeQFVJ}_YVABqS?Tc?xPCw-cwgn~xW%45Rcc%fu35^zAyyW<=G~P@Y zC0~t8Go{?oWGk3BgvzPJz2RvY^le@boM;o-6SjT8BE$XIO!m4M#_T$+@*Np z#Nys($vHreG!bFXbVn+>I0O6h8msl1s0_Owhp#^x4l%n4h*nO(&y6(V%|(bRHYc~g zG4N%S>KlP{Vlvbb^ns?L5&-Up#xN7Yu>^a6u(5EM{|0A%8eeN(y-Rw<#o2c8Iz{o3 zeuH33ZxGFv@F~D(KCOSE84G2RJ8fzrU_#h(ugQY-&K_Su=C$Kg$H0PUcZ+N(pt%#p z&f2vn_ebrn@(Y4nt@P$zh^cXz z(&CXm3t&2~xdZdftXDyxkR3ayd5kYiY&F1rZg!tsDi6h=n8b{**+Ni`gk4k}6e-ri zEH@I^MA!|v9-^RDxCy4~r%aNL5Y07&uh>6;k?QMDypX}Ns92mXo+{q8bjy9zKQT*A zxE--mL1-E^Ha_hubx=cgl@rg3^(YO*w%Peg6~ZpE-baWav` z^E<2%KPl(|OkvDK5y=KzVPmSz(O`LoK)=Bed|Hgz9Y?!vzWCtQQ+9*HoDXO+9YE&= zzQBGe`=STgu}6T{(v-)FVszv{SZ&P9Otg&SAo8EcbNBkp+^U$p_fdQI9Bb(-H+o@1 z9oC&j5w)1z1MDC;Z38q`(bdTXq!B6=|2O?=44B820qwuw1tCttL72YS_rnks`2dgv zwl(|&7wBoyOOMh!8yb-#0jf}F(yXbArvCaF*%HaP>#}P(;VuyV5A{9mRY33-N+-(3v=lW?nsELAx^K93#Veq zO*Itm%huQTS@2=80NQPiW8pp3u491+kYA%3ta?jh7P@mI>3qD_*Ejz?ptwv0NL!t{ zk?uFcsTweQ*2F^IosuEaUhtTVJ06j_@axS6#yng3j|Z+ODR`?N5#Z-JFW zO|fG~L>qm`!b@o0NWln0InxQ)Yu@?m1+dd)9h+~PV0ZbBgJs`DrY1qUY2kj7cJQD< z5-`jh{)o(}kVQrJi{3qhM16^cidf)~zYJ2yI@lh1?Kkpi7lp!Z#!zU} zerBTGKkc5zkNnQ>{|c#@L~r^Vq>Z7H9NpX8_;`9^?hq;iWPe<<$F3EZxljt-~r6_W1K3QSE~FeBxH$x@*rv zWWf(W`%KCQ5uBq3^ z>BRsAOI(NP?W(BfGHBx&iSI;Tf0)_(8*4S{QGiAIR;_q~oez;D-P0j+aZHHM>@rX} z!7~sk^~;>W*`HYfjS@eTK{}N`i`N%1w>X>urE&zt<3L$D?LSq1ABTPu)s}<)P3&Dy zB09PDnGbj-Rms82j1W#b^HAFTBF~PL2P*mdopjw~Ww!hu{*hQD_b$iMr*YiixLVs=cCZ zsuf+oxck)|i%#ZvgbG9+mPSpa&q|0|JF#T*{LBQ@4r3+BAkOy0+o9E`AZ~7C5#PA+nh9aaQgE}RHFsMxltx%RuXu5>@Eiq&MvQgptLpvcZFAs*`p*dhQ5DKS0t&7Pvae2;)ox zUOYffqg74c`5o>1fNzn#?vpAV7?|wG*~CX(aaGP}2&=v;*6ZJ>E)~s*V}g$%uZ*9& zvq>Ibp>2}Sh$K1RQ;8&F$I*H>{2bKRR10MiL{GY&JmKgZs*H17ym0Ui5paj*T(Tqk ztA@Df>| zRb`m$20k;!%`AC#-qqHu;f~-Bh)WOk`q^GNU(;EGJ+S4 zR&0K6C$GVq=fi|Ok& zE@s+HGd=wSJafycN|x547HgkPLN^b`5Ag@*V1ninXuBhY!9M{~XV2qdlxiS$skQJR zO9a1uuMoa&AZ)|NV(^$taRgEH=@;TMC(n*6Ys3*10imCNz$lDuz&AqN(?TanUaBA4 zbumAJA)yUIwzS-ziLo-En44%((XA`UMC&q%sqE(^&`AbwQqua;p?!dC9}__?u0K1A zqHa?rhEKm$-FDx*oplk32}S#oc%A!#I#(VHFX;SE@TESaLr+~gc{^|k)IYMW7ujJ> zg8-*C&>_Aezpr0!#+SzaM_{?7=T#pu*E2j*uJVn=&mbczBGzRg zfY5}5&gdn3uEvFzIUA#t3e4eSS)iY;QS-M|HR7hDh9T@mUCR34ua%AgqBTljO0ME( zDy*g$9c$MF&J9j8uH|3LvtB5B!>B(Fv!sarpnO_uD;JAu7MVhMYsx?QO3VCn5tt_-cAg{XJ$x;&EiYi&96?hlCT^X{GIBtjQ(ylmJ& z=WDEsfsA*X6tsUI#l&ZXl4|o$!k-o)l@9K9{zKp-vF&(03@d_!Xo)fXv43oF zHlcphP*ra|_{}{bk(0$meV7hdIy=0gKUfX86uCm;w$2}{8Oon^nT zyJE|joybgARaSF}D2IIAlu*EiM!X< zRy>QDjs+fmULAk$e3mGDkrOc47nU}om!Nh5dxZG^#{w9oq)taklwk1WX@~_g_!c;d6I;&mAq{-gA5>xqt43veLGV$h+{nuTc(~BKE{4t^i!@Zwv1z9;uZd-1B2X=s>QOAKkp{J_iqjed89>CjrmD z3K!pJ!kx$VXH{-;Ca(zP9fiEqxOPrj+h0xF==Hl)(J{|N(*YnD>fj`abYwdvV|$7~ zw75zH7E*U@XNnn1ARER$H3I3EYejtu)iEjR`3Zq`L9#0Sz#)z1tBw4VJx)xl!qg&D zAs4nX;jeRv)z+Oha97NW``UeOSLYBq(`U9+FZoJ6xMeda5VvPh-Em!tb=~w4s*jCN zFI;%_nPa>snPflnR^##Jx=o_#C7Uy}7ct`GuMsO*rPECf8ZCyU>th;`Q2Q$}w1-Ge zrzblyt*oB&8wD(>%?uL}hW>qr%(kNJ=0FsDT+kVnc-SkYq}X;(QcaaF*1(Sa8j&A7 zw(LY{JL;`x}e@UlQaU7FlMF{a~-M$l_mK zeb!ET&n8GaCp zGuE}Y`w`~_=Z>fn9~uDGuDfB6WlfKB_HaYyz+myLie-yvbaRF=G1 z1-o&eNJI66hI{3yjk`RU3^j*~xGR4<@|tgGj?*f|84GX)H2sE!?v9MxT~4vLqz4}nMa9WK>TJr3i9P%4}& z5xk>uFV?Q0EIxeYv-}?4@{%||TNSf=7dBIak{uOYXl@ad$r0)VP3Er?7VsiNBy&M(QQ-$ zZ!i5rJiyPDf9*aw9!rfxHL4LFAD1?NLvEv33bGwCyibFx$b4r#11`Y?QOTG9P&R$H zb!An3U_^#mFM4>GWS0(dFg4}2#P@LvUZmhE=RLJ{EO6e87nc9&LYk2|p9XHqmwzA11+Ku^b zE#5JMd7CEGU$W5AI;>7=@m64_czPsa5drFCf^sjq%hMauGWiuo9B*hAqq(iMS_pW^ zTWvLzi5ptxU7<Kw3#3lxJ)p==G+z_@sq5 zEm{`U`|XHwe~aoaa0k_Os`yH8u}k#9^D(n3lKcN}q61GeWZcwO)@0^q50|@l$)=DD~&f&52)7&V~S3HFb@3fB5O@!xkEgl1=*p z>EwW-URfz`VEpfYzrI$`h0v{fc7I6(=#T0=GDfmzqU6%(v8F@`J9m8~YKfc6h$j`- z?-|E$Jjjee)u`I4((cIXsQu%|HzmD`hM9HWg~u{) zNNG(nI`kQIpT@bp+Qsu)Kd>+M4#_@V7yay`mSWp8Y4TW^@tq;oz8P42XYJZ>V@_Tr z6j;%r1+*7>Ek3&|!+EMb$h>2P#3(1B+44kWUg!P^6GX{Ao%dr;WxJTc_l901u)cD- zrK!4oa($igWOo}cv~lSKYHKT1Hkbs=7n4`$%~@I{5_D!e+!Dzdj1s3V>wcBNyRrsA zbxtY{0UC7?{n>{l(%|XDNX{+BIAvzyoePrgLFiE~0ZnIfzxhEvbBhUADAFZxKwUfX zo!_=6?B#Z01bywr0@zCh8ZDyV2$?P1iy#dWvQ8C@N02zuf>+R|0yMo-J?4$vYb|J@ zfVg#KW|mn=sI@9JYIgafX1+4uA3t?D0J;BMqxx~4rT?`KY`_kd<+5<17UhIOm zNMkO6)h&$gyYn?#!mJ$rF#z83lkM1!je`Sv7P8M8*+}7&EFWTU{vkhEl+8h!iIo&k zu9-)#g6wb zRq>#$F)*F(kzEfUD_bo>Qk->I!^%Lq4NEz)B`~u{}1xeACsK8tZ-AmxPgCHw2$_5WZO0KaigAV3NiJ5)M3$ar6C;jt3HA=ShhM= z#QXHjS}I5|DynVb0rUzSd8cX?!QZIWx}07P_NAtp!h8tLy_S|v50=o&s9~>%YB{JK z;Jp75Feqq+YSKU9TNSOStg9-Pq~RpHS4}4RrYl;(P_Kb2zN@1lgA`Luzqw%<4{86% zfLFYhRnfmThC`;i8{k`i0C*ZdUhGK(6w0vmbQRx$RgbukaEAAL;xu6hxdg`ke#r(x zw-99meKhJ<>Z4Xo1W5Nc#K-2h?B8Uht)})jGN6TTEMicf(T)X_uW~H@!yBMK&~XIc zgBIInY<(Hl1`J2EvD~LuOzL0dL+uQ8_8biR) z*p`tm-681?xf$}%wa5_?T97NMdkjJx;i8g!&Y8Xlp^8bhS;Oc@zqVK?-VU_ycQRRa z#UA62V@RDBa#O_Ccuiv*FCelp+~B@0NzH1@y6Z^6xX*lF^w1FiABy#HQduflm~wIuW4rXed>jF;Di*c3(}w^$D7@Q z#3D3lnyiZ`7J*VsnjndCa>Q|_6cvVfJ|#XPVvfn$i~69_S`^HhagRZRva$L%1iL$T z@1I{t;wJm@^dP{uPs#(zaqX>zV7(;$+z5vbq6Z&I`Oa(O%35C39`u(_3kMyt_fG-$ zCSJSo_c`<=8^#R*HUm$YWNh)&=|gPN9F6|Qz6bul)Nty8?3_vLc>m&Kmp!%pqDso2 z>2+9i2uxdcCTa|#C<3gcoE^sEE#=Fx9HNTD?Qvw3kPx~k;OF{t06)aDia1(o&IQ)~#CQ!405za8s-f(XR z|NLj<2uG%L(Ns8}9ENe;wbzfDsZhcdC}2d|8$7>}9PJWLW+vLNlEgfdIpE<<=Q{AR z7%$d2^outB^Q$?O57RFh0cWrzo-dWM_%KJ8UvFbh zi7!259iPHI?gdZ39sW@$Zp~lsvgFyN_aS9jmBY62oP7SHdzC4EFA)WO4nCAS_P}uB zG#B3^B44!Ch~~5CpBDw|F*gx75Yu0WV5q=OfQsIT)ed?}e{XkaO@m_4b@hdzHMof@ z2GyWVgRK7j+I-)x*8PC_V%LVSC>)h|y+|M+aUD(?PzL+Z`@19n-xdK9)Vfe7+lR)b z*J!WF$JMQ@r(n6}58tQYVbo)hUZ&r7JqrmL02{@BTh9)Bq*o0#<#&=zieY|5f#+(w zRM3X2bLPk_F*K)+98?{s=3VR);^aO|($@MnK1jH=aStU0*P;PxqAC_9-ViHys_UCm zW*9paD+(g#z}8lW%m_2m4uxvKqwg_b36OQk{;tzTNE>V|b|gUCfZY(f+zORPQb{1E zI#cvJO~t*2&YZ%8w#^}l^F8U+{uw3fLmx@HkUmWRP^|HbV5rph;VAhBX;OpjY8vHV z=J4Rw@QWniwXPN;`CNZReLgyc%xSxC%j+jy;Ati0_t zxB#8UID<0tT^H}+#l+f3d)nubP#*Xn$L|Y_+1zmQ0_(*56`IF@->SLUg(@AwQ8c2( ztWmh&K`wPhg^gM2BJevfT7pa{k{+vRk;z)Bt#u=C8`fDslitkaSukHoy0wADctlww zo#3*D;7KBCWwW5N*-MZ_RN@5=-N3aYhN)GUbYORLd8=`kCtgU$61-Ljy1a$|KZ!6= zj2VSAHypdn%K37LJ7Jy%KF!r2c=11i43skHmXrVSmCT&ai?~syVfL|`S>Gno1u~;c zP?K8kSJ**$SoZ&hVU^+TJ<`4YPCa?2{HHP|W;3HdS5Pyf9=-Sf783{ zJ66ZxYhqUefVk_zj%`fYMqB&}LH4f|PgmxI86+<4XG%eabPcWO43}|F*7(gxY>9*X z4{9YzHWJDhuuebR4;FiTYk(|ZTlVYtfEcAOc14gZDmx6`h=x}l-#Vla{^Ih!sw|cS zg1GYeH%Ny(lE}<-s$0n=G>VDo0g&Do$Ly#SDA0~@L;Kc zTPO-eX256=3xPplECP!R%-a5q?Qg<%oZa44tf+UhipTs?)b(#u#7t)I|8++Qm2Qu4 z@JVvfW0_>!+AQ!UE?f09{RK(A=KS1M2w2(N9J3<@XB=y_56j?C$dNuEO^?)FNLMW1 z4%}@vgZfNb&;7&$$9eWBB1RiM4y-S7?sqz$@=@(4_I7dOzkIQju}yUeUDnSgUsChj z@UbiUHa;N1LJ>*P?QlbeG2KJikko}+wu>Kj?)%p#Fy6*m%2J5P>1_M2?*uIp;!YSFH9zD3 z{gH=?t2fAt&Odlb-uPfzh!CAtdkB7P&B>+G4z{OPcIFkO2UaD@1$*LQd=SDtCj{TO zB0R5+Ew+mMgeTn=dwe^rW_>>C`cz!UN)9ghKDmP01GXEtpif@Hj?&xjPR1UK_{e&8 zb$4<0cFY1YZ*U>%wxN=9ro?jpUCMtFv%83|Y(IA5*v99%ocG7!So=NwE?i%)bLGgL&O!4@- zzpchGy90Z`9Y92LH=-W*Q!IOzg{`|^AohfvHipA!DSwbS4Yc6o`ohnZ6VQ<@nFVc9 zM5o!t;I%{>Rkt$u1+}ain-*ijAv=`VlJ$g&_(%_>IMXZ^aA>DMg8}3 zGrcPyPcmT~ChpECuZ3<&>lJ3j!wA(u^4T(B{#8N|a#d@xZ5`XV);k2f%JP|kiFDWE zN)8gSGzN^yFVTJ*)w$>W5;cli18#wL^)URDAMuJDw^2R;H2`hH8FH2pzjDD z^4GKMDW`1zP)x>>PvPOkZou3{e4(mJb;(AvX9s~CNcV*OEJ%pkLQ%3y*5_LI ztdE4&F+PWisu_1)LQoG5B0f_J(q(t==aq$MP|54Ms z`t1<2MAa^&x(T^`9K9@5YNR;9IQop(vI9|T-ZYFua1JoxP+?2sqVale;&<2v%;-);%fF^o^xhL?0L61f%f<$&cg=*+2~ z=g~rGzcKC_^s*~+wnQGcY5PxoJQH8Gem^kKy5Xg$8F`z=PAxf{8J(r2HAgrgf0Sr3 zZjQX=i-I<|&di4H$cI?xzeT&+{ox5{-xh3}Aoz2CWpZEv(_Cux10%BunOfbQ-r-sz z{LQ9rtXql2@l4TcJndd;jga-}i`Yt=wxZ`)SYqkKdA0K?IRUPeVgr5gxwZ z>T+wEqDSAqRb4-e*GEIvPFK)Rbn6 z7Y*HVcx+eJ4=+8%i1`sG@AERAa+Ixx@%IUJ^e*tzbuFDRg(;kL?(oc!jv2w^#7blh zi57Qv-9K(i<9=2<4@Rl!ad9~y!mI?zk0~DmW}c(C-gGoB3GX%J3R!>5NBD~2&W5^> zDJ$|-^@pa#uLM2xl+_od79UYmg5M$jmPhgO6_0-kj|syr zj#=Tx-7 zk0YM>ljbkO&2-{!)Fsx>aAI>G3rNzRptlq?MN-zdJ#S6zL&YL5D9NI2ZP8?H`=(%H z@%6#1hD)xajBYq&2mCpcn;g=$bDvC~%}Splmx5%KEfCDi?$pHXglyj_ZC8_S`^#)^BqahA&6mebiO_c@HNacm7|mVe1^bg6e0M-zMwE zuZ`lSKADxfJ^wjuaOP4bP{N~IoyL#KFX=c!rV^p!d&}rH+#l?x;MVGs^OWJ`+QBCx zs-Gzmi7Q839pCTWz*3O5f(KK4b^C+Q2sSqd=P>j@S&u1nQ+qtP|-KY1iz9Qyn1oN6^ zhIX&0iAqi_lMog{Z4lx#$-`;vM-52`ph{~koughLO_s%(_T?`sI8wy+Lhmi9qVBc$ zm~=MJG%IcQ(NA_b&8LBW`je?_yR%r+*1!IyaLbgtvED8G%4|)UDdVqYgBwaj6~k%r1&1iO{0v9BO4d>{Ot?;HAadb^L|zrM z7c8L!bMYlkwPrripvE&70682HCN zDB~XXA%oh4K?taeIk~eNo}P*jME(iOwow& zcYqm9oslu1uIp3|TWRxiODvR-OR#I1e%#Z(RS^k=aIy%TC!v`CM$FwVz?OvkObRCe z`97}giw7s*bMJTlv)YAs;i!4t0pnNY9nZ?+CowS}lNk-JM@ustlzE>dl#I1$Xe#rV z@axX5nr_tx7X+{pdW^f6&cfx(ds5bye z65EJ4D4U;-SK#uHB=sBXzp_AVt&WEvm6f8qn2v4Dx?NO&>24?MN-USAF7i9pPwSZ| z`QcW2O!^NrcfP#jN_Ys&nkCcj?=;h_(!`#Q%;r*u$d!R=!4@afZCUcmE(d#!+N$2P z0eua4(09E_lD#N}LdRSrT7FubnJf;i`2pk@z|Vsx*eyCJA4e!cTIV^x)BCil+c@a; z3aZO}u}klH5eZN5OV&5}_`+I5&ovm7ezXp5JMUhf6>6edkf#Neq0IsF>M zC)SDLJe1T>pw_~kLeXchOtCKdCt`u`4;9i^oPYPF%E06(nq0Hc(Na3HZ#p-YBsclv z*mj2z;=D{x$xZUlD#>TstnFP5x-z2#=~GFn5Ty0#XHTt`#I$GfVdZI3{Xo>crO156 z28kjm#3h2CW*3=q(mA$lt$@$DG;G!USGzE4w*TtFBT?8yRJ&upZ>5(`tDRolg|<-@ z@5{1PW_d`)qrR_SB_ya!AQ2LD2R)lh7Nie^XLB<8eSO(|tSW!|^&kP&%J6J=#0t|c>s7{Az=(WvAb^L858V-Vjt70sTazp> zqW%Qv4|JvzrcH1$gd{{*S@<0y9T{I*?qHdA0{F1w1j$xVYy;2&2O<48_wF;M!s2h3B*czN6LN>#$3N zAZ=A82CnQukB#oK@ruc9T~hjU6Asrw{wb~EUvM=0w7?2b$F9bK9^bh8TaVVq=LE(l zPN~dXy6GIqVK-~^OmfP-xYOeow)vWP-qJy^dgs^GdXZrvS3%I2dt3QJb@~M`z5sv3 zHF32ubLm2ezmjx4KVHg>L%e=VDk2hu08{ZfZ(A=H&5KB9s9y{;*Ah%O z=-?X)(gG0eb6K^M1iU58e{AFb5iFU75ppbx{67|e+P%$}kdj+}PptTKjvVZzOHpip z)My>Yi+-edJCpFw>8{0!L@%<53@rr#OD?rKh}G+})=h$Bmvo z&>xzviFvnA)`VAjgO4(yp%N-)+4; zn_uUQQh!aZflu5OcHN ztXOht@f|Lj-}?Gr+&BbUSkB!C8le)Xw>9K!m+RN}Q~d+~*miTxMh-%ogtfcwwfh%}u6%;v=8i+|WW>&o+S9R8 zet|mOt;VpE!F0RC7Eu)yZ8MQaqzm*?xI=E~++n;6Z4D~eI;vjs9tS$8FYp-CNWXfs z_YIf#&Zz2_`|dxB{x*8p%SYn{q7B>(>)!=9lTCg!uJ+H!>DR(Is6kECgpp)^nr&&E zwW$epV}OLi{Ie6_v7*o-k++**gGd%@*&|gSRZ|;Rkl)`{Pg%m{2rF)e=#(g&ub!M; zF~WF#GG)SyY|4y$5K$n5>DpQXLzmP#mJ4H3`GxHJC%*ckK#PgG=TL9F5+q`cG4W`c z_>mu4Zptoo4S5a~fg05_ABc`uA8$Dy=dq_+T+?&tI~L0Y5Afh}PD<;}hVtMx2~_)@ zchIGYxt;@9)Nww{_%vC4Op)!B_&Ml(^$1oy>kx_D30rI+nqc2eB<7Vv?~?Iml5M>H z;%9_sR-YnWM@5LCBM?NF26@iAf|quYx5NekKB}3sXBgq_wOOYCWd){;%eH);h`h}v zj~HR4lz@_Q0++aM-Gw&SttPcP;8 zooSfYNmj0S^mXGq2r?yF0G0`4xo-c$J`IuxWz8no-f*Y4PHy5F?MzRju}DTQl^!?RD2A-nRv#giz?7ASnw?@zPh)YeP#DC5jf8xgkuOkm4vf~dBoKjvg zJ2CzTt?a%-o~oSij6b;rQ_6Z%`D2>>pD&-Rv9TDOS%rfFp)=;p{A{hD((fo_L*bo& zz5vac0jvqgnMMTL2{$8qk{sK={hLfE<4Fp~wh5OC8Wei3sL)OH538VN@rQ!4q8Neh zQ&7nOS~FNR!wey+?}wCX+fZVL1XVDut9%oM=zPEGyc)lU9IMJ43Hw(8#t_Z%Q>XRQ zmyj$t(a5q5bp}z*1MF$4IjW^~w7&l#gk441P)D7Y^+DM(;V95vT{AXU{Jyj)-*n)N zY0>Zh@Ql5(B`Bb8o0$zwG&b{gVe$|0z#U|&!}z#D&1Lm_LM`ygN~1Q#>(M#I;G1Y5 z^1@FdrRVS&&WhNa;+CZGkzk{7--3I7jugTiB6^veET+^!Bj@j(W`gd^NX5`Uj5#r? z#ln!|D&tMDf9gX3obo71VKvuKLlR%vIj0FHU8afB99i`Hs&>vOpz##PA`P0mba6Oo zV~~}&Z)2xhDk;9=DcXhp5?$CUNy6I7)QXrz zJNTt5R~hPQma?+5x|CF!+5>my(g(>^%z`)7&pSH8FFc<7rj^Wr5TwqQ+Sw|a*%t_T z{xQrwM)mNrWP(N+cAIry?0%b4KT|A5(#$1SUVR>f zhcL`N&6G!XLhM7aCl$;cm^SIdP3uRFA}Q5c`8hIybSS80iNw&Xu%3qYjAeA(wr(h+ z=m?Vk3LL$>n=8dqkZO*PBxq)ps>J3VCmWK1hJ!>?kVp_x!5PQ8I7Vm8z@3eikyZ{{ zS8OEX{0J|IP<-Ng`!4tffJ*Z30hYjpQrD;ZrEStueM2?ht;erfJ)~@pN<&Z7+12=V z$|25KlRrW4EbW49?Rg%YI7C6bgV{P(9wdaatwCZeOU~SXjg!<@xzi3bk0KGyhr1g> zE}o-#HT`wz==%dVG*YS0`TaKp$VO=8#tzfxl>4K0Y53#(bd3L@ZDL(74jpY~?4oS>5ZuJ^yui2=!us3YL6PTaiwpzSvF*gQWkLrVjJTw&ox` z1i{{R1d1#lUtB;6dcROMs}PU~Q9I5;q?%`26rOHFBv%AfFy>RGSf6U)LrCP_-$*>>8b!sGt9GEf31H00Q zgTPO&65txY<~?U+$CW1aUxeAf3!T&5xqmq8&1*f;dcsvV431p^CA1tyr-PEB$kw0% zq_^rVZX;w}+l}p^wV}bSl*P!_(+e08^FWwHN+uNU`mzF#L}PmUEHVu}f3=+qU|0e8 z-){=n{Ou2Kj{-nx>IQ2YPn={8+0>C|aHK|-3Jp}$LOhW8j5YaJWkTj%wd55MACm!s zM@1yJt3nu@D4fzz3Pw&rX3NR^QO{4Ji1DI8qTczF#{~@WS*9-iS)T>>=MUq%Tu*X# z9wLv(XD2#T3-WsX^|}aqxiu4SELHb4ZMHP~U+}02#5{=8vr*iPTphy=rX&D$rqc}0 zze$T7lUZf!68!>cl!^mWJV~<&A7IT6!}^)6_K4moJs!eez6V2>=g84D2oQ!2{YAuw z+dp=PNTl4;0_ay1-?MuJ*h-I(ottY8VlzC)nA2B^hTW{w0dH_hwRD?N^(-nlC%N%G zfT|%gJj^{$<$0SVyuHKTKAj-Nrgiemm7{$+Zp)k7cDpT|NU^KhU zSMio5UHl6U4My89V#lC63?+}Ba-3P?S{$au0$Ni!14_F;^J>G69ED>HlJfFFyhRIh z!(2k>E(pYgj!99I4?180$RNWxc)(-z9;g%Kvhb(P?sv=;oU_voWh3X8+2lPQTy1T|8|M zEk&lm&(p$DJV^EVtFkjV<_42tSaHc98gTF-`LpkeuE7!iEY#@vvfblM--NLf5rW{z zy!^m5Etb~kg%&ha<{0nO+5?qK4DX$LT|k!Mu1XRz9|sAZ_KiF3bGew$$%GLZjcci} z@hw$;>Guw05IIxij%Tw_JGe!ESz?7};Yj8@BU$EmT*4r9{`@!H#)8ep#j_^A6TgaU z%_*JK$~v{7VlqNiu09kWD+YL!zj>x=YmwEsBRF;22b~^59MEhJVV?54L zajxk+@T&k57SAb{f@?a`H>iacx?Vd-#wHMBXnj|(y%$D<^E=RQhX{NE!YzIvSYm(j zb*{1sgkWZh<2ji~4%JS~hBD0eB&WT25%dT--cqDu?iLHFQ=C@Oi*{U`I)9e_x*fP? zd&+7gX~sEi86ZNaZk)9xh+gZ&HEr~_5xT%PYsvY6gTxnE=kSeTO|PcIYZ~0PL>>~Z zzjlMabZ_U5Rk`&<&U!kw+!J6T6dyiquCk#E{9s);q*#hHGWtPdWmtb*$nt{MQWQt9 z$E_vuvnakd=Fg6xQlJ0Ef(5`MaPJWfwq=t0BbgE}JJNJxW5mmio0vmX8Gyk?7A#9R z)r3UBvmkQ7HBEToJfZu^x2Zf+d1U}%{f8E63LNK+W@1x;@vBwUC&%Cbcv)~W*1Ib$ z-e^zEl{FiEiK~|dc7-(?KF*@T@g`J-pk-SS(HhMPYMo`qF*njRIOuvi)km_3tvzqk z#v!*pOa6USeC6(PM^GAcvA$WD)IHV*x z5cC9Y?5isc_={y(JTtgk@i)o{zZ(5%c@z$0v{eQxxr_4co8nev-F10E*u&V?OKfZr&~CpisC zNE`Hb$>cnDB=%u%{q#Pi``PZFW_4MNBe!d{b0|_5U)3#QwXwa_jUA3xGp?9C&skRL z?fC@Gvjfs%S;zH1*}wqT^J4kt33$`b%jW-(sR`v!xK0n79$wh5#u8{l@Tv2V5LVNd zrb6#i`7&j9kAKsZ2B2YoApW3Vo`2FmCIan~xFcLiLlUG7!9X@L*$%=rJAf5_zIjjx zaXQhGb2?t>)QRMWS)*>FdM2D1eDon>aL*r1jZWt!^5Vp3Old%tDTFb1+^%^?2xO)5 zUcZhivFRb}rDLvS>8!JA6$_eD>(cn0bFfQ*{bz!sQPGEAmv+>qoYOr4L)jitkOaZ2 zw}H|}OUamz;%l+^?qGVLTI63l(~D8{svZvS^o!k@AlC@)M`)Ee62BICmo!%@s9E_a z(y{w+(|e8$iXR5fX~Mb7=SyCw>#T;`dCm_UZ8KeUQ7n<%H{+f!lQx{0oaV2lr-va- z_#41&EebSE=mmA>aF4TZ!Xc3s3gW1w-?A^i1MUd9eZn9KXewMPB3o$9#&PWTnIP7; z1(g`QA^kI{@{4E6^zmx@Gc#(ehgJ7Pap2DZjbzUBwLb>d)26&9R~tEKGy$~35Q}r!nw+Gs z$7y*Ue?~rYA09XfiX@)n?epj7;}Ijf;M+O9kT!We3UHbk<{5C_cp$0{={$K7;eS}E zm@JF!^w{2oam&akY3Xn_<24_i!$@fYM`9N_(w7-T7i~Txhb(3@#MY%=}7^nNaX)e8y(kW3GzJi zAPR_0SpSpqluu3Dj0)=bx5eqz*U~7?XuN-EmSo_?UcfHhHd0H#+w~VZ< zpTN#V0`1XLITz-%!|G0^(!|T44~`XpPB+Orm@~ZXI5gth5?_ogM>n4;GwI3oLfWdH zO%B{d8ictLU|N$w@wQhG7lZl({*p$QT%8C~BLFL&5(M}3=a=wctAtgcIqOfT8x*pD zwTLj&aTYo>TknD1;G|O-U6KX?Wbl$M3n?2PWjAR)dYAP#6WMHto`U&m}{Ddf07+?KDV&b6{-8pg+t9DttzUg6^ptgZn^d zV^o`NF3hju1KDdx7@bU6TT6I14e_BE!Nn~^)~SIPDCyEY z!E(Zn?iWUL+c>N~Ap2atH8DQNl-LtN*I5M&jJ`;2amk^E%wTi)ZcAQ<+|zMu^~PiF zjKO*W8Dt!ge|_Z#N{wZ%wURfvp?q~;%cLj_eWJ!x<87$W?VL$m+JQ>(t^+M6^(6N2OC0|A7FP6uS641>)(h~6+Ix+( zXf37}AFA^sP2WTpMJl3oo!UYjt_$A4@f%O!+oG#|uK1G82IyQKXilTHROPvpv9Vsg zvJZ9nWHL4u%MjOBJ8jKAsZDfYJg{yg(OFJ#c)l7h5ZhCB{Rp#hTXrDZap?IeW*77A z>V9~zV9mv({u=p^dqP-W-o2L8jt(|`;fo~q!~v61^}Zmu262^uYM;gCT`NPziRu~n z^6f3yRlQZ4udiSq6>x?9Os(o)`;+(sRacplHO2-MgyFxK4o!xP<+2(sC>i*96)Cb8 zp^sM3Q9qQ!8L;hlE4!5DKL_NVp0s|ra>Mk~@r+&+7<%Ko<+l8~j~r4wDx0GP&e10THh zs#^HBAJuN@-0GC zraWsj)q5~R&*z6RJ+2uBcN*B<_iI+JSN}l(s;)9(m7lUd%1;Lt;O_t>>=In$Q!SGQ zaejK7Et5$*K|U<@xyTV%0{-$uKe?u1Bo8|-iWnpAcW}BiR)$MX z_ghm?$9VVD)T?IJj{ZYk67498lb@4>07X2Txx`Q$nMnv29!-^ry@@|+!rF;tMyhv5 z;H8=lFFNPcBB^3{+x$+mKGDBA>dZJI?uYA7sr6-h+s~`3@F+VHO`r<=B<`+BE2N!d zW`%wlfQJePko!l!Lsh*XDTEqd03z&4_!*k*UsBi=Eya3NI|u~W6&{D z3nOfRwyG9CixV5QU6|#X%|GKOIkS&e%qpGKm}$)7tOZdRxqeYQkVzXpnbaC|qHp|0 z2ud<6ipVphK>N~H95-U)+t(txbtfcJ7Vf$I@p#z%J_SM?d^|s;FVT1dO9IT61-*3- zeC+(!)Zt;jw@P@oHY$N-Q~v`3fc*(iZnwH_%p7*Yld5-pOY6um&(hGc*6dxE4>Wk3 z(^wmaf}uY3dgFt!_WOd^q~9Ae*?f+k@s@C9kPsL-G%TFmp^(e>;)|o8TtQnCtv*OO z3$xs|(h8{(V~-Q@2D?mFZZao3Lo~nWLfNvrfFeF1?enxnxJ5~5KqP$`e5wP!jCoDO zg5r*HGTm1zDo{{C6YJMHtG#8kRY3Zf0>J}q)G-CV2ar{Ly@76b8b|bGlSlgyxWRH)$tJ4mR@@z+pMa^WgaK$!1|Ff$y<4r*(flTeh(P{sy;pe`kb-dT!O8PnbpGE97_5To3B+mH@VL!3feyP1XJ?reacNr zIqoOnYphGKn^$M@tIP6fTnksJvN9yodb@%tLCm`NDAFy}pp>kk3JT~1$E;wIHF@+s za_kvWvF$!n$OCvvFz4X7od>zZznE9^k?p{Vjih^&h&dy~)ZfT`>rb)*!)EN#|R zNHiURPg644`((Fp=e-#GoeHCIt0!f6M(ncNc}7BK99pb9tbbL`EXlO2+uGQ8UDd{L zHZ+Sc$;Zu)Wj+a$-mHwL5SCFT^G&c+ zz{u)3h5V>>|GCt+P2_bSIqW|q;pBBT4-APy@M|ZS9?(z!+mSY^RYh@_rkDxtmiq3V zPq#+2s0%#^WxO<+kr&v*L;Th-Qud8*#;2dd@|DB~l!VNektI49r-BVE4P*m>bt9V! zBB~tH4Pt^~Dhg5!Lo_Fzw;bJ0UpScoyeHiBlcxvb?q|03RrYW<#Z2d^++8U~o zarYe_R?Jz#P+}r_FoJQnR$ewIV5`WN6- zfjL6IUhYLwMr1X6Vkf#SqU@Qfl2>d>$vIFKDpNO_4>ZrDv+X3DbG~@`>pr#F{MQAE zz-Ej1e@#ociqU9B1b>V0WB;WEn4OB#P38m$WA!}yZnaqgx}}e~_+h40?sOrwTe9CD zKDExwVLlVMR(x@Gu%kpki1Mc*Hwdz5Q4k=}R$zkfXAKrNymoHnA)WGYW47KBXS%4P z_)1dScomk1t0;96Rs}K~Var(fB)k11Fqm)xl~85gNw-wbLYURHhjZ+YnUg%7uYLNx zE&zS8t-g#iwAA&gFiXm|!%Q@?Qx`MMC5#g*a~J_HptPPiPRGnEY-qks^9_=}P~Bdn zmJy#ERpTV6-((PVlk?Q9Mh-|$JqM)MJ0B@Mt;%$b8vdE|N8;S zb5wgv5MN>z?uQa$)D+ZEbVrlNr0S|R+kA&vR+LZL-!{MH--B(t3Bl_TM?>K|D-max{0c5_$L; z)Nu7gZ|7l-PbYJe(6lpZkh<`V%wOu4AH?LuCC5$S)aJon6(b`F0d!=iT%xqv3yycw zrOnz8+fUab)$6M!ClMdHJnQiE0#6{@AA>%jRy>}_TVEu2q{2QC) zeb=eKyBK!KHhvAyK`7YCqs#1XtE%l?$(lVNkBjl!M`Sk*QjnG!;uqOgk`nc=(f53A zE4)>ky_;t96HeQ-Z*F|rwXM^u$u)%uJ}mx&^nRszJ=(n^Xeu?!n$d@ji13wXJ0{Xztsn0z{+tJAGt&(og+LsD5h7Ph4S z)DLpVn%iC)3RZJz(x9rb=(0$i&xc`B>kwgG&*Y+6t#X{qB4K1_SGR zF>oA5ghl0r&*+~D!^XeNf#>VMHK!byIXF1g^LO;SfIU>S->s^>UqpP{bUz*7JrG`v}_ks?cBII)-{8~o6@`*+tSL3>aqdfwotamuuVv3NrfmCva+ z&EI{ST^F+HHgz?l+uB*G{)r&q%iwqmVxINE0jk`$>^vbPt+0wuvZ?kPZ-w)19p{fo zwGE_>S@($Il?nQNoS49AEB`&n1=W6!!gU2g;TS>r*aN0d9AnN8b_yk|*_+OMcfWM- z3dLs`Jd5|SEJU@NHI;G-T237asQy@}Ez_!(M25KMvN9jF+KY1T( z4@UhA)yR<|fVJd`lZXkF5-BjP5q?d`G++rS{KtN=hODDnBKlscBbb~fx;s~`uVFet z2e+?MuExyzcW_og7GCPa$`5jJ%I6*vcN~0Y|DB@TV|5V)^gamc$o{>0uDfimg0blW z>L!PA9Eb|Nx;;)pRfOeiQuVaqVgINZ?@U0ZqJLI zzW*Dx-FZih!E$_4!*?9Fd;i0G+v4d$-^nhpwos$D;iS+^6aDI3iP+Ug+x=?_VlG-_yhn65-7*VxCmA}nfL zg?6Jt4c5$GC8)f@R({-WSLz_VQNyCdw)v#^n>L?ZJ7q6(|D;O)p0J^25>eX|w1tqe z2i;Mz%4g~akny_P2Eu_suwJBg*v=)0vsXiw)!%Nq-c}f%WCr>EfPZ*}dfq1RnA>d)S6s^ixA{i=q=s)*i6PY2$iJSKg|v#dS_WX3PV?Ff`m zc2N7vWd3jy;0B@04jKQttL&DwPqGl{n5ev))&BG(#z7;$09!-m zO3v{Z$K><&QXJl0)rrq~g9HE<3HtI3HEGAs0shxiE(-FX$*tAA6q7FUcnTv}e$5qB zw$4Z<1>-7iM*6X3+Pvp^P6lz$Z*VqHkv)5;USiL#DJ>2c`vCXtJ1n>baii%vGwi7Z zjt!^DFLB?9iiy@*e`NXkA=h^?vF`e|GTpg*Zf%ve6p6)t^PTs-y$6t9YWMM;zUQ`L zXwxsyfYRjFy8(Df$~G^uT+qG3x=j_NXW8n)04&?8#qV)r zd-`^FVl4C@Jk0C;fk%oOkQ=wnCHZIcF++LiePZi-u4z04oI`;GWYG52QqjNkpjxWF z4HHhp4^uXW-)qJrXblh3S@# zh*nj`MU?L7Dv<;8v(#-?H+o>P5ueXQ369}!8M!HTS`)-~H&!{HQ8@pHP((?lex253 zDeB)(E{k0jR_ZrUQUr`RKirG91-lpd*qGLTW<@S{)cppsJx1`Dmg-c(++O-Dyn90) zCG|Aa&#XKcNnO^#CS)9~{mV5{sR~@JP95doDTB>EH%w zy^!h@4#uKm_V=`iLR;i~c{;O{K1_`PE~Pqr`$}~fzNR>Ic~e3M_Od&)E-E5Bw2uid-Vv`M}^^^Qvt|I1*Wk{KTZDU~UaIdzOH;ND=@O4S1f^Kg2I zF|s|};_eH%Nmj*gPppYzse79c*k0cy$sp`jEA}Xg|7=R`M7?|z2mKwu@Gf6_uFn+m z&jTAgnQo)b15NFAsnG6bJXfS1?!2WoQ1!a^zSoDTwQ2UufW_nD=^y+Wh3`v!CVL+z z9@ky)cRvwMIMIIOz(qxE$*?*e8;&f>i>0uwT_9t~!$CO_EaD>`B@A69K77lj4mtng z=UxSKZf>!tzi2;i>O#En?ZIF0Ywy_(lkBumiuS%s8YpS;_9tm5^SW*6)hZ4 zE2}ybta$sZ*VtOn;3wbwctMJXLQu+?yBfrK$Ymo{5DggGT!qzikv059}NQ*7UYy!|69MA#kTc`D2ygEK$~{^pq%>pSukPCrTD z1>j~hwM;~@j)R8At*OkHaJ&*yca#-~O<#IUo*NN*Y%@wC2=TJ?V{D1o4^R1t3C{(j zp4(%|(7%=aG&p|hd&EL-W}F{{^=Yyb<5Uv8F>|llKl^6#!aIXVop%S;I)-0Yz+yAc zJfcf7I9qeIMF631iv=rm;*FRbo$Yh$CtNha1Opk!4(f7xnu_o5u$AkjjGczW;03wJ z;q5Z-R(F^w-=feeHLqUdCX*9A+t|pp+cWZ1V)a(_QwCm^Pu;{_j)foM5~)#~wa|Ha zmzVh{*F_gs%5ymxv54h4-Vu>M!>Y)_6r7fo{e=6&$joK*@s|wZku0ys2JeY?5OG$#il$)86`usF8Uh-#QE6)QEK znOzZw@Cg=I76u%z)Yo)KV8dh8;q5%C3OnrgI>tE08yA^POr^I$=Z^iz;`D*4kA=JY zD8g=Kz;%yhkO1F#W5bpSZua8J{G*#LJIP#e;#*ZCa*ewM?>7)Pf-)_JBef5g+O)_k zAj^pEH@)9_c}3PQSZ?H9$~*536NkV>E%r56rQNhJkueRM)P84EMdX7UjF2mS@w7F) z_d0mLRr?m#86)Mh`QOtMs0BFn$&=f^3h#g=FyzWDp)?#%7GuKjhl7KY(6Usb={_P# zkj`)FIY_kKCwj8O=06myF1 zNDac+xXJFxQLIq~?{&f-Ij&4D2QoJHb*#isSA~hlo0)?h-Ir3-6uzd<7 z@6XWy64E}m(T(8No{U!2li_Qlm8zd*3nieh?ETjysl{o9ZTYwXgg!hK#tWS(-m~JC zBT3+$#l%I#);8BQ>gDp!nDvtoPlAM+&DV-ljR2?}g+go=IT>Tl(jsQBO2r?a+eCrV zyFv$RFEqd-f%)OUW^#16%|66&CB#_^&;YFEdQ9ljb^ZTa?Zg3iWZ*diaCtpIDggr- z4?8Y3qdJWB=^Wz3!R|4{u~|!A{1=VBU^k|BCxr)8mP;&0f#4I6H$*;CFKK%z`p)Qt za+bC^SWMrK`#516_IL8@d@7+Lt-63y@nBS+EjEe;npJ-y>EVOO2UL$7H>z2bm^ecd z#(XJ3cgMB4XF3MeL_Ck>0NS*hZYA$i^S+LxzC zg+HWAa#ALWfb8FSb2o$}?in7(3lW%U@r0g|8&730$dDgLX?x+P1=)+)l#W=fG->u) z*UXJ_ypl?ZFtb#GqtrhgK`oehx=ib*jo-~w2)ifXnmrvvz}uu2c|($a8FWyc()Uy~ z7f6w+`5X@pC_^iw!cWjKTx+D!u_DEOsnC`3zd+_AKvfVxl`CB0x=)#&IpPdu@K<7?d|%}Uui0w}NjyaKz&qLeM0PD^KP z$yT-jS>j9Fe1#1#DOQY(Gz5E=PIIquP&-yh2@Th!fx279;5N*v0zX-#&o9$2iec$KH?pbWnOqZDN|4^_sZ}6_amr}gI1cF{rrke=&KS8$%@6n)8Oz`#&$wNGRPkqDqT? z8X}#3tt8BpLcmoS(4*~yC-+l#iZF7A25N56wf)$dF5QZRh3#_ z)V^jWy~}vxGGw9yfvJS1nd#|YDl$vXE^o+FF~@vXVU4L3P~Ms(U!rdy-zGh4I)s9E z$I$1pY+K-T3V~ihK0nr;pe;U_e0|THPZ0z0*XjN%iF)SP---quYjZ5GIK81lOSHWJ z=u*AU_I+I59k!Ve>4L$`G}uw)`N|c;97MrpK7Ao^h(SGW*+TUrrU)#eM(VmS?3)M; z@u|zLh7LQ(?{XA`dFqpTA^l+tW8bW3KA58k)O7R`tyTg*@$^Fk4UH|`1Ae?p%&f!A zlO-p%CHS9S%vI$E^MC4n;3S@rR|gI|vewKsG7km!V*+dg5_Px&K&(SMd!S1iwok-NRv@RSUzwVYkDb zV>e`mw^a;ADGO*NE4wjjnc+5$!9xuSmme&$MB}I5wrCk9B;s?Q99VBfNN|x|@6yRW z0YqCgB*&T9ZJ?lLt*xkOSXvI4>d~Wc;}4GbW(c25+J=&hU&EJ;e!n^E)=`;$qhfWW zuRFGIQ&R~n;}VM7IpyEtppavUF?nETzNK!~Q#LO%#l7R@&?kFwm_#CGudZ9vUSvNe zJervCcN4u0)BS`j1~K!dCV5T9ybD8PETnj|^Q5hTwiz(&c~7isOKW!7r%{hPJJ=Jz zH|hKB6^;02cG;vcUIo>ArpXh}|9!UqZU*`|E}p~S3VcbJZwKDPufy*!)0lx}*8*U% z$LbpIzZTmrs9QYjiYN-bcEgM>xKlQSX%Utk)Ad;ujn15omCW zRUTFs8fZtih(PbQ5e>5C{LR}wU2O0TTB4KzUrLIghTEkbY_vQej0C94*0K=B9~cnV zVDeQ#U<6whF=L`=8zgF2gd_WQ+QY*eaN(+V{OCH1KAra&o(#mMS2kgAP7|0>;&t}) zsSO6@FR8ZFwWa^HhRpx#kSB;CFH1r&c`W^$wgnS&sQTDk9u|k+{v;zrSCB$)8Tfi9 z6tL!!GrKM)@e0rMp}O6&P-J*c;>EDVm!lPD|3x(H;0)q+_}S;!W91Wf_y33H0FYMG zUBKd-_P*tTs9F$-GEN-d6PgV&*5{Bpj~@|DTWL?RE;ZsU%Gk0OE|S^m(+K(iGQc{v}TA5_f|f2fo0Ca5|Lqvh_V^SXRimwE7YSGbS;4{1)EUL`G8ZqS(E)(-3U<8uW4lLx z+V8O34!Jh+8Wy}LXKk0=$9(!n=0+%PQ=59QC2L@=Lu3~o=Hp+o%YFPqSH$cO?c6*1 z?zK%rPSa1=_ekX&T^_>fqtI&biD{wL*3-n`;Tj$0Guxq9*!+PkVyp#lQ<)Q%bNs79 zRW&?W4H?#-$^q30(`sl>!3j?+6BN)^P`b@W2(@Auz3DUZPcu|mm-fg3W#RE()P|T{ z%cz`hy~4E6e^X)!1|)}ekWBT3(YGdmV!uvP$qLhexyD12Uo+I~|L#pca zdq=jaP0ScyzIJ4ZmL_IK!svffJx-)RJ;G0^vC?SS$#tzNdxm~1!R^9?I zO&7ao)-SXe+^(l)#1Qc1x{w=^frC2enjIwxGh5XJ-~Oz|Q7;4X{aWY-B@7A-@TIXa zO$~C=Aa! z4qw5EX25d^4)X2bCStXdDfD}|%Q(8zp4WRLPmH+wtga{D8%z{o8qrD~%gv>>ypo=# z$dy0*ozGu+J3AQ}5pcvSrv#v` znM6yGj*q!~UpYtV$O*E*WS6+*^zUVLB%6EsK8;4wE;`orBLtgsU-P4)t$w6MGYqeE zB*TY|JY4;NxEOvIh<-KzG7&k+&gmwri^EZrSIPVpJ;oI`}DP;DHXt14uDg;ku-0RN+S`IsKH+3az)#bY5$Y%dD>9V4V0@4c{YpuznQ)_tuT+h z&aQ#}?}{4e__3GmM48fNS-Wl~%J5gIMj8H`v|Vj#e`s&B2T)C5$1^;l#?Cq!T;!}Z-?+iH1KM?8k%s(G`anuMgo2o%vSu8ZbebU*X1twE7D8ceme zyC)RyAlZ?83dbH!->Md?gX4E#QhDG*t({as!4t%Kha8+P zJK=4Zd9M6Eul+*afA~UGbqmfyw=F?_JB~JBy+r%s9EiGL-t2V&!lyMO)29z~o)JO( zh4)-wdY!*hmlfO}RVp1xE>N}i9Q@KY=7U}= z83z#qQLKx5&QT@oIL~=mqwE1|6eCN1l~**7*D0CN3a5A!T}>$Oaf|S33bb-3tYHff zn(h5|h0{#AM_xx%Zg#|s?WD2EB_Wn1EpDrlGa_`tCVUg_mzFcpW8u<(18%uj#-~kS zygQ|U(xq3d79C9)_nlc4fbi9g7%FhYHIkIv(@QW9XaJ|pk6?Jb_Voc?q?E>jcYmJF zOj&{LmkWK|W-wp}mQJ)qUPY^(?fA41P;gFX@ti7mxp(%U(hj)m`~0bRPsDr%n=8B_ z_%7d5TUimCi%<@x;qZZaUy_h85=eE>-Dkvu4)A-FQei^ua0%Gc`2@03Z7dB<3R<$XrFJTT#95rFy1&iQb;0_@g;sO<$;PiymdG&Br0Y&R?$h(zjhc$W zy2F%!Z+!gqXjr12&l7Y@@*^%$Pjx~D;mkS|TaFjLJ@vQS@%?))Gn23V_O~%nOdZXxArTaGX z7!(xL@V-Q+=%6z=-o)jj;y;sfPIH{^v57pv&@LJ-3>BM25a8%sWuwCzEHaU-Vg#0X zbrA}#FH7qg<4sB3u-OZ7yq6Y2$^TT2;S#vGl_@+k#}A-kvti7m8a_tIQ&ZRufX`~* z<@Py=0M=A+0lDS%4A^&_1Bd3fiAAl;s{;ipWyT+@;}4jpU_7mr45kOvnkH{n6^~pue9+*)a8t2Awr+i zyAaX-nUV~KY~Trc)4s|p7^6p+e$oy3OSsml@b{Yj;u7;Zsvz;%fcWyscxhWgyCDdO{j5LVWI!GvAAOmk)kPWteV2#)-1vLc4zP0zm0$QQ(^j`~-2pB6w~KL* zg^aCNPUpWYK$ZDm&_jk{sR-#P$`5q+Jw^)2E@mT@QpR($1fhtPsls1)Wpw=`kXV6N z*=gg@<4@CD@nEgsvBoT;A*{m+T&4tEZ4tDSGpJ&KIbk_R9lnvthHh8h&^Pugbih4o zQfuB{8R$!mIlqVR_M&0A)VTgKfT=-jb8`uw0#>Y>!f=*{dR^_9PkilzK3EoLgOO!l z#8I!mn9?fWq(ozqd_NY+m1kr+KSVpL`F*y(mpoD5wEUcIfHl*~w*i{Tlr<|o%scJR zW6C{UE3=SOAcQvvbS-tx zc=6Y%1iI3IcpC*FCs)2AuOlCSXf;mpbWH!Mt89ZGn#;xJgqg{|6iFYF=Xh~X$x!^W zJ^79#rk>W$PR&~yUBnuZ7=>^AiUR5yd+*%(SnqS4pjQ`pqWPNX`$N+na}(H~u`~`8 zFL4>S68>tdc~9;=%xdg`O0P4{>&Ji!fC!o~G-d*;@9{$2Tm~n@p)SgC2z-!S1i0r= z1P*ilE(Gk2?+<@ohVUu&*=pGr0G~|M{?rzhAV+K70a}y>8%&{X|L$4@PAnqowI|95 zZjZ0GIAu$sU-vfaj(Ol=4_kN&c~KqOO@*lAsd7vs2NfDg=f4z<_DYHh4nz=o9@FphxrnKTMrtbevJ&^<%SXJaL-FjWMyU z#jUs!@isd_Nk; z4M$%Bdu8>CUB9hZ>@Ep9kKuaMy*SF!i|y0~5yqI=?uAaw{)1DUzL)%}bf%B&o6bP; zR9!$l;2rBVBW@?b?J(IjTlx*LX%qf-#@H9SD*h+xvE;E1(6 zWRxh*fP&u$Vid9ouvL%r;5BLr@ZYI+G;k)22tuVEv0pZaJmN$)D{qzQ;KtJ_$)ELP zYFahW`xu?ao20RJY&R(D6C74Y^I~=$DXJOd<@@&aOgTy>q~LANKKQ_GMuMNsDXnBH z2VTy^@@K(ZsPQ8m3%mS`{w-pzaAlL2Uxcc`}qXw_d0Bl%Ll9 z2(BO8S`P$|I^?sd&a@>$OAUw;kZA{|nzNsnt21YYg0Vwsu=7+ z-3Rj=xK_S7BmyP{>#y%lW!QdF507iy^Ufk9-ZfU!weU6CcL?;Py{OhoWo?V6jJO`8 zYwHQN9TV3NlS>2Vh}NdpGFN>2F%Of8-0)>rX9bImM@_JUSDP1N0RzjwkBt=hp2HulZVZb^t+;;u9dk-e3(i$j-E_wky87Bjoypl)tNvp6i4jv@%GDy8+?m*jBgLWs?%&QMg}b9bxvdt@LRI>c>iHC9TRVZ$cFO0_O@O) zoT{AzKd`}1tI1qx4nb?9V@^ILl`(}sk+H-f@60qElYR@4&sui0J0C2e(A(YB-RhM8 zV#ucB5SW{_(=y{7bCAWGfE5-Z^StP<9Y1Ay(4*QBX6CT1c;oNdb;6ql8lszf(a3Si zO*rtLL^mCjbCns% z%#vm8c@njJzTjT@djfpaz$b_28HTmzcuB@hw$I57|5jfqADN^tt z&gI~FKPiX?cOH`P5}8c0^S&kc_DSsSzSn4HgR1_x#?OG(F?(1@9RjZsw~tWWC`nfU z(x>;)SzYm?OZ7*_lNS)D%@X^)Y)<)(xtV< z&zhi{3LVIlgNRcQZO^A8n&L~MyMrr<2E5TI<@FRpkhU~2T6GK^h6uaNHGxejCdC$q zK6an3-_WiW%xT!op&5{LPoTmW-)5O+;&sFNG8o5=TWwrbWVEkfO8cr2xa>xWG$Ard zO7{n-WVN&fEs25wrcRO5!!e<8q^N_ba_Gv4n0s!LEgJ=jZj7>P>M5Lxbzt<3%s1+@ zI&%8f+IB@`{$OA5q>{9Oe`Q~A#%F0;*lQ?P|7UH};^r&V+7Xi+zfHA+OKhyM#<65h z6-j4@>HKvU{LHYoU9*k*3*0VM$Agth9?Oa`kAXx3@#k1Pd_=iLJTZsH zQx@!Bxh4!l;qPHIeigrIyDmu#=9g&t4j=(aiL@#dLjB^rl9s{$sBcR)^&q<7uCCEyI+9P{c(C5NSSUv3l%;W~7nC84Ld z=X1eiLXR--R4A%)u+nq}rFBE+2h?sw^s99(d%p=U3OUrIs(5fgP3F&r)%<&aiiD@_ z-?f3@=}MR&>;~IvT+(rq@HX89qC7%DkJ7H#a^0)hqv!&1*7_e2I7tnR+%TwSN1a85 z&J%YTtQ?K5{Woshfka_`170;>LjQ&azmgN9a5>)NMN!!4_W^I#lCO7#kTs^iy%Waq z9Ijp_jO2TG#*!BehfjK-Y-F{5&55GmhktRw=EXkT4(jBr{-u3!{}*B(yXSr7Skv|g zN>y6TlzNYj#iC;-oHB_K|)~U&$uf_3v1Xl&WvJ({76+885<2x$MZSEU1?UIdz>?tV(hQ^#FTs@QN z*9nvP_HgP=NM~BAqNBnzl5ZpC6a?Gp%1eQa*ui2Sr;E>mv$y`bs{-| zNLMzg>+r*bH1I@^K^I{gZujdVMK3~C2Yy}RI#5%#S>Zsgsc*fWIkgYtT;*oYP~l0= znt&O%Z%qyAmlUh7lnIXJLR)Ce5+TZ|qJOoPbD5Gi1uD)S=yh^+Itx!oDDL@2Hzxd_ zup?m$Zw!)1ucJpwW^eZ>+7lIXSyT}gI`yg0nyxEaz~$P`rCXgg?5>mRF4hOiJ2c)tqD%Qe703+r)~xr)Exs!ut(~DGio(` zjJFT~mLPe4%ap_3HRXoIIETc%?0V9{8EO(uaPrpZkk4l)yK;BH3km(y)Wi_jF&e{RSh{8oEl7bYQT+PM*Oc; zT*PUkt-3EeM4~@oy1omBZ#yZ5HWvIYK5b-cKeT4zrcnTH49_3o)XO7iL%-WO@KznN zAv#^I&4|Vx0YHQc4&aJ;xv^4vKBz$f^4UALa>x8;M@|LVupg3D?bg7krkt)u{AG?A zj<7Q%m$WDzSzUD9D;;}s!Lbt>#_t|jjinS-Dyir>&`mDYc3C9P=c{xxti^+6BdH5G z;3Y%z$2)XiC(?9fOG9jI|4rV>A}av`TNB>Y8JoGJ?dYssARv$q$m2o4yE%Rx6u(F@ z{?)1z+G^R6k;upEYM2)s9@s>-Ot1mtGz!=7XAfSh>SOP4Tm!Xyhu1ugw00z9s<2!9 z&9Rlo0GN2Y`x7;Y+E3q{y78~oZ*vcbs%zZzb7I$=BEEZsi@$i;W}pMkGPXYZmN4>W z-U=!VNUge9pSWib-_KNGk5XvedF8ob?&A5CRwg0)ycgi{;F8RSN$m*|5qst_UmcMk zZnQPBZM#uxeD6c(`|Hq3V9mioIo@#1!AiJ-_!AAGMWr@Q?2L6ck=6nR-`*f=T48r( z?0VMm5zt)eN@}E4sykdI_))q3SKz5JxE8h&+d{Y~)tT4OpF(LuGdUMaH&~UN2`2VT zQxfw$(JRMH#g16G_7gBuNzJElCX#kiXiRHMCI6i{geiKm!cF>yO!&&YJ`3%!Ng%b% z@ZX@QfkzD~EAgMow^K;(F#qYQNivGHj`#~cYdL1?Oj0pLsls@c!8)snxEclM&)UdH zzNEs5iZ`&MpAtv@BW|!YiSiQ5jK_%uJGP{t9RZdQ<^f@6Y_iI<>>wZXcIvs-LNC~_@`9zN#EY&(~>0USnz7Hwi- zVZ<UclLs~$)Y8dqFk0X{LejNZh_WnUMv%0Z~`5~a$Hqas#c>u(6%E9hd9R@wU zQG1p?I>ji3O2?wAd(J%nieH|c#__~RWJYkBSNcYgYe0(+BcfbMdTBl~KbtM~o4YX& ze{JS~nq~o0nJ}S$9KwqZN^Y5rCsYKdSj=J>F09Tbu^CP07i)M<5&!qMTk9Vq;SmJr zD#{$kE))}%MSOOd`(Kb(M5Jwh>ev;&Z~#4#&)aB zQQZ)ZuM{1!QZ-O-vmAe9P*K}l9a;r`igGV?_Is!LVoBw=o42a6jK(Spy+Qoj&c(e_ ze_`!M>{pTl*!kY{ZxMP!hZFX`>pvj*<#dw)I`j2@u%#Yb5}>SerAOLKV=K2lxLbd= zT{nAcO@j9q^%(PPfsABr`|jf%|0gyV{%LIv@Jf>6!9dXc)WhWi#X#Vg7MRNc(Ec$8 zV*f-9m@Qndd50@#smMau@mke%@u%>iA%`g+muW1^r-hH|aMr>}mrW44v!}t!Acw~! zT`sPBH6@@jMjCY-BqHu3oDa;dS7C=cuj-5OwI=%)N2`msUyOO%_dGiilWwv@QT zE*wgQB(cJ%p92K037l@9KGFLTC}9PE(MfP#ZD~?6db=)LwzfAeo|h^TUNAm7Z{q|2 z>NZq5Ds>hXk0g&@)$Yz(ZsMGFifk4fuBmEF?fr za&kP9xXm7HrT5WzYMm$Huye*Nx#2x``*RRz-j-mE7zpN74*1HTSo}%P$c8kg?;{F` zrFf{Ide<8A0_r9y2SUazQ$?IyhaV5~t^SNQ)_z8la53%*j>K*TJ{oYXytnxUTspfj z>i>!C#+(9P_EUuZMiw_0(HWRKb5<<9{B{?i*V(G&;QRuteRv0-NYGYka((+GL4JlK zq0Uk7nuABz{S%?4(5EaA5+=gmU&hI%0?TN7xhZwl8seoIL>KjTo47+FOTiEpe@}8) z49o<#rj5ys`y(th-Y-;w$SY~{`ylPXj^ve<-@we^|_2$%!&D8`yn8ggrpDr1IVHA&U zHFNwMZbjzTVuB(xOdPKk6I5>)+7zDB=m*-kfiWBgbEEz^(|W3BkYkSF>R9~!Zxd>> zN^4T2IQ@^DU~l|cf}Krw$kT@lCj*Q|JU zqV{Ybud2^BnZb5I>#Fw%AxXz_i#)fFmfJ~v$JCQiFVhkLb{;VAg$c()q@?#&6#HQ& zYtcfHeb8^>Z$mbv)>yT0_a~fuDE~AX&$Hl@zLP9*kswr8)wg{->{uSK{%IUr7fbT5 z>ZaD8~p;1(TB_!YyMg#W~k24Q=38ql6mF#Tz zydlfjwVA>L+&K~h3$*3x_nLF?S=d7Du|C7d`Y_7-Ms=b(!5J(>I+cGuEs1Nm_O9I& zulk?5A86ESX|J#87I*_(^ZuDrg-5*NV&>o9)u{QhoF0l(ABy>1-gOj^AQy=olWDHf zxe#8)+h2l&And4hg$t5FLbVa?apb<80DMQJsd1(qqe4nXJfP0bQsBz zyAM6_%mc`+tDWufn`E2u4S%d|nY;KT8y9IiaGM{0(lJ-^Y#=98K7%gXD)ffR>ja#z zV?l72SDwN4Wb+O#fWgd^_7|vAh?MrnRlGXt{t`ewJG$=YRPTaQcL#QwzGqTV%eU9m{8opW^7Xzf^6pl8W;?2Y8r!g<@(AoK(YAuV&o zVoni`(hWecZ>eSm6jIZ6gE~~c4?n4&)wH$V%+ve zd`cx{r^js@Q>N=;ppx3(=vaA>cE=U=%Yk0q?vMHIstW!i>=xI)ko|8j23FOvVKEnB z=(9TOC?6}1y>CL-_^uK23A9)Q!HzT$sG{cIz#01ODkL1~0Su8UkbJ_HgguY1dlS3q zvz3nk6kIk=#`S&xZpk~-TF-RxSxQiT3`>8Qnhg;(e1F??V)W?YA#ZXf?|E{?g|5V5 zeet!uND-(QmbKtZCv7;xXAH+P=cA7zPTh0wf~%XH?6?QjSHop;E?%y0trLwYqdAMm zd?PzCFZ4k_BeMu>O!R$H_a#Ij?A}bLh#`y}p*ad>xH&GM^c;nuRWsB(9 zlRL-5>n=+SZYO*Q&ygOz{i;3X@#BZjk$Y|*7rzq|=6U!o1(qhP+MFD9}kiXe${hg(-AN60=Ex;O1E_RyG7>=B2gf4a4{MyBN?6@_GX$nioOf1 zTV@+dz1_=@nd>nlYGA9B>vL@7o}IzgJU#R&$M_+!1qX{IgawQzo6@rL#jFc2?T+P4 zi7TF^`yrG=9`;ie^O5oiFNuiSHiLS#y`7zwb&?Dr&`#6f&H2il1{#aBK{T{6X_>CY zRuCRdtAnXP!WC6m0d3DYjJcECI3r|OFuz_%bCUG-(ir2J_zHJt+r)$QFJ}jGeX1n# z59yiqz!qxO3(3d%84lrQT+@8Y!RbWG0L!o6ti`IqXLGS^*F}V9K*I4{2kVA=eE8Q4 zoOXPno(LL5!Lq_ECPZy^9Ew@*kYn=4y#hdf&IpO`Wit^GdAolz(r1btVX-!b`pM4v&^C~l4~=!b*& zP~B(EAMMK$xM&V8jLL_^-XTRG*r|2*{&f4}3of9?lH68f+oL)d$4t0(eawAQ*It3d zjXb#)%6K9~CnULqkHec*%@9wo!{m=QAUgO&Xqjk8@xD?02+b`3oiB@epgC$fXRQ(o zn`EIVx-e$UBFdnNMl@AR%#UbS8YLj%N;YQ)aZy7SrylrD!P=GjgWdk@d?G=WB!j!n zQ1tX}@kt=IzOa^kGd?PYO}th+|FA#)P0Gx-tiNJGzY3(dx@A({;le1ecDoZQtR1W; z6Sj_o*X1y#mwNl6WLFteCAK**CYJqDL5@Yp+3C&rf9fEgazpS7%A30Qsi&PfrYSE^ z!WjvxD2!$r6z|k4n08;zXocd2lnZtsqt)WHR2pH=U}4_DgF{hLYh)*fZEIEMV(KgO zeZz{0vzzawD$n+{KPbd6aw25M&*o}(>1$dei2|XTf*!NVdE3sPdUYRIEu#M0JpiH} zZ#6JEqN zY4%GOOV+```o31}BrDw;YKWJJ&uIn!h3CwKc%KW!G}~zjp#KW%^u6B8Sw(vZA5L-{)92N7GIc0Em05lkMc%5=sACvceKh{oJj}^g0662PG z{7>uleyhAFST}3E)oB#@JD0Ch&ttfR6Ri84#-&+?k<;am^tqL{#jc}R-+rWNKIP*7 z5t+`z4L6Kn#i7ga5{H42=|*;bz07}8JJ09z>U*nF6x3?yAOPXx&j2~1 zEvjuzRgjMOoWVzPeX%Km5RvE?n{aj&0)E_hsy#Li-d{RaHGG-pZV{B*qY9L`!ovl7J-;Z`UUIDp zR}%&1t{DBLw-y@dzC8-7rup}Zes09=?Z*n6STk`j`n4lGUL-i;%Pqyka=shjG(LWp zmb2rXWqS*UySF`nYfnQRR4&Q9^CjFsixontI2F;X=h}^AY#yI z^NX>Gd`NE}?_Ual8xnPbG8Q`ciqCgzw3Cr_1m=8JJt}NAS=GEGO=02ST9Z@%x zjOF}q$QfJN`(z;4aKr5}MQU$5Qt};Pu@q4{D^pG@^krYreQPaE%V2rRTl=z$>>iJZ zw9DZPqB#@epn@)^?|;b(dnCe~Agu^A$HkT*u-Jio2ET#`|9Ai^vkAPu%D&L?p>(-! z)nljZtj7h{FFWSA#~O1vb+20cz-|2dp@F6S1Fu##m3q)KXt0q?xfBi!6_=v$6*G5l zmZOy`d7VV66Ge?{#8-NzC#2%%%W!)SjwVTaFgNbzvG^%Fyg@~{xM;%KFB7T4wQQ@c z)dHs0l#%L_MyE{pfx6@9sO%elN#SFuk$?-E^SJ>_H~zlSq7O948FE#x*cF1HdB5oO zl|^s0UqLKG1l0JMY^uYu4@pOqdD`!Tey(rYM9xR3gSkhN`+{Y8gyl1116K_3SagO( zw1oPm*YEY1gZ#+DE=4*W|ASd@_PF(m>a-jSdk?0F+)ijV+i_zm)j2+I!)58e&a zLis&41ZIYQ6JMIe64t4Z*zvX0M^4Q#N3h{gYk;|~s}qD>D6C8bj$MS(9a)y_m={?p zDRD@@rTiYFdMeravgEv|VWV41{Pn~mR-vs~M#X))tP63N-zjXnr*s|BB+|lj1k+6l z8B@AThhS5K3qnnZVY?c8m@GWh>H@@k>eR8-Ivf?M8R#)88p+9@wnxUHtcswin^Q5y ze9+c9`b79l^QSnC6_W>m9d2+lFs3Qlmu`m{`m$n9xj; z;R)~BV(Zn6--T?>=KhRCXT^dB%%g-1vswwD#{g_7O`V0kCy%UVBQ7qNy&SbcuKGl7 z0(MKmY_D`DG}x`rC+FN)<_v~16G?%jBX{A-^=5^(ySejPn|(@c^{OcTz59Ro3cKwG6Grn0bzoovkaHlQXLzH) z6}6!`Kn?eiY5=VFeh#W#La;6L4F%Yy^~2DTV`()=A&qGo3YB7W!!Bxm#vuHn3xP=Q zGKsW$zTcv*=$})TnZu20=M)6Zyrjt2oX#v;v5&^_1I#;h#m&%45v5B^FwL0c4D45c%dHG%g z_-0ak=WFBnrK3)6_#WFJ#T*Ihw)@Z)Dbv_&Bq?PS}=eLTTSPEdv*Mmg$%U zY!S@(Gof|!z0?nZH|>g^-|eqpQx(E_=&g~7NSn}wcFHn6+wx{Usuf}~xEn%gc@Tv11;56VBlWBw1Jz>XM( zFyhapq2QTu^ZO^GyesI8C)hdYMmL09I7Ft$r2S$VCo-)0ZNWorn3biB^_RbRDOrV3 znSaN0&B1+o@;#Y>E-5555X}>iO%(Bu3#a+BvdcW+(-aM7XzQ6Oy2UB~?CXUAE8y}J zK-2-K7>KCY!7uX!=Yx&pT7_E!fx25PmMiy?&N)L55>sLGvt`UORuMsMpkVpG$iie*rhk~=s(nZCAYNsi-m5L9JaOv; zKy**OspA>=GD&G^)0TfjFW&$;ockh+GF3Q2VNla`lFp;e zeW-q97d<;K!#!Jti&t2`Jhm{r)?R10`EaM&(_f#w3a>WZ!!&6gQ_ZW|ZB*Z(s-z{8QkcIF_6kfyI=FHC(c zfEjY z+SxN6D0?&rEwWbnm>vKnAiSvI{VMLN3De_HvNAwCRU9qiks5X6J-LKa&n*(mFTyL_ zd&OQIco<;!uq#5bFwKi%OA80VSsh zI+SxJV66{nbIM;)7>7yIGXH_n%4}$h90Q#0o!~YQ+j2H#{QnRNdY`M>1yL?%P8Nou zm)+t^+jUz%YWuX*ZqlCQhm{?S5A=WNcRF5yz-RQ0_Dr^G3Bl4Qc9%b{vMMvdY*^pK zVwpz@j;JuSyKptV=}m=XaNHXISn(h~h4kH3uzjbN^*hL}SXHfYc&b7coAs!Cn9Ed$FXzEtvxIcyZn_y`uetkzXxH z!~xs?TJ?}z4xAgpQK@?l$8IGwu9l>&&4OE=C2wZl-+#Q#d`Uu_y zaX2>$beu6lVB<+o%!^NHaK2ObNyX~wa5&wBDadkLT1WMS8awBE+qBX(>Tx#plDUS{ zyGZTy+vxKvGyY;!ID1ggT3@bAllE~WIUnvj8FR%|u7;AYycU3&LZr0$8_jHYSe;L# z{8u+8uxc@h-|4ZcftBabpKg~g^Mg35)AY`wb2cm`?QA%-dyg0e_Q~`HELrH??~;L7 zcx~8-d8e`6077M`6L5-<4s6bvNgsuK9L7OItJM@s(R70u)ZzS$A;m|4#SsLu=%RRF zFrpm!;syUAMN5e+A&nPNpGADpd}x5JN=Q>{HWdO{5p+2nqMhcbcd7Uc1}ou0462%y z9q0Cezjzt(So+jy38bk8cH@)?&UQ;sIP{RiW}gME4avp7;0omSyH5#3ZZWkjv|>;Z#WYA zqf38_M1;Dq^X$s`lW^4LC+Y%3JpQb^+vpmk0zKV8Q)|wKS%Xci_g*y~jfkDEQzY3T z&bj+e{qTu3L~B&pjKr8=>_j&i&+NR-)^D}SxbDxa*wX(onQqHbwuU44?^Xq4!SWJD z8St-)3K*vN7y)opan#BXwq}poGNSnFFzplm(^i`G;hLE={4QH$&nrhw-;L&-sDw7L zKZ)Rczv5@hJ4>G9#I9Y!Ju%I4%`-KT7#qFOQQyPapvE6-?6q0vufBEsSRqn6BG7VT zP04TbXP1yY;oYl)`W`{(P8YJn;j~<`m?8gzEiUoUF*Y`)>|5GFNjcz${r#wKa^L z|Gt{IL;jIqfH+p}*Za9$9iIzS*CWHXb37Tl?fN7hYV8zwo6gj%kX6()FKS(|#+3=k zmQk&8s18FS(S6@)ss75)tz@ai8~X}DaWak^yL|W9Zz=>8AuoDuV*Raa-Tk)KbLvbT z7QN9K>%Kb~T2~R1+WELvRAAM)K?yz&P9iC$&WTde{OBxLE$3x*-ty1LaoWo z8K4j1OHYl4sVT+L^Xa5b{Aq^1id?0->W0=va|GHF$H=$Cj0t&vH|PGI+v-hEIBWX;_Y82!T=clO;yYtMy#P7`@(dAFrO-+7Fq{m*kdMz_Ag<-? zZYi_$t|LGWLGZbl|F`L`$!wsh7wdBZcs_^@kCW+T4EuNC? znkhR-iy@KyGmw|fY|@N6`|vn+S8*y}xB3Tx&dI=}gDD|Fe`eTjF7C{vRpw}iG>RD+ z63jOd^FWJ+%4nahN;!u%oHW9(=Sz6CXE`&A)AK<#O(v^E@zpGPD{IaEv@KohP_vzw62Kq}I?x$}k7zGEjMN znzj7lg>L@su)hteU;Wh39XWa!98bi)3$XWSL7{__h*3l3e5rh2UXD82TfOt_#(+pk z>3(#nE*uaS&V+YxL$!yyRAYrx(Kyk5lORDv@Ee_RlDCBpW1L@g{2%B&u1?KNkvm>>TbzDEAffT>U~z2Y1X^XyJIC+JYU_4Uvf(}3r6(s-fw zD?_Tj(VEK(w~&ddkOmALf=OJ7ysSg8&`QQrV`2vJ6LqshQ5A63qeY||1Uw$A*2#a7 zt=x$I{bkLVk710BmD;Ahf``u9btq~Kv2wXO62QXYv4|Y}Ga*RVI*~0Y|9B|0Yj8L^ z|Aqd`G)#`zeAIl=SJ#{j?({%cUY`C78{a{v89`RX1}w7Z9+y)QS?<$+tJZSYBS695 zhn+Z%H}=QK49Zzr>uGkq*f;(jHA!ieub4->x3iqGX53RJ-q0<1Jisv(ZTWaQ^l9i+={&;Rf_Sju6c8q); zZKl04ujF^d4a509%VqQfleB&+eufKI)tsQwHRT7ml)bFUo2 zve?nrashG60o!A9+&~+rVva)1Fg}lDxwan5x`R`j^VHv{EvJSDPOH^cWDqZS%Ilz^uQGlMg$Lg?bhrN?utUBKbq1wgYyzg8IUwr^ z@2O;G&HDC4#?%uyqZ@t26;Tc0X4bONPk)d*gEzXn0y-H9WaHe@s5ZUY>?~_;WD|{d zt5ER?9v@{bH2;h*g4IA*D>-Wm7l#JDDds>P8wlfwprAxVSvM0~L&`K1YmeXgg#SEs z&F_+nFhUJx8icxsL3aX=uHqQ^8rs5tR2BP{TOr~@5xB;GHVDpA&}uONr_O35RkA78 z@DhgJaBw&DC`4a?-30h0;`idD)F0fXlzW2q&i5|$wt9Q5+_IeD5U|Q)7ZUF&$4q-K z%oI=G(0!*sPBLp?W8C%pF&KsU*%Ld4I|>8x>dmyj=r;$4lqF>pTT zs1ksN;OvSL{=0A>G&Ys=#Of=(h=Yc&SK{WSbbK#)e`c2xjwdDI0=2mH)4h&)Y4HwV z>D4L5e9nnjSS1zD20{HXONf64^%<@VKNelo7~B+j5;J|`ThN%k%y*8s^@E=}SyLui*ajSB z_t6!xZh*C!qN}K&-cX4;-x0LGefyp_MPo8{AJcK$9iT279c_yV?9PzqE%AD!1G?Ac zJJ<5n<^v*ruPDR3H^Ytwugi$LcCPJ;f)%!*`CGDF83jcN`XiS!>*vK6Y~3z%m(f(T zUyjrgpG;`Y8DUJZ=TS!Qr=-X0Gme9pO8)Y_U$8;~GQR!V+RuszrWXPr#GY*Ua{}x% zm0jS1C_Q`CMenjB-YovsNYVa)N|OF-h@N)g7c-MEAaBfmv1^qW35p7u&&%o&e$0v} z4qzXzlRv=M`E%+Y_(2%>I!M7^s|c~nkI=F+@7qgDZ1TGogGU(LclEJFWITeX5&G?w^{chyGBE1218tjZ zJNysP1|&}ik^L)OSj*tzM}TDnimoZ`6>%=M?n#I7ituQlQ~pU_Gx!=Zz4Zszj1Gf| zs|vP>>LJEw%pXZv;y7!#-QDq3hhFKVYBjIv`!oKuW;eY$Eu+@KLZ_mGxcx;AUVsnN z?e)*{P9zZ68n8(_FF=23R2;{j~+vVI-pR>Fkzvi^J86%N-9HYbZa!pd|08 zN8-U-*XU{be%mT!?#dA5w(t*RTp82Snj&EUt_E+jN5 zyOHg>7s&mFka3D2$0^|PoDBZZEUlBE4A3(Y$ZWNXzAh<%3B)hIB_c%GgQF&_qC<TZv7oVth~(2`p7l0=ywVWyK2*zod&jQ za5wJ<^oo|97vK>!zCdH!@~WRkTuk8HhPQ-YR(38%+bLymS7rIBVinRpSK#VBvj6U0KRax zt@<^I0TQeQ;4gH^)d(`@_(O4(xP2wdr4!fc znO|QWcaJqlC?Q1P3)fGfU|GW}%4l;sGV`3YKNjRIv;;q=6OWv>A9hvpa=PH5;Ry)a znkM8=(NIUqt=BqI>PPqJa(a!4`iYFdnKfoOS;}zPZ3pJ$j>0{^Zu*Nx>bjmEmpa2< zMiRD3M!2HCp;quI&cdg;z+faRavRYse1VjhryDkqQAtc0a6XDm73kkLmhi!!w_XuC z&l0VG(SxCg$6V1Y3L$TN>EQZHHqX59se`Cx zFd>we=e1BvH6+@S|M}6l!v=Oz>H%f@*{@DNpPyocLZ&4-pO*Wg_S|^c5X%0?iBF)37F7 zqvjsrSOh2$M_QGyKB@KVQ9U|c)gQ+}LKx~pyb!|zaK-*o4(y|46a=(-AeReZctp!X zFe#5HO(Ru)N1@TYpG&4!M==Cw`b=O5xBWBlxZB?{x9@rS^QL{kB~JDDL4h8TOyE0r zC?~=10vO+2TyCER$~0`pIl&)9L&_+M@9lCB#7qNCJyWZGiV@5l!Mzk|pO{=3(5eZ> zz>}dJoY!?L0+*j89IXV(pnPxQAjSS6w?6{j&pAPy*Ra))>vfoZ^7xQYVt-^*=@Pw_k3<#50UbM*kEofy zllb_@!`z5oROVaY_3eMT(omw%+jnaPfxEjEy&j*NEB9@`xBV?+;63;P=W^;-2zb~6 zf~#Xwz*^5ZWCe7v8~XcGfcB4RUbT;bfsZ+jf%Eo|Fmw`LFEE8U2(SOS4yyCLlJl6l zUSe{BZ{1s$&NTJ0c(!ZkR1@pPKWE1nb5Ed|GLXE&;HwVsd7vZ)Wdof$3MHyj7IgYY zzK#*ACQvB8V}SgkWM>G+_f@^)^+(<^;AbD_l7Z{3u{3@r_U63X04pTI;<#SmJ?}Zd zNu5h35Eo9Tt7Rg85e-D;Q64()rNg`6Ew4E+k^uXxvr!OFy(>q5&GlTTa|tHgZ$lG!A?Gm0Fbh)UlO{VfLO{4@(sM?*Af%XOo`54RO?cUV1gV4;9fg7ImKcKt=ECCu=HULgvKnq_&; zW$Mb$Wt=!5x}FH~T4R94mllm_Jm?>U($4k}FNjTw3dSkOd2qCg4kP#fSb*311S?!@ z4jYjSErR~87|cR-br`QDX?}N+X9XVyZMuKpp9yDYxbSINn-1QTk=OnCfx@r*gP9$# zi=0+{`Ws33ov9j|g^XN|rkm;C?t-i%CC}S;X!ahKlYny*m`y&=|*p8&3(yJ&4)U$Yvjc}iZ_ zUIQ{Ph@`WPS;fpF%G#&L*z0p>@MRJ+BO?USvb3@)Ar81zBq=6&=}-9LLdhqz5VdpS z03`G0T_;0fX2LMW*y^h zF8x(gv3vYN?TWz=YK*PUUpG%Hd4G@XecrCz_0HR4J1@JY57({GREp<1gIG|!19OF5 z@r}fZ#)vkXEM?Sir+cmkV~n-_mvtBQuks>(c@A)OG4bdHI zO{eBo74=GQ)H{}^%+#rx@|J-cwK7=1{doz`B)-<{;HC+QkQaK(ub?tTD?4hnoPPu} zT9weg2goK12?J$K*7=$e40wKb8r);48P|aSOlWnvF4VIp{2x<09v4^c`aRw*@Yjp~ zF|;)M>1@x!kH`@7+L&s5)H}A<%LHvJuA1kr{g)R>>Q-9uj2Q-jRT4KFIT#@BChk03 zKmlLj1Lm+JK*I0pEXmy7kAmAgRc}ihXGh~h$jiiT@Fx50z8UY92< zf9__QF8xvL`%&t^GDL2XhcN8@q-B7jSj(AWV;;xBd& z@5q6+<8wVpAZK5Hwlkf9K;(Ar@u`Trl#TUF{kpI_seZdUwEp4qByu-X5W6Y=`vrKq z!-dBpx@}U;^#0F`h}CXxxTcDwjH2Brx^p}63w5pxr?#Ykq+E7G)te9Cg!1T;SC5mi z6d?H=xx8v`1iyFGb>;t_qyM(KR?+}6ofX!G1O>k7aCQzQ%jK9MAd2E(VJo_X?$tz# z;6pL+7K^o7P4O$#e_N#XO;&c&;Z|D)+mXSQu`lRC2C`Y;vNchSAy@{Pa)>q_g<5iK zLP;mj$WIRo%HD#t>Sr-z{27cj`PqP*(7Lu~nS4^&G5hUvM%nE+xPOy!Rk8Dl?0c@@ zr7#Hga8|OcNa%E+M)yPVgja0K3Wwma7XLC(sAlsWE{-$VXpX|Q#;Tu1tS~_*@$~Wi zFlH82pEpt6aU|4J#>Cbm&>NJLdWk~Vz(~>%d3jhV7T{WrGJ5w|@07cDIG{z~&rkm+%1yT5~D%1{YmO+9w7MpO;Q%KVoW0sr@; zE%Qv^bLN6WvUS9TtfuNk!%Fvyt_T>6KqfgXEWQ+eM7F3t!|45_i8?RWgLmsW>MO#E zVV^lz+j}yO(Y=+5vb^WHI|hjO{pdh+7cUG;~mgYP@2J;U22 zS!-DX-#I%LI;-!lgRDb+5;sz#a?|&DwTd9fmBWd6;m=3@TPb8H&y3KDu|;2Zr!wrZ zaou17-`h|YfO5y%x^=YEc7y~)V z*QYgU$z(R-k>>!rFWke}(YT^NFmUJ+KitbX?y1PcE*k)5N`f#&R*J;q0%*F;IS7%I zj4wljyv@&oDjYVj=z)%y2 zdq$1EZO4LZPaqa#A6R()IHjObBRxz7-=@0maJ129`Ky^1s#wW)|H0tPqwnVPt@5@e z#c$jhRSzgC33<#P(;0Tc54$jjQP(6L9Fge$P}7*(GwL$o40Fhfn!t$|$J8QGm1g7; z?3@R3JBDJfb!eW&we7T%yaA{G%~#HrUx4BMmd+#KTfPG&T(ZsL%>@gMg;w6wGLb6m zKYqnz@m=2H16=6+>qe5|39j%8R{ws3FQBBocPtbUOu^Yqx#7I(5XhMtohnK|krh$r zoA;;}^nE`zap=1%b~DeP;yNHA9MH^DPk3AhLAT68h)>`il{7#H%?bY&IaV73)}uia z^V2oYUVUBpuXZokC`4U*5#Q^-c^>+`Z-6ezRS!}0Yq1>*^3dDV(`lGgS^USSz%#~k zU1%60M4Qt6*r(}iy$k7-IOQ_KLUz&di|32mv7^%6pKam4c#3T?cDXNzoz8I(S(`@`rqSKH}IW>`45J92Znn(y{` zh$v!uJ3*n!c12={HuA=oxo}r)t8O8iS1{{gXY{NavE2SBnis;!jFRw>4->)|^O@YT za&+Cu0R)B(UPev1*fhF~!vi?@T~xa*Hfzs(P0mJc-^jZv_%Fpsc|3jG$E8g%E@pZE z1wN|DV{LuH4Pc`S5JyH`?et0WtH=DCmOKkKuyXSq{h^C5v8t){HVz5_tjeObe-Ia? z+EFrOPfdx7Yo>GQvi^tRy*0nI$>w|j1{2LxF3 zF9D4RT?;q)HmUhXAMM>mDDfGhcC)H6za)JY{G28lI-N|~{h|2>NBOy3w5+eV5g8uI z>+ZbcEO@4UY>Us;+n>FQfTw$o9#4OdraTO~J->|v^QYr9s}iVY2(}E6NffpGIMwrjc~#~)hb3Yi@lbr#>-e4V!d-slZDDk^n@D{G^pV)g zR5!LBy&2lRT>zxE19~buM+T()?>P}oaV#?=it@=IZQzVdk$fpu5E&QA;XW)g6kKk*_f32Wcvx` zbdS2PjSkwqBvb1RISC>K`2iM-`kuFq6OKX@nIT#$fK(2@Br~-dnhI3EqP0Yy4 zOXA+!>pcOM1o1+R5d@GAxp1aLYtl`B@zCWl_*rFkHy^2yv(~DZ98QyvgSoK@UUw%j* zyh@PlG*(w<;l(V(^gzw{y7ndqZLB3m0GS1kP!{UQHEN;~6bv2?85Lw?BWS=K-*8*G zz-+nIkDtyMGF%eVLXmoPrp?bK1r-z}T?KWY!cEpRlt7?sF?3Y+T-BJiB%e=D9CjAF zbdHtxeU&-(=Qn0AC^Rcb14nzF-!8aTJyVv~nb*T~_akh{7ZG2G z4X9>ZFo!+~&c!#wl*3+kcl%s=23=^J_ar_7`dKBcRE_3FYhGq>*X}CPk&f=&$Iq+U z&r6KW2RvlF$x3U&HY;%yUBs)7F3d!~1I3VGd*mAoeuahXwbv09j-!R6E*!TPkx^A{ z0H`WQIl5g4DHgK1_<#x=%E@X7d=oU&z2JB54M&EEtDp>QIKzw>JVdcWPFOiY+I~1h zUhV0-Z+}IMl@4&j^B3{8e%x2h;=89Nc!L!-7s+E8pLzmFZW|Eyse)JnS9fp?3cQO&bv7dF|t>Qz(-NLVIX;|?rS`fY6zMt9N7WC#8bHIwC(H-TBmcOe-G zlx2ZD;M*U6G#BH{PqCK@{D6QooD*BJoLTR8xnTqCl~tV_L*s_Q=9atQ2?k%YlM5p$ zf5o*5=q!#I8rX?jK*HPPEB*?Ne5YXWSm+cfJ$Lw7Q#W>lygG9-h?H3;R5p zW4&!z1a)Yyw?{J1`c?HvcRS^4u>%Vw)bV7A9z%zgefE09fIGim*8p()&aLYU2^I^x#C5=KSWRje)#9`D{rnom58)``bv4#9F){+u~K~j z#pwZ(%XqH6W*Q>N)k9F)KP?q;7KFaWZ3KaQln@h=!qF4Mf_qhrTDKpRR$@#F%5^j6 ze%@DmdQqagpK(2|!THYcIHvzgW^7;V_e=AyZ4m(c%yUkQxnfVWUUJvOO;%bter^l* zbZja-=QKUOaT1m{_+x1$9i$f$z`k$Z<33#xu^rKe15*I8Igsu`_~s*f$Fy5L=i(ue zY(fd2f?h87LU33Be!!8b_1vmoL1(d^j1A#I%kcDQQs~r}I_lMqgD^p7h;(7947Qtv zU=70q7`YoK{7ozvG8(jg`0I_RUZ)(87@+hKqP(B!e#yiHP~7VqEuMsYP{d=jK0iwv zh3BzJZz#j4XG&)Re;3Q!{DA;l%i`m8vlzAcgE{8X7xy_+d{b*jeM|LNZ#YL`KM~nE zoAi_$4RT^7?M~|+3u*Y?sxu0p5x4vwxiP}p)6PC*QbU!w@F0n!kz34T+CDzf`(}+& zzOdiz`G!m1{%_5XMO{5)G?^nj=^7|ehEarkLrC3YVej5jN;=&UQ8hT^iJR5?g-@L_n!}AOU z;?J1_?@u6l9#OCYjS`ByFP1Rh z@YzLAo#W6_uCm8)}tDu)*r$wkQbbLJ4E?2 zYt(HI{|tK7x1o(BYp}8R0}keEb2K>W$yNjgy&2bO--whrM0k4q`*v?&)Dxo*l$4j5 z4}}D!II>`+EW)(c%LT4$655BkSiGvg6`oPCDCD%}YJw+**pLLuy5<-av%U#jPisB` z(s{KS34uH6m>qg1wkEMm2qI4?__G)mcd@g}`;gLoS;Kf@bM8TUcwsmjOb?TBN%SVn zq_P|bQfl2eX%v#-lc={IHm^YG3ngV-9GRE>Oc z1Z?gcIUX^*w)uo56qA(4SMy#tSa0w?zVhmgW&-8^kuQN*ab-`vn)dZ5H3XJ(;)H~= zI%A(k0vai!ADTeUHO~CE`D2Rxf2kxoyXRVpcll={J3B+5b=d29!|sFQ(4$;jTpbHG zZ8qk{4Z)6{%vN?}QC{s;?+^1@Z&N{mG7D#~*k}fd$8*oQ!Y9PZErxWWl^~EashnTAqRBBZmt%RdG0BJ4 zRNQDatuAooqNC*l;5Ob zBUq6SyG5_uSk-KVoWTbibt6=VUY-AuF$cB`w6B+ZKclXO&D^U zPlPW-zkacB%y#Kb<7knH$676LF48o0+8fzNuX#ndDrK8vLbz(6=BF( z8vZ=4o*hLZ!{oSejdPwp!p&%XnMvT27I9W5?&XXTUcgZB8h5N2oem@3B{8v9qwF&8H_80BR1*HZ;OR4icQT{zL-zD zcSuM{PNg)naO zV^aB3uV;R6G}8zy1?9^$t>P_~3yx@9c&{znJ~e8brM*(oltV(K`u>l~T1eo}4|b-5 zHBbxmdI~yc==DPQXpf2cL;6(qNPLq9#9Q23G8uwj;@PJCZOhOxOY~%jDD>E9^l;qn zD#jBU=hhv@+Q-Zqc6~olVllV-`nt9|O(Fy5mQA6W6$+3q0Xg!f<>!woZ)_!mHTqfO zEZntcS$!;J=jR>U^u#Tj+ydZ2PR*a)0>*uo@|y|Kck^}r_5NDtX@CC>OY={Yy#A>+ zc&k(tBsb3)9ff%d`iT_c>;`llxYb?u4EHq_jRR^rGr_-9kUwKCQrj4iJ{A)*@JsN` zubnZfmav_?2MU?hx`9PN^NvnBs zk2dLw6s@`IyF-gr_jEQLCTapoZu7s%4V;D^xTg^%Ld);&o(PA$<*o4j++gP|B{-tY?YhX9gCW;2o4|25W z9?}99LeIk88b-Anh)v#$O1I06w0!Y!_C4vuYG{-nAn8aI@OoPEpUmOG!lCsP`jl|s z->;&a@;$pAlm-f+*ZaDvpG528k>P6Ro@D!$}2t>GzdNR@4 zwYwXtlVIO~J>^#-?~O5l@5BjhYt@&BQr)u*J7x+Smkd{$#=TF6hJjY+nuJp+$6@64ffksT5hj5;*UWb>b5J@4UTIw1d2=5ii51ZHKu-OZ4ETSz0K+ui$HmE8Z9$N6^=lg5 z)_+tUAfU|JSX$O1;!GZ>|GSIA9t4dHE^;A1x(Np}eQ90uI9$D^mnw~6$j3NogKZxhJ!zi)p0U`QeTpD=mHbx&1khzd4&HF%0UxaGNRr^o<(wj zi|)Q!9q6B#ABq}42HA&?N_L-*0$jpGSj+8!SAkep^9`3R0!c*%IG(s$(?R)8pYMlf z)W%{O^e84%-fe_HrmkF*F8U7aIDogo{l;79e*kR9I`0RRt#lz5l-V=>jPd(wBY!K( zH%C2SnNcug9C*iUJ_^&aP6Qy@pJTwt&3|}Kh1~vdDLFzYZrj$GD7l}Gn4oXNU(&gr z&HoO9u4RpPMigKkU-}nwYStHVqXBHq1g%Ss%XaWII!|3iB0$JUlPgCdY7=DgHWR2A zRfp$^(dKZ@h{I(%H0fEU)wKu+FCHpc6<4;v?q%ofz*OYQSE!d@W)MJgHWt(=N=>l4 z8(%CdcfrFqc)b&B)({gSzM)S6A)7Bs-$1>qRHuX5lpwSm9Dvj)l2z-c9=dnc8 zsFUAi&GJ6xCxf=!NR-Dyxb@EFcg^EF;5VR+H~I*5>lbwCbo6;LG|=RolZ4`TE}Y`Y z8fhmAXN@i>;BFv@Bp1+f49CYuYQ5Brv~=C>m}fp)u&kqZ8}@Nw1(|@IiKAdmxz9q< zO$4`cF$fsaDXWDgHqhVUtyH#J0k#eZEBVeJXT-cj16IKsj84HZOeUVRRPOgD=T*x@ zRkXH_?sW!rIk6V#rrHt27-ZgdZnkZ6dhp_&w>Y8}N;{9MU~nL&CHX?d*z037Z)-kK<+}5UqgZwMM}WvttSN zSaZ{lfI66W9Qp!z2#AJ21fyW|h%|KuZ#*Y6(uaiMy`RLj=4i1Z^4JLIbQf0E1j#un zxl1QOoOye7@f(a`9FM<;+Ef?j%ODAJ2#se3vD5Ru3YEovu}88KNd47pGMQ%D%9eqz zzyh&+;zAx2!gdL<^2lI4%Muf>*hCHZ^(^erOXAKF|DtY8d#bS=xl-*2Pgw~9O{O~0 z$E4$Kx;^)8UhDR5&UU@fVJ%~Z)Yf4^X_e7nJv|^5^g853KGDhFu8uT2Es^|i$R3mb zALiTSfga$aKI?BMXa*vDaOZ3EK!iHFZOv^?T&mtYT#$Fh&YQ~zGZS&8EM7K- zm-cE!R)MNl1K|)WTm_zAi1Ra~zb<(B!%U{BAtMmcZS|h3jze9OBEVLmT0#brkAMJg?PU5R zL4X0YSR;}?%l~B0|1|Y3;OzZbb^g=SMD+jI+yt+n^_#gYe7!&8Z>s>>j5MNdx#qE~ zC4kyEZ(dN6K`W~Y$Q}m+)U`<0yB0;IFon{O;3Hqts_MkM%DV6jW)$njjcV#p1i(>6`^?HSe#v$;|5yTVel3LE&qQlp?2z!P=d4{ksn>=&@;B zUg?YgjiU~Up6`E3X1p}`QGuArk7PSnow+5?~TwHWaTWmgt(h% zblpjC?U3jPk7>oJhf{T3|09L?&2&##{zS*Z0+N$TyKe&Cg&N4bgzqKmK47hr z!dk}z8UZPPmcmpew9g0|qwWuTZ{OA-Xy9T^7?K+zCE+nph~`(|RZ;m(Zs1X1$`fm5 zdee=^lAD z34fS6owJt+Y+!}5vB)N4KPiS0!L&2x%+~6#R{TIKKmoO_*=xFDU+`(WX=-qR@K{t< zv;+SC0<_sh)nCJZ9$)$$UGD7+b%9P6HNQWcbls%?hg2b_W#q=*%+LYH4o6Z1%d2CL zYX~5E${|rl8j98v^t3$?@}T%{@8vc?1>AZ!l5_IT?@&;Qg=Y&l8YvuTJx`9VK%X)v zUFQ?v&rQaumm#Y}!6wI0m@^QU{HVrDj>$DT_>m(jV;Gu8Aljt2nr#u9V^oW{bdRT- zq2TmIb?v}G+{Be{@%>GKL}5dlZ^qV1We6_*$hM))(uTGqo4lA%3N)vWwxxm_oL5wU z(340O9;O^UkKbY}FW4cq46FNAhfo^BKVS6GBJkrbZxAm#w###lOXo6@LqR@nJ~Q(a zGXsC_B-9D9EM=|l&u?wRy2&8Gx@JyY=LiV7KcJ6x#nWybkMHJED1f?4@!zQOy^?Dv z;6z5tiK9T!cl?yMN2->nhJkM$KnxK_2-AfrQ<<{nNxdiE#YgiX3D-VVc)&A81kOQ1 zI!`KqkS)!*(uCLkSBEcW;8gD?o-8Qcf!ki%k|0v(L=!)I5eLMJqJH{&TD0Zm@4}xC zKq;MCRR+o<@#_0P9dAYz96c! zI*1W`W%yRy&ilo&5VEI2`i)!zY~?6A384N$?9VZkw6@(SbesHn@bF(lLly*ao z-qJ-;gfvAbtU7I3(+(J<$(ro5(g1Wacxc&B+U>vd=eXj&t%<+^C8S*WoCCXplpyUd zd^(n&#^)4ttu>6O;U}i3A0K}EGkZpLR0fH%xRI}9TmIHW?M~~< zYc3M>Y0)kPVqvt02VwYTht%d)nJU8x#$yt$@jVDP)hj8ZB$*Kzi9XY7&uYJiD~Q!m zT7cVh#1gIHF{c^$Qp!&M6D=v8oew3Cw_^mxW-wNA1l2WRLT9c~t?_AA^b3`;;81hs z8wH4IH!(YSV}M+1YdTLhZOezhS05TRE5U8(P$((+1B2oh@2nswJoA`8MBKIbKC}psp*_DJ!LL|}F>}6N+3MmHH^Jww z75kuoGi9}i)ZC8FF_M5E5xa{>>#SAZIPV#6o_BT*Bq64&kI_JIvLLFv$$j{_0s?RJ zI0nxe5d5D0_uSsvp3ZPLE$c5)1VH6cc%HYkrsAEYY;p(8%$tzn}_9WKV&Me{HML6AL>-IzOOPhL&-!)-pb%jn{OLK%6z zunYXKoo-9a1*j}1tak6GeK=TWSDBFM^&vR3HExH*4EkC-Ke~z`{W=^8kmnacw%|r= zqQ^fz*Ncq=`6>8w?D$*%TTRN?Bvjh>Y|Mk^Zacpe9){t8Y*?h1;PFp%$}CR^lb&!x zTx>Ef9u&OOmlcE*>tVA!n|_Sn0t+(ng}Tq3{KwL+BiBo` zV(6HqnOM7=3pG4M5gE=rwIWWSQ1n2$&T7KrbWk$eDGo0&CT&E2<4}N!m;<@)C2_ay zu|5kkm?0V((MXW}3?KAbN8zxt%CwA&A{>%5sr0H?Qc1RN^jNHjT6xN3%%XY-OrXAi zw&f^~%!VY4iz@LZ>j8Xm?!L+hp0Vib#8R?b@(M*`pVYZ(4VMWMVsAPP{*>{JUlWsj zZ4n4okK@*`Z8SnEtRZis{x>H-6@>h%mnW=wQv^K6^vc+arIMD+DeKO*e|OkB z$fyKK{6Otf5+WZD6FMA|spyQG75gn2!E3FvAD0>u zb{{g~C_zss4a?|s*4|bj{3tuSo9uI)Ch`m`@{;kn7&7Ot{`Pbc@WK-Ch5%9y&hRv) zqI~s}JfGwA$w+?fDt#=+1l&1zYd>-XJYD&pqkI{Wzy9uf;n{t)_^K5~j3V~kYV-Sd z^`7TL^5w}0*7pQh`&TM&L0d|h`vN+=uk_)gd_LmzUdMgCX-tZXycChV z4};!4v{X^W%A)W4K=L_M|CR8i>X!KqFnBGiJ$N380rtI5_1*1$`F7mCM|>R?Y=7NX zkkR#hb@jdJ1ROYYKL>p7)}ki#KD`NlG#QW<2Rv1L-TU;t=&-%Cy&HT1ub*%33|>K= zhV3~soR9Rcg8&kJzXyW8TZX=mu!0$X?`ON+*O`DfhpyI-v9D*FuOXIniOZ*VmM<6i z$Iq+J%lfYg5;@qfwyy`kSv|(Wo59Ou{nvVc9znI%x>;~n(R}5|4cIEP09xHGIC%)( zO5TK!H{KiHZAA$_XH};Q;`~ye(9j>%ysq2yf`JN}*UDt^^Y4=c$m`_fCb1@U7{Y=;t;dB=er?si>FOe*^W^5v zSh^SyK<#z5ZLU0I7S7zxj$c5t;ka8&hv}W!#Z{T98maE&^K-iq4;ehXwP?*v3Oyeu zy!Tu9e*#H-FI`$|(frOqKYLT(HG)~oP{`XJpvUowc&7`{wx=HvncTWyt^!MBRBUyVEG)ODfsfe&yV60^nHF# z_*|Ity@_$kbEJh|K3+ia4Ipeu=>2;8O(#Lyn^I9B@<_A$d={YB1BAQxd#4GwT?#m} z05>CVnL@q1)c@Ec`8-tmay8RD`Z3f45{xz(yzht1`HmXWrM0wN-is>3ArCmy9A-oA zU0%9?zJS-(XO_s_;avgCl|Ryx@aN6-^EWgkCH*)+lWv>Ev&l=@?FaYXN1vZc;UGYW zlUdJ!j`{rbu*uxqVdmG}nHHD(h>^n`Z#?Ji_%ubrups-=@i3>9F|ie)G`^Mm)^402 zdjdtm0WUj70tJV3%2-mAiPZ3o#zaAu7va(`FH_&6%_kjlMXqor?T<=IZyD?4qXuHk}LQibgZg@fUAKQ6NI_;;(;QE zFL=H3r|wkm`*0C?atJt%=)G4JdAQ8zm6SvgzRQx{{V1@eY9U)(HcLruRXAc-3OJNr zj_G*=Rg+H|k)K5234K>@#(#F-rvhFyM7~~FJ~~8jEEX$7ZYkI|WvC~wk9~S0BK65~mA8I41iXU2ih=J5jlas~W8ZB^_Mhu#*xrIj;;$r<>xikJml{Nq zc6d8Q4LAzGnIA^X<%9VM>)6U$(RpK_=SGgE^|cz#+MHWk-NugS>xP&To9;$fjtz-m z;D8J9M3S-B@v6w?xJ5&MQ8awOl8 zVI8&9syGQH$MuCwXH}!!_9!lKEbg&@Y_Ifv`ucN33*8 zTZ$J88(qWd)A%!$<`nodh8if3rk1TNi}p?%fq8KSB?g8*neqJL(q_CDno|%PXED$j zVm`$b9nCh4ZzTOdM2}zrWKX#fDaH_Xuu9N!wV4jv`K)(?>5!T}ICc8h_4T|pI20jy z|JC%gwGKUaB{Lrq>EnOea*3wc@XLVO+IdB@5#FRxhFeE5gs4GF_ zNq1pyh)*sZ>drY%79VSsGixNtWZ-@%+2;Wwu=rqXLV?a>n+{XLA&Z?ds9p-`+7tfq zO5|w-X9EHIkWpteK@1ZI7A!v%Q_0%8q2cfJ+ZB*eEBRr|Vcj4U3F706-%C|hh>k9Q z8FRD6_SqeYI6%Q?e@pn`^{gYHegGGTSjhc8Nm@oaqvOk8LR9`61X!S0AWl|BHwYs zqbRF1g04S2g{n<4jG zfJYR^zucF!;gAtT?R3dxQ8Kq=-6I)8nvYAW`p z7Zc3bmjo25d3VaT&%Hh3kjW+=gj)QvynjNb=hil41|Ce-6{$G^dCsdcSG8IWKUZd2TAPu?YHo+u*&5nUXnOZV88l?5U@a}c z@^a|o#g7h1;H;O5%D5z6(08h|-eT~?_S3SdM1LXAN8P<%zs8djHY+Q*b{J@|z(phi zn7IPjf;o*U^eFTRovzvC%YRez-Vx+r2|SH=Zl>S|BHn6Gn~R(HV1@gUXuK>5hDyHO zm-}L?@0E&0Jqv-(87wS3&umS0D8$oRo#*E?1yD_YOiSvIulF+Xxnz0l;NfI>tc-Qp zeDwOGvI`r@X+THE@gZQU4@cVvg3Q7`XcMYAlrTAq<*%qoj?N5mY0af)9tDDMRs(I3 zk}^5ShP5`>ml-rJh)(*jlXIe zB7IPyzOUED#o@6DXn8amo5UsqNFVhO&|xt-nS=+&8~U&lTGEM=WGrJgxmuC?IbHJ$ z^C1Hxj>(fl33ub{PVL7Ls^H?v9)98e*fvC-uz!`W2-oR{x@#eTBg;b{8Naevwkxgl{y&HS|_zeqpC1jSfhS81{3z10aWPt z3%+9nVKf+Io8R9jZC7=|>C#5x*+=nA+twSL2i&HO+!TQrw`|tud_NYeU1kg=)U7JE zttK^rqy!;l_*|3#)y1(go#xv6)0$BUmvm+!A@^D~7&aYRYK!y=fE!L$-#wx4R@!R936e3 zVcxs74cs%jq}~z;(ei(_hQ}0X!cAGPE6zIsulG@V6!h`LWi58UwHsTk%O3mAo>i5A z4!dNSfNmrLW9#K>O3Kt~gWZ%wLtVD~c-n^wlWC(fO^#B{z=2=|c(Zc6U@i@6z~{Pi z)l>E?%umR*w4_!)@yRSB=cU0zW2yv^K)`T#PR@gDEWU5hmt%B zSXLZ(39yc=GLMHX3yKI?(mK+xY`4egHusz>)c43FRgnwpno2UIdSm0xh`FDCh|)s4 ztu5BQ@j(ir?*;jn1H6?9bUTaqNRmcGWQbyz_l9uAg=WHqeiH;C(gGQfC#p=MVqjo* zl9qZFtV0Mk6<%P2%c-&gnaC-G=cWC{=Yb=8n+hh;GzKepWf(>z*TlxzkRIRrgNEF7 z4PJ~GR@3PfahtihtPQVvFcNKW3K%J9RFqqWwr{nP$_h~8Z3uwl~RO!@f z>+!7^|5oeKjM=}%pGkL7M*b-;o)mBk?1DJWjio@QaFdTSa~w_2ZWo#vy;MW8=vZ@F z7?7CnjH6+W*L@lt^V#2zwZBedsrPD_M*f57yC5lBpS*^%+baYH#lf!f`XC`p(!tUa z@U@-B;ANKGWu>DH|FMq?$;X}rYoAU|CWsrQrcKHN?LQkO%S^Ds8` z^s1dG4j)F_Y%*MjkT&i>XGcS7=j5W7lWCxZmTtctDNo|8QOim_uf9tO#m)}apOV=B zyfq=`Ik2rei&8K46@}5>KwIw3#qJ~gI8S=cf*vP^uqR6Dc)Fa0GKO=xV}V4@omYal zQ~^6{K-xYX_?9$hfkY~)#x%Tkw^}E(e2~7VkVENyiN4mERxb{Hc=yZu<6+3}mGzQX zd|-RKzrzLa$81XEiILBjA~QqD%psngM*gyW`8;ghg>kTm*vjZAH<+{~(J1ELs8Zd<1NgW|T&|K7xIZ~iQ1~A8ZQ$IN z0;qE0#?bp*OvCpAs&1g`Y$0E8`9r>z%>?H5Wq+%6=JfzY8ywevBR7qK0SwnBWP7D% zMs0OLx!uFSH;21Yt!n)h3EtgOddh46z+`C&yzqFPjoDKDO~B;ebZkL+#r>Ji<$|r_UF%m-zB27?{`D7vJamUAO1rI<4>Mbk^qq&G^G|*QKN|$*6pX)fG3Z1)qlJ z=Sw>_6Fkbf2%E3u=jaTsdWR3BBRI}-~QvE@MYF0S*N>MZY;Yj{JHz%{VVrE9B@$ab#HoL=|zl8-{bzXKYkr+EPaio=A5owf|PLC8Jpem z(ksRvO#z3v2-zk^3}nCKX5?^V8Xx>njpu}3t!BY+p}~EE`N!5Fsc9~KLWK^yLd@$; zCV!%HK4rwle^VjRM#)~{w??!UwupJ)kzDoeB#KL$SiD;9?e!d>dyulRcbc@Hgb6~! z6VuN;G}wYdR%M13uw_0?^#UQMU=<<(OI)n1xc4|FTCt{@2Zhg@t(0s9MM!O*5|<6D zoQ7+rm@vo!&cjAexd929;TN46lVZ^q-fD|oGSgy_Xc2l&e;sLStg|V|R!4@SlTcmq z(OWd`%Ls3I>_(xX!IYg2#}^gqq54D||JjOnxdT!$S*K<-P%34k&+-=QNx=RN4t8_d zIIq=$x*cwZ4{v9k(>xD+01_S4&2Y?B)hcxx;cROLG?(=!crLEK;`%kk^7^ncG`R6MfMA2eOb(d_Lk&0Dl5;1ZluX)9YPMm zq<|6lDj~oM90KiaeA2>6uyUgmxVyGlBVG6YQ5sgO4^<~z8vUV}ZMNcMFUFc&s~ZEV zF?4e^-o8z}PUvBp7Sl#E7<x-D9FI?{E5l8ZnoLk^EK4xw|R;Q_FY}QtwIIRVvVENUF_W0&v~rX?|8i8No7>?9L9b#GY7q5JrkkVw zb$UL2S``F9j_C9^xxA7u{-rj}&!MpKq?qbc>oa$3CZiUNGa5NZ6tXg{&ESMe`h(Zd z1EI6lF#d#Rjf({7Ehf?N`j@ARb;;#Bt43#s(&_bYTxQxZm^y@HcR*KW>XY zbr3a`CzCCr_@ybXGh>20!Q=_-enB$2jbMoV$ue`_Shmgv|M}<%arf=6fe90W@sV(K z7?z8I&xH4KWj(;iAcM8IXCY5j?rMtAFOQJporFPcOn$n$4m-MOnx8zdb2lDa-+ z2hI|3&jhZf7SXsaVsBn;ju4)NQAIm}5`>g{{GTE=5H_(JukuCGrOyO*X?v9j-|f|E zV^FJTR?rG7amdniJlY-1knuzf?fSz2^AMc<2A8)bzjQj7Zx;N^P;ke)xk@~0BtD@&jC9)*| z=DSqg5qabrTFtpn@~@o%iV%3XEN;_AcK9FlUunJ$_h$2N<@05!I#W8WaX?Ik?cQLR zFLfx_Dh|h=9-P4d zHfQsH?H{N5Ie^JKK!b6lRlJ;kl*sM{2>mwbi!&SCky~v005jmU1ICvQDp^ASV@TjT zb|oM+D^=BLo=wpVH}e%mBu(BY{7s4-M&12W90l-uM*?{=2sDns!la^lSCKu|=64VB zENb*WkoK#Dcc;nx=gHY?(s~jkJflq8a}nGos8z0*Ci?<;R?R2zBcU=+1iK9IC3znb ztDSQ@SI|AC&Eegp!r^R}%1kK@{I9tYuq5DqRsQ2-GRKMdQFea#?H5&aso-VfCwkA! zKMMJ&!(BTC4h;Kgu&9=r{e)I<(%jc1pYM%Et_6{;rk1cQ$Db(UlD7Mbn^@{A#j|Xo z$xcMSyDyI~RIF#rx}|YffAcU=J9pO&uB)~||9JnLH(h|ncE24Q9#*P28ii=V5*nz!$OxWhdkXq8!)zz_O^Ti7WJ$Jr=<^e&WZz z$Xmvi86pW`LLuG$EO=}p7kt%@pI5r)hO{^gmZ2xe)6fn`v6t|ioRs}%x$Xts6tq~VF8o!1bVqkOsLgU_7PandIr)X*PM$SDbwHq z5#^7MP&J#y(=dh~NN&%;l%Zr?ak~k0eTUXd?BD)UL3qe^AQpDRBj*cs293;>YyuU~ zNcgB@>-*wV4)bvk+F2fpl&HFVcqafN_OedLDaw~Rg`&VZ+C0zrMaUcvVelk6G|h4) zD?!1$MsVT@VVC&$p@c!+RGJTzLpPc_REI7a=cpJTIdo9V0OmOt+YZM@nwINBMJhv&y=6IQsT@)SFkH0N8Y}xN<_vC97D>0vm1E9B?zx^AZgWCB-BkJJv6)@j7)6z>K~Nd}{huAJ zqXYpY+}PdMlnCcN{}_*(frW}WZNB*jNlu-*%S1qisRlQ$`ko$#wfZz;|IpJLLqA99 zQHlOXF=2AiKGzLyBDLOuU{HLpAzbDGLu_#|bh)wscW7vP^_~F(w*ncNmYoO)r4<0g z+x{t1ejEol79)bB+~fwR^#=7RbPnkB&^!*BhGcV>a`rQiUxyq;qm{wYaI6OZB**+3 zt6(+j%y1As%WUd!@DC-?X4eA{5FBaC-;MSUwMuP_u&aN_ zr5V=lt3(mII`6x>QPNDxv%0G89)2e|b<-MtHaSu=E#six`-F@S$#4=2S<#h)kgG%&EhZ8JJj0|ovPC;bw z3u4z6j=6VYnnnRiKBh`a6$3+ct%yb17}#JMyxHG!sK;Mwc#@mwjzJl6tFil-9TO8Y z0M{(KE|K;6Sb5r!AN!JAzBBJ=R18DlEN@4Bv;SB8EM#*H6+~IKMc^CEvIm(T*+Do zIQZHgkVD<~#8yu}!3ygQ;UvF5k#-9aheVGj;_!Q+k9c*3lq%~bbVx>H^L+zcY=;*!C)+ri+9;!u#PCu9 zHtZ(}B9xF^{r1y<4SflvsEE;rKeP%wQpTto@L`DN5XqkZBnOSeg7;C#7crzx7{yM} z(CQ-6+@PnN(Pht_Mx8u|98tUe1ZCMXo~B2NeD%aMJO9DB&@yfD$m9+tF(3*%1yG5M zhJ}4|N%a0ffFr?Jr5W)xX)lr3ns;INk2<;Z+o&=*F+vPO*?1f5S?3P`muRD>F#H1* z-(M6LSf|oRxT-o*`)M-CqoB&RU&)nYVwAVeQCU7eHAz_~XnEEFyrJhe&RtYyD}?Vg zz{nB#UpTR05&m@K{wk;(MW;HA_7*!|dBPY;*mM)wK!*Oie1YHiX2W{}Mws{4kCG~k zE4BmzHy%HQ>R^`83N^=F%rVh2v{>Rk$@*y?xaJgyJF2VgHjEIo|-5nIG; z0U^akk!$^}m=mcZZm^R2+6vC3GmGdAlIqcwJfWJp-!K3I14V{U=Fo;#`3b1E5+iL} z^j-GlHm1%KAw|J;!o-InuuhCFc9b7z{XtjAa)Xcdp}$*$+zPDQ2KHm$iQD0$h*eIs zZ=7d;qWFf(h2Xi_OMjjNc-nUfLj1#J{PP9$ml#ir>?05MX32|Jq$?d60dyTVcHqFQ zGpjbAlTiw3G6SCWNPidFR-!ZI@R)-N{BV=7bq=@{dE}QDKX1jqL+96ZQ>hsnPB`G+ zNIH+uWjZ!gM#hCEe+C-dcfi3AMZN|mKxI2r1+rI<~2 zGfB>OB2$QCwgV+;f-AS_h!jfWH!jJd=@Tl;m*nMicm1bECL9*{AOD6)F_MVrk5ws_ z(MN0?MVc6#E$#TaX9akglC>ock-MUROH+=4GnEeog6>|Ohosh8yUN3aY;>il9nHKk za^dMsCma3~hJPegE)3)X{TL^{Bu!gIYSs7T!_o}TpIVK*h=$Rk&swHrj7JQ#*yuMs z3+Dhp0Yj6gQv^vr2=!s0VPI~B-4X{!JI-}#%3~F=V#pC@3o4b_qyCB+iIwdTcY#Lm z{vaC*61o!*H6||Ij%me?7M=b*yF%kHFv1*882NQB@G(q=?76;iIp6%lGcM121s zs3-u^h1oFnie!fl8Ofjdz)I9~Wn>NT42KHzIkrPV^o z;jEOdS%x(}O7sDRt)Kgi6PHf;rSL(T=EGv!cSt9QsKU#;Kyp`+Lkoi+c_%n1zl>rd zR@ActtDc=JL91&eD|3Dh(I{Tr@CVru$`cYX7YO<2yUJVz7|UB2qDy&jS~wzjCgQ*$ zjGb<%zM~N0AUNG5=>#cbXaFjWHo|kTA;E(G7ii~8tWjYoP(#Rm>8ePQf{amztgS8@ zNOdw)tiaQD*$2$y^HNlb->496v`8+xDpF@IJ6}ci8n9PC!+B+=N~_Tx`usWeN}w5U*&ebWC$<2>_ANd`iqHWYNphk*n(w zhhJo_IF}~=efp{tR;}FDBrNZ_br=9iGAo`CisJ-Dj&--BA|a7->M&^ICIc@YO-p#7^ikWVVP==EAx{@g#EArd{_bFDPjUKtcRSc0k)~rL5r~PJ?`( z;(y-Wr5bfue})m5S}RAuPQpq?#mLFY$jr>W9*+vQhphqLR=|*a^;d52@?@@*L|fu* zE|P(J$;>++^~q{CVPq6@5L2`65o*Y7ciGnE(kXek;6X`8r|&>@y|AP$h!R!(!{(Ix zqQ=~xacXj$-J6 zCWpddufAkt1Ot{V3tLl7>+&;X0xuX5*pH-EbIS~SaizlZi~U?l~# z=qNFKh25u4xvCJ?GM3_SH4^LZNY51a!Gj!-qKPI`bhPM)8Oro6-zFuElx!k~bz78R zml4FmQIZ7>|6V#^)}0bmn)sKK2w5&!b$2^z7O?K_N@#DjT?Fu}-b9y)?B=}gbUalQ zDMQcd$T^+fw`sn?#v75uEfNJ@wLe|vfOdSX+iK~uGI-R@JU_~z`u*)l;yEG$+s zEVe?k1yVZ;i{Beq{+9&o*xB+(1a98*9y=>BQ*?2*x;v)RwC@j4EZ~z=R7gObHxv4E+BtUp)J0@|d4>*_v*l%0R`CbsIbRQdhY@Xo^ z)&T6F+ zwtUjBa8Vs$b-+W^2X$ppNI*_ZOk`qiNYd6Xj9_t*f7mUmC3j5y8O-xBAQUt;!qUm0sSZ(Q$1(=(+X!j*5~} zs>Zj#1Mf?NrOl;^W$&>krMl~_TYo4Q>T&AHy=y3!zUy|BJ<$a5eSDgr$;=1hJ4p?*5y3P^K|)6IbUP`wX$$_YA@|o5 zM7Cv&H-Lg2f}ZP6KESlcWK^S7b&pM7VIFsJhvH}*!)u*Bqtfj@4~9v9fe8Kyc4n!& zdeo<7T1%yg4r_qRN_G~~uxT)-^(w<*|4_fodJ->{W+r1>BPw6VMX6q9DH#P(Pm3W7 zgMJ<~(#fGxO`M~56t=@VtS|-BL~XMY=ipz)w8oyVDA~Y6#K%X)Dd@s4%|ESWC;Npz zlsj2%6_=v2a`ogmjcP@m%jeC8I5?#_5l^bD{@^AD!kk&xsW-#6SqD~2Es^P*Z+f4( z)DQZ&>vuJk+4-*C_U{VntUoS%XJML3gAX=-rLuAeJ`i3$rTW)}KLK z(b&ep$Eh07tBfk^=sy(*9VIwENX|NwGSt7C6A@pX@e9UOlXCQXeX!uayYH33TO*|) zOQO>r+q;PyMn!vJW^Rzp;_34Jil6Rz_xbuP7&`7t8fCHbxH!G){P<357aaW8b@Kxj z{s$wg$Ud%PT9PJ&G!f6d2w(^*OfcN?~srR$>P?mT9T^;f7U^g8v2o8JZ|e3C{jNX3;^xV6_-!!F2K3=h48 zRjSW`A)ljHPXxRU{m*yt!#eJl>2JBX4hY#pM-NlaCj;FryiK3E7xmv%y1jmD>c|M# zo~^Nx4~bH|e3rPQjits6TcwE4~ee;ZG!nWyfn&dFq{+A23T!K3+I+E|2wi5hhXe6h(+e5}4Mkrq=C- z&DInY+*!CX37lc39Y8mYlba~oG-JP+WMQk=`EF^P_>Rc>TbFLpW<5<214jQqz3KP> zPg(t9{tfcA8HHkM{{RiUey%wBFKaf3dkWHq>#+1@+gUHgp6G0YUG6gX$1uX{=I6qz zugi7Q<4Y&bl8kC4wscJw&wf*CXpr6BaVr1k^`5!VbkS%Zx@L8ICIZLs=PgbVOUyrZ z4K^r3Sro%Fy2gJx7S2u!?g2Q6k&B(Pmu)M@og1ioVOP5mE;hd&)lF{BC$h5viB?rW zuPjBgnYPTndb-2>)fE!Xm8#LbJ(^H%7xtIaUFf=rV|@rUi|TV~7o>87JxoYh{2y_?#G z4|l65YZT{1EH@U^j$2{ZI5e)4FZS-O{U}+5%WWuxA|DTh6hD}JbYX=cXUoRL?5z{9 zcN;?Pcdbjt9~yi$SwnREgIQz*CtFdgvwNY-O<%r&LQzeQr z{lq_WjJl%HT&{Snrqe{1_5bJ&#!GC}-k9GwEJC43xq1BZtTT)6t;bc~g)xpIAf1nO zUC)8TDX2S~j$d4M+rWvFy}exttWrBZ<8qNNgqjKsRZ8PEy8uSCH5){0KSYIF!Zao)qB|-x4(f+%PP{KB zB#g;muh5Lam9iY7#c_Dk%t;wf8)`%}oe4zuAu4fPO9;k;hZcyNc&?~1JmRy#?S`Igsrb<9B;$L-)JYgs@0o=@OlD%dTTM>po_zv`+n%y6qX!C1j(Lg1qT17ZDPLpD|Z;o8)E=8@2x$cEu)KTf$A zmJ6)d-S3L@eTo4<2`o^=K+wzr5IN35i;O-9inWsFeH0_tfW-<&Rw?aH=`fa2Na;qN z0@Z#PKuYdq;;BsNyZ##*@H&C}!&{D=Y1~JCqzalIhr_{1b@SAwJ3O3Tv(r(eLW|@3 zaFB_>!-1>FsF@aXpFiS+vog#z&SA%>Sq@K?0-mDp_#g#ffvKGje3?bXPF3!uEgsT4 zPOuTSN&c=YCtnOyFrYZ!hGgkluv%v}Gq5xeCNo6uh_Ou>;_5gMA*xh+dXjg0IE`MM z`_25=fA+v)p_XbBC!Og!x>_!CVG$mFGnCub_Tu?iZ?jhx5FTc3K z^Qk?j8wB(<>J5PB2CMXaAP|$QuRpj#%G&(E(}ke@V#>7S>-t;xftwGogI_wA-ll#8 z%8MIui6^MP6=c8C^g^ai!5tr^Yw<3r2cf;s81yvdrM}Dr{B)a%)@XP55y?tIa0dIc zw>AnD1l;C07HK4?e>Wi(tk~JM?hQ*6q;Fm+u26x3UXSN5dYJQ03dc0Zhj0Y`@C9K7j8k^f4KxWmPLYM8wdQ{nT7OtoN_B4QmOW3}D^b3*1&b{*g19ki4FIXoV>`}Ct> z8qH?5p4za95edLh=ldK=AbxAK{U)NvW0`*>dJS8VlzTQ=qS0HcDYjvs^Y#!SWz2Bt zAn$xug!2+3x?ymuY4TzZEjuC4D$jo;FpCQ2!W21J_Ym^BnhxQSht5K*Y5YYpuP>E zQ73CQ-D{G!r0Tqw%`L28VW}hglO*TY{qtO$42xk56h7$HC*B@&1p8Eiqqu`$6PCaR zpA;t{csduli4TF{yj)4!4F=sdXTHG}v10#=$pL$LQM?#pP-`&o=r4eSP_wZ)OKGTc_f*SNs*0pfjj@7mVe)7mL=UP64tU9XUEr!_ z)XF=ZPJqJ%7tg>QM`K5-RT0bzLheEavX!F5x_|F z&uZ`?du>*<3Xj)?iG*2G_C!GiLeXp$+?u+gGg!H{ZLwTAX2ex9Nvx0i_{QV#lga;v z`@KPbI7;`EbT>IGtJUJ9G3W=ap2^DX!xJo~4QRd$&kM1dL;)9@KUU_*qn0T)_nlqm zcoNm#L`GqEfJZPZvvLOR%tv*(%KZfjb|4<41qIu87tmm4?tA&H=gE-q{f(y%Ok zKJ3wWG_~VJp>7BI(WVLdkL1oW^mC{N84zhY-gE8_@QM{*m`QaX5i6{&M6DjCGip3u zR5X$1D!=IVmgHEPZz=G5mO1v)i#I>;bz9AnY1qytP8?}#P8+P}wQ{F#vAze*pa@@j zenkIrnIZw(*q{oVY_GH^62CM@t@2y7+RDPp%1TGa$3@1*#N;u9HM7`<`)p(u zC5BkN$0u9U)1^$Axk{tyHyU+PbaeFO`1JJD6tCmqd;P(g$%K~O`4-A6beaaW=3dTt zk~l~N&;ezjsue0l3Prc!zixtqgI74)K!^40YlY2msecj_G9c$^H)^Og*#MY<>JP8auKy$z4Pf$Qv%jm_i+m7w#nu^kGD z9QJ(WWN?@d5x}H0C_~tzxbbXuyt(!~t}dl2S1HwjI?GO{W+!@r;3~O-P3FyIDZYTh z`d;eIQe&Y^dopfNfbe?b$??1YcGHFChP`JCTUF+dz-M3&g>QP3-R^!m*!G?KRcBXb z>MJ22rz=#Y@*N6ncxVXL=f3)kOIx{2p$!O31C?h~YjoYjzKpZku1G`wMp0JLV-Nu| z9xLW~yw1ksY6RufXzo0oPxu;59((=#s@9wJlIW20I~gfWmZ}8=wI-8?7u-)U2H8jp zHL7n*IoVWo;iI5`cyx-}`*8gh?aVi)ZX1NmLGn{Y5-&Da%aePo)=!Ukp39XR5r{HU zVFd3$ZM+(5X^$NtktNVN`JU}=Q>r}8LJeP_jdMJ9yVOnT`NNwR;t#@=`JfB@xAIr8VXT}K2@Hd z`;F7HRHmryy2eRc+r$KBtmD^y8gOQdFoQX$W)R>M;{W z%lZKPZWK*eFBl+zmKTlnFp7UDvbN z=VSE|f!E`F-y2*P*mdS-N9OImk+HXlx7ld!{U+6HwZVHFFE1LCgV?NLpwPc&%j@dc z64PH4ELb9w?S1&d==;$Wf-xZchCcuF`r)5(vb?d{Fz#vFBUi3Ole>7rd}MpU{Cu5f z=r`m2wElW~Je)2dE_5_)`gr;Fy!jDo-QFd&vJYw-xOuax(vSP|V#D=0-E?cU);v`1 zlf5!~G)voVZxW%K<30XyxzXsB)0MBl{4S?TgDvM~UNq%2i*LEp`D)GfjO}pJG#zA9 zuKI3|fK)1w{5gNC2L_hLWG_W=c0@asJ8iX8z6@Iba?MqA|3!C~C&I>@r=5xl{MUR) z6LVTSjqc5Kwk!WQDM->AYIO}|wce#<^MvH(dZlc6H(PFALD=e&Em?2*5*wa+>b{+e z`}XvJoZ^1bUgdi4+gw{avL|@e!(AEs;LQFS-t`JkMJbnIcAKPA@>pJe<{ZIVw#SaC4m|Sf#QQBnPxAse0eAB0V!nh@r)YOzp zKBXVcLtroY?^nJ}07`Q3-tHzKjK=AhnLF$Y##8Cj4c^XQFOoxmq@>ivPEkg-ZO?MO4RTqp9ytLvlV z5$U?`YiqzrsZr~3dTHcKPR*C$JIQ7;Pak?nlzKKjyV4^bE2 z@_eeY?f#7FPs{_YAA>e+z3uD+G;Yt-Ap2~oiq&^>nXN%K@V5#LyYt*yU}z_o=M=F| z(bNpLVd$p&+hl#^?N=euK7zV9CMLUYyyqVP7$%~-x4>nkv7Zerhi1Hs?ASS%QP zv*j){7MH4DPd=eS=ymJxHK*MUN6#KA)m}G@l~+`|Cr%5O)ml6}wzzZF>y6n9{sI0( zvW0kFp1d4d%8oLXl-U=wM;^+aI_&ukgvMwF&~e_n%_Q)bEHGwm;Wk;U9M}9+tnT>i zCi9iq87BM~Tpa&e&X?ZOV>q_Zm!hQWW?`03k@xDn`^8gN$JozK0QPUbsjBB|hus_Y z8z8%XMElnz^e;NkyP9c#{0TnXgO=&4)X8#oopz7msV~c6+s9PZf=x(o z^hwUED$xdjHBYkd@tNh;G~3Ef-6-D)ZgIL@K&XPgAD?bbvpGV_Dpyk9Pgqd$jC{jJ`WU=R~qCKWcjeY{}(IS zHJ-R=_V3)SO{Rkk3=Ebk-$(0^y!fsPZ8t4^t$nM0^+jQI9bM+wwwwF=gTE?OY24(A zikLgcm!MANj1nP;q2_Dk38`nUFy|>08GNx{bm6z~wcF3jkVnPk?e7on@BevQ2TA0< z4=X>J8X)hH=n>TSI1sn=T#x7a$uH0Zkfu;JVeZW27n;P{FbFr=P=exyg8+iRvwO) z=`zogK?r>_>9T2H)HedM?)jEh*pSmN&`Bfx(O>FcC^!ZM#>J_M(+_)hMjZV4Cr)5Y zS=iA1)B0?toKvdO26h%KxRv}5L+B3~nuk%L;4>#{g39R1Gj+04E3>(u40pqd^P5O< zOOvFIa5m_Wbx4F@z(w57GpCvB7Gh9QP#o{1m#1geHp z?*Z~xIQAL?p>PsXh@R(0>4ZU>UVG`5H62iCNJlxSsfZxie5qFdb;;VZv|sSyR9V*- z0QeI(6Ro|rHFI#vk6ttg?*3}@Uh0C^s7DlDTdDx!Et#y= z*V986_hP8UEUH{!SKWB|z$jc$SBYFre_Ye)px1{JE+=3IG~*0LtlCqGUoMw(vjX7u zmPX0^sQLpP&Vn`wE%K#7cFVL4ZjZnx%M_akZCAUSW$9(nI#W86Cqy@Hc<`C6CRhI} zh#Gr=)77EKJ7Z|llYr~JMuncnX;FgXs;22cqGl7sIssM5#%gCw_+)#tCU* zQk>9>G zj(`evozu2`{mC_*pEr4d!wdp#^;83)ybiG{5iMPF`-GjZi&moQ1q$IO1r2oy`-ojNcKJLVW-t@Zg#&5*|0e$ zlsrNB!Dh40col05O4PUPHQD*pYjT!t*Sb^D{jvCcNV9w~(9tjW?MNvoYFw%;K-~ZC z7vHO$5(qY+VIrfNa`Nebt>&hL+w6Qtl%!ENpd-^_vz85tTuW6M*L7rz6{=lLrm5-; zU!=aP{IAD#i6DV{t>??EB&G_aFpzz%o91HKJ$VbK$B!fu^%qG1mdZ!r{ULm-y&jr= zfz$|a0poGfSj@-ki-+INaWx2J_kVC)j*tDilFOHy-nD0Ns_eGpaHErx zle*1b8|90cHm#o)uj|G_e7QA(A6(onm#NuLmDRli>K8ycefjw6m!gRB0q3W`y%l*# z-m6j6mf^d*2JXS2_(-by(B-;)-SrkD*Y-UUY28`0h0&I$%0)~yENBo?gs%X>kWbIt zlV)HiYY=U&Osf#9f3>W*uC)6RPp|O6{@EoF`!Yb=vi_%hp9h|B0_>oEhhw(7RW+g6 z#E<|@xTRgN$qj24LS^xkt6*;9d?y-4qjidmbV{z|uWoDSt2LfrGXS z&IqV83-ly6JMR^abasjHEOt-+jpl~5T5I3&0;LQ<*utF|+Od1!7)~&(}AFh0jq@Rtn3|Xk$#lUN*--5RHn{{qXrR z)%D8F)xCbLFc|^W!|v4i%BIk2hG_If4%>rBF)gbc`n!I z{T3Xd>-gADv&HA^Iku!qr|TxC!;|k*?dw;rkExa5$m!bG=FxKXhR`2+Mn?V1b5JWM zgMol8w}(;n2K3W21M^?S-cM(>NLTSJx!yM)z2Cfbus%2vi$$W#s}24E4DM#cqMG8J zAGL-Y={vQXEFfMX#z1zfaOjt`gv7|m$oGMZ-}x8ZkIom5gncM{Z#JN~6=+V^N`71Ka^ws6*}ZI;;V=4e+d4qBoYS71%pyp|60p0yFW+D|X=pd0?D z=GX(n-=wYznL#prg3+OIv}bdq|5D1I_43)iJx#3&@eK#A8gd9~Nd}d;$10lPPFa$3 zA5;n?X8||+>EF2Fdv%Q*RSQZ>RWM+ovH0v`GSn} z($lc?yYtkp9)s9!BP1V(*E5_NOAy#?|X3WE5ijMSkk{NLlfv-JfOs?fd7Fa_0vn z8biQtaMdk5p7Pb;vVm?WXi%y`gocXx*!4m6dSt&>BK2&BntS`{PXY}M9WBVc)9`hJ za?Df~umLWaOMbBhmtrn8}8X$NMU?9 zks*&!Zd`{Z+8cOj;6Qk)=sC5bUOUjcO*zcF_A(D_HASngsmtn#CUj!}OB9RsKlF(^ z*mpP~(s37C)>NRG5{V`;#47NqZlD3(qw26Cc*1>f%uWu%ysz)zUsi7eKUW<+q;%R= zVduh$O-{As!Mb0GqOx^`ioJ^(*V3K){+Pqn(hQ-8XE6c|C$pvvG7|Jw=YYSme9GDAA56dessI-4z0myN}8b-TvcGJby+ zjNu*d#Oj|v<;LgqtXte*VBiHRVXe&F>U3Cyj0YBazweCP?CJ10Jp;#*aeT8o%w8hk z5cnSxCbJa9dL}h9l9Qz~1EMosu16m)`0HPNE&q&ueX+`y{ zvS@q>Y5UIO!{2XeW*;$bl_)N zhX}E-pyWTY_*j=r4gibjFb>|-Sk$ya)CNxrrk<`gSEyuH`@*B zGeW^MpUMAHITP(;`=Z6`szb+DdK^94VyRQgg%U?-#0&#;RrB#2;&4z`2tT$&rK%AGG_PBW16NO1>(1ND zoRP&+naSD7h9XWU7v1{vG1beuBwkv<(8e7bPS!1%)c}Gh9*6zsfMDvLbe_GLJVOyZ zjN-sfj@5=ELZ*4ds@TYPpJEr&sVsJ{X~?74Z;u{4Ly;JZ71~4GHb)=bm9_uE9u;u3 zpXbK+jwU}6#J4^(4!K<~!NWyaF$X~jBh{N#=!`YbQ43iVfBJST-%Coa0K2t@?a8e( zlXV!QPKOQkF(1vxB66WOS}ZYwIXVSGT7tKlJ<05hcF5zUg5l9JNWqIw;Bfl2RoTfzv1L!Qd@SkfH1aBJGV?D*JR%td>u3>m2F&}6EcAPOTQiR6w4f9(g6iwHXhldE# zV)YQBqGi<4^w(C@CKpNn!hp-tKXmF5FeI#u1LMKQgiKpjl{=CXXIM-$|-UWWT zK9s7~q)f&SVQT(-Qsy#E4xaj&FsIQ2;D2W&P~+&Nu<=} zu?PkEsC~2S8i^rezFNpf76R;r&E|1Vktj&s(A_sp$maCiOw!IiIy?w3uVK~N8*+Zp zZL!*je#p}sma5yOWM-DENbBnhc+qsZSTvbx1NUEi8Ho*uxX%Aoww%+bwk(z<{(kpH!ek+lCV`rO&GFg)T{- zB0m(4U$Pd!mWY$OtADDoZAZ#k2Z#S7jOGUwJg&=YC}QYj7{6v^7o;q%gWrhd4Y|v1 zuRh?bH=P9XjO?h67OF~yMZ|_7XzZI`A0Z&hP@~NMd1#JfxB7ay3WywQd=o=dfSr^H z1BS?D#tIuWccz3<9o^92$SBJ6SI-#;U1revb?~0Ezm{ zK8ru);ymSabo`BBNl4+5Xa3?Kl9H2O$8v+<|4&gK=yK7Buk7V*JL@FUu)K;&j5_n+ z!XhR(I+y)!qcdivMue{iNU4tmYJjwMTQs}q$exH{iMA-Gx|dt1TR{gjp`T4X#Rspf z^O@T2!OFfcVV&s`2n7NHgsMq<^U<*ro4mz)`=pUpdc7gvkjgP2rYv2&->(NUhBarB~IaPDp^Eh)Oe$d{n69z1frGd?mv)8ZMsbxnPCZ`@jc4}3g5wC4-r zaovp9$b#wMeggwNRNsXwuPJ4m9wPrckQ$V77o4{_E&j#8V^g|63sZQGaM|+V`}de@ z45=^i<64b}TBz6HZwv>GiVHG4t_i2DY+s`VOEFh}1XV6mu<(BUH9F3A63gm^v1d2! zJd|f6`?IaW&zlP}qfznLlt+?-?0bS8_M2n2d8H#8TjXKSl=l0C;yIK_CVNM|)(exV zOs?rviPda7`@9#Gc(^9}q&QmFW?>uIxxqi_Up_`NcqF1c8am`-F0`# z4&pjFvwcvH6D^HxrDVR(H%~{Qb(d@GI^MgRo}lvwwuS}|+HDit~}Me(sSqcYiC+`gaCak(~)?swJf!#*#&wSo{3!Jrb%CigR&IsjBTqX5m{ zv$@&9^FEP?EJ>YPbqLtpoC{3S0x8zs+kF|s|7!x{*Iqs8`Zzs`?D zF+&&@F|@ zoQ)d>If>UjY@Ng#Npckp)Yvah4n*oCMwE+54^|p zX5hUUx^fD^S%1)X#?->P(uBGzFXa}&7Ni0`V7FmzKCqMJ)PA*RDzVuwPujnfAkd#s zPGcrI8ACN@2<^98e@8>TV;Kwjav55vo{Qf=f4+JXf3ARA>UAz*v{C_x%lY(vbRBau z3@tl*Z%?G(-2*_L(zEv^2Ixkz5$Qr@`s2~n7Q=Wsfnc9%8#a--9k z9r%lQ`4L+A2)Q)_;b&G0dXySX%VWgX3eY=#A&pNFTTz%6nR{{S%MY1I6G!5KBwE|v zgCmU5pmy^G*9A}}L0m5J2&`mRu)uK_+3y?ToOvB7++R~i;YPaH7FcK(f`d^puRKzA z#>2V+z007^R+xuke*Oa*mOGJd)eYNRpaQ>=yLb;iExYpeo{#SP=I(P>;&!d&W|PTr zczho8`gIL&iu|ny7U5jqu&@6|(^m#G{eJNdkuCv|22l~DyGto)0Ricf?(Px+C8fKh zBuD4y&e7f7qepJ{`}^N}U%@NJo;c6>#5w1#|KJkPWDrAWAf<6*yP_R=zaHLpw6TRY2&}Y=e10}}8}U9(f*0rOL;9zqY5FMlvq6I>GbQx5eb@CTK2bb>_ae}=6-Rcnd7^-FNtx6& zLms!qvf?T8J4hR)z2)4~u5!5!Pc=z8`f}hNtz-+iotn%amYbr#*Ls&Yq+I1_E{ikM z)r2q^At$*B+n2$|e_5E{M=kpaZG{n}#)~5K9^qM{7!S)g)0-jj`>e5{TGMwvy-52* zgrl1CCS)O-3ubgI?s!#{y{GH;fz=VzT=i(w`5uci1ZGgsafk4(4A~*t-r!VKe`H>H-o!o*D zZf49LhaeBMe9e5mJ)u$~_4*gD1L1v2+YIBFxdj2rM~f#x)GaqlKU+l3Z(9ckyON#% z*ng&9Rrf=SM6vz~?s{x?o(Z+cq6{AKeeui)pN0GV*gNiONdq8v13Updc8lx4Yh0w9 zetono4S+_QRagKDIvDC=I)_hyyT1e&cHd`PTP0r0d<=A2s4fP?R{PoG@KCLM*rMP1 zHUIlE{RX#_Mb_>AG>-q&yoRgB=-)qnMMcTUD*{FBvBe5@sSc`TCZon~tCwme43l6p zi@ld5B%Jmu?sn-KV1u0jLg)O39laSXLn11vO4~c{71`GuI|vC0IJT-87d6`tYuAHi zJ~}Zr2L70HeTcxLvDkTElrSp-uTAM)G@hzjTomUJ)szIl>Mzz>`2VjH_4SQMDfb`US4?gsbP#I>s6S(fjIYZ_HvpTypRhl*eMJ zc=)Cpf}vA}b&F2i#PPy{d0_+(<2`T36~gbbjv*D65BMmGE&8A3JYmE{`R{Da8IpfO z>a^({4i&7uc^(N9eEYUkH%2yyWKkVokE{TlaI8iI_rADOxJ9F=qBZTM3O(Vx|PJFb=SLbh-ZjL(5hVsh{&bI(n^!_Yw zuvvFHa`bTODAWmt&#wMn`u)6)&^v!{R&>xV|CPsySVvjb(HvO4-N5dBD)eY3pEeKA z#v+N`Ff_}*pgx^sB7yR(xm>e0#gr(+_diUy--PlbWlD;O{f3!7&9T%Btj zaDJ;-ytvk1JpT_Gkq~wP!PK1F znE6=0gpD{*Qnn-dz-$X|-<5LPR)T+Dr8?*wAdKVMJQ&^vyXDPjcwzP zET@O^{r#6PnLnJz=G zYN~C#8yd^!fzYhhFP#*{scC5t`)eq;_3mIWzDU>&V%_1_8dCI;f&M)i^8!$w_?!=0-6ASOZ7*1y6`!1BhVo_YWs4slos#_;c(MhPgkBsm$yIh zJi+ajZa@;P-gWm^hdT8vEuR1J(+92z-Z?=oUoh2m+&z2RKDPj4afUQLSA;m1wtXJ>G$lG^;5FHoR1|NNZ;hXw<9>)s%EH69VN8UXUP{}FD+0T}J zgxgc!#Y_6%I??dznMwbqF~+ZfsCK&wospVC0E#j}m)M0Li^|ek&m#tVb*N~F5i*v) z!JEj^mMYhCppiWXe^`bB7J;dQA0K@m^r43bN~}UIv)O>gsotJ-i}NGMs8ac)w(h82 z=gL}2?)@#$s8c`7U~4&KB;$CQW<|KLK%@FAhH2#pN>>WOudVb!A1QOxCDXJBu&#CK zdamnyQ-LFb?NzQ_*Ee2SL+PEaIX+Ef6||~ z#)^rdgkgj+*P{&Y+fw_YxdW~)NA9$EKGWW3bch~=19e;RD(zUiwz9{%oSJ=PIROg@XoR1lH0AuCFi27u=q1;tht%F6ZW98)@ zHz}K**VDCD4T1bGT1P{NbVZInSR1l#Bv0|P2b$vwv`DJoB+Ahpu({@~kNx8U8!o4NLW70xl-iLH+T9Mo$p zwqlhJiSo}e{qMaHzcymd*4!&J%ZH{^RxQ+vA&?)%YY3)s)<^ZPzpF|4%GY;8iaKLf zq}Tj5K54$7#Fj3^SL{#G_vIdzzBXg(^iGz>A;^`WQ_Zd}{-eRud34Q^0yk4Sxx{^-SR`MyRW_djTGP8&0zjXHwMiPpPR3Py)Yn!7c5SxHS67 z^U*gGYT-eAhIoyq_YcXeS%+%2j(`G&jXlsHVmoB}5AEpmPyUxAq0i1=*Ug8NXSX!@ z>{buD3cq3Z7SoZ~m-o1+5O{8$x1?fMRWltL8tArk5CaWSgk_QVw$^HD3~)L*50}Sewg0i2)pq$l@0mjg8X6n&J3iMs&L+b} zH}o;>YH}eTxei0W;VyAS=*c`NKcQvw$A6KLnFWN*wR%7HEw$D<_`2Ef9JBc*{9z4g zG^u5X{El}-q?!6VXf|E;&!io0EjnN!TstiB2aLsPAG`qLHb4hhJlz-VU!zP+H8xs2 zknM9i1d!t{ULS~4*7G~8FaXei8vZ5@tL|NaH7*ZGC_t=6vdBmO_b8x7+Ag(e(LVB- z6^3elzj-plH$r^;x1>a!qP=??(~dWD{O`~^8lWAvfC_F?1lD0cZvwQ)IZt{Gad9a- z(twKcA3M-+Me~VCqs6@r-0o=yi}sStre;hRCH-Z9gAxd+`N1@Y4LjN7ILO=k=q39L zPf_!lVb?Nhx?$w}+PKP8K=O(pVhh&e1m#KUlbF)v-bTL64~+4do%uaXX1TNw^<2H4 zM1YF3Wzea|_{l*^U)tBYXXB5c2Hy9G(fpFCF{%dFV$j=HM}0(eKSk1f3#y6Z?+@ICNhOsz;f&7me22!#YYSqf7~TzOqyMF1G^8H^SReMH+FT;V(1%KibL+GJHW8}z* zX=VzKwMHjk60?)(3zJCB+b5LWq{qi+mlldEfgf)Y0PhXtezC6zx9bu3Ch_TTKz^st z_ZkLLKkmao_TQtpk#rlaDY`z}ySpE}ysu`-FZ;N!PJr+O2(TL?$^vOCQCo7cj+PDD z*t1RQ>E>E|M*hH;I9_}*4p5x{z(Lug&7xs|a`VQ$dv$BtTUq60&&%!uyyhsc2WD-C zH$MT9@-mYXdb%VCTN*UAj!@>;VikN6Kb>16E!&oT(dRi-yWr6JM9)o|LjsZ8#R-jQn z-K;bPEWtmWy3LBr2U1ppRzPZ$c)c&bJaC=g^RqANNME&G*?WZ|kts>ogUuB1_5l8- zwQ94yI~?ttR|*umO!fY)i%}G_tq}WB>zR`6J<{V956``^C*ArJG4Ji4`v0|VQ&{4q zYjZ7%)|x5T%>%^2pFbPbi~dWvO>Q!JWuqS{7oGtWmt~&{EhlM>xoR6C{p|peq;kFuE6Zq#_tROuJbLY{SYlN!4hKl}*#>`B+X{fAtZ+sR)WA1$V zQsjENA$!&S6pw$|{k%X6tl!evVo2h5r5l67<8xCMjKA!Ie7ae-0k6Db)j8`yXXEo& zMQ+DS5|Shl9p)JtSTKfRpIzv~L{8!@vVyX&+S?m%^DO+EIC;%;VZIM#r0r({$OoX3 z13nM`4!RiRUOTVgR>tw3?M+7PWWoe>A1|YI*;0hHOq?$=+O~IKty^OchW>}Y*KQ9P zcbXWKf+bVaF#7l=;pDZzhk&HO)$sl`i!mDtuJ*>0eEIUu{ z8{ZDeD{`}r9_giSE!gBpY8e=%-rH>oNNWp8xS(U8TM*#lIb6`z+iNv$e4YBiJDDZ~ zvHG0lwf(VO%+Mnz+v7s_v>j=Tx2Crb41)(Iu`K?UFFH5MWB0njlODnNmc=)8c!b0*?M2)CQE(Uyl+LDA!=jkdD)k% zgh7daHPPQnHvpNhXgHH@c$G@sFYyxM)_rh2X{S!DpfX`oPZEVw(7{5Ln~B@t{Jd36 z2O=G@TH$ti;Sc*tEP@lZ{Ukpt6oP?;)&;3yku(U3#|Xw?hVjPiWC!#l$|Uuy`^o#I zh_q$ABi=}dd@b%HP2^}3mfCv}Ou#DXekjd=gAqORal&SVk0wyq3+otN$A*OdZAeVz zI}-Y;Gc%jc?HOK6L&07{EKbiq5b&28Dby4=OGN72y5IU{=l1W;WX>I zHF9+Qzu#$}b(kd^+8oY=(Hca-yv}kH(_Z=QJ&3uiHd(aqy3y*in4`{?1~eWonhk4K zKBuPS#}9x*F5BHsk;;nOIW(f*tXy4>nSn7;T5UIZdsIHR{fHeq4BA=(y6uXVWJ8~) za{6|)utL3TZGSVM9$FQD_=rW}%s?h+IN}hZjn3HS*g{UB|B5wAZ`RDcW+>}Nr(`5v zfz;xtvoM*4bNVl@ZcPdbxh8wUm&HCPjd2q59i2@`!lPNj!^i)|Ic`KkOA7m->Aj%SOEFZGo2G0KF>5M_-W=YX z7junyT~#ML;&a^Qf*cV`vMw}kQu?Qro;l?QUwEQ4eCpwEd*Y7PiGIr!u(~eZioBvl z+;(Bmde=64xUYc%JJvhOayLdLCDV7u(w`;>S~VW`XLVtBJ79L3*cJG`gI3v;t9!k1 zqrzQrv4sdwd#D()MAqP_ER2H6+7cFnt2d{#%)OaNalN>tJ=^1~u@uemu-UH0jLx%2 zSWC51s8v>gs)~xb@_VR(#w|POgF|anL%ZQdP*CVIILlrBX7<1DQI%BM&t{_E+xe2J zdJL4r|G?8Y9OcX72;O)X6m$do8#Om){uQe;+K79%w;S=78*$iSHhg04eR#op^gc4k z-k9N9*2yTkN8$*x-g%jOFZU-n#Ha7N^5*VLUJiG)D1kSS9oA#}p@0}3c{drR&GGGB zNiFWHS13zv(Nk{7=@GN$veK%5-Zhk;+byVXsid0UI~Hr0H_Maqi$* zEs}zBm(;(jyTVmv!qXw0^}za7&c%PaK!4GE%g`tKkf2xidn~W5@eZ?uGbZ1BwvbWV z>}BW#|3iA0nyO&dEb&7%lCcDyl)2RKAL0wIsKMC`;e{qheVtjVlba_t~NTe|F7{ALHSiJc2 z0!9U$UbhpZcCvylVWMY4^3h=|A2)_Cgw&rG_xfraAjCZ{leoMCYpI~SwmxrSI@UYK zv|^7|B}O#4?>@MRNy`;?3ir;YHV_q+)E3n|Kh*fq$y~aaby%BLq*nG_!B2iwAsmsj z?baukD>}^8iIWJzh#uoBRSV}`)!UoFX)Aditn$fxCyQSCt=Z@iRqWQnS5Q*_{lyKX zJgG#WLDVQl8D=UcsuiQN@=SemUC7GmlIO#kd~!5DfwN9=7sj4jp9nHwM?^@0!!yry zRIT;yy0R#I_;0k1YZ%JWy3X68gqL!3TN)4h9N{lh34%M;BWN{Ea%^lN>1^6tz7oX- z>uD7^-mwJji^Jdtn3SZ>a;U2`8!nF<)s&>ZlMNAEPwXVuS46t^y&C_UU*;nzh!_U} z5?SgC5#&ZpfI1}IEY~%5V2qw8##nYFs5(tE>*&VgV)Shxg-!hEhZi*zK|%IIL;VB+ z@N)G4;o-ZV)xdJ?>rWNG0Hf;hffNvq4!Rr|S6Ia!GasNdYU4R@++E1g*OHchPu zi*~u{tBa^Rn%C98<13;|yEu(CF>km>+{lOBw-{-H^|4TbZc<7WBQ2%0vowZ*N0x zq*$=AzLf7?oLSC;cM<&NCOR_OwdNTfaZV$tl&_6LNLTsTQKUSLs%AUIFKL0(e}oaC zZxHAAg5LS2G_xpQ)m!+ds7SLF8yT_~Q3E^Pr9A@;t#ILOJrhMF&Um|I10547KV;yvBgG5Ov&ARig~k23B%swB8Ct?yljq06+oE=&3;MMWX~+v)Z)Rb#hT65XOMG?*yB_P)r=!vC<+G8q1XDvvE|pfF0_ zhPp8AAY9G1*)}?j8uesTp{LxccTxLQ;aln)9UeD4nQ20olQ`9|A-f@&+CR^VavytM z=MTwnjGOsI?t@{daq6PNOP^ZEiCFvGIoLpeV`_ffJPV zbZA9=dJ628S2se$yJ)PXLt^Rhd_(uEvgQCv;ZLT&1*~lC_Ck`!X~l|BN25%$WVp3< zMfk5Tfd@d)h-kmtw3njt++LY*>8>~jn6Z=B`&r`XQmBY(@pP(mBcX?byZU;re4JP+ z$MhKa6hWfzPgc`AfxUHg!M$cgq(-%Yxnia2^d0#?M2>4&zs_ z>4Rt#w9&)5Abd0@Mf*YKQYfDdVUeq=JODL0m z7cs!R8C*FwfxW2k7)+wHAo6~~ky-(3*0g4{cwxl)BLUXFD~1=IrUUFMHnz&{?b}2I zDDT#6+EXh{oYN9nty~RSTnKvI<(295CFdQurcY~;0yqkPrj>Q~Z(CT?wWRewT0MUm z(SGEuKwWs7EZ=RwSUl?n;cgQN608wK7s{==QY}MFtr`P0Ac+TGImk$4M^eBaN;A1^ zspoRg|Me}ti^?YZ_GUbC^ZMH!c1C-q+c|4>I$aR%O^px=W{g!8`TAJORNBilj72sg zge;a>U2Tox>+v$-T%mW0JY8DW2iP`!gja?*2Xmi0B>s`@Cq!AMSd)FV6rb*onTugz zmPb-SPnhw#)w#i!+esQV?U@t4q=uWhJfyw0;@WS=N1rP#n!AsG*K&|*nYK@RQkoo( zE|6&54z0~)q1w5Y6>Tsew<`vT z+@wb>R>56dFs41MbX&yC9dz%Qry|?$YJ1(*Y)gv12(5NolX~xd@i&`dC@f*Zk@Vl! zYBwt0&%cB0)vDaXyH1QS7|Cb!V)Q@$+rbZ>I3}!V$DKRLn^=<*D@uW%zO_2|{qYU1 zs|U0=JJT+AMUha@dPF`IV-DpBPM^f^L9~40kGp7A)SoFU1%M!4IYzSutGjq6 zyuh@_z9aEd4G*=uxWPjP7O5N|VOnDKl_CQaP~~<`V&izY>vk%z*AZh~(eHlMkkqD> zt2J8D;Pd(G1;tAw3stea4Bq@&&Zq?{~gTK>v5JcSm>5Q<$XcF z0dJ{8a(?=cd1~*%!smCB8J$6$3#gLa>1hYjf+5!tu%2md&)oInqCOeK4e&A zok|LeIf4}N$ zUws_TMuw_2_ZzeXoOQ#Rt~Qz35G!VjsL{e3^Ge<6_Du)%O_#gAyO-IJZFsVw^TduJ z;(kv{1hQ#kC^)y0k%Z-KD^VoO=)F!R=kIv)|B%z7FGzbLahjpZoMFj9C4SV(;|2C} zsU5c)zvMza#X`c@5`kZ|u+SY6%7o)APP%;08!xKKUWLeZ?{r=Uge3WjiO|a2(x`2S zDu87O*TJGXo+f8K+gK90$LB$u{(jZ>8bfL9iG3#Zp2OMs*3NGBvOcvPv-R&!K+~Ee-=N=z8b&dfX>P85Y}+r5!%yl%n*ZKlN)#Y zt$)OTTt^0sTs{sP-tVUM&zWhXg96&GqZzV&!$DWjWAUr;;4Hu839qbdWB@5q9EwB| zVfoaOUHkeB*l$6)z4aw#WK>kSm+wh)-OQsUpS@Lavp9g~tWq!c#t`47#vQdigdg=W=`t}TW^=;T|w_%v_bX{WsL+oBGmAC6o&$Q$(Eb+!hh2rZYk?+go^P zp>v~y2;6t#iP`RK`_Mbo+u6`#ucM$dq${sx$zm)?T|YTxPeHUl{y7%CS`5wm*L~s3 z%fI>PDnZZaT+@~nh|Ef*d9q+Szp7`{>h&oc5=6LIy`XV364#DIHrWIO&+TM?TVN%v zG1YwEN*u^8{GEB)n(=IelHfDRM^%p{u>v}Zgop@scC?>gPb!&ziUQj`*FRF3m_!9F z!_Sm$`}P+ywmR{8$6o~}PX_;uIq0d;n$;50R5;KXM)Mi7>1>V^j{uK*;#uHC?8MsB zO&tBh$<*9h|Jk^Sk{B|d_`f~%dGH2EbfDR6MK)r8Pgu;fAMU#ziR16Jfj75?34%Qp zal0@1&DDsV16^e6udm@*eq%)l*Itce{R`P2e?cCE2nDp_`1LSx{hk@um0Mn4AB<|gr zmeL{-9sv;hmHR9!QJCjmdh&6*N|KpwgMAASHw^C|hMl(KM9)(!Xx%0wviJiKklfsj zbcFk`gTEUg=(xJ{E++!C-=6hUMG{jca+dQ{1WiGdB3sUyZIJi%9uOyB1r81dftGjv zaU@);+^jVs&0R)0aSaYIzZ-8rqgDR!G?d)d^ zEk+;b8Ia^41J@y(n`NJK75}RUmCWmj2sX$zyOyEhvLXoNzGAo606Dq3!`VgYC`l|u zJ}lD$N{9@|^ISn$==`o9n!@P^uzguAu!nO3gompuL{F1s)zH!AK!bqVMog>8y5X&u zO-Z>EZ+x$h5I{O7VUIc0yQ9Rg!e7;@~iXQ0xJx! z?~A=hv9{0^lUB&sppk0O)RvIaMaopRVWtQR>Pwz;CWS%vxEg(M;pMlh0O-``O>xXHke0 zXl7YM8YMn7vlPrWJRfNZg^sD?IKU*#ur#y&wq1xbLfoizHE-G!ZqNgl5dL9&{aS`z zqaJP7PvyD|n{r;AgA7^s;p%;TeQd3_7rZfG!Q)?&t4Ju!pvgqT0T!7TZ6N>Q>gwva z*?A+=dJpK2?Spcd*`!!0p)O8T*KjT(b`92d6zQk z_wW0VmkMhT#A5pg6u9l1;p z3m_Y`5a)*$$F*B6t4Kc3eYjSuD-t#N@%o-J;O-J9ln=l4mY(6nqoZw+N!a5%aE3tG#A(Lu1kK z{IB@-IO@a0LrP8QKLUejTgtm(jX9K#iyZ=emutK!??T}Fk7kKd9?f`N?)u;6!LmgK z9!i+OPY-8~Wk|KS5`gZ+^t@a-)%C}9c2ZVey) zMvaqmc`!IVon=;FJY_!HcT`Y3ePZTSF5yN~7fs-hI>@H#Shx4}12whlXyjo3Sg~ni zai@(t_Ylw}OzXtxyByxC9Wx&4;3&?F*ON(cVx4%c|6G~Lr*bmOn3ept8rQ8XX7{8o zwY zz>l}0$8LKJyw6Dp#IJt+yUQmPi&48T<`$3NyX$R#=$0LOT(@t5HFrk~i#(2puaLs} zHv7wVCGmy#``TBWw^d~$qoYL|AL;Dy+BRp3PJsidl6kj~8zt%a0={fR0P+L`s-7Ig zmaf6v+8T7R#{VhwGT@wYVmKtCK45!;MC)+_>apxk3M$jP+b4(l4=cAE*ZQvz|NPUh zDek|*8$bzk)4QBs)JClV4g95kr6!N`?j9vz^Vy$Gckt=NQCWsqasRveo1DSJ#dT2} z57&%bwn{gXupF2*d zp!H&{707Xq+QZP}WUb?ORQ=otro_T2#jP-F-%LS`ykWI7JD|U;LW|ttwr2&?uoE=JBYCIMA|`&)a=8Yc zasOwlCkGpqnhsNgAxQ!aJ?*P;W~qD*y2=Tpplr)i8X$flVy*bAZ_y>jXLUC|?kNm2 zmAPQ?4fpVCnPhrl(a*Dx5@6FB61`M4huG?UFy#61CgW9|NJn*VU#`X(E2?lPT9KvT zZnwxe6WUkm4adY~HdC4(x8c{8&?Cj{<+JU_yGwL*^w2PV!e>BUX#~7D&jYPQ|GU1+ zP7f;tqPLhfngIa;4u&vE0x>SmSZ?F?0|$Os^U_!g`|1vOZmqE&SiH9W(=b}E{ek+} znNr#%n`}|6AW^uE@7{?=dgC55((^ian0B$+3kTGO9|QKM0=X|csd6ekzge|_A`oJr z{gacGX1Arg_C|@%OL?W5*&e3^(c&9|P_I)?98x=RhgCgL%Iwr-53x#x|5cS=^6^sv z*x!C-@fygMZn@DxBD(gdWm(? zobRyvXX=Z?mT9R1x@r@izF9#|i!D`76t!n^ER`Vj?2zP`RDzP``ab1`VO z+wHq|0&b@kd5=hpd#Zm+$NWvCXP?Y;_eTe1+}vwbFBPd|v1x< zbszW%vEDgsHwc&lfQ1znI)-rC#5areLu_rV;kW{9TKztDr}8o$bhhQ1d)EoU5Z=sCDPL{Ru9KV^*Y&Ir&9`k) z9C+oU`#R4H*wEN)h5M+>7pj+v9j%oN5~QE&^zx^F+som?T#JNjdj6s{Z0gxxY3pNEhfO++f9Htl6Sz?Xeu=pSG%Q)~7pfu&%`?jbYS zm}9e{{b=-?C&T+b6ktsiF>h~gpMwCPv*y2)`9Dm{CTa@=4i>|k^=b?nJxKp4)OR*k zJ4rv_WNqYI*NVrg4?Gk8s#Rv#Y^50wa0#@qu4*ubssuc`lm%M^AmaV}{Jwm~d-3TN z+aiKE8}T{G3}6ic*4uU{`RzpxLZGH{42Y*oL(#+iw=v(m=Ql;&1AzR1#^bTd!hgFA zh|Tbfn)a(@;_Mn^kiw0)(I5hY1xRY!ky|?fn!AyIe*ea@qXB?^w76wADx4K?M(yX5 zW-&?`4=1tOq8BM;ql1E7(0jjrhd6kwxvdFWAp2cZeCsdvnJc>9a0m(c55m~Bo_`!* z0)c#=#E~{Di+F3diyq=GV+;mamG}I|mgDBBik1`K{S6Git*Fi8C?b;WE0E^nj{bGk18vL&T-^UFa+6fh3)m$ywcTVaxWdxyTE?mJeQE zZlxHSm$@{z(zmL{Y{OZ+GVy#}G!lfOpOMzno9OekpMv-`?*3-Th?5>S8MNp5{$sB94HN5>pWW40uMBB2|D}Z{h?cl%>H2 z0YO8o+HU*2f0nB1s#3egeDww{eA?o%Pz)B>;YFSei9lgZ5344DS6JL;z@+V9onXdSBTyQqk;4Ob)YcfH`tZtNhz)1Rg&ua5@*%fhuFhXtfh zrvz*NA&qrb2l1!MxA+S#;9d+G2(sfih}I8j0pjpj&8UIiZP!F=mk5pnNMp$>IkQI` zdVib>a)hqHFELj7CmCumtXe(S5j!Bqd1H(x0JEZw_xc>KcK@ADXuIGo5~4jJ@p}%M zul8aF;fnHJ#nV1MMmhLBVTe7R{&yFo|Fk$;QWIMKxFjmhnRm09gJz4v9Qc2k)vz!Xhr&&0A>uvbKRH5H}jm2ploCbt-ZCxC#B)Q9Rmu!xA z{EW-UpH5wue3c4pP7$k6gDcjgcp1@fOx67Z^>V zZbOYScMxiw{HAS_mobWaVJ{uaGo9%0I=wPmFV)eRG)YjY3%-%8ia`HiYCr!~#J2F# zF0NGTZ`vIB5<6>k(|_`ZcEzmw>YykJdZW?ECRnk2QG5)9~I%X3ZMnfo;*) zIBPFPybXPOYOro@*>Tw==4l|6w()V2nLzNdL-a=Hu_u%v%h%*BXxVkEoL%rb1mw81 z1_R!@VE}sGKRleaz=K2xF8vVz;PTxbArQILmStOYf%}|7V80o%^&p-N!T11b;M&a% zkNsA6p$huuJx!=$>*)+_z46>BRY41EYg^^DnLTOqY-niPq74AvJaTI4CBK*zkkL-K z1_o8*TC4)W62$7VoPVtziK2i>SE^aQOY(}#3wQw``w66vm+cT(wF1I(z4L*6-o6tY zaJMuuF|qkkMWk*oE8;Hrr=-gK72q*(1O6TmE3e&(+RYbG2>?I@%<9M$WTo*NK6!w( zv(tT_k^f2QzHvbkDF%vpvF19pMj(7K9*n<=w6lPmFFOPnK9pv9t{bov#m1_F1dazJ zHGxu~nUekl3QQ0ksiErv0Koj0gx5R=VPG;E3bB)G@bS^nQzty2-g2S~$Qd3_;jJf| z5p24ZMu=m8PL=G&U$Mci%6m>qAY`Z%6iasbP5T06h73Iif40e$X%sPJ`tx|z#hO57^nRPku6&{E&exKhW4wqSp81{Ps3~YxFbT31Cncq3VxIh zAQ1|<7H=DUe-V0wxQSCY6yV{3cukpqGFm_#CJ?#}1oCB7NkOe7V&W~s`v!39h7wr6 zdaaFR76$})dH!Rz?Ay*YKLu7prUhF!nki$%Zc=5by!L_Pl9yoMw!_;m3ZDls=MjH< z^FFD#Fp>o9wUEB%E_5^u#Ipzh80%jxDY&nh&h1eJjGQxwP=aWH)E*k(-IjqPkFric zYFK5|`Dh__^vk0SUJkIz4XeIO8d?UDn1c87d65_=ABy5)Cg$3mPsNeLKL7i8fR4`1 zH4X}@7rD3Ci%1OX2`XnFA#Rd#W~#j<7<)LdXg@1{BG7Zb;#7!gFNu?P0S&l_7V?Sk zJkFciWSvJ+uihrjWxL!Yhwm^Vln*3_Y47e-0KoXEGZgh`cojd`_H`3!X z0nJQhZqIx|$tla`$+tZwnt_gGNj1;v;+J3c!>!W(GCcSK;KJOHuZf{Z!bj2#; zvO?$q0<%*)IJkx%ACEaYGjxaPs#Ua~n+=uk&}mbBbnXj}cfm=nv@pvu5KbHy`e)=+ zRO&6mLTqNsGRdHn`oXP!tvIhn0sySsK0e?(YwrotdB9yDvF3xDC&a zrZ>3$SoZ$X?cP%+wqdF;+!>@Tna)RGx17%x&%Cyd!F?Dm*!vw8+Z|dh%mGd?_RC&Q#HE_^jGB&pbhP+MZ<*@7~Ty0}hVD zQ->{YflPxFy~AIE)c@DbIsT>gmGr2`IibrTapk4Eyv}F!Z|u41&j@f`jcr~SeoazS z6zS=I6@+ezL2f^QNGu?2X8*ZCIKinPGP;v;KBVeXc9K2G4UbRu{)a#%QWADX0_4c7U(($#>@SSWh zvwy*o$*$umP(Az0D)sr7uI1CtV07K98TZH)-3N zvtqs2&lKJ7U^8mFx_Qy2mf*`VUN!V9_QQ*pOmk#njW?Emtg#Soqh&UTXOBZo(W0bUXMy>7+wQW}@O%m@i?`E3HmZ+o5$Il!DNs%#!L z=+HShWgW)%06n-`i@*6}~6y9l&vGszS)@Lo@xBU?+SD*Vu z%25Ax-_QTb(elEJmj#=MO?L3Jb^~iCBO{}2&{e&w<;r~hJE%Q)k|s^Zd+>)HC!S!P#9K91m6sp zt;a}7^4lqbKgm#RsU?PNA3g`u0c~uYR!Q4(sOQZW#lZlos)XN%hUJ+C_747Ke=f0a zD@G;|;G8gJx<9KQhr*4ZE%$(QU^^8E$=^eu9>G9O$Nf@e1E$v@LBQ^hwS4o>pau|$}`KPNl`!`|I z^TFI|C5F_A5-GDE&TqmtK50AX%;kj_;I*#Tm<` z)n%{ow+YO}4-@4{CJmKlwhTXRD|msL-{Rpo^)?3T8+XE8Cg!XIPXy?{`*wHxpwVh> zk=J8j<6x??hLtcrIygbxpD1P~c~?U6jm-KXI%($o;`?nf|_m_z4DEToO52xV)aE_kDe6_6c=$&39=~EP(YCJ3oP8A6|~R zh~ZpMk%qa}-eB4~(jVh!Uw5vc(Ow<_oRe7@WSm`_==CW(I*?)+Q4uz_<|sQvGhv}3Qt z3Z7cgv=^eWDT%k=OpGM6Yq&&)~b9TP$=QKa!qum+4F0j6Sz<%Syywsc4Cfkx1fxD9=& zT-t^$<3De)bA5P+PpLxS#d6i_>w-onIw^w0ve#%s&27bkmHTsO;bg3L@|dmyf$K{m z;Wpi}R2uxP6Ny%`Z9D!Iikl}!0#8$86_tAI zuS3#K`MoY1mTg;zy)sgM<)XTDJN%dN1YzeSXqcG7mLdQC^T1)${!>%cxn>gh-2 zMqX%^jS3iqB!vJV>#6E%T=KIAT3-z%h*dP8Dg06}hgemPppV(*2IF^UQf`(@xVzbN z$D0R+e(URtz|i2(%LqG1)(~NFs^N;sf2q1V=tWqq`Hw|T_q-LD&SE+ z(|fGj$XG@QN2neP#xDVxq5WIrbJ}m1Yv(>pyv%H?&zBn#ZfRt?I&&<3PmaS}1K7^)+gQAac(TH8~1GpuwVsOQRJ@10^ zR7#4BP0v`0T%f$DMBt0r@f2hJn!>$kkji-hQOg(KvJ8`b=oDf+i5lK6?0b%ncv09K zjXZTCJ4dwe_n5!hVp`BxlSB;isHtACEBW1b5!A+>aza}Ah~XPW)A`7R%)ZLvn5Kc| zl+&`|=^W-DlgPYI0mUTyE4jRZ#&-fyDBorZzhvpIO~rDT=iQ53cMp!Oq|7%qrtMcM z>WEpa`;4o;Q#%Ghaarj(>R*qOE&j@i>K>7KghwL4wvHs^_TCdgqV`^5# zV6`{i{fFCWXs&1xGxCmN5jW7BD}99x!tkmHE8e~K^A#(@bG^(+qj85{oxn+B1m)kzS((hd1Uq5>W-7(5S;ndSM#1AlLLNsp!-ydvKcKv<{tkm7)x%}PJYTo z2=Q^113sq8E($&sH98517nw!7N=He5x@g8!D$=A;3L06Kk!Mn?80=a&88V`pCD;T1+ilwbxrrtnp?g5 ze!^Z!6JVY3ykTQ*fr&NR#EU>8iCq5CszmH=hG6ZAao}qx>}EZ zio9{;!=bFQWjSelJ;KxEnXRZSTXwXrC|9G_Gv@v=4?kM*Gp~iYwST=?0NPTr-uI%l4XS{LMiy7^E`30Ey0o1gsxtdpL7GCPah+4kZB|rafO4J|C~?x zBO}axsnv61lMjDwa@46fc-qd?)a8rIb*y%hI;kj6+C)@atP9Z}Bj=uhk6Ct<@D~h2 z1w;tbE?vyya1L^d8lMXP3uWP_tY!^&VFWgBi(qea$Vrq@(XOP?GTf(faQBiPM0U_B zRqpm@x9D@~lX96F#BTQAY3{~2dHsmkFfDAU40qiem<38?98{qoM<~QWSW(~SPZQ}+ zLQ5p&!J`CIIlRKc`6qanmlk3&=5?dE%J)lC=Uezqv6W@KOFh;AzTV@qjkOl8vn@N- zQ>pJ!WgpLpp~dxd_5)OPeH1}%qWzSkn)IANT4fzodo1kqFBgz1|78*qU+Q5%UQ>bHNLvW-pSF-19T}YJ^AvIk?E-3@?u27z*B}UdKK(M-RFeyjn zAlCED5{y#IKCo?BkQWm{vXuP!3J3hUf}oRM{L`wNVo$aR-^sK zyz;BXP7K=D29<{07t7cyZAv)Sw{d8wpN@e$U=+z7&vJHhHDlMVf5BNGZWB69zgI*(x54l{zf8_u&2LOMH^!-xLn7y2I1XuiN1 z(@W*BlS^$@e{9%7;;?5 zHT3ee1nXfCRdxKM{=1K>tJ%*^MrgDBK7aWGG-W6u%74=Gm%M^uG$usea`Tc za#PTzmP@c!cg_z9B(c}hi?#sp+4wBP_fn(yo5AfBp&XL^sR6074dy@kDmw0vekj%Z z`=CMdd3k5G%XKd__c$l=`(ek!@?Cje_lNn>J6h{0Mo}H-lZNHo#kxY0&vbb{=4xVZ z?8fE#8PgP*St*W}ofwAICWPFE1QVkh(~>nFu2c{mm;noeCA_d;O4T3yXc$b>uCSL` z+uxaV;AK(yt~>GIG17wbC-s9aWQe8X_pF#~Cip+qdG$PDRe!aYAY3!WBrA&uQ=lp@ z8Jjjr8{?(7C$=%FG=XF1k%Sn{;HuRgdzG2L%}tUu83HR#Gw*CdHj_J=q@x2Zl%Cc7}Xf(x0d-gUqR9L!0BE$I3c9FH|b1*YE0&2^i7(f#YPR zIl&YpgR4k>{KhXG@|i78&0M^Sq~HnsQ^ETt^5bEMGlZ&1T^otel8v}UB03D7`0I+P z+d;s`P|CuJYkPd{l@D?3YUsW7AE?5QTmXt8M=sWQnuqQgpWSXd*0fKUyc4lmwZ5>q zbg(XZs8qfYSh)43Ov9^9<%A-VUT#f8XYPTt*LiDgR;J$jLGZj~9}C9rMGIiMIe*PT zM#_HKh2dCo!Bu_Gb| zZtfIE3Jndf>j}5n=p=Sc*(RmQ)9#ryJ#QSZ1QVL(V+!+OvF}3l&3)5jvApySRNthQ zgRH`j(=3nMLU)r&3eU6R32YGD6?qVOV~Z!VG>ez7aCglylgh~58ZIKIX4T`rHzkdD7<7PkqHQp3Y*OFv{x|%Y< zg?I(JLT)mLhoCz#7dTRMg$l0`rEvxu43N8R^>uFIkBE<(c>zF{ROQb@YeT0`PeV_# z)zF1?fc7cd++wHr>Q8?^5lP8aCbpRT~Ptu`&fLeSI_HxiSxJ zb)=-iLFW*0{ff_D!LwVzObOgu-IN7*T*-rlqw+Kn^)Y6mdGlMtBV8dL=qMQ;*;L%@ z$?L`nA-h}Xz%&mkIeel&Qv~>kw+HcR0En}5I+uOk|3!g6=82zyi^Twgz<+#zL3adV z8?H`!6>duU@AJz`%*zaEx8tvy3_OO{`-__&9kOWLr>fA9`PxZfTUF3Iqi{Jgt+NRh zlnDXCFlhTa6aGFJ`N8?C`reXKAlgD+89LT09-s;}GIApuy+XSr1@dT$oK1o@O+RuP zoTZ#>#&I97BqST9Ze4!?+vGP|hzs$IcA9-1P6F3^M_;`A6kjY@6Qn7L!Y;ncE-6_2$!-r?Vkxj^XyxD)r{P?gJtLlDF)kH(QQ;MM2jJ6u_ontjn-kz z4ZV+kSnWS*vfB$~GWF>7nupCWro>t>g!O-G8>umT8J77;!g7T$5Svo^1 z|6cg$FZy7fM2xx0~CoE|FsTkiuzmy!TN*a%gwp&^&vTU~GenAw${w+fT-eIwJ zj+QcA!}Q}%FM}78T(^+tDxY2wuHnF=KLFQX%a3u|kSi*w0^*yzsEGlC(CNKi5{!( z02V;{zdym|I=Wu)8hGj}RZs(<&_ojAbHe_;28n9plW12as6;ge+m%T8N^0g3J)I{% zsaly0iVPeDJE{bMYX6Z)Y1cSjh4H>Su$30SxD-`V1_$|F2-p&iY_p|RExP(Ef zaLeBMYhHtX?_JzqVcet=NfOVItEn8KlH_L|oZjQZ&#Wz7XnYmxWsg}N_dT6GyoYZ6 z4{_jb3te?Z*ndS?69^^e11xes(Wyd+^>l^!9V8+Yi9&yQgYybD((BkSW*Jj+zylN( zEv$*1m6M`;N9Ksim8k~c#qPzwp12KkM`u+|5kVffB*>TxZDA0N;)}wHOZ_Q#RI6h` z4CDvah+(hl(^-woo5r}zB#_Pe2GLdJxEHnrE5&tS|3hlc0@CJJIx+$rXfM3oEj@pu z+A=@ao048PzCd@=AOPeS?k3v7+8}2=?+fgPnGYKM?*W5NOG@zp8I(0YIyW%sX&vl% z9LxFomFq8*qj?w{%Z4KWe~`+eH-nhhxNxmph(JrA=GpTi3&pn=FU_<8*_vbF*4OXs zeUjDVyfCBr#7axuGb9@*M@Ljd7gFdU^qCMC;W8Zuf=qtfRy$Qs5bTDF>)&F+{>)k$ z|JtKdanR zEz%b>RTQ>S80PF=?5n9K?BgJ|^- zW@cT3Hy z)&QdH$MVjcZHfpH{d7Cr)#5>vhxwuh#)BxBSj_K}W_-#qhZ&v}SL;0`odJ2-wLZ5; z-n_(D>k`R(gu&4V_`Rk3Wr;b9uCW=Pz#kt4jU>es<&0vHTVm}VwTG+*B~j8WeF%c} z_k8vWS*U87LwS!Mxd~PB-|*2~?_Qr{$A?M1M{rPXj7etyDu?V!+PTF|ow99%J-wk3 z(bl_{iZz9ePe!S5Mi_-}S;c(xRXNk#bEg)Y$ja0I82?naTP&sc8w`J%lu$oXfej~U zmKju^&ugXny9$Y`=c4QJ%X8>G)q!}DU>kU@b3}Bq zEEZHoQqMSV{0|S|%8YU(24G@3j6QDZNGvVK^nN0tPTF3F#|{jlH}wzD9_m!CQC3IA zt45gP7tkwmVEK$-FnyZ~8=D;r;{|NAVc$R#ULnrX(T68MeWq;1;0WZ+#=9(0ucnlc z`%QPkuH~kSoMiQ-tM|;7LIfNryev9*1XnUzu6@{of%Q=hSualGU4 z2#C=ux!24hUbvi6BV`>Hfp~;Fp{Xf{r2~20=fJNQazi50b^?sdG%KYc07DZSN7fE? z1V6I)-u5l8`^}>^hW2OK!w^h$j#4bDjX%%HTzgDS+1xV2U^HM;O+Uvx0uM{W43D&t zQDewejBRfpcU*Z+V!KngeyC`h=VF-VXNmup1yB)C_Y+xJrw%mNCm>XW>&}pfnW(t` z{zN3%^`UpiJt-QjM0|6bH))DJ4`wMP|E*g?U{b~(KXG0o{|$qjbV|fatNW^|lIef7 z8y%jf<|!VTSQ;O1nyPUdyGA;gBov8bI7Z6mRg~o;`wz>Iicb`XcgbHOo+}oB3D#J2 zp+ye0z_~eO&v8XvRGI-u=wvrCKQ^bXrkLe?hzoepc%e4;MS zsyGYHN>P>Ej)s{FW`UAR6c6(?8Zid;=hi64VFujI2`X3A+f!j0A`6~=c`>GUaO(WhnFZsqmx={f@$Iy+ zM7haCY!AfODKx;Y{dN;hyn)tbyC4uaRo&)2U(n*a+Rs5q}sDK;iYM1 zKW)s6R)2~zKj(H4Ug_U)pa1xk%0F`8<#@`Ab3U5TnS(j^ zS|GQhy^?C)#(*-S)r%*k(yK!D#Q9ctzryhvch#WJLT%R-#= zPS7b=SsHD?cM$^kJMkA~2+2Z71}niZbji*edAwzZUS)+}4h+xHUwrhtnAUI&&;MvX z1i6hTR%e_5WdC+td_#97C6<;AV^V|1ce=LF3a{jjFualNsUZ#vNKAw(ae>9scfvUk zipx3Ah{kI!i#b5ZBT%URs?8~n#Y$ebYC$1#wNEbKOHKYlo{=UwS}9%X!VD%t>W|*{ zWC1cgAcX-BHwqfU)084#NrL+MF&`%UGy@x6tac1jbJ>01)SGUoCPdsGnAKZ6%35e0 z+}P24I1H(5AT~R}5;j*kSN}-tTm}*klo_x@;2!>l-0xu#^O+jE-R2mj>9M)2 z(5RnDoc(p|nmO^By=hcxpee|?KHg|X*4*AIEgKZtr#{B!Ifc;>X~A(bA-9c{ZHOeD z%iw0j)$f&-zUzjyTuL-ukS$0; zmzYx=I9pg)Jp6PI7^fJ2)MRnpX4gyJ0}R^a>6mBBG|WtY)B6`dOc9*gJ!707iK2-S zh1L0P%i|vP$y;ogtHiJzrOB1=Br58T0$#oZPK6?&Zm040(kDz)+QXu6Q)94cQmYr= zqi!%_H1fPA018KoaW={b2GX>_cgnNTj6{pHk)gnuyf=1dCc(+!!W{WWaJg^z2PaZ{ zdcB+JK-8FMy@OX!fg2KL8Yh}T;;x)>c6v>|8hsoC#mS2rucKb^(u7O8uv`!p{ao(e zH=Yk1kPVhHP`SR2EW|E9u25`5_}&`UGL5B&BfU;frFE8_g}87%FN1A<;?G#+RttD;=e*sxbsE0bREhRf)X6MRbb`HJ|OoH z-#3K7i-mRf0AYF78SFCJzJG4#x(zR=NF8DM&;NmD4-bLsi^m$nAGgUvtnmFm=Bf^$iDh)%^q*q8IvfN_>NQBoI;m0IX4m_cN){Oi9qsz_15 z9&sq{H)|j3JG6C#?^J_sM&?lTEJXx+9B-G38m2YbuN2$knx|rlMA&mZn@jx;_0BY* zLe6Kg!q}^86snOSf|FD-!C27h#}CaKOqq2cj};sB2J;5 zX54_0T`UuQ^^nZK<-G6vMU2%vANSooF~t5-2iNfuVOCLpr(gt3XT%SXjb7=MTeHge znJ@(5XmZNH5f88|5A%Kds5FPwsqtqe`G0le_+1m4ejiSls$`Lk{|+XsaQHATe_(Ta z<c#{lMziR-CM2z1^InVDpM#HYu-T zNufZdeU&%@IMn7)*GJzdW|dguLlK>N-Y2eqwHJ8{@-Z$1Nog2mMEypd%5H+s7;gmd z)EFBsOzbAF&7UCZ1UB3{M-{d`Qf6+pv9fr`rJ&OAov*Z_o|tKp^8j=O7n}%E(!aJm zMCTU*M3*f3wC4B15>8qhQvK7{iDOn`@(rI(IK7B@a}}dfQh1-eqsZ{oaj~l7pyvBg zjs_&#J>_<9Fci3K6?V5gQjVV1!!C#y4TFk`hpQMztElWg_L+9x<(^BPHXP-k zJy5>iyEW>CaID^B_Y8=h$DCar%jTaMR$FoLu&I-;?Xl9N3vtu=u(u+5I3Yzg7GF5a z3TAnw9ap!~Pctp8uOnt@q%rnkDQk@uT2U^U_7k5HPXuXZrv(P;Q+0aHk0FVJ zV&|>0Y1AnfmavG5VjiMC3*^%8! zzwfxr-;dnOcvml1-6{I~Q%k3756A7yY2_^&*N z+NsWKLM%j0!O$iJN>`oK*lOlyVGA^5$7Q=7SGa{T2IM$~VzJF^&9oQ?z-ZqAs_f$z zivWrzYn&Z^*I5FaXf+n@#g6mQf_T8%=X{@u-7)CwdBTt+*;lH^p=R*tl(4d=5?C?m}Ijm?#&tiD3xc|&R zaB-Ie0=6?3k=JmpIVxHC9bQ-ki-St$XtK|aFgxW2OV2U4Kk{#SI)nI2Gb0$dj}fm! zRJ*?m<0`_e+Hu6xcnj6$y~yF6t_erPcrO{>8C++lZl%e+NAqEAL;kQ|NeNlk=}GMd z$J`vC*EH9d%7GlhDnflDdPhtL4jjloeVgpvFQO?;#}!19JFZ(*}&1&3Q z;o$t0<=@B&#h#k59dov5Y4OK%{xLSqcGhYR2{~vV-ih%IO_?P2+v;A$-7#9C?k&+U ztE_Y^?=wXEQ2o}4>K32Td)r6fdxdj!_J2$fjsj?kM?l#_UI^)-VlZCbkN5La_Q)Wk z`#94u*OJGD(fyKiRDJ&MA*}L-q|}oUe&3+Yg%Gtfv#5F;X#NRwE!k4A;exVv0FS+F zwOQzppse=+VFM>1quu7cy0{YgkK;2gb#INAywcG{tUcjiE#Ft0H8lr1MQbbq-eUr*pBR2AEOg)=YM3Q_Ny?0g;X(ZVp->mPJO26F^Xm8$@VsEB3y~sR! z_$3()-ISVbr}-?I`N=vy7C;=pk!wD>idu<$!TN{w_WVPYa(QU~&8bCJ$|+13jt*GZ z+c8+H=PzJTYTo^vanKs7w&Smo{qJ<^P@#8wjrPM0^-@ufl&y3?1XghN=qKpV^oUfT zIeqM)=nIsVawCR;fr$+9*5~F{6xeFM>AAt5gUtAcS*nPnbgAIT!tt1wM=j!?7-Gg= zg-ss(+Ye35CD6i|1!~(~(b}ReolO-{8rG$yWw6js5eZgTJplh9$&FRM8(wzM>>DaG zzCThsV;`khyXDE}Wp(3If3EZ|if(LHM4^{%r(?->U&Dewq!p?{?fnz zcTQGYXq;lEja7b|N#bfNoG3g+guwdpvK?MdC7iRqa2$~Sl}Y1>-*x)Gkb^#BN};zm zRkW*#O}E3Js5*YANg>X(o1JbxO=I!`0F-sGo@mhz(9HSU%oVY}lc7A?xuxj^>5>W& zbhH;Zz*C@btQJOtjWed~tX#N?GtM$|ZlYe&g@QC2M|P_%P3cU(a?4 z9AQ1UAW+#3brDdM#veYLxK&1>=9{&8GS;VmWOBdV+OIxA&O@hiI${u>@WVL1**v+t8%xUS?Y#>=$yj@z5pjHGO{a2VHZspT$V+CY7&bJAL$^$<|@F zq?QV=3Jztw?vv!TZuK3ae{>iB}yzhRg}367hS6iJ{Z6 z2MgIt230Jg6?F3}c}szWl%KTDBG*P@l#2_0M|lamrQNYjyBE_^gSVJG%1p*;Fk>1G;Wt#s_G1KEva(xRx( zl-8LsRKyqP>tdoFWm9dw>Qk3i$X{e*EuI$|<*oYqDbMdEJ{LE?D9d7$eC(J;J_;T` z;hiO@x>$l~xX>$>$7}2l$}L0GgLDPTS+tBQJv7tyQb8Jn8Ybmwci|m2|KVM^3RFw` zeLks5^K7~XAMWzZOHqs7`G@mvJ~yRdq-+yJ5iJ~RQ!#=QeQl94)}AtJdbC?Jm;{~X zl*pFm{URdZm@~I1(2?kma`2Zn1B{4ITfBReu*_iT4aMBi#3Qd2a@z=6*&I_1@%3!X zGz$yrs;SJUkZE&=Zby7=gVWZRGzk%!I@x#PI4zw0)_jgNDx#$g`6^3HsU0An+I%<9 z4+2HCt^C4zjaYc}b1B4ranUat{1h8Xdw@@Q2Ogq1-ff|T5S&B$_0kHobPF!}`}k~o z=nRA-DOqH)a}I(UgXyG;SY1#IjkXE=x0j*9Jo3jPOvCa7>}wbVAOvJw0v`48p6d`wQV7Mp_=&uu!g*W|5p|8))9aSiNC} zP1A!CDvgAD$o`$WMQq}MFMpu;!khs<5RdiFtHqY)BQJ?|kd z7CV^;6_wQVnI_W<0hNC-`VDMFqfK}KM;(lRPUBOQ*ik;50mpmfKlK*kV5R~}*&Rdq zEAAw*F0Pf3=tKgImdSa!a03%(uC=mG^{`JQF;Ek2e{Gl~9%@RvD^;nYXR{MWfD-vB zSFCxWpg8|_(EKDY#bQw$Kmnut6EAE7t&BEDUkOSF;-;MYnfegXBda%roWd`=x_*G7 z=rrQAcX+*{$p-sI0nG@P2H zkh5N`)DR6t&~Aq-oNdTeI<-H$OhhI({$jAwZl4)_1h3jrfAd;%_h9%oygq8tN1)e`oSH8c(z$&CeKxx&E1$u@K4PoW* zU_VaVoJ+@XlOvagW18x!nSD9x4w$y<7#oUH?bf3YuH&}XU|**5n#Y_HNt0Jyr{tlq z7-_eO2kCGyMWbLZ@1{+&+=R+|FAKMl%`$BnZ|SzP(c~a?Iu8rm45+Iye&`pRJO>}< zB*~pBF^0gE?B|e+cs1URg;-jF@;{_3!OKIKr$KebZq2Um)!8CW4L3$?!X9GzdNi9KyK-eX{Fn)Nehp=6NBZPM;XxZ_zV@G?ql<00a7Dc1g}2S< z9>$cp-EP^L`i1@v7v#+P+#CM0#Uh*i>3AsTYjU5tR$&Mdkk0gNFasJwjqfy5(LTfN zs4Yb*juPO=1zI-W$P3x) zs~6IItA3zImyjIfpma(f))S@5QK&~>3yz$4)dg`c{l^)q zk1+UQ3;BV*gX9TAe_KLSdg^k3X&TMVh0$GwwK?~;%hS&=l>2k#gI`Hwz0Ixz>1(7N z%PGCA?J7n3YKQlPil*`cr2_CAc)MW8G=1(kj<1Ju5;M3zHm=5m%{QFLEzt zbK1pJ^MamCsnVi6dnTqpr8VRM4#{56WB1F;(>qa~E!pc6w0X*;P!&N{#=g}aFgNXU z(kUH0bP*zM>WF5#cfn{1Bzat>U5%v=no^{HnG_z$vtwte@!it$>1Q7O8GJ{0pDxQn zOMv^Xeld7>CnM=d!EZB-Xvrfd^V>!NA$mJfV7Q2}vOoFuy<7r8?Z29LFqZ`=q;ec1 zrNz(B$m}}SHQUH*NVf2`5aWZ;?_oa;lBR3cqyHn|sH=agS;zdk=MQ(LzJkWo((nwG z-v~Zzc_dN{;QfYsFKLGV!}ggKx;6PE#j*mfI{E}1qHUgWuw&pyxOE?mvSwhz{MGNa z2k;IOGlCBc{<6k?f=Sfht)+tLkPMzQnz2VwL0wh&7mneGMIDEB)b5LY1Y-kDn zO7M^Kopt0ZTq%h_c1IhP2S^i+@8puY;sLI4`fAT9<0BKQNw25(k!Y5$tqEhguPwbq zi-LVZ(It&b3j-X<64HIp90@C6!^c?AIJ7C#QnAdO;`5y_ZRudW56=JZ048f)h;DG9 z??qP0xXr$c2WA!|Sx_)ga+lkQBu5HQJv-#WmCNp=nQy)DUFMg z8A;>Nnqh#I0bwtOUst&wO!}M;VljBre$#ow54T`1HC!6xi2^pqAIzog<4F5~mk0AW&uG-x*%T2V#}ZGPx@F`@ecGp<@BnKcRFY zQ3s+zKZE|K<}ZG`Ib4nm8`i z#RT(Zor25syQH4$t0{2cj;pX9)B~@vF%Z&sfU@w@>hq30PogCC1<~**ICv{ZrqJOa zH*+tin)=75ODa_g$Jx=-fKqg8cwf8)WfPm#2X~6ehT?*1Lf4N`Wj|vV;)L6i`eVgs z!fr(U&3pWjk*`8?io+ zf)UyT$@c@r3}6t(E}rGbV7T$cYo|O@VlD=>pY#0$(7p2t-zJ0(cqC9yR@E`BQ&Doc z)%Zu75pUyx4v}Xks=ClV^jmA79e8z}CS`^p1y-ksah=jp#Q4i_wueG%APydSl&Ud( z#=51teJ(46N{93YD?7UPc zJSzYG{Rx*EXC~&ix1{7pl&BBVbwl}5QUVTsg(0B=k^^X8+ij9Dg_&H9+I_8fpjSKs7~vmWH2Og?D`Rg(H@=VOW49QfBP_i5;#I{r5b@ zsIM&at)1~{vE2&@Or1G@q-A}jVq{LpzOlV3-PSO#S-r8%drpL`D01G?2hsXmF~1ZL zVQjN!TxZ?gPJ@Ju3THeXIThFQC^D@L6Hmf9e<1!Bi(%}Aq6k$_yF}1G&_vZcWK)uN zAXIum3zTfHF8uYMo%5$@rT-eBcPbui9$d5a=r*(R)6G+@rG89P9@I3?0GI(#Z=$c9 z(`^jl|Cy6^E4l~3x^|=!O7*Sja`~36kbq-sG~Cz#hW*ggTljmLY{b4MCv3?l>(r2V z)k&t-J2^>nS;&v#naph&P&H((8NDp)Juyvp@Zq9@q?bDO=k_<# z`flf%REVQ8KFWOIr(KZ~Tekg10=ztoSy3?$+bgYQ%-;1kl28k7VBSQ z)>pf@x5whw4MSpaNJ6|~4u7hD;56DhP$q0vzJ&!P;iot>ADVG+0Z)eiqLO)Ww*iQy z-0Nc?q4I1EhIgI(XxY+2J4 z{l~#Q^cd+IO2f?YMcV`>7~M7&FKp)CZ)*wmyu~f`tC-)tu*JLGY4$Iqj9j9%YU;52 zq+J}-=LhFVE$e^MS?N%9FVxrb=a3j7C=;!pM(fxPd}~1rB8ax}#Ny_)E-VKQ*qGJe z8;^1=4oeoAg@?MV)Zd@QvJn7#mvhEk{c9<51>q$n9f-!klLbv*KHx|btWQOkQ{@bM z^lM<1R{6rt{E6S6kaQhMp{Zm0Qaz9rhcv;qWUpfv5;gKfcJ6~DXGBJyM9>>MjxL5s zrq7o%53uO^iD}sV+iH_jyxYd#rR!Dm8^Z{AMa*+jM$owZeXsX*>Q~vN`LY_zDc=7{7o{Q*vYw<)9a%%b!H_LAgV zp9N$h%Br2~YF5u&t9x<9(g%!79tHlfoDGq}9Ogd1=^>J$gepl>ZJ%Pq?sce(xYcI>u_-s7Lmui?LTK5t^EDr9WyjKL$S;JC(V)8X z6wYi6G}G39Pq8=q{2@32jad}*|FQrijb+Pgw)pt$UxrtEP{meyouhZ+XZ)t17{<1P zqV)u1c=m#dlK_U9X#Vs7*r0iJRq||M0Hk;;=#NZN&>-RF&!w`{mx8w$B0o>=qLQyDWWo@7Zj!8WT-I%rmPoBf@IS9e#1 zMFOzyju+_2Tp3Z`l$TkaIa&)roqesxR#RO61N%%Fw|SdhTv7oHb0XzQL4x-&G9iRy z9bn!BxNrZ?^+Epzn#>OAq^p~JgjLIK{&MIa$2<)ie5{46oQT9yZVUE!w5GKZ2Swz< zm4<6rxhp9$9aQ#Lry?tu15I8fhyrETvHkeXZWq1@u15+i?$eq^Y7W@`+q`P6xATD~ zExA+)Xti)tgYkzhGyDJEIQSD(Dt8+*TLjK9y8)w=2J)|;mqIf*-R6R@x9X*}J1B}Q zrE~VIA7zjioXt(Xm%Jr5DgKTM?O!G5w>V8cFTTYuU1zd$Afr(qkBTnBD$r1CDMcMK z-4o;TQyS0NTJhO%m=)qQTDv8~Mrd*OU;|kw zvT#@^rt%ed<`Kq%(U2uGU}2JLuu&e-U{HzozF0}a5`Vpo$2O4|bs5Vip&wm98-F;w zJ%y#@Vy#d1)3ha4Nxbik#)5V1eYzPF@Pv2jeR3_%tz$mAfMm2ayJ0L|*l=hM8!>;o z;L3XKv5YE(8T!FDxfIpKwt~Meb)wBW;z-}SZN9~;?(2gRfynKLJO~cs>dfSPmfH9# z7XNQ(^cO&t3k!fna&6&|hHE7Himy$HYsU^83*JS+HkgqQAFzN-##gz{ZU8kR7y+v7 z(_c&7@-`*LWr$USVY0yY=EH}?uZbQyfeB&9e3Mk1YBL=|z2(C`#mv;^y;;rSgv1eK zw%}mt#J=wxffm?Izt2*`diH)NE`&yP%m*ZJQlhIkNpd_i50X# z2KOxD;-)VAEjB> z@^2t?|E1~;9Jrb59;Q1fri+*5NZwC7MBd3=G&16BBYPV>V9SwTHYnp)%%Qjupi|K0 zgSxXKb(l+su;0G!*7oC`Wo=gn2Wer5p=^_|71h*ZQC654%QGp5eg`Pof>k-y?EmG^ zzynq~T4XCk)J(3qeC;d`y(XqHC15LerRImzONkNKe2dq`n-N4ffib(rvGVB5{7-k3 zOcE-x6edMtFzR}OL*KS%Y5|4@N8R?OT84v^q;NStyE&DDvnN_d%ehtqb?4naMjhA) zJI|#m`Batr;)r+Wt*nU)KfICiz_AS!uavMF2ry`0P2SS6rH25Dk%BRAx{ZS~R2De| zaFSH4p+#!pgeXUtU%=0pAd6KrbhnJKH{2oxzUfx%ncFGI7g6)7BQLPJeOomZF!l#e z7t+zooHt`Q?(bpQhn%B!)Qe>O#u*kBH0m~W{Xjo;V>8L%Lm-c|I|~wy4Uo;dGEFsC zvJMh(hyIr!7$zbfJD(EUsSMSTZ``|hGo8#|2AFtz&!^YR>&3B#G zIXRj@_?pa1-?PzhvswpP31_xTjh!5_S1{|@;sTf_XQGW>rnAaRVa_1;0H_y4S-Sy zRZ6ydzi87pD~^hdB*6#e__zPZE<4sddRQ?Y_MqdY?5z0pP}yOPMAr218_L)u&LRfi ze|lR55b}^f2%2nrO6<9uZ1$P1(47t+mW-cQG;r9B*M5CG%p`?$M$Yh^12vao4%s zG#(mf%x*r6)pWPCBmof>DSzCnR&K6H{XWh6B0Z@XPz00Tec0qJ*dXP9w;*BW6q3e| zh$<+~ll2;OK>IDsCV5ID^hdZxPj<47^h3tIcAqNO(*iEBZx~Vp7H0y0S!ZE@l*nA5jA6gV49(@(`c zO*}`&^Nw^tmmBOI!B|g#U+Dtd{N)B=K4u4Zx$SVms)rblAF@H`zyV)(b7Kd9dS8ET zZpT|A3H*3{^++wlWfTfhgVs%&Hw3Eq40;RBv|}Y=r{_lIe4lo4*!OkW6IqN?w%D2Z5vc_EP07He35+f-8F6Q=!hKF&l<6jCWBx| zxyCb$TAPl$tY2ELgh_nmjf0$?!JEbwCQl?{@h}K0`~JC5>ob9xw7ypEG%dTvE{@_| zaW9BE`2@&R#J0nGG$2bg>j5H2BQOP9a;5Kg;a~ z?T*cg-EpU5+qP{x9oy;Hwr$&XQn7RMo%5XgvwqgDntP2o-ZAHLJ9NH+F1TIsUPh!_ zG1luXCwH{Lz7Pjp;E8Eg`yBf7yZMDjuza-n9aQ@pH{?kuyj*(_mHt4_^FP+v+qu7I(>CF_ zYNP@@B)7VbsV~qf&xn<--{Qe&D!|ksM=`)~#TRb2#}~6=gB|%3L-^&EDj?ZtPnj+I zI_*cSEEeyq;UfMM-L1KqE(ti>dI)Z9azKFL`U3bd)l-4joal#%_0dNMIsS0PUPgV? zQS0+Y)F>&uQ!Tv1@sy5OR--8SS9*ch^b!@@HW3U~mVn?12<(OSkW~0>-Kt_Yb(lbF z{(jyIBLv|ZD%Vj;7EadSR`eI-HR64=ACw#m&s9fp}pKpb>DZFoDMVd|v5)#~kd&sgs z#w38TKJ{za_eCInl~b~4n9yjKj-wK{O8A^e!N=Ob7J6GqK2Ek@4!LZfn8O>B|K#_d z5FHW*8-;3#0&=`nu@z zjF?RnAJWsB1`0~|m?<#0Lz~f)TND1ZhPTNnwp41C^l0lgBn)OQ;yywtmY?0hJ>^?C ze^3`%#AwKI^uNvuEZBvz^~U&hzcqYbR{hyeWCw$yM8uBC8!Sd5)62d(A?&nsAet>c zp-}C*9oW%h_awL>@_F(_Rb;mijF>w5)guYBr27(Axqy z_Q4Zw3&1l`c?xV2NKky7HMPi1q?Ca~C25iASV6!F0Q?+_CD^(P4{pR`9LQYw73s%J zM1{jo14{BeM_5Z%T1?$+_fNkk2>>ZqlkX1+M#Gj!mfI;Oc^oCj!*}b#s~$Kh?gpsQ@nD? zVNE;nLoIV7Gjm@M>FNzJIFI&zkZ{XguiICkFDtd)sTZ4&C>QFZlr%(Xkn(3=?H*&5 z%1x*YOZVq-&L`=*^;8<9o{}D94f8sV<754li7k5NuO;QMzAuW|2ueM=yyWBV5KhIw zfiw_!6F>qy3WPT4G7h>(bmaR{ouC@(gx|OIt(1 ztZ^iiN&PaY+H9-;ZhO11(O_GzDb0$Uk@;dbokt}@X2tAorB&gD}1X#5#M=gKTE3NL&= zwZfZ4AB$Y?symvO@ z(_%o0;BW!UJo^4d^4(%Zp1Tl!Lg#_zDS1{bC2fK-Lw+9$X$T|`n)QreZdX1`jfWLAMF)ixc<-opl?NO&b?PoN)1 z&xxJE(Y{jfG+ov(UY>%FmPgzP+Y~3~rd?YQ)j&x&px8k(p28l7rg0xh7xi5>^xvJ# zK+82Wv}c3hBbO^X?*vWl?bG1TR1@YBf_QWDry>mMH{TGl(YT*(>@X> z3kU2JK&?r6CiYorNGlaVmC)~sfJLkNZy=F$A@#)LZyY^md&+#sDqo~KD{4E zV3W??%x4dO8@#cv0S_-$G;HDBx|rhgb>H5;Y)&-DaF?N~J3!kwyh8=;Bk)GB`MpU7-bQtpeE$69 zr>DcfjqndxC|Q;S0yFmHdP@ekD@0(CE{qwAO=7PzQR8X{xlH4!Bxq%TN4yE)uD0R2 z5TX{kyfwnx3-iw<4eUd14re8vi4?nMTlwHyRsPGa@_?z-M=|RD$#WYm`5(T4;*CXV zz==4@Xwm8ElB}a#pMWcilnV9ZaDnnK=ng_WX+NY+bDybDieo<03oZ7}L+a8CBYd0W z3tJ7#<|ip~SNCVyhn zx|-Sux)tx0k53sl?v8cikz&t-fA`~Hqgu$zM#ez3FDTB}3Be-k+y`sg?4~H5Vh$~a zwRvrhi{ZZRuD=vL{3W5t0GzwO{PpV3C#-n&it%|R=xxc`3C40v9LPKap5OyZ_2@Z( zRu)Xzo9R%z=P%`#$3KaPNI;F}^`SbBC!&3rlsk^GZD`bbkrb)$jOT>_XRedQh4_?` zfBl~A3i6IyVg9P|T7o3D4Te(G3`o_4*ESnwKW_acEZ`adha)UG^YlJX^hu`#&id5} zcTz2tmHjmWD0F^=(s3SQjC6+u z{Wx*=hCFAl9(Dq5Zi5@z@baYl<_h z6huU5V^@&mn^`i_mU^b;cz}(y>X4GjLUPCoP>ZUa>Q}d-)Pz^@@ zb%!YeToR;lp4-E<&9(g5I)E|b&F`c=wdCzj+^m+O2L2|TA&ZrMf1|>j7k$?U5nsvm z%mW+sURl+N`o2%%=c@%i*D{Ssdd*k2-GNS!V<#5R)WvczJbhzyi&IZdw&x-jF4mQ zpOR>?ZALs|J-1q(T0Qt9*AFKOQ4a1#EmWP$_-k0TNgJSWKP)3)wO zfsn8}6AsLD)MLS$KHxPO%o}~>9}e4{88Z>1XfQ)mF9)Y+U@kO#CGG(hY9GfU6Q0P> z2w&44i2!vySzjK{vM~r%?X#XTtgB!^%sFc_F7B^i#wuJXk56M;7#iiz^7t=*Y$OPm z`YZzV8}+g&p0anj4j8cek1@ycVtzxjQWIv*ZWKZ@EBZ6f3-8mmPfgR?((Uk}i4p=3 zQAB5`?NTyITs)Qw_6)hYUw|ch{^yxh*-LXvC(djDLM5C|rtO?Di%c<9Lt*IauX;Fe z7&90y_u5_wEHhFzusDtBu&_jq%ulm5D+YVBTZ1cL9-9VJ(Ot53X1kQS-le8|wV!ga zuBMr*Wwkw#tAvD`n+8(_7IuNqUNZ$#a!ES#xXv?#k9tFxR`%FESY}l%_7RTHUBu)l zY@!GDXm;Is)Gm?(7L`jiqXXjxf#9DQIxLQUx5jMcrMK2?ay3WCb%(p#>;9$ zJ#lpdul6x3XuW^nf>Eq{hDACuqFF%gH?I?gS*un#+AFfY22qa2A(KJY5YYry{0bh| zSU3=LqV%!7$hMRaKBA(lfO9vymbPGHv?U%;xUG71CrHf<1GoCDN6vlq@=zjm3azw? zB5qbxjZB}F2uXt!reN4&0sN)v1y|c$Sxu_qP1MS>u{}DvqYB7bh|Hbo zqq$uItpN-q!Gy`-!YM1)e=p)od53gz&3vlWX%ny3aGdg0<9_c;Rgy-eN)>)o8Y$$h z#-|EoCJm=4(Y(oM)r3w?>B{(Xx+GE4ykW5Da$&@v63r1xXTmjy$1e79!Z&DjWW6oC z$*TpTvirDsE4Bz69oQc>WbmexD**FVZMU4f5#DE~X_BnP{~%GM(> zx%w{Z*peh<`G!}zWU$-phmsr!XB^^vzT#%LdZQ#HJ1vl*`s7Hs5Ao5i)S^8exJ2y; zhqr>k>r_e#g}@0hWOfpOaLfH~dTveOV~287TA=bX|6EgK=7E-mIr{X3bC3<{Z-Tw1 zOoC%f=JF+zTb_?hEA~Gz(_pTDmP(BciJMR0y=;;j2ID6U{8TGD4l2y?V!76ARZQxC zqG_OyCXWPBkd#^pfuV8Nm6Wp?g*|OFp10@;`)P1}Jxs?(zH`E-NtfEBx2I|z)L z{zfntT}#8-DG3rFw7UTj{H+; z(1f*d+Tl*|Itk^!7`Z21HwV>;7bp0B7$sMTo zM&{~9LjH8ctc69?FAQb|E0?O}^*<7Y#Io!2be#y*SV-wM{j*Py3DL^nnY04D$xNfx zbB&xf2%84a9Q9e|oF>1=GX|(O^j>RN3>hS;p=rD~g;b{4vgPI#z{bP#_ByPCJ3)Yr zS>nkt&!l`uemFWi1ki9=(nN}M+ZR?0qdfkt8Av{{as_t)3nYiG2YJ$9jD%{(X*FQW zAm!ST3Y4o}pGLpGO3BXhd53m2)Mx6PiM2#C^r7D|4ftpRkEoN!LNtllcXGLSn0Ad6e4NYNlohKb_CtH;hu z#gvUU6RmY@fJ#!mhGn^*p@Lum%6acO($)MayzNix!3ICJk?m3+#>ncXn>&1fPpfmy zUxhzMMF;oq*Gf~cup^YVO=oAY3ml3#x_bAgVRIRZ;!u1;oCD04UYgEuP)N3S`+qtL z*MC;-A_gW3Ngi5;hFe|&f8^*8)KJ=c`vAAxf>JALSGkzvUpFWh`-@v5*hef{;QE5= zDtC?14{23bAD_zGZI}3$2U&qM48(cz`)&9IQ1vB81k-KQEs8F0XlfiQA+-dHK}9~^ zY)9e&PsZD9>0b-WZuT8oqWGoUs%DCh)wv|a=HP@;G7UPA&UJ?EeIE6Ch=v_*Y3EZk zS(<@ETRl_xY8bTEg>|+XzhWlLJ=tsh6Jp>a%6=%S+nXs^5^9cb0q&B+C)P-SRljPk z{drA580svde8BR}5dVD~c~dx9AR{XIk);u?iZ8vS zth-5e3_cy)w;$DAw<;ve6qaZ~`U+|Wlz=eVL`~YqfY3hp*3DN>;Rl|p_+SJ_A&UWA z8Mx)cWj9d}Vxl)Q)@h+PnD$Vs71&O8+VjZkF$Yq=g7du1tg)nCtt#Gw#n0==8iREYT zCJWTQPGNlNbc&<>y%`;oWRAIgvum#J?kFY{txD5X!Tpx#;YZ1Nexs)}z@ zS-_?eNLOTiaW@_~b!!iGv@>kGr!QIP6Z~EMuhxuj!gF}KU zx^psRKq-C|jd4mPI3%Mhg(kxT({-AVm%0<8uQEotZwYOzoTGfZ+HgMe;-@_gu_UQA*g%(a4Sl%1f15uU3(>?1C@Uy>RHl0Vl{}$kBY3>r=83hfQ9KpvnV?OQ~eP-eJv;8>O z4Yyi)9-U-!^zD63$@$u(S2Ft9Xgr(Nh6#}1nhd5lrO1am9%uOxN+BA@HBG9?aQV>K zX)59iK+dA)vmH&YmloI&ERQyw&Z+gtj5Bn2o1AH(a0(Ap8J}#rhU>mM0NI`&P6R1e z!N6JMVGK{aVLRG0v($*MSc%(~lEm`gE0aVw{Y^_05elFw&*bDnG zp+3Xg-ZBspn06faMGHFNDehlu@{xv#O+-aD>ZI^U`6k=(2S#(xGKFuk+GzvB zr&1v()F!G>mBi7-1h$Ays>UOI6n`|o(Te23BAO~orJe!?U8x5I2e%0(omepi^HS5| z?@86rY`Ms()vbD(jh@gVr{A2`WCL{TLwkeM-cer0`^=PAb$gRG*Iak0jR$%lZ4-HQ z+Z%>Le`;Xpb89_c0MnlJaMPvEM!%82e%a(-OxpX{(Z>4Q7dJ|k=6mG$n@X@zSNKJ8f z?eqDB4s~%Xa-IamS7@$W;C`Lkz&RPhZP}r@o(uVg^E?k+HtjGa_E73LhVo3s$U$_; z3f5@K^gqnB7DxdUNcx)j%P<7}Gu-DojFqr{ZDnnT)Y=V`dK+KkY>1srFU`aXb9sea zPfZVVwtmQ0CoIvP40^=8iB^v@4rd6hb4ETPk$%_D;^~;{me8vZtV1gBn8x5aFXoU# z$-Y0e`?^{*p?d?X=B6bJ=t=#>FdVdZxp5bAb(5_K3txS6-lI!&&ky-}+jgJnz>M>yjE!P`2QzoE*s+Cqj ztBbz8!1C-lB~pH!zz$(4NkEn_G9NjbJb#%Yd)WK>Hc+ZDJEamufKX$mU>o z2!C-gD{QHs?EfdP1Cq~J`1Dki$Y}!9R zH>bZ;;S8(3Z}p|O{Yx@no|)locI(W-hEJ*C;86|D=LJIEc`uiPamXz&lYH0DRWR*7 zP2G82U)n$%9UZ21EcAm%XA4JF3d8mxJn*T^plvrm!5L!%Jq)Oz+1ZlgeAFEtj=;mt)@Ym2amqVDeWkY9?`62s_ctY z2VC#tO&B(coc0yq55y#{mC(D_eTQsjjAYh|(uZagEqk0bfWN+YvoaUJjd8FRn7w>; z+9DwAAJtahegWa$k@bgOxh`!>`2k!0p_yqE6BS>b)Abbxz0!>%P-QLf2V^F^z_qNc zL?_ogQD@hdUD)xIpyGs)>$+7=L#eU$dXFYJg5(+}2M*=~35L$>y>_lbC>l4JBT6*W z@yP0d>&{XXK|}GL9w9so@@xf@qN*QmUObUqT;cvp4!Bi zS3J>U-syYf2rt{3hV&w%b$m)RIknD6D3W*{JzJTF*anSz-4^rv4Vm%Rp<*5>!&S8o zGyc5Oddt!cN18#hW-u;$m0R&h#U>B*9ru*EakNDT<_pAM@$&NJ(yDiR(Gl!c&q|sf?Z?UB0)GmG_L-&iF zfgqtxLS`cvF_2$sfF1n&Y5KGL)A!=-iHG}_} zf&}ldO@u-pj~t4|VcjUU4tbtO6^^a}Bhz#-e3VWaxX9VSf3-XZ<-B1fEv z$D;TL-08V9kHp-7M@A3^opAh37u=>Vb4};?dji$INV0_oTiU~?dpY3fkeJ&T(seeg zo`5hpj`ii{Yu|fZ)^f}uGLjM^#rL+b?>p@-SW!Kb zH*v*khj6zlASPwGx>uEDLx}eYVjeSy`DuWkO8-d2rPE5stsyC5lC}^Iu@BS z9sQeX*jo8F1pMnVi`MwkF^n5nD&@pK5TOG-e=5%-H17@UY;nsvQ6682b5ZJtSmU-jdVup`d(S9e*h>WrQyXiP}IP(rT{E zSrvxavX4piN`yvJk*P12*bSQaBtB-}RmX--q8^1VLrexxS=i`b8uPXpuVA@#K(?A4 zFR2b~g?;b`%UBqW@&n282`1(BESQH-f=wNy1|txY`6S;PRb+>+3E)rawh_&C?d)M# z@)QyMSkXFE*O(I?Gg6rH!0LR(+ovqQ?Mt6KTVcHm0%lnw$D|%Loo$W>bM3K$f8E%n z>AxbC`3aF++eospFS6`>u6RYC=3oFCnL5w80`MxJ`OdRv8xhYqkCtow`b8rm7l?iWco5^St)9dQatbWUN!p8n0 z=qW`oCoaC~Q(XGB%FpsMOTv@_bOC!@0lgE&mj8VfhDN$g!BbvS39ump3*|W-?tBSZ z{b9)eZBA>}d$e1Y-gR?83 zkF-kBu*8+xF}8V1wh~C`B$Ie=$$Nu0E;%pyuX#3cP_3%i50LEl$*#HQl_VxB&i*e%Fm{8V z)9S5t(ucv?yWv8Z)*~fH(xnu_VT7u2cb+8tDeCciU-rfxU;9I>_mHDtBiydG4JZsv z!uM5I)^{byN=J(lW#xSzf$XGuJxq!5=>`X|H1=jhqx6XO{05f)Y*#!X?Jzl@&FkZo zTsO6>QT!35PLPG0{_Wjri)t%5R$IuYbPLTqN$TV;cx&QQ29Zn?IB)*eqf@-_x*$Z* z-AS(40IV{4U4D1d+QX5ahMkri_dlRs)33NYI5zG=-KHy<(!AW=yEE-6m-Id6v9ooc zlHn7lgmN~Lq*-*d5g5VItF-t5P;2Rp$?KQc`&??KdYA(j*sD z(808pI6@M?ML1(2G~PcE_-`BNhrcr{{yZ!F`Ir>FJJiu7l3>hr0r28clQ2Dk9LJtH zf83pKOa}Gd3;F(oM1fqAb3Vqp5?zG-L<&+uVB4?&`O?rAI7*I6bXC!tYdq(XF&Ew$ zRSGxmH$sHQK27RRY&zi2mz|YvLRS5OY~uKHe4c=P<{)K6<@1B_3*yF*oD#6&EYl2Z z)izc3Ckna1#h-vkkCb5Ia>%^VZrJWHeMsxew^~2aBE;yt(Xr0)-l~^jmoO}GG`n}O zkdLAXA}=I3Bg{hx{?`p9r$DRsjFluKt4>l!c4_(sT_uea$%e1-LtBMeciruZIq%LB z#GK-bqpY3>nz^?<7eeFE*N0YLZZ%GIQYL8hJ^q(}9@VEfY!nPJ3dE3j3mV)B6kHUX zZq3GjVELV*@a(4RS`ND{-*;dmsK;ie_;_QK*-P49tPcyJh^ZzF9;l)H4zYOlDlqe# zV*Wo{v!urSUobheJkwT&kkxM8bJQ#IK=Cl>i75yOFS0cgscviCik6Z5yY@Ra>F;O_ z(|kKN-i9>^;*yuizeuEcYP8Bp1=ks$M_tG`DO&cbKU}o!m9FZ_J*ChuI5Ikq3ybR2 z{idAut*%#5&Nr&LIHpcmZc<74J3;DK6_=#UESU0$JLP9qE8VG{@U4V2vrCm((h-;O z$`-AU`2uOI_$r)k>Sl-g|{K&be`<{;>~(CBiTb|Wf$I>9TA;B+M1jMYY7c00IQtp&9w zb}v#CCU{+wQz``*@$s<}s>X0qsjA=7k`S>OPb14+m>{{G!GjV#07>RhyX5O9gMZ8} z_{)yoAz9t3jOX?!{bOAU;k*Y>wUYM9fiZ)bHRC+11BF48d-T`0CP>lCYy_%VPE>N< zuC(nJlW`}+!xoAqT|cxq&UO`ERx*7I>@QWPwg~^HrIBW{b7Y9bk1EgtOjJiuLw^HR z26};_9&Fl&SPCZoKKBA7yL3w*KuGNCgHH`s_LKAIo#O&zH%`C1_owxmbCy_FkP9S~1pHJj1)s!RH_)vu9w~ zLJm1f6pUD^g>g&^taxrUgmRx=)}rQ!J9jYCXcF!BiU+ODWj)?$VlhKv*k8~FJd?Dc z&Eq+$_D)k4zpxFS2B(;#1)8plxU4WMPQaD3a1RUMl;T>nEK))aldYU@?4sOH2@$zG zyT3ByO`A%)REflhhs+^6UlzRGFJK?B|8T0z*#J80?M6c3K0S56FMF-)w!O%TTOyX{ zN4aFZ$nSThh5))(ck9H9giLpED|txY((dc)#ogdg(1Lc82b8vPwj7x`VbO71!BQ#U zMocKld5AmeQ4emF+J$d4o7iSB!s@_^r5Z&|V}gRhb}+xMV)8aCg+@Xi`t#dppX8tB zVvpN|druLRI;_QRZ&-{b0hvhXlZy?0&{G}G;CKLWee=t&c=+AXT$p96E| zM$&^eOXpgk)n3>x7)Wq1W!m)*^dh{N?k?}Q0y5UwOYTTXRG0QCyJv`|95h{y7Cnc>Te})p9>rks>{h)IW}Rd8;+CTf(qp!A z`ws>OJ$l=rAojOOA-!w$jV;Hi)+QMGSqi7Agdi&BrXJWUa)^BhO z)jIlmWh+^3^%y!K;f7e~cBT95E#y#*S62RdA622wqCHgwR_xNSnZ!sugGi2bVfyQB z(gLb&+$Y8y-D8Or31xJ;EZUR@b&$qL-}gU({*RNw|=q)Tf0={W1xh5m5fIuxcYLY+^!roS;%1fAO{Pn}dr z;iF(p2HCor)<`SVF2f9{>eU&|ST2wN$^|PdKSY4XQ-byvE!Q8If)925bz@+{q;+{< zas1<7t4GdIj}P)+7W z&Ccn6q497^r^@re(E*L1e#a`)`@`j1PJlH6CxzVGq?8Zj1TvDjf>##BDFLyple4KL zK#lt={8!~~opO7rR+vd+im*GAA3Q5Q7?miYsP@?STLIziyeqx*RrNmEYHQByHtG$B z@KMKC53@mcF=N;%twlP*^~~y={u3fYX)@aS^VoinBy2+I?Jl|gebO1G{`#xi?Z=?; zyhWk;@?Xh^8dQ;FzRb87>gE&SalC?Xyil`CwT+Z%A19)Cs^u)QvJ1m~HmFaOFz?UB zi-j{J`21a|d#aFzcMmCAW^F?L%be{E-nwXU?FZ#Aw{cmR?F3r@3RHb3PDKr3Ejf^% zxwT+z8*&}zaGf7*!GtUp#jr^a!wg#@R zBVC2$(Y{hbq7_3C9oX=OFsehzfWpd_`PleWYVI2og9v@VSCaomt3X|Y?U>Fsl+02mqm(Z}S)qBt+8 zXhNf?){;lnjI=b*E}g9#UYYb6cBhj5|L9kG$<;BDG~zcI)fsk8u&wB+Xs_*a4aY0d z-n<(8TEaxXIY)OCmMlLhTx1jKt)~A3txOZ-McLY@a%SH-SucG~gB3 zNL&Z2(0_iI6^R`%^g-V+-h~S4eXI{zXU~pSkk<4UY_8-dEh8{sk(;WWwIt)wc!$<9 zwLQT+d#7qEEYv}7h?rZg|7`w(6HsC2fL7*G+^)3g8vaotOPRFV313&OYYaBe$gxK@403E@^@fWq$eV3d^>W z)4Fy;HY20{0T=6z;c&V5MpbyzwC^~H9s|vXE(=4BI-$K)j)Jtr?>JXCB9d1GhHe`6 zTFi1Dpg&tNCYf|9DHr*=xY7!mv$XkDM;VX)>#s5inaAi+m{P;R>ecH))QgC{RN(e1 z>0VGdsf?kqZghmBD>A~AdJ%vI1V6>5^+wtb_&iN{wx(`kR!a9;2Y=0{G8Rp;d1nzs zN!aO+b3On2cg#8dbNa(jgr-043I0y$OE6l)lMS!=hjMDJ$BOH&Q7(<#V{wO7JtYr&|By^h8=V1*JY3&Fj5MGJI2 z7l;&_;h|+Z3@}$(X+&Caz8X&t_SmtP%U!0u$g$)*X7x475#v~uc?j>#vr>`CI+peU ztm6I|68O4RMdY-ZWS4o&nAiGK-Qm3O=Irta*ctZD zUp$%%upT|Dk5`aNw=$VRO5gQ3XsLyF0v8jOxEBa`kt6os-Ay*6ff!m39w_N)DKJod z8n9CPh>R=qZovM&>yJ!mqYvbi9eT% z11&A%GgRH3{FrTxU!PEtH{O8xD)Uo76SXqs6GP9`K_C&SFW)7Oyg9KkX^BZ7kG@Q@ zranK3HnU|gAKqNKT0L5#oPs(nLvGD;YW>F-;!NCWJj};}Pdz6Z?#kQ?o5HHwlp)R~ zhppXZ9!-~I-Q(jrte>V;SgmvOgMQ)kdhYEMhAb&+4*7>Yl>b#L`Jauqjr*|=4fMNj zaP!1`$c$lC$CdY3eMs1;JjXzNV!e6Lru4)^@QZnUwV|&(ba8LK&=ql-*j4QcfAX`Z zd`hNT(@OH?Sod>GmQJuMMA+&M-sI{ZZOZaDxgix4s3x;*f?v0-rFs0fOj>Sx>5pad2>-4I)0lP_VbbnaEL~tWv)97^WWgkM zEx$ih{2@;H`22Mh?Dz<)`c0-cL7d3LYVv=3aF6;pvw7_v9bk-~SviXBe*AZ~-;!Ec zAbZY{3}H;ZQc?*WBgJD=E3rj8UyYm-+9OG*Aq);pD`lq+sXIelB8P5VtG|;g!x!B>`>iD6IBjJ+IOKs3kZkIlp+5c8)6DVw-i*nzHj>VpHXgn-m?pmSQfS$ zeik!XO^aEN1of@wZ9K%E|NFJ6n6n#uic+C>>OhN6di08VG9d?{uqViRh%h|i zYUAKb*IKp8Bi0#X_Lx^vE4lFw%BZM*dXvk!LQ323KYp&!5Y+y2r7?Jw*e-zb0B*{R&dL9K(Q7k&BFm362hgXqxXYIaIMW~o1Z6z ztofZ7rZE>MV-EKP%k?IEBNulSu*gC;S+h;$eN_KIA)6W5LRoFi-e)4)C^WRW%3I`x z>h`4ygn0=nma#Jw}`98G3(D({o%g51vI1?qQl}pSsqOTaW^{o zybDS5>(+OS97!w#z}}dfZ+8ATwY#xwpa--)oahqEeI;8v{~MX~bDlh@rBY*5ZC>=79s_}moRoIH(@O4R+o%y2?ict^*`}mijECcuTD*t z&GB+f?ZN}P{~@8=x!ixV(`C!SJ3|i~*bxyUVllO451B@o0r|quy?NX_NAV^2zbt_4 z8<9^u*MeP2CiZ^^`Ef*K<{vc9$$t=L$F$`x5L(94hwOQ?3srhH0hlR)+NP!gk@YzV zrMiHppBL`jpq0&pu%5;hc%-;j&Q`$exR_{nrbL{^KNPm)A*#%+%CH1pQ*JKFepVW? zkFht{bb?^}Jh!P??GA=Xf?xP8q zfGf+m&5ngBJD$`cQZ#rL%&DsE!F2^3UORBClD|_F5$(4d?35&!3PnT# zg)m{&oOwb$NA@w|;A?*te&t$5PNB{f+J%$+@oI`yaP(SQnzH$XKXVpa@)xjHdsAr? zgv|Fp$#<#9vfYcq|D{MC@f(lmHF#Ug`+0e0{;IGib^2S1#6XAWJd2Am%<|cucy9rM zRG-D;F0{WgwM|8sO_3*`TFDcRWd^TznM=0Zf`-j+g`7em z^ADO>HF@Bp)dYb^79f`EAM*hlQ+8U*pg((=;7w(+n>4I z!QpK5p-_*DM?yz`%+WcQz&NWN>?Hd>z4CxVa@$;D~ z279tLsiaCApYpt!t!2p(y!dn+KPGA@v^2L8qz!&od~=Vj3%a^3niJeiBLaf4kN}O6 z8j9|Tr8m2%9xgr7dN(RPAE`%lcp#gZAwaPw{x|c!A4$RDapE5eGs71)Q=(k9GyJw@ zITkT|nnv710S(+(YUEY70>aiZ+|-#D`S7T-Ap~E9jTG=bV((>4ajAY{pPwB6+Nm@W z=8YhKpS4Tjj(VL)nacbQB9!uen>2dE8qDA`PN1}2$^}4iUr(vfx(5pF2`Bl9!kr)l z4;c8@rksv%#PqC)mi4*mgezSZ3}SDsKAq0FO;yz|`Rwf;@Ec_3YjWyWQEM>r?h-+w z)NCs{`&#<-MHt^keR~??vhZD9-d~RT^*Hy`zt12IywfEDoK3&}7}(gAYaU&d;hIW@ z*{2hWX=?vTPbvWqUDruy6qHgzpFQ6pP#b>M+}VvdOz)SBhm3BX_>D6W;aFfDO|P;3 zLtuS3#>}ag-KDDz82_t(LZT@dflinsZRUIad@$1-?G~>h*dbl3Rhn$*c(*oBo_Dwy z#!6rxM%XXd5?%fDNqMoh$A-dQ)9pBWQyH zqn7ToLS8nj?Wa)lv>EiQ1APQ}Zx&E%S~LCw?_>{@g#&E${| z6Sr)LxfPOw36t8IEf%Wmkd40?&BU7gd_Inr#1zKtks{e?cV%!>I6ewEGsctLRpkq6 zwwshR^I$y(okl=-0lN$NYpmf%YbzC^pZO#ifWDMLBm_R$LRoPkiSy3OI%mT|V7#6f zIn}-0^AD>dP8H+3gg~vQ$z&|?+*0$D!_0P(T}_9k%4lr@>1@rG>KiP4>9dhE&4J|- z$aw^hm)V2-h)M^d{Dv%ttyO`l?`hSqz&4c^&u`yqwc77aNx1K*%(ju=u(N#NX^P+h#KrZ(rJtB2x^t2GgF zd`74a&p1R^+R5Dt3Zop8KMT7z?fD7&{fA--s)N>2?aDi?SHm$i82_e79T+G4bkm$& zB(e6;LWjla!BH|ZXJDI6_bL;i{Lb<|K+(P4b}O*)s7lmSk3IDHo{y4wwh2Zc^Qy06 zq)DQsGR~}iS}cbSMwnDbxXt*@4+(z08L*P6_EpPdS+Pm6=mUU3tf z5=8=BknH3#_ik@43F#H`u5c%jJ@OUPzTWL|`x$`= zyVd`tp*!9{b(-e(| ziZS3)1AkaqvbLDD#r@1j98O0Em{{CreU%|C0L`w|QOxuyu4(Ta5XA~8tR0nPArhMS zS*;3T_+l{b>=z2X+)xb7*UfJwVD7*S3dc&7me3ZW4k>xGB|I85yqhe@FnDKKsnmAO zqP~Q$zV*J?548dgdh<-$&piv}zMmliF8j>H7t7zrzsgE%D>><5ApQat_ z?)Mv=?uwKh&|SAa5r0N+?lN1U)(ac*{5?GVo_AJA>DFt_NKxO67Vq`1vi&T-;I{+O0E0c#RTY)P@`Uml0}TL4irGZ8}lx^LV*rt!rhy7%nqAIYXTC%=k?;tCb-he z68|uy_hdIo5c^_O=gJcxBg#OZyD8QxOHpeP@EQbD^iNPQ{17r6Wra4 z26rzOw79kq+}#NQiWV(i+?{^u-tRf%dryAmN5)8=+_L7H^I97=(>fy7flj@h9n*Ys zaQx+vf=hLdVWfIP(Wdtg$dVq4_3W47L5Yg1>XG<3e6U>SrX9=>@3{@&lT6 z4>kFKnqGm%kW-BK7POe#FWu_(9ZkKxoHZBh`=S=UHXE6QqwmZPVtviecYy6`;*d4R zRR|7L3h{`k&{gFEN2eM#_4QdQ*V3EpAdnFyFP2vjD$5<=%T;DiO@SH&UKF~>x$MFSyqmqOCmh}=%VY`2Szq=Kl-fj?Mm0^>T2$P?4ckI2(91G z{eGz-%sbhZ0GxrLW#k7uRRYvdx2&#F6^yU*7%Hb(LoBYL3SR?T>~t6;fK6nkB%sh`Wyr}PDH3PhG#CAX9kc%O=Xfn*2XYCrrw)~!Qy zqkAl#)@Nu2p&6oiqC~XCqXuyU=6RC@FF{j^JS2)Ia>HMZ_uY_$e6&%48PPoa&OFC} zEiY0hD%kX>zAtz~>K3ii<4OrXH5$Qvv}6^>Za?%q3=($1wl zPkfQ#^Oh*QNw8Lu-o7GA{}{g5RN~l-&PLdZKiooVNo8)35vd_gJ`KqbqQvV`EnSJ(m$)Ci)z!JuA&Ny5WefxwuL$J3lP-`4Fxw!r@eUh?w;4c?<{_A zJW%@hBE7$RMOSV^DJL12R3V#2VWc3(ei9mZ{Erb1mgx2bVdWAV9WnB^FnrWMyfgXn zgAo#rGePlsv)GenIyr*f%P>H0aK|ROTCYB{$DbA@U65dVnnQLe9Ba^XXGgZURsK$^OPv zt@IT0&03jV)_i9k-Jq<-ddTloplO&tA6*5~LW901n=>kX2m1T02a8=!mq8rfo~^XO zc#r52egSCJmILYK$?tbG7h4Dx?(l2E=J}(01PB%ifg3-|uR_hTds`DXY8)mmT+0oA z*I&9E4sH@!_y&Zi-gA>dP74+0MUk0AK&I8t5h49orEV{_S;A7^0me=dM8P~B5$i$Cf_E@+__>O1f+ZYR=f2{DyEc%`JMAVwdd=kxh5;`tX>Ta`Axua>88o#8%uB(o81gR`|E>Hh;_(rS~Yp5anHx-;rBk zpGnk8>_VlUYa#fyhTL{vw&TU_EbrRk9Z=Si^o%;(W(?0cvXE|W4vpvct~TieP1(oX zV9&AJPbOa+t8s1V45Z^mEvq=bEp9V4h5JghqPkyoDN7gnlOJWA{K4ckG@e|KHXTa! z(N;BK@Ym8k{g%QY02Q2);@eT%2cg}(k2V1xZBGk8I}C(a5cg}dp+1w)`!A@GOkL)SFVt~IiYv}!o1hY28k;n3CbIjJ z@*M`VuU~0j9tjje59j6xo*r*|ERlo)mI#F=uJMH@*#)2qG=wcjHHw5%lVYesnetGi zCh#}65xYtinX50^szb44hGeN#3}ug5ihpvsLqW)bD?tl=<9^kJOWYAWlRsL2Nv@{0 zm01vi_$kCW1L6E9i0wZ#R2ZkSK1zQ@hpdB4sMYhBksNMT*3pdL&dMv($sEoJ^vbQ( zTrmW`>@f>#~G#fX!)SvQUMT2mFrNVl-K#+B8fLT-fYeavc zbL5SEzxsf&pR%9$i%lh3cdf&8yhZ1}XyE1&hyHgZp5D-p4*B7*%!`-|f7|6(MiiLD zw#|4Kph&^CYEqWj?s0j9zgbFd%b}m*?+;ZReuv#SQvDulz>T%o#s^7g_W8hU7~UFt zw+3p3kwycZ2a6#Q|2eROUPcBUFO6@Iu8^)dIh3e6E)~nGuvu>}XJbXNT8L~*XtJnC zSB^m)l*fiwKRxRm(keH?{>0$*XB&jD=7p1xvZu;g%uOK{ya);x1~m&z>rJ(^Q`1$3 zYf4m7Viu$e2yicf&s*k;&VMz3cdwcNu8AfDi|^e9B})|V-Vz7l-R%A!51u(k;NUaf zskP$tJ)G!)8U<&`2QhfOM1o+qrqI8Ld6w9`3xD2)U5ppFI$<}`x&e3u=7m@+T$SAS zq7V=$3Omxjn$H&Qk{~3A>>->F1mg?TMNiA8@CAXTgTQ-Jih!n18B4z$cg(8^>gk|k zRnZtU3~EwAI8g#;%UKLNL9N0Z)u|N()nE1<4*~BCa%uABHCtY4#D#VBw6ja1S?uGC zY?LfA@|%jB;^l5~s8R52l@8HcG^eZUXcFE|NL9}K(8PT&j;JQ&TKIK4SMG$tL=IMl za<_5HI)0RI?5D{f!xzump(fL^(TA4n{60!z`2KwX{D8>lQjj47AhFFOHE# zyvKUp)WEatRAeao+(C|@$GhUc;4q#26PxESA-{X)+wwJyTWq9EKtnbkh^PX= z@eTt20Sw3Tb;*BaUy^#4ZXHaS!jgg&1lB;~O3F?~%sVnK;1Jz~|xrJh(OtzpgAbiE?i?r$1OKGxGRwUcjcJPYobU?g3Z! z`vi)~rPq_0YQgxW_=?M>jKps+sfbIj%qFc%1zD#GCorN?2~VRUnH+o?S<@&iQ4 z-Ss%g(ii_?i*buTV@4jNjEDK&dEZkTmC(N!^6PKh66>W;u|&>Cc<{B69mpTBQMP=a zUlksT2hEOAoJ37(dQLmENLhgPC0v}pTjU@nj5f+Ea$7`%&9Hgl5bQA^IAOe-_w|l2 zNh_5{6WTnwWn-pfJ2l-w0IEjRElmOr^(|(}?TbfKg6pS&-d#z;%$2pYM1{9(sHDrp zI+;!(hS-Rb0TL07mw<`3K0{u6l&C8oy?6wnHMVz(Ly-34HH7W+4`MpA zLa>~g0XxU_K9we*k?fK9tZi~PL_Exr>QX--QEk~*^^^|gv>O{ccjo8$p&E+jQYd-C z?ls--^6L9|+#ocYo5;IPseaJPfVxsZG>+~z2Gj}i$VAM;k|y#lociNo(3p&<5^1@D zEl)~*P}9e|r$s73SloK)f$eEx3GRe;1NKFeU=Krh`T=VFIyv&DB4*5q@=U4^-}E5z zK8B|8+nXRs0wV_s_@D_YJgpdo;|*hMPXOzPySYlBL?0iZ01*p>&TQW}4O~biBAhCH zESDZvNRsARuewf0>{1Rpcv|Q=p__<_2nxV6JqZ@j;9YaAPGVMLzb0z^A4W?dA%$7b zw14EeUC#oE>Jd(tpZ(Fv+&Sv)Sq$eS^?IGD1QBaMfvC;??&1&`&b9>IxxKnW0U|}c zUM$Yu?m%l#_Ir_D;GWt4S%ps37}nGYLRDRVF17JaP=1QA7l-5+1{%-wS^IzjJ|B5T zDv<$ir9&jHmcXAF>7!%Ncwk5eS?6UvClMAZp$*d32_Qql#+C$`;?Lg_wqxmkB7Iq;8goQ$lo#RPdu%EC87?{>xcynt)Svq;k@og2WqWN}&e3Gv zJwliDNEUptcKc8_0roePN8wQ*grg;Mgpj@J;uyW_wrEE7_qIwn&ePirLEcBi_CG+D z0&|%KWPE~!Xtp$zt&RN}D+!azB3ezx7WrI;zxC7e>zAd$Lii1#iBB<&ed^#bK|z*J zrR_254^zh2*S#v?5O@v$>9?%>x;}(|+4qa!)M}ArfNF=an-_2uz(6(t13s zxrkGtd?4=ikJ`+eSvBkL zNU-E!!zIrT{d}RoZY&!^7AD*q~ZBQT=Mi;+J^yBOzH*W`PCOIOQbJe3Ui9 zca8`S0t@cf4sbH&s4pn=i|?HC0Ol)v(g5DE8jMCFpP-mt(xjKL>tp2yYz(Q-GLqH4 zDMv5BX&J?qCd+A?EiW+XKt+&*ukE=5~VErIPRpa060y#AfuR>k`$zCel+W~~v zwMR8i44HFdc!1=o+GIoD6>0<8Q^zqy#gYMvekclki z5TmrU#h&s=vTX_RhHN2oW1W!YT-1#L0cZ}*H?UL&5BiVRF<_#& zE>lCJrYbEIC!|4;cANr46MA@OEH!k!k(1@7-jVkgXyBnq!{%-Q4wnOLFW*l!6D$w5 zLbC62{U$+y`|F#Wch0Y{8ZD+5A#zEJPnyI@P;TK8wwT&f0$kGlCg}z9ujiECI)E?J zdxbvDg+vCu^YQi4WlliYMh%};5rb>lS#3o%8*wl;~clMtR*#)AO1|xD=g!2O?;bf z*=oHb!HBHX3qkQKcq<6q3@L^)aTc=aoe=HH(0^Og@la0`}$)DC>sPunwVR8M!IFLTN0+}Zb{i~k`qX%@ z%K5jRdAFR04^8~e=R|@GlhxWJ+m7zbfg<%NkZ-3cYNh#D%h!#dlrZose_yv~GA)+m zIBU3J>~R*dhlQH{p3b+ko%adEBIo(phQdmJ89NAXF)w(Bm8)LgR`sxokQJZcAR4j; ziw=aZqFeZhVmAh5p&@~=QCFszi8v(+*1;FKZl|-@jbch+&ABOv6t%9z4eP%p?(}A; zm^j!BC0yv~Ii9zfy$|vior`*HpIDM%y>*z*T!bC#=i*au?$ZR)Ay-2{Pm4QqsIJ~3 z(!j3M)3E`8rQ#mz;gDY+Z(rDRiaiQX_E#^yO(myTv>=`wuzfB=w`m%+kq#oRaoxGa zcZ>7R(HLl^CZ()V>ZuZlN%;uR)SUl&GL6sVjYD=|{vPqZy~n1gR1de_EFe^{E@Gi< z>`bE(e)<8?vXZHGo~&tQ^;<04JEj_yn;ecWCSBGOLjY#?X{v9JvYg4TM6NNB`OB7;lc_yXFANE-)ArBp*1|Y|6Wgt_q zON-_19QOIS((}&V0#N2AFb$MxO5`HB2Mh^CJW=FstFy&Py##4a(z%Al;09Y+pMcWK z;z$fVq)YrpP&~Xa0KT^*2*#ym;}w3YjuKHm8;DHvtM%mHKv)6(J_OS5iC?Ey@GCkW zMktWlB{L^@ZXKfzC#w2aRDuSjZMOw!nzH+ko7o>>z=5OH!T92-1S6RkU)Q7!qjJ1n z(A6-V*CvDEkKLLH^C2Lcy0`WuFBVU5A9HYraOHtCjT<#636I!68wPG7AZC9S*vszq zZ9rYc5@$ww*@ht^Z;YF$tK0p ziAn1*bx+BhudRv|(65VN!3Mbs*!AXkm=C{6ncc_x143o?)W>AJlwE82GD}QqBSnqE zpE~ZnUy+>&=>g)1w;zewrHvVQ94-)j?LE=B#Xl-%&nrP(RF`8M&E+T_du64^)X4re)V9aX6)7YtzS zB&aq6i(lh6$@&VbMe{h7n140zL)>P0yJinesVaca0ZILz{eB!wOz+bLufc5?2omAvj-1WbNM9mi;{&N`@ zeCjq=#Si9vVQyn7zihKQYk^}r4n-sGMpG9s1nMuIJb1n{6B=w*Tg~cxnu9Qir3*qY ze$@6l4E?HlwPzc#N&kiQsoK6DV9G6uY_u;zr7sB8U*s*x{wP+Ra>&v*Nq}2_0`HIf zmS0F5gmJ|uTvz3BN80<6tdRF-+9@FG8HWO7k+rpx#%871H<4;nZkdH;p8yMDcfMZz^$ zX<m0p(bh$s~wgp&%=0$7OrgU>On|@IJo_b zXk*h8)Awttda#SNB^_*xaURF!jV%a&Ud&j$QweNW4eH8m_m+q+4;4blTWO1tz&MYQ z;ZfOvS84>OQ28IzK-*;Cbr%?6o}P8l$*j0%V4PzixBouxEO9@uqD^A?gW+N`(};IS zKz`dQNoh{p61P{1wN_Mw`q%dom4dW$&DLZanOY+yIW$;yS;y#oWvuobxi+b2>iaAG z!wbrqA{ddPZ`)TJ$nxs#S6cdKJ{4kFMDlpYV6b=yQA2h5IVlb!ejkJq1g^!l%AXHf zjJHPgl&cHwuV9IWNbHlqZ+*x_3}W@&L!RY9$Wt3wvGp`^5r;)`1MgcYNcFzU6zcL! z-#09x7d%%yzMx%S?HR>Ln5x&`)Coi3feam=)Qb#bM;pItE~$Sq9@fbC@s<=Jujf$1 zaehCgk~)NiOcJof%_zUBZogm?M}{G`z&hS7>iScEV)(VjGBGCUU7B1S z=bp6(U6Rak%loE%l)Is{G*gy^g@8c% zDFx}Xw^U(^xjg*(Dm6e$k%(Vgi9o7&Ixr*#V-_7Cy8xH0FYPat=2_hem zk$IYHAu>5BkS<*Ocrdc2K2S?|?z0$-os_e)ZVH57tfQlaG93%sHahK1>;I~V8q+{( z=T}p~R@47=kLzQOdG&&Ous?USGhwm=8T(G8VX6ZM-&WZ3dbFYWK*r>5Vr1Zhg|aix zX(24LA{WiOPPL-K{e{Ym@o)KUIdV-LH9{UE**R$IFwuzJIgTPI>R90SZL%~(O* zIrdov^WI8K4KyRp3Ur1`xHL@@MLGg}Cv?CQ6WhIzVneF%?vQkLuQVkaKT8s@VEV2i zuwHirF@h|x&z+xv_!fCsDY=S-W-HBNj|uEXEYb15(olQ6iImaMs>im6CVP0pnk6%@ zJGtJ+6waTnJ;)MfWAZe#iu`!)k;|+1bv8J|K5sZghbPvd?!Z?Sd-_kb{RiL22n9Fy z_z9bB^gkp#N1fMx2y{46lwX*RcY@Da+OK5M6{BJWU3N*H5x&v3G?IcBvIhhVZ zS}PPjS?P)X>-oHHa&$>W*(PT>)4!b_6y1#`g zD9y0deek1PKhcBL%x_swzd)D0>p{u^5gB9u<&nAPiSNO>aU(dNk4R>|c`Uw_sRL|E z81CDO@SqE>=Wf$xIVO8zlxFO=d2Jkk)_Z3Y1=?}Nk7=b(h{2cM;OimbaOwCNIG1EqJBxSLVxULLlX*!CyUH}X zaWQk4(9>t2#RpNi9IIl)JA_Ls0pg#!@p=2N_|eSoxmUMh(pQCt&l`WYnipmnJ;6zA zo$pyDu6uhwkYnKR7$Gwmh09V^FMZ)(!!h0H{;N+A-54S`Tk(N1KR1nOQjx<4u0w|4 z!{5T%@j_L>?4ram9AtbF#obPu4idU`YNlEqg(YHSHoxDP)_C`>vx|RhQ=|;DmbWam zXRbL}>K=ABz0rPA)4?VJR^5qn)@a#GiR}Pf@FsgKf{VX0fKW1V*%tzwXC)(qOnztP z*T*&1x4ZJFH^LK!(;}$Yn^}YvznypT;PgnDFQhyN&Gbi_Nrte!J9vss{8cZxZV+xP z`DDwbINgRpCHcB4@0#*y0#v~T)c&hryt0#~ObYkCF(x?A2b<+gDiHv}QT1{wL zXf%zg&dF38+#iXg*_PciX}7>I#MG*@AA9A7hm|3rV(at&ElZLP~kntyPxo+~v6+_w}#@ ziEs9Uk2(DApRlYJjF`{B`kkS;wN}7EL~*hnEyrGjG(IsC90Vg?^&j4IEQqT|l4sO0^28^Mtc)e}1SzADA+fcyKcdSC@d!2HndhoY+pW}>sFkAC4wtdKnB+-ksVA~6 zaxkmjiR8vv5enLiHRg-1$aonz)svyl49k#MBVacU50J&!uY>tNHuIbZR(=x_Ueq_g zqcLq8vRmM5`7|Kxd;ZTQQMOuL!m9S7M4r1@4g%|Ma|K_Md%uW22AA%G*N(x)N(n7(fK0=}9 z&0xC-U7TtRR$_V|_O63gb5EXskS^h_*Lr5wmw(pfq(|;v>B|S0GpnqkmZsIVrwzEt z#c9RFXIMQt#|~(WhR}XdseM8#FbEsQG$&>L>=cj{?d@Rp9hHoZAhp&CZTEYm%|WL< zCIF{b-~#X<)%cT!v(&2yN8k+=McJys@qRiJaJr4F*Lw6e-{Zl9NA^J@rtgBpJ4 zRKyhO-SGtt))T5>_SEq)4|pS9*|vd)^lOHlI|qMtXLpL`?wBwgf6*8nmV-#HbY;x( z{f{?q5-NpJ{JYP?s(Vzxl@8i4>G7wgc{?Y^S3FI2*ypg%4$tmORrXqg%aMd+qw(qr z2txS@_{6TMBD*kE=gPfv0VWS$9rbcBx#$882a;Jh5!o`0C z6EX8FvKPiJ00)rQCa$fVP5$i-Z3t*+w1Kd_;TEmserfTp3#eT zC9;KbryonOT{?!s7gi1>2VM!86-&=jzdf652-qAIOV3qL_Iu%| zsEKm8GW;J0@liLooTiNzjtAeDH*n>Oi*O59gcy4VUf)o>k{V0rdEs`jF_uZdqpk@K zpznklJD=#G@8uI@&YKV+l+IF4DZIf(WX$^q3`3IjR&-S;J))i6jr_t80J( zm|XdJf0S?W--A}kI%n>ufWvI&>5g1v6dAJo^q}Q>l!0J=;hbEee>(7gLRP0fJZ zW@o^UT?U)D^HKEIw6yi=lw1NVmQ&iZ$8!gDXk1G%X^>I%0J@eN^ilBfiKeDjdGS+T zS&WYspqxj(>B{Do4SIEu z1k}8H`-EVT_x&g}oiG2&=>N@9VdIc$ym6mLo%^iCR&}bM(*KlddH zLf_&Dn2F+redack%_Y{+K0t8*MH)=oHxtBNDb&9+$_B)O*xZ7^r--*8R+T>vu(%1P z9YT^|6DZ^hD{jGxW@wkqHa}R0&c<4jtwq*E-CZ^jRigOp*5cP2wOQ%Vq3{ajX z+#K!ZDAq3f-@V+(XEr*tH1B4bah+(-@9!7|yu)GEFyBG~ufvxeSU? zCkJ;PLExKbYgtcy!Kns2(rq4>aW7fy#-=tE##weM|1N*`t?qu)5Voh*LCzKQ?>?~3 zDhwy8tLr;x%!YZo`@b_+JAUY9?{s;~{r-)RQAyl-9PAzVuOs`X-gMWo%xUiP7Zxw4 zWV1%H{NuZ5@&lFdK>X}Sw0azyP##_cEWBNC7~1tZR_J&*EZ@$aMD)X0I0?s!$zf)o zXnW8ZE>vJNU|TmKT19Y*frGE<2(!RAG&K`eu}!`TGJIO%1oVcTFuS939QmZ%OXiT{ zjpTB6aa)hhSSh7B8@&5k(Uxdb(vijIvBdJ&0h{)xUdE? zs!~H?r2#Vswl!EoUc_`7hsg6ECIQyyA<^)<_I0c5jb=oNqn}P#n;JfEgOLWQDE01` zUK@L0EP9`SY>{nP*1QSUd(K`^l7)_=2fSRrs6iyP3)NW>K(EOPWxf8Y0{O!Z-y&sf ztR%q$MT*LV>OCdxZn&N#-t)B%Gui5K&T%;!ZaQ|63Q2!Akt_yv*h z&gw-m{y~PT!4G|vWo6KxAXBVCZt_O*e>-f}+%GjWdG0n-l+n=eavbox1VRhW4ta6R z;wc%MhACzDHF#fZ)$dIJ7Idb|OH07|gh{)571Acz4hT>t?_r9WfezZR)fLmePhCEl zL}^!>TkgcqUg13MFV^fV?y~oo^>zRwiFt$B*SYN3_>`f;l4^)N;94JMn+o*JuhT*@ z6;NcO9Ju76#S*akt6v8E6UO&VgI){=J#YBL1g%L1PWXid@@zOlpgF-I zz&D(LQHF0lFzfVr7G4xe9Qms^w!HT{-R7G~bQ5gk5J0TW0QA(`RHB%ySfzKeVB`R- z<~x0il07F9aUMy{PsiVa-i(zJy2yV>3v3>;?pZ#7mx*VQ${-7q*~d-$x%|9d;u4l% zqhY1%Wx=p;qrdAO8rGG?>Oai})=-@B)i8uS!22hh;A0Umks2G)u?an~VX8c5eV50V z(pd5*yr;kyvpGY_=OMYxb?7-fg!{1j{%P5S{lZ#Wp!!@In`v<&PaBW*#AOHDR)2Ez zrNXa)KxN`^Lt!N){Prv(SbZv-X1Ey_&v=3IbBW&-4XyfR2FSEk_d%RVqsgR~N{G|< z>*iU<0Nnv>w8p6r#~Cbc^)ZzvfxI9eT-h(W?!ls5a&?^-$aA8~#8Vc!nm5~A;_BjY zb$L|VxnI9qpj<9W8tELvh>{!~{BUz7Bt{qe5ziRnu%e0dMId2cEnn={R3S>c@pTxZSY zSj4X-%0EwX7Le*G|D&2qJUIJbfEQ<8Cu8YeC!3O(qMg^BwcW!vxJyxCB~6PM(-zxXe#RSp`~cx`=fol^&b z-edW765KW*Tm3gz6{I=EYh#O+rNA$eWAu+8%Ic9u*Oj2>^VEXq3PS*mM9m}6v-2+G zJb1MU*GNuV`cXesF93`3j#$6!wO+}dssAM18rqnzfur`mOJ(KGqaBhm0xiw3$kO{DonSX%Kq6$7^@5ul4_vr4o_$uI_GEfUx@WzW}~ifg>XITIr0m z>S6kLui@dplpUCAL5Us{*KY~$w-8pJoJ-l(54P_1y3`1LtGbm1EDU}(D81m36gJ<@ ziD+7+6bQEPzX8scBgn(G0~@b%$O)W{BSYGuZe59(*(2iV9hldM4nguqI!qGpk@VKL z^mllKpY*R3vK)eH%RU|hmJI!mZQlA$D(Nr1%9HW~w#H>pq_efB)~a|wMUZ1VT){mA zV?y&T&d;AMyQdq{;J%rX1Q0)rA)0#LB$syP(~_n|Bye_2 zwFq;DmfufNt@Na^{9cdgljd`Pb#`)|T|dd0{uoqYZ#mk9=)H1FgxDjD4CFb-z(IFn z;Qu}!Z7f~rhJ|3sBt~*!(?ai=3Mc$1MU{K^v6nhN{phb!+7U3wW1Glu+o&R3ap4R^ z`_$DBUi*CfGW}d3I3)_)y03c^4>;_{Gv61@^yY>mSQp8iE9Wp6qehq@27JLOxD@_7 znzHH0LZ>URMkMcigMb;3{HOfO77hF~S+5D_t~Oon@>{&$gzdR=@&SZUE4f0N1j3@U z9v5~sG)!8D@h3DGPO7BWH$|9{WBu{d%Owjw0>y58KH3$Se?}LE9{alNVY4>0Wg+$w zrbGWA$L0`ygGmwhJAC;-TV>l{OG|wk#OJp*6nhDT=|%66^dSv`L5@?FRgEiN5I>}{ z1_F$apZwEXB(xE{fz6r|Q#FE_neQz*K`JC&yJ!lMfC3?7XS*QH*L z<98f`Whl?i=IY<@b*p#xmZJ}eXm2FBoHtup_{?p81lOsis%HzNAG!FuG1e&5Q zAK%KrG4Q7V$fREfKfW^vM!_KC7+oP0{6L@~PltfQD+iQogMu>M`ngKDvduI?d57 zDxC;v+V!*n#BG{mhw%vo$CEVkCNvB}nx~Cas&1W?=|e@|yh^qD$J#wF#~@oRBRp=S zVdi2{?X2*U61_b*+x680d_4aTXq3eBa+osb-<%LL9=F=NAQ-qZ6c zKW!j15SE~4v@jV1!;54IJkGuGWdBS1y zJqAb7)GfHl^%jXXp22K{Kk>b$-I*YZ8BK@ACmeQV%@)U%(|DJFSd>474!(r)fC|nx z(fFAWJlGa-SUD(Xf|cOkg4N%M1*gL4Z3CUc+u(J*(+z57*6O&6*D!ye_YXTRgzlT* z(%UHsA-Q!f+Y%!`=_hflHb+wMl=wI;7@6O-s>juxf$yz@9kYRKYo(n_P=Ri=VFZA#t+L<<)|&)E`A zBr+Vn_H;d(+=uQu8>!m)ZYk_NF*|i}c*-D!(|5pLVnzPfv#pdU)cj1j zqhBt0wnn|wz>S6Lv2CoC{z)mKN!_YT9%nm_LCOX5xH) z%dU}2jH+XHCb)*x53_C~^zjCHV0XNd6rktsHQuZQbin3P$e;|aC0C(<+r|J8aOX7O zmJuDr!wTLYBwppbjt?Q>0&eX)0kI3-+mo9Bg{@l?*Ge)X;%4(sSfl$(r!OP$!tK<0 z+dC+Pl2p$ksE#fCJM(Lwz4jGPWG1tB8;NRoQin5Q*V*8v=-kV>yq`_c4D51uqE=N( zACQ9VH<_qhKK;a{#RSLI!AAd4U2df0MV{jH(N)<%L?!G^p6RLe3MP}XZK)WnVO9=IbWoL@6tfsZ?gGWnjFpUwBn)?BEi$ri}8eW7Oh|DT~6!AMfzSMMOT zFN4T>GCnBZ@AM55pqtv)EaR-L^N?m#j1$@PxKl)v%}@nGuw8Q)D;(aviXDV(`H4?_ z!BNv(biEpb9s0Vpt~lHbI8t}hs{&}t>M>Gbd034-KtjP(O|t3TU&u;i6KXPDl6DjA z;eBhI2D+Gkzq|qD7)ZcpCn|=W&`0+rH*7;g6l^H3bhej*vz7t z97Bo9wB3YswT98Y5EHpuu-SawWTgzYDI->?PN~VSchq(?WTOnbJXp`k+ySw!sP}DA zHv2q8Orl=@V&FP}=TS)nvOpui$MxLKPXK9}dUg)6@4=bMB{&~mw}8JJ7cCvq$ zn1GwLk2-{9@0P=^$E05w+}q`n28(IO%z zVzl%+@W}+5YU;ekA>@JRd&=lAiiT9a{fXWu=av#l?9J_n$Yc+oDBbKTKpd8x6NrwbV8WwIxRY>r|tJ~WyhVIJL}4!c;$!fpa<<#SGa zuI8>V*y)=DueCV#!x-+ZIrovB%~J+T6tvNm{utPdt6ULI;sa8NLcF@BkLXWRX#7&7 zAW7+zk>?+z1A)M33BwVQX!P`!;hqaQde?a-UrO5iZ(4B!hLRWcUKMtEQkPTF{*s}a zv?1%r@b5u_54`U2{nW*yehCPBJeT<~xp)gC^h0OVG=^K;W-x=K@rAgQ!LH_-0`v z=nT#bU)RCGUJ5d*(sh!6(Ekr!-tn;j literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.glassmorphism/design-tokens.css b/apps/server/bundled-templates/ipollowork.deck.glassmorphism/design-tokens.css new file mode 100644 index 000000000..ff6d3cf56 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.glassmorphism/design-tokens.css @@ -0,0 +1,27 @@ +:root { + --ipw-color-primary: #5B8DEF; + --ipw-color-secondary: #3DDDFC; + --ipw-color-accent: #A26BFA; + --ipw-color-accent-2: #FB7185; + --ipw-color-accent-3: #4ADE80; + --ipw-color-neutral: #AEB7CC; + --ipw-color-bg: #0A0E27; + --ipw-color-surface: #12173A; + --ipw-color-text: #F2F5FC; + --ipw-color-muted: #AEB7CC; + --ipw-color-border: rgba(255, 255, 255, 0.12); + --ipw-font-display: Arial, "PingFang SC", sans-serif; + --ipw-font-body: Arial, "PingFang SC", sans-serif; + --ipw-font-mono: "SF Mono", Consolas, monospace; + --ipw-type-scale: 1.25; + --ipw-body-line-height: 1.6; + --ipw-card-bg: rgba(255, 255, 255, 0.06); + --ipw-card-border: rgba(255, 255, 255, 0.14); + --ipw-card-radius: 18px; + --ipw-card-shadow: 0 8px 32px rgba(4, 8, 30, 0.45); + --ipw-glass-bg: rgba(255, 255, 255, 0.06); + --ipw-glass-border: rgba(255, 255, 255, 0.16); + --ipw-glass-blur: 18px; + --ipw-glow-blue: rgba(91, 141, 239, 0.35); + --ipw-glow-violet: rgba(162, 107, 250, 0.28); +} diff --git a/apps/server/bundled-templates/ipollowork.deck.glassmorphism/entry.html b/apps/server/bundled-templates/ipollowork.deck.glassmorphism/entry.html new file mode 100644 index 000000000..815438f88 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.glassmorphism/entry.html @@ -0,0 +1,256 @@ + + + + + +Glassmorphism — 产品发布宣讲模版 + + + + +
+ + +
+
+
+
+
NEW PRODUCT LAUNCH · 2026
+

新一代智能协作平台
星流 FlowX 产品发布宣讲

+

从市场洞察到上市打法:定位、定价、渠道与推广节奏的一次讲清

+
产品营销部 · 韩立 · 2026 年 8 月
+
+ +
+ + +
+
+
+
AGENDA
+

今天分四步讲清:为什么做、做什么、怎么卖、怎么推

+
+
+ 01 +

市场洞察与机会

+

赛道规模、竞争格局与目标客群

+
+
+ 02 +

产品定位与核心能力

+

差异化卖点与产品目录结构

+
+
+ 03 +

定价与渠道策略

+

定价体系、渠道管理与销售激励

+
+
+ 04 +

上市推广节奏

+

传播渠道、里程碑与考核指标

+
+
+
+ +
+ + +
+
+
+
MARKET OPPORTUNITY
+

目标赛道年规模 86 亿元,智能协作细分增速领跑,头部集中度仍低

+
窗口期约 18 个月 —— 先发品牌认知比功能完备更值钱
+
+
赛道年规模(亿元)
86
同比 +24% · 连续 3 年双位数
+
目标客群渗透率
11%
中大型企业仍处早期采用期
+
首年营收目标(万元)
6,000
对应市占率约 0.7%
+
+
+ +
+ + +
+
+
+
POSITIONING
+

定位一句话:为 200-2000 人企业打造的开箱即用智能协作平台

+
+
+

三大核心卖点

+
    +
  • AI 原生工作流引擎:会议纪要、待办、报表自动生成
  • +
  • 开箱即用:标准部署 3 天上线,无需实施顾问驻场
  • +
  • 开放集成:预置 120+ 主流 SaaS 连接器
  • +
+
+
+

差异化护城河

+
    +
  • 价格带卡位:介于轻量工具与重型套件之间的空白区
  • +
  • 数据本地化选项,满足上市公司合规要求
  • +
  • 行业模板市场,让客户成功可复用、可复制
  • +
+
+
+
+ +
+ + +
+
+
03
+
+
PART 03
+

定价与渠道策略:
伙伴体系撬动规模化增长

+
+ +
+ + +
+
+
+
+
CALL TO ACTION
+

9 月 1 日全渠道上市,
一起把 星流 FlowX 打成细分第一

+
产品营销部 · 韩立 · 宣讲材料与话术包会后同步至全员
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.glassmorphism/manifest.json b/apps/server/bundled-templates/ipollowork.deck.glassmorphism/manifest.json new file mode 100644 index 000000000..b3dbdc070 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.glassmorphism/manifest.json @@ -0,0 +1,183 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.glassmorphism", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "launch", + "style": "glass", + "tags": [ + "glass", + "dark", + "launch", + "saas" + ], + "surface": "design", + "title": "Glassmorphism 产品发布", + "description": "玻璃拟态深色科技风幻灯片模版:深邃蓝渐变底 + 蓝/紫径向辉光、磨砂玻璃卡片(backdrop-filter 模糊 + 半透明白底 + 顶部高光 sheen)、KPI 玻璃瓷砖、标题关键词单色高亮。适合新产品发布宣讲、SaaS 路演、科技感方案汇报。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a glassmorphism dark tech presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (blue)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (cyan)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (violet)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent-2", + "label": "Accent 2 (rose)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent-3", + "label": "Accent 3 (green)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-neutral", + "label": "Neutral (slate)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-mono", + "label": "Mono font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + }, + { + "id": "--ipw-glass-bg", + "label": "Glass background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-glass-border", + "label": "Glass border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-glass-blur", + "label": "Glass blur", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-glow-blue", + "label": "Glow (blue)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-glow-violet", + "label": "Glow (violet)", + "type": "color", + "group": "background" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实发布内容。", + "玻璃卡片只能放在深色底上,切勿把 .glass 用到浅色背景。", + "每页最多 2 个径向辉光(.glow),不要叠加更多光斑。", + "标题里一次只用一个强调色高亮关键词,不要彩虹式混用。", + "强调色不要改派用途:blue=结构/数据,cyan=正向/行动,violet=章节/愿景。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.ink-wash/cover.png b/apps/server/bundled-templates/ipollowork.deck.ink-wash/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..d2163262c624dd0ee218836a53f846e410507fac GIT binary patch literal 33041 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 + + + + +水墨 · 藏拙 — 品牌文化宣讲模版 + + + + +
+ + +
+ +
+
品牌文化宣讲 · BRAND CULTURE
+
+

藏拙守真
以文化人

+
+
+

回到问题本质,讲清我们是谁、相信什么、如何行事

+
品牌市场部 · 韩立 · 2026 年 8 月
+
+ +
+ + +
+
+
CONTENTS
+

目录

+
+
+
+
+

品牌初心

我们是谁,为何出发

+
+
+
+

文化内核

相信什么,坚持什么

+
+
+
+

落地机制

文化如何进入考核与协同

+
+
+
+

同行之路

下半年品牌建设行动

+
+
+
+ +
+ + +
+
+
第壹章 · 品牌初心
+

回到三个根本问题,回答品牌为什么存在

+
+
    +
  • 我们为谁解决问题 —— 一切从产品为用户创造的真实价值出发
  • +
  • 我们因何而不同 —— 不追风口,把资源押在长期正确的事上
  • +
  • 我们希望被如何记住 —— 可靠、克制、值得信赖
  • +
+
+ +
+ + +
+
+
第贰章 · 文化内核
+

四条行为准则,写进日常考核与协同

+
+
    +
  • 长期主义不因季度压力牺牲品牌承诺,定价与宣传经得起复盘
  • +
  • 用户第一市场洞察先行,所有营销动作回到用户真实场景
  • +
  • 协同担当跨部门目标一张表,考核共担、成果共享
  • +
  • 求真务实数据说话,报喜也报忧
  • +
+
+ +
+ + +
+
+
+
+
第叁章
+

落地机制:让文化进入考核、激励与每一次协同

+
+
+
+ +
+ + +
+
+
结语 · CLOSING
+

谢 谢

+

文化的落成,不在墙上,在每一次决策里。敬请指正。

+
品牌市场部 · 韩立 谨识 · 二〇二六年八月
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.ink-wash/manifest.json b/apps/server/bundled-templates/ipollowork.deck.ink-wash/manifest.json new file mode 100644 index 000000000..340c7ce11 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.ink-wash/manifest.json @@ -0,0 +1,142 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.ink-wash", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "culture", + "style": "editorial", + "tags": [ + "chinese", + "ink", + "culture", + "brand", + "editorial" + ], + "surface": "design", + "title": "水墨 · 藏拙", + "description": "中式水墨编辑风幻灯片模版:暖宣纸底、墨色楷体标题、一枚朱砂印章作为全篇唯一红色焦点,发丝级细分隔线、宽页边距与大量留白,强调用墨底白字 label-chip 而非红色大字。适合品牌文化宣讲、价值观沟通、企业文化发布等克制内敛的中文叙事场景。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a Chinese ink-wash editorial presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (ink gray)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (cinnabar, seal only)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-risk", + "label": "Risk (ink gray)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-neutral", + "label": "Neutral (warm gray)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background (rice paper)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border (hairline ink)", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font (Kaiti)", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实宣讲内容。", + "必须留白:不要填满四角,不要使用密集网格,每页只讲一件事。", + "朱砂红 #A52A2A 只出现在印章上,全篇不得引入第二个暖色。", + "强调一律使用墨底白字 label-chip,不要用红色文字或堆砌大字。", + "章节序号保持中文数字(壹贰叁肆),大号浅色置于版面一侧。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts.css b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts.css new file mode 100644 index 000000000..e1b553003 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts.css @@ -0,0 +1,4 @@ +@font-face { font-family: 'Playfair Display'; font-style: normal; font-weight: 400; font-display: swap; src: url('fonts/PlayfairDisplay-400.woff2') format('woff2'); } +@font-face { font-family: 'Playfair Display'; font-style: italic; font-weight: 400; font-display: swap; src: url('fonts/PlayfairDisplay-400i.woff2') format('woff2'); } +@font-face { font-family: 'Playfair Display'; font-style: normal; font-weight: 600; font-display: swap; src: url('fonts/PlayfairDisplay-600.woff2') format('woff2'); } +@font-face { font-family: 'Playfair Display'; font-style: normal; font-weight: 800; font-display: swap; src: url('fonts/PlayfairDisplay-800.woff2') format('woff2'); } diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-400.woff2 b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1636e5013e07fb418adcd0e2d9aa24c9aed2274f GIT binary patch literal 38460 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őGVAX$qnKe8qFi7ydOL`lKKnQlj;)1W}d0c0QI2v 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

>CtJFS_d7WK8qe_*{ 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-400i.woff2 b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-400i.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ca3ef9f161fd0ac26bd48d60621721e5f7c2120d GIT binary patch literal 21952 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 z�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őGVAX$qnKe8qFi7ydOL`lKKnQlj;)1W}d0c0QI2v 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

>CtJFS_d7WK8qe_*{ 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-800.woff2 b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/assets/fonts/PlayfairDisplay-800.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1636e5013e07fb418adcd0e2d9aa24c9aed2274f GIT binary patch literal 38460 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őGVAX$qnKe8qFi7ydOL`lKKnQlj;)1W}d0c0QI2v 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

>CtJFS_d7WK8qe_*{ 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/cover.png b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..da6b3643ab82f6c5eadad3fd64341f7975a25c70 GIT binary patch literal 33694 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 literal 0 HcmV?d00001 diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/design-tokens.css b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/design-tokens.css new file mode 100644 index 000000000..fbd9f9e69 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/design-tokens.css @@ -0,0 +1,18 @@ +:root { + --ipw-color-primary: #C9A96E; + --ipw-color-secondary: #8B7355; + --ipw-color-accent: #C9A96E; + --ipw-color-bg: #0A0A0A; + --ipw-color-surface: #141311; + --ipw-color-text: #F5F0EB; + --ipw-color-muted: #9E9690; + --ipw-color-border: #2A2621; + --ipw-font-display: "Playfair Display", Georgia, "Songti SC", serif; + --ipw-font-body: Arial, "PingFang SC", sans-serif; + --ipw-type-scale: 1.3; + --ipw-body-line-height: 1.7; + --ipw-card-bg: #121110; + --ipw-card-border: #2A2621; + --ipw-card-radius: 2px; + --ipw-card-shadow: 0 2px 16px rgba(0, 0, 0, 0.5); +} diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/entry.html b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/entry.html new file mode 100644 index 000000000..6211a568e --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/entry.html @@ -0,0 +1,257 @@ + + + + + +暗黑奢华鉴赏 — 品牌私享会模版 + + + + + +

+ + +
+
+
PRIVATE APPRECIATION · 私享鉴赏
+
+

高端产品线
品牌鉴赏会

+
THE LUXURY COLLECTION · BRAND SHOWCASE
+
2026 年 9 月 20 日 · 上海 · 仅限受邀嘉宾
+
+ +
+ + +
+
+
BRAND STORY · 品牌叙事
+
+

真正的高端,不在于被看见,
而在于被记住

+

二十年来,我们只专注一件事:把每一件产品当作可以传世的作品来对待。不追逐潮流,不妥协细节,让时间成为最好的证明。

+
+ +
+ + +
+
+
+
+
HERO IMAGE · 产品摄影位
+
+
+
THE COLLECTION · 臻品系列
+

本季首发
三件代表作

+
+
01
+
+
曜黑 · 旗舰款
+
整料切割,一体成型,全球限量 300 件
+
+
+
+
02
+
+
鎏金 · 典藏款
+
手工鎏金封边,每一件都有独立编号
+
+
+
+
03
+
+
素影 · 定制款
+
仅面向黑卡会员开放一对一专属定制
+
+
+
+
+ +
+ + +
+
+
CRAFT & HERITAGE · 工艺与传承
+

数字背后,是不被看见的功夫

+
+
+
+
128
+
道手工工序
+
由平均工龄十五年以上的匠人逐一完成
+
+
+
0.01mm
+
公差标准
+
相当于发丝直径的七分之一,逐件全检
+
+
+
72小时
+
静置熟成
+
恒温恒湿窖藏环境,让材质抵达最佳状态
+
+
+
+ +
+ + +
+
02
+
+
CHAPTER 02 · 篇章
+
+

巡展品鉴
与私享定制

+
THE PRIVATE VIEWING & BESPOKE SERVICE
+
+ +
+ + +
+
+
WITH GRATITUDE · 致谢
+
+

期待与您相见

+
WE LOOK FORWARD TO YOUR PRESENCE
+
产品营销部 · 韩立 · RSVP 截至 9 月 10 日 · 席位有限,敬请回复
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.luxury-dark/manifest.json b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/manifest.json new file mode 100644 index 000000000..ddad9870b --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.luxury-dark/manifest.json @@ -0,0 +1,141 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.luxury-dark", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "brand", + "style": "cinematic", + "tags": [ + "luxury", + "dark", + "brand", + "premium" + ], + "surface": "design", + "title": "暗黑奢华鉴赏", + "description": "暗黑奢华编辑风幻灯片模版:近黑底(#0A0A0A)、唯一香槟金强调色(#C9A96E,深色变体 #8B7355 仅用于发丝线与 kicker)、Playfair Display 衬线大标题与大数字、中英双语 lockup(重磅中文大标 + 宽字距全大写英文小字)、深色渐变摄影位占位与大量负空间。适合高端品牌鉴赏会、奢侈品发布、私享品鉴与高端产品线推介。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a dark luxury brand showcase presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (champagne)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (deep champagne)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (champagne)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background (near black)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text (warm ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border (hairline)", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font (serif)", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-type-scale", + "label": "Type scale", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-body-line-height", + "label": "Body line height", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "全篇只使用香槟金一个强调色系(#C9A96E 及其深色变体 #8B7355),不得引入第二种对比色。", + "香槟金只用于衬线数字、kicker 与发丝线,绝不大面积填充;背景保持近黑。", + "保持大量负空间,每页文字宁少勿多,不要把版面塞满。", + "摄影位占位块替换为真实产品图时,保持深色基调与香槟金发丝线描边。", + "替换示例文案后,保留「重磅中文大标 + 宽字距全大写英文小字」的双语 lockup 结构。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.midcentury/cover.png b/apps/server/bundled-templates/ipollowork.deck.midcentury/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..5a1a0c44d0abd661340326669a55ada1f290dd16 GIT binary patch literal 38178 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 + + + + +中世纪复古 — Mid-century 品牌企划模版 + + + + +

+ + +
+ + +
+
RETRO LIVING · ANNUAL PROPOSAL 2027
+

复古生活方式品牌
年度企划

+

产品目录 · 定价体系 · 渠道建设 · 宣传推广:把 1950-60 年代的生活美学,做成今天过日子的日常器物

+
+ + 产品营销部 · 韩立 · 2026 年 8 月 +
+
+ +
+ + +
+ +
+
CONTENTS · 目录
+

四个章节,讲清楚这一年怎么打

+
+
+
01
+

品牌定位

人群、价值主张与价格带:先想清楚卖给谁

+
+
+
02
+

产品企划

年度产品目录、定价体系与上市节奏

+
+
+
03
+

渠道与传播

渠道建设、内容日历与投放原则

+
+
+
04
+

组织协同

考核激励、跨部门机制与落地保障

+
+
+
+ +
+ + +
+ +
+
01 · 品牌定位 BRAND POSITIONING
+

定位一句话:不做博物馆里的复古,做过日子的复古

+
+
    +
  • 核心人群:28-40 岁城市家庭,为「耐用、耐看、可传承」付费
  • +
  • 价值主张:1950-60 年代设计语汇 × 当代工艺与供应链
  • +
  • 价格带:主力 299-899 元,对标轻奢家居入门档
  • +
  • 竞争卡位:避开快消低价,不与中古店拼稀缺
  • +
+
+ +
品牌资产 = 产品 × 内容 × 渠道
+
+
+
+ +
+ + +
+ +
+
02 · 年度目标 ANNUAL TARGETS
+

四个数字,给这一年定调

+
+
+
12
+
新品上市
+
春秋两季主推,单款打爆再复制
+
+
+
3.2亿
+
销售额目标
+
同比 +38%,线上占比 65%
+
+
+
85
+
渠道门店
+
新增 20 家,重点布局华东
+
+
+
40
+
会员规模
+
复购率目标 32%
+
+
+
数据口径:FY2027 年度目标,已与经营会对齐。
+
+ +
+ + +
+ +
03
+ +
+
PART 03 · 渠道与传播
+

渠道与传播:
让复古成为日常话题

+
宣传渠道建设 · 内容节奏 · 投放原则
+
+ +
+ + +
+ +
+
THANKS · 谢谢聆听
+

让好设计,回到日常

+
产品营销部 · 韩立 · 会后一周内提交渠道细则与内容日历
+
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.midcentury/manifest.json b/apps/server/bundled-templates/ipollowork.deck.midcentury/manifest.json new file mode 100644 index 000000000..d8af15205 --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.midcentury/manifest.json @@ -0,0 +1,153 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.midcentury", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "brand", + "style": "retro", + "tags": [ + "midcentury", + "retro", + "warm", + "lifestyle" + ], + "surface": "design", + "title": "中世纪复古", + "description": "中世纪现代复古风幻灯片模版:奶油底 + harvest 暖色板(焦橙/芥末黄/牛油果绿/深青),几何人文无衬线字体。签名 motif 为星芒、回旋镖、原子轨道细线矢量,每章节一个;实心填充与细线描边混搭,大圆角有机形状。适合复古生活方式品牌、文创、消费品企划提案。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a midcentury modern retro presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (burnt orange 焦橙)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (avocado 牛油果绿)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (mustard 芥末黄)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-deep", + "label": "Deep (deep teal 深青)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background (cream 奶油)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface (deep cream 深奶油)", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text (ink 墨色)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text (warm taupe 暖灰)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border (warm hairline 暖描边)", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font (Futura geometric)", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-serif", + "label": "CJK serif accent (Songti)", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-type-scale", + "label": "Type scale", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-body-line-height", + "label": "Body line height", + "type": "number", + "group": "typography" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius (organic)", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow (offset print)", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实企划内容,标题保持结论句,不要写成词组。", + "Guard:harvest 四色(焦橙 / 芥末黄 / 牛油果绿 / 深青)就是风格身份——禁止粉彩化,也禁止再引入第五个亮色。", + "星芒、回旋镖、原子轨道是响亮 motif,每个章节只用一个,不要每页都放;页角小星芒 register mark 是系统回声,可以每页保留。", + "实心填充与细线描边混搭使用:大色块配 1.5-2px 细线,卡片与编号保持大圆角有机形状。", + "拉丁用 Futura / Avenir Next 几何无衬线,中文走 PingFang SC / Heiti SC 系统栈,Songti SC 只做个别词语的衬线点缀。" + ], + "minimumAppVersion": "0.17.20" +} diff --git a/apps/server/bundled-templates/ipollowork.deck.swiss/cover.png b/apps/server/bundled-templates/ipollowork.deck.swiss/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..91f54dace75c7f149e91f0923a37d4e1584ea0c3 GIT binary patch literal 27368 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 z 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 + + + + +Swiss — 国际主义排版模版 + + + + +
+ + +
+
+
ANNUAL MARKETING DATA REPORT · 2026
+

产品营销
年度数据汇报

+

销售目标达成 · 渠道结构 · 定价与激励 · 下一年度资源投向

+
+ + FY2026 · FINAL +
+
+ 产品营销部 · 韩立 · 2026 年 8 月 + 01 / 06 +
+
+
+ + +
+
+
CONTENTS
+

目录

+
+
+ 01 + 年度业绩总览 + 销售目标达成与缺口归因 + 01 +
+
+ 02 + 渠道与定价回顾 + 渠道管理体系效率与价格纪律 + 02 +
+
+ 03 + 市场洞察 + 竞争格局与产品市场投资机会 + 03 +
+
+ 04 + 下一年度计划 + 考核激励调整与跨部门协同 + 04 +
+
+
+ +
+ + +
+
+
01 · 年度业绩总览
+

全年销售额达成 94%,增长引擎已从分销切换到直销

+
+
+

目标与达成

+

年度销售目标 5.2 亿元,实际完成 4.9 亿元,达成率 94%。缺口 3,000 万元集中在 Q2 分销渠道,Q3 起已由直销增量回补六成。

+
+
+

结构变化

+

直销收入占比由 41% 提升至 58%,重点行业客户直营覆盖率从 42% 提升至 71%。产品目录精简后,方案报价周期缩短 40%。

+
+
+

机制结论

+

缺口不是市场问题,而是激励错位:直销按增量阶梯兑付,Top 20% 销售人均产出提升 31%;分销返点仍与存量挂钩,代理缺乏拓新动力。

+
+
+
+ +
+ + +
+
02
+
+
02 · 渠道与定价回顾
+

渠道效率的三个关键数字

+
+
+
71%
+
重点客户直营覆盖率(上年 42%)
+
+
+
+
-2,400
+
分销渠道缺口 · 两家代理占 80%
+
+
+
+
96%
+
新价格体系执行率 · 破价单下降 72%
+
+
+
+
+ +
+ + +
+
+
03
+
+
SECTION
+

市场洞察:
把资源押在增量上

+
+

竞争格局、产品市场投资机会与下一年度投向

+
+
+ +
+ + +
+
+
NEXT STEP
+

请决策:渠道激励新政
9 月 1 日落地

+
+
产品营销部 · 韩立 · 会后一周内提交新政细则与考核方案
+
+ +
+ +
+ + diff --git a/apps/server/bundled-templates/ipollowork.deck.swiss/manifest.json b/apps/server/bundled-templates/ipollowork.deck.swiss/manifest.json new file mode 100644 index 000000000..98669c06c --- /dev/null +++ b/apps/server/bundled-templates/ipollowork.deck.swiss/manifest.json @@ -0,0 +1,165 @@ +{ + "schemaVersion": 1, + "id": "ipollowork.deck.swiss", + "version": "1.0.0", + "kind": "design", + "category": "slides", + "subcategory": "data", + "style": "swiss", + "tags": [ + "swiss", + "minimal", + "typography", + "grid" + ], + "surface": "design", + "title": "Swiss 极简排版", + "description": "国际主义排版风(International Typographic Style)幻灯片模版:白底、严格 12 栏左对齐网格、巨大字重对比(超大粗标题 vs 小号正文)、发丝级黑线分隔、栏后幽灵数字,全篇唯一红色 #E2231A 只给一个焦点元素。无渐变、无圆角、无柔和阴影。适合数据汇报、年度复盘、学术与设计导向的演讲。", + "cover": "cover.png", + "entry": "entry.html", + "source": { + "name": "iPolloWork", + "license": "MIT", + "attribution": "Designed for iPolloWork as a International Typographic Style presentation template; visual system and editable variables by iPolloWork." + }, + "designSystem": { + "tokenVersion": 1, + "tokens": "design-tokens.css", + "editableGroups": [ + "theme", + "background", + "typography", + "components" + ], + "variables": [ + { + "id": "--ipw-color-primary", + "label": "Primary (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-secondary", + "label": "Secondary (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-accent", + "label": "Accent (swiss red)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-risk", + "label": "Risk (ink)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-neutral", + "label": "Neutral (grey)", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-bg", + "label": "Page background", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-surface", + "label": "Surface", + "type": "color", + "group": "background" + }, + { + "id": "--ipw-color-text", + "label": "Text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-muted", + "label": "Muted text", + "type": "color", + "group": "theme" + }, + { + "id": "--ipw-color-border", + "label": "Border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-color-rule", + "label": "Hairline rule", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-color-ghost", + "label": "Ghost numeral", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-font-display", + "label": "Display font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-body", + "label": "Body font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-font-mono", + "label": "Mono font", + "type": "font", + "group": "typography" + }, + { + "id": "--ipw-rule-w", + "label": "Rule width", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-bg", + "label": "Card background", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-border", + "label": "Card border", + "type": "color", + "group": "components" + }, + { + "id": "--ipw-card-radius", + "label": "Card radius", + "type": "number", + "group": "components" + }, + { + "id": "--ipw-card-shadow", + "label": "Card shadow", + "type": "text", + "group": "components" + } + ] + }, + "applyChecklist": [ + "把示例文案全部替换为真实汇报内容,标题保持超大粗体、正文保持小号,字号对比不低于 4:1。", + "全篇只有一个红色 #E2231A:每页最多一个红色焦点元素(小方块、关键词或关键数字),不要新增第二种彩色。", + "禁止圆角、渐变与柔和阴影;卡片 radius 保持 0,阴影保持 none。", + "所有元素贴 12 栏网格左对齐,分隔只用 1px 发丝线。", + "幽灵数字保持极浅灰(rgba(0,0,0,0.05)),置于栏后,不要加深以免抢焦点。" + ], + "minimumAppVersion": "0.17.20" +} From 6e759254e7fda28912272eeb68b1f24dea6fc700 Mon Sep 17 00:00:00 2001 From: Jovan-zjy <3193941960@qq.com> Date: Sun, 16 Aug 2026 15:22:18 +0800 Subject: [PATCH 09/13] feat: add scheduled tasks panel with cron support --- apps/app/src/app/lib/desktop.ts | 17 + apps/app/src/i18n/locales/en.ts | 1 + apps/app/src/i18n/locales/zh.ts | 1 + .../domains/session/chat/session-page.tsx | 16 +- .../domains/session/scheduled-tasks/cron.ts | 169 ++++++++ .../scheduled-task-templates.ts | 63 +++ .../session/scheduled-tasks/scheduled-task.ts | 36 ++ .../scheduled-tasks/scheduled-tasks-panel.tsx | 368 ++++++++++++++++++ .../domains/session/sidebar/app-sidebar.tsx | 16 +- apps/desktop/electron/main.mjs | 22 ++ apps/desktop/electron/preload.mjs | 15 + apps/desktop/electron/scheduled-tasks.mjs | 283 ++++++++++++++ 12 files changed, 1003 insertions(+), 4 deletions(-) create mode 100644 apps/app/src/react-app/domains/session/scheduled-tasks/cron.ts create mode 100644 apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task-templates.ts create mode 100644 apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task.ts create mode 100644 apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-tasks-panel.tsx create mode 100644 apps/desktop/electron/scheduled-tasks.mjs diff --git a/apps/app/src/app/lib/desktop.ts b/apps/app/src/app/lib/desktop.ts index 0aa0dc8d8..6a5e366f7 100644 --- a/apps/app/src/app/lib/desktop.ts +++ b/apps/app/src/app/lib/desktop.ts @@ -40,6 +40,12 @@ import type { WorkspaceList, } from "./desktop-types"; import type { BrowserPanelTab } from "./desktop-types"; +import type { + ScheduledTask, + ScheduledTaskCreateInput, + ScheduledTaskLogEntry, + ScheduledTaskUpdatePatch, +} from "@/react-app/domains/session/scheduled-tasks/scheduled-task"; export const LOCAL_IMAGE_FILE_EXTENSIONS = ["avif", "bmp", "gif", "ico", "jpeg", "jpg", "png", "svg", "webp"]; export const LOCAL_IMAGE_FILE_FILTERS = [{ name: "图片文件", extensions: LOCAL_IMAGE_FILE_EXTENSIONS }]; @@ -191,6 +197,17 @@ declare global { | { ok: false; isRepo: boolean; error: string } >; }; + scheduledTasks?: { + list?: () => Promise; + create?: (input: ScheduledTaskCreateInput) => Promise; + update?: (id: string, patch: ScheduledTaskUpdatePatch) => Promise; + setEnabled?: (id: string, enabled: boolean) => Promise; + remove?: (id: string) => Promise; + runNow?: (id: string) => Promise; + logs?: (id: string) => Promise; + preview?: (cron: string) => Promise<{ valid: boolean; nextRunAt: number | null }>; + onChanged?: (callback: (payload: { type: string; taskId?: string }) => void) => () => void; + }; lanPreview?: { getState?: () => Promise; setEnabled?: (enabled: boolean) => Promise; diff --git a/apps/app/src/i18n/locales/en.ts b/apps/app/src/i18n/locales/en.ts index d50865406..66f3453be 100644 --- a/apps/app/src/i18n/locales/en.ts +++ b/apps/app/src/i18n/locales/en.ts @@ -390,6 +390,7 @@ export default { "template_market.search_placeholder": "Search templates", "ops.title": "Ops", "git.title": "Git", + "scheduled_tasks.title": "Scheduled Tasks", "settings.tab_remote_preview": "Remote Preview", "settings.tab_description_remote_preview": "Allow LAN devices to view this workbench (read-only).", "settings.remote_preview_alert_title": "Remote preview (LAN read-only)", diff --git a/apps/app/src/i18n/locales/zh.ts b/apps/app/src/i18n/locales/zh.ts index a7fcf21c3..7bce11e8b 100644 --- a/apps/app/src/i18n/locales/zh.ts +++ b/apps/app/src/i18n/locales/zh.ts @@ -391,6 +391,7 @@ export default { "template_market.description": "浏览设计和视频任务可用的内置、已安装和本地模板。", "ops.title": "运维", "git.title": "Git", + "scheduled_tasks.title": "定时任务", "settings.tab_remote_preview": "远程预览", "settings.tab_description_remote_preview": "允许局域网设备查看此工作台(只读)。", "settings.remote_preview_alert_title": "远程预览(局域网只读)", diff --git a/apps/app/src/react-app/domains/session/chat/session-page.tsx b/apps/app/src/react-app/domains/session/chat/session-page.tsx index e3a7c19b9..378652bce 100644 --- a/apps/app/src/react-app/domains/session/chat/session-page.tsx +++ b/apps/app/src/react-app/domains/session/chat/session-page.tsx @@ -124,6 +124,7 @@ import { SidePanel, type SidePanelLauncherItem } from "../panel/side-panel"; import { TerminalDock } from "../terminal/terminal-dock"; import { OpsPanel } from "../ops/ops-panel"; import { GitPanel } from "../git/git-panel"; +import { ScheduledTasksPanel } from "../scheduled-tasks/scheduled-tasks-panel"; import { useActivePanelTab, usePanelTabStore, useSessionPanelState } from "../panel/panel-tab-store"; import { useWorkspaceShellLayout } from "../../../shell/workspace-shell-layout"; import { useControlAction, type iPolloWorkControlAction } from "../../../shell/control/control-provider"; @@ -1237,7 +1238,7 @@ export function SessionPage(props: SessionPageProps) { const [renameGroupTarget, setRenameGroupTarget] = useState<{ workspaceId: string; groupId: string } | null>(null); const [removeGroupOpen, setRemoveGroupOpen] = useState(false); const [removeGroupTarget, setRemoveGroupTarget] = useState<{ workspaceId: string; groupId: string; label: string } | null>(null); - const [mainWorkspaceView, setMainWorkspaceView] = useState<"extensions" | "ops" | "git" | null>(null); + const [mainWorkspaceView, setMainWorkspaceView] = useState<"extensions" | "ops" | "git" | "scheduled-tasks" | null>(null); const preserveSidePanelOnPanelOpenRef = useRef(false); const setCurrentSidePanel = useCallback((panel: SidePanelItem | null) => { @@ -2090,6 +2091,10 @@ export function SessionPage(props: SessionPageProps) { setCurrentSidePanel(null); setMainWorkspaceView("git"); }, [setCurrentSidePanel]); + const openScheduledTasksRailPane = useCallback(() => { + setCurrentSidePanel(null); + setMainWorkspaceView("scheduled-tasks"); + }, [setCurrentSidePanel]); const openVoiceRailPane = useCallback(() => { toggleCurrentSidePanel("voice"); }, [toggleCurrentSidePanel]); @@ -2315,7 +2320,7 @@ export function SessionPage(props: SessionPageProps) { (showWorkspaceSetupEmptyState || (props.selectedSessionId && !selectedSessionIsDefaultTitle)), ); const showMainHeaderMenu = showHeaderMenu && showMainHeaderTitle; - const mainHeaderHidden = mainWorkspaceView === "extensions" || mainWorkspaceView === "ops" || mainWorkspaceView === "git" || (showNewConversationChrome && !sidebarVisuallyCollapsed); + const mainHeaderHidden = mainWorkspaceView === "extensions" || mainWorkspaceView === "ops" || mainWorkspaceView === "git" || mainWorkspaceView === "scheduled-tasks" || (showNewConversationChrome && !sidebarVisuallyCollapsed); const visibleWorkspaceWidth = viewportWidth - (shellConfig.sidebar && sidebarOpen ? effectiveLeftSidebarWidth : 0); const floatingRightPanelToggleOffset = sidePanelOpen ? Math.min(effectiveBrowserPanelWidth, Math.max(0, visibleWorkspaceWidth - 40)) + 8 @@ -2432,7 +2437,7 @@ export function SessionPage(props: SessionPageProps) { name: denAuth.user?.name ?? null, email: denAuth.user?.email ?? null, }} - activePrimaryItem={templateMarketOpen ? "template-market" : mainWorkspaceView === "extensions" ? "extensions" : mainWorkspaceView === "ops" ? "ops" : mainWorkspaceView === "git" ? "git" : null} + activePrimaryItem={templateMarketOpen ? "template-market" : mainWorkspaceView === "extensions" ? "extensions" : mainWorkspaceView === "ops" ? "ops" : mainWorkspaceView === "git" ? "git" : mainWorkspaceView === "scheduled-tasks" ? "scheduled-tasks" : null} onOpenAccount={openCloudAccount} onOpenSettings={props.onOpenSettings} onOpenHelp={props.onOpenHelp} @@ -2440,6 +2445,7 @@ export function SessionPage(props: SessionPageProps) { onOpenExtensions={openExtensionsRailPane} onOpenOps={openOpsRailPane} onOpenGit={openGitRailPane} + onOpenScheduledTasks={openScheduledTasksRailPane} onSignIn={openCloudSignIn} onOpenSessionSearch={props.sidebar.onOpenSessionSearch ? handleSidebarOpenSessionSearch : undefined} onStartResize={startLeftSidebarResize} @@ -2640,6 +2646,10 @@ export function SessionPage(props: SessionPageProps) {
setMainWorkspaceView(null)} />
+ ) : mainWorkspaceView === "scheduled-tasks" ? ( +
+ setMainWorkspaceView(null)} /> +
) : showStartupSkeleton ? (
diff --git a/apps/app/src/react-app/domains/session/scheduled-tasks/cron.ts b/apps/app/src/react-app/domains/session/scheduled-tasks/cron.ts new file mode 100644 index 000000000..64d769913 --- /dev/null +++ b/apps/app/src/react-app/domains/session/scheduled-tasks/cron.ts @@ -0,0 +1,169 @@ +// Standard 5-field cron matcher + next-run calculator. Kept dependency-free +// so both the renderer (live preview) and the Electron scheduler can rely on +// the same field semantics. Mirrors the model used by opencode-scheduler and +// opencode-tasks: +// +// ┌───────────── minute (0-59) +// │ ┌───────────── hour (0-23) +// │ │ ┌───────────── day of month (1-31) +// │ │ │ ┌───────────── month (1-12) +// │ │ │ │ ┌───────────── day of week (0-6, Sunday=0; 7 = Sunday) +// │ │ │ │ │ +// * * * * * + +const MAX_SCAN_MINUTES = 366 * 24 * 60 * 5; // ~5 years, safety bound + +export const CRON_FIELDS = ["minute", "hour", "day", "month", "weekday"] as const; +export type CronFieldName = (typeof CRON_FIELDS)[number]; + +export type CronField = { + name: CronFieldName; + min: number; + max: number; + values: Set; +}; + +type CronParse = { + fields: CronField[]; + raw: Record; +}; + +function parseFieldPart(part: string, min: number, max: number, allowSeven: boolean): Set | null { + const values = new Set(); + const add = (n: number) => { + if (n < min || n > max) return false; + if (!allowSeven && n === 7) return false; + values.add(n); + return true; + }; + + for (const raw of part.split(",")) { + const trimmed = raw.trim(); + if (!trimmed) return null; + + if (trimmed === "*") { + for (let i = min; i <= max; i++) values.add(i); + continue; + } + + const stepMatch = /^(\*|\d+-\d+|\d+)\/(\d+)$/.exec(trimmed); + if (stepMatch) { + const base = stepMatch[1]; + const step = Number.parseInt(stepMatch[2], 10); + if (!Number.isInteger(step) || step <= 0) return null; + + let rangeStart = min; + let rangeEnd = max; + if (base !== "*") { + if (base.includes("-")) { + const [a, b] = base.split("-").map((n) => Number.parseInt(n, 10)); + if (!Number.isInteger(a) || !Number.isInteger(b)) return null; + rangeStart = a; + rangeEnd = b; + } else { + const single = Number.parseInt(base, 10); + if (!Number.isInteger(single)) return null; + rangeStart = single; + rangeEnd = max; + } + } + for (let i = rangeStart; i <= rangeEnd; i += step) { + if (!add(i)) return null; + } + continue; + } + + if (trimmed.includes("-")) { + const [a, b] = trimmed.split("-").map((n) => Number.parseInt(n, 10)); + if (!Number.isInteger(a) || !Number.isInteger(b) || a > b) return null; + for (let i = a; i <= b; i++) { + if (!add(i)) return null; + } + continue; + } + + const single = Number.parseInt(trimmed, 10); + if (!Number.isInteger(single)) return null; + if (!add(single)) return null; + } + + return values; +} + +function buildField(name: CronFieldName, raw: string): CronField | null { + const min = name === "month" || name === "day" ? 1 : 0; + const max = name === "month" ? 12 : name === "day" ? 31 : name === "weekday" ? 7 : name === "hour" ? 23 : 59; + const allowSeven = name === "weekday"; + const values = parseFieldPart(raw, min, max, allowSeven); + if (!values || values.size === 0) return null; + return { name, min, max, values }; +} + +export function parseCron(expression: string): CronParse | null { + const trimmed = expression.trim(); + const parts = trimmed.split(/\s+/); + if (parts.length !== 5) return null; + + const fields: CronField[] = []; + const raw = {} as Record; + for (let i = 0; i < CRON_FIELDS.length; i++) { + const name = CRON_FIELDS[i]; + const field = buildField(name, parts[i]); + if (!field) return null; + fields.push(field); + raw[name] = parts[i]; + } + return { fields, raw }; +} + +function fieldByName(fields: CronField[], name: CronFieldName): CronField { + return fields.find((f) => f.name === name)!; +} + +function normalizeWeekday(weekday: number): number { + return weekday === 7 ? 0 : weekday; +} + +function weekdayMatches(field: CronField, date: Date): boolean { + const dow = date.getDay(); + if (field.values.has(normalizeWeekday(dow))) return true; + return field.values.has(7) && dow === 0; +} + +export function cronMatches(expression: string, date: Date): boolean { + const parsed = parseCron(expression); + if (!parsed) return false; + const { fields } = parsed; + + const minute = fieldByName(fields, "minute").values.has(date.getMinutes()); + const hour = fieldByName(fields, "hour").values.has(date.getHours()); + const month = fieldByName(fields, "month").values.has(date.getMonth() + 1); + const day = fieldByName(fields, "day").values.has(date.getDate()); + const dow = weekdayMatches(fieldByName(fields, "weekday"), date); + + const dayRestricted = !parsed.raw.day.includes("*"); + const dowRestricted = !parsed.raw.weekday.includes("*"); + + const dayMatch = dayRestricted && dowRestricted ? day || dow : day && dow; + return minute && hour && month && dayMatch; +} + +export function isValidCron(expression: string): boolean { + return parseCron(expression) !== null; +} + +/** Next run strictly after `after` (inclusive minute boundary handled by caller). */ +export function nextRunAfter(expression: string, after: Date): Date | null { + const parsed = parseCron(expression); + if (!parsed) return null; + + const cursor = new Date(after.getTime()); + cursor.setSeconds(0, 0); + cursor.setMinutes(cursor.getMinutes() + 1); + + for (let i = 0; i < MAX_SCAN_MINUTES; i++) { + if (cronMatches(expression, cursor)) return new Date(cursor.getTime()); + cursor.setMinutes(cursor.getMinutes() + 1); + } + return null; +} diff --git a/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task-templates.ts b/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task-templates.ts new file mode 100644 index 000000000..2b90e84d6 --- /dev/null +++ b/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task-templates.ts @@ -0,0 +1,63 @@ +export type ScheduledTaskTemplate = { + id: string; + title: string; + description: string; + cron: string; + prompt: string; +}; + +export const SCHEDULED_TASK_TEMPLATES: ScheduledTaskTemplate[] = [ + { + id: "daily-standup", + title: "每日站会摘要", + description: "每个工作日汇总昨日进展、今日计划与风险项。", + cron: "0 9 * * 1-5", + prompt: + "基于当前工作区最近的会话与提交记录,生成一份每日站会摘要:昨日完成的关键进展、今日计划、以及需要关注的风险或阻塞项。用简洁的要点列表呈现。", + }, + { + id: "weekly-report", + title: "每周工作周报", + description: "每周一生成结构化周报。", + cron: "0 8 * * 1", + prompt: + "汇总过去 7 天的工作内容,生成一份结构化周报,包含:本周完成事项、关键数据或产出、下周计划、需要协作或支持的事项。", + }, + { + id: "daily-news", + title: "每日新闻/行业简报", + description: "每天抓取并整理当日资讯简报。", + cron: "0 7 * * *", + prompt: + "收集并整理今日与所在行业相关的新闻与动态,生成一份精炼的每日简报:重要新闻标题与一句话摘要、对业务的潜在影响、值得关注的机会或风险。", + }, + { + id: "data-report", + title: "数据日报", + description: "定时汇总关键数据指标。", + cron: "0 9 * * *", + prompt: + "汇总当前工作区可获取的关键数据指标,生成一份数据日报:核心指标数值、环比变化、异常波动说明、以及简要结论。", + }, + { + id: "meeting-followup", + title: "会议纪要跟进", + description: "定时提醒并跟进会议待办事项。", + cron: "0 10 * * 1-5", + prompt: + "回顾最近的会议纪要,提取其中尚未完成的待办事项与责任人,生成一份跟进清单:待办事项、责任人、截止时间、当前状态与下一步建议。", + }, + { + id: "todo-scan", + title: "提醒/待办巡检", + description: "定时检查待办与到期事项并提醒。", + cron: "0 */6 * * *", + prompt: + "巡检当前工作区内的待办事项与到期日程,找出即将到期或已逾期的事项,生成提醒清单并给出优先级建议。", + }, +]; + +export function templateById(id: string | null | undefined): ScheduledTaskTemplate | null { + if (!id) return null; + return SCHEDULED_TASK_TEMPLATES.find((t) => t.id === id) ?? null; +} diff --git a/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task.ts b/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task.ts new file mode 100644 index 000000000..3ada675f4 --- /dev/null +++ b/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-task.ts @@ -0,0 +1,36 @@ +export type ScheduledTaskStatus = "ok" | "error" | "skipped"; + +export type ScheduledTask = { + id: string; + name: string; + description: string; + cron: string; + workspaceId: string; + prompt: string; + enabled: boolean; + templateId: string | null; + createdAt: number; + lastRunAt: number | null; + lastRunStatus: ScheduledTaskStatus | null; + nextRunAt?: number | null; +}; + +export type ScheduledTaskLogEntry = { + at: number; + status: ScheduledTaskStatus; + message: string; +}; + +export type ScheduledTaskCreateInput = { + name?: string; + description?: string; + cron?: string; + workspaceId?: string; + prompt?: string; + enabled?: boolean; + templateId?: string | null; +}; + +export type ScheduledTaskUpdatePatch = Partial< + Pick +>; diff --git a/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-tasks-panel.tsx b/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-tasks-panel.tsx new file mode 100644 index 000000000..50ccb41c9 --- /dev/null +++ b/apps/app/src/react-app/domains/session/scheduled-tasks/scheduled-tasks-panel.tsx @@ -0,0 +1,368 @@ +/** @jsxImportSource react */ +import { useCallback, useEffect, useMemo, useState } from "react"; +import { CalendarClock, Clock, Loader2, Play, Plus, RefreshCw, Trash2, X } from "lucide-react"; + +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Textarea } from "@/components/ui/textarea"; +import { Switch } from "@/components/ui/switch"; +import { cn } from "@/lib/utils"; +import { isElectronRuntime } from "../../../../app/utils"; +import { isValidCron, nextRunAfter } from "./cron"; +import { SCHEDULED_TASK_TEMPLATES, type ScheduledTaskTemplate } from "./scheduled-task-templates"; +import type { ScheduledTask, ScheduledTaskLogEntry } from "./scheduled-task"; + +type ScheduledTasksPanelProps = { + workspaceRoot: string; + onClose?: () => void; +}; + +type Draft = { + id: string | null; + name: string; + description: string; + cron: string; + prompt: string; + templateId: string | null; +}; + +function emptyDraft(): Draft { + return { id: null, name: "", description: "", cron: "", prompt: "", templateId: null }; +} + +function draftFromTemplate(template: ScheduledTaskTemplate): Draft { + return { + id: null, + name: template.title, + description: template.description, + cron: template.cron, + prompt: template.prompt, + templateId: template.id, + }; +} + +function draftFromTask(task: ScheduledTask): Draft { + return { + id: task.id, + name: task.name, + description: task.description, + cron: task.cron, + prompt: task.prompt, + templateId: task.templateId, + }; +} + +function formatTime(value: number | null | undefined): string { + if (!value) return "—"; + return new Date(value).toLocaleString(); +} + +function cronHint(expression: string): string { + if (!expression.trim()) return "请输入 5 段 cron 表达式"; + if (!isValidCron(expression)) return "无效的 cron 表达式"; + const next = nextRunAfter(expression, new Date()); + return next ? `下次运行:${new Date(next).toLocaleString()}` : "无法计算下次运行时间"; +} + +export function ScheduledTasksPanel({ workspaceRoot, onClose }: ScheduledTasksPanelProps) { + const bridge = typeof window !== "undefined" ? window.__IPOLLOWORK_ELECTRON__?.scheduledTasks : undefined; + const [tasks, setTasks] = useState([]); + const [loading, setLoading] = useState(true); + const [selectedId, setSelectedId] = useState(null); + const [draft, setDraft] = useState(null); + const [logs, setLogs] = useState([]); + const [busy, setBusy] = useState(false); + + const refresh = useCallback(async () => { + if (!bridge?.list) { + setTasks([]); + setLoading(false); + return; + } + try { + const result = await bridge.list(); + setTasks(result ?? []); + } finally { + setLoading(false); + } + }, [bridge]); + + useEffect(() => { + void refresh(); + const off = bridge?.onChanged?.(() => { + void refresh(); + }); + return () => off?.(); + }, [bridge, refresh]); + + const selectedTask = useMemo( + () => tasks.find((task) => task.id === selectedId) ?? null, + [tasks, selectedId], + ); + + useEffect(() => { + if (!selectedTask || !bridge?.logs) { + setLogs([]); + return; + } + void bridge.logs(selectedTask.id).then((result) => setLogs(result ?? [])); + }, [selectedTask, bridge]); + + const openNew = () => { + setSelectedId(null); + setDraft(null); + setLogs([]); + }; + + const openEdit = (task: ScheduledTask) => { + setSelectedId(task.id); + setDraft(draftFromTask(task)); + }; + + const pickTemplate = (template: ScheduledTaskTemplate) => { + setSelectedId(null); + setDraft(draftFromTemplate(template)); + }; + + const save = async () => { + if (!draft || !bridge?.create || !bridge?.update) return; + if (!draft.name.trim() || !isValidCron(draft.cron) || !draft.prompt.trim()) return; + setBusy(true); + try { + const input = { + name: draft.name, + description: draft.description, + cron: draft.cron, + prompt: draft.prompt, + workspaceId: workspaceRoot, + templateId: draft.templateId, + }; + const saved = draft.id + ? await bridge.update(draft.id, input) + : await bridge.create(input); + await refresh(); + if (saved) { + setSelectedId(saved.id); + setDraft(draftFromTask(saved)); + } + } finally { + setBusy(false); + } + }; + + const toggleEnabled = async (task: ScheduledTask, enabled: boolean) => { + if (!bridge?.setEnabled) return; + await bridge.setEnabled(task.id, enabled); + void refresh(); + }; + + const runNow = async (task: ScheduledTask) => { + if (!bridge?.runNow) return; + setBusy(true); + try { + await bridge.runNow(task.id); + await refresh(); + } finally { + setBusy(false); + } + }; + + const remove = async (task: ScheduledTask) => { + if (!bridge?.remove) return; + await bridge.remove(task.id); + setSelectedId(null); + setDraft(null); + void refresh(); + }; + + const available = Boolean(bridge); + const cronValue = draft?.cron ?? ""; + + return ( +
+
+
+ + 定时任务 + {tasks.length} 个 +
+
+ + {onClose ? ( + + ) : null} +
+
+ + {!available ? ( +
+ 定时任务面板仅在桌面应用可用。 +
+ ) : ( +
+ + +
+ {!draft ? ( +
+

选择模板

+
+ {SCHEDULED_TASK_TEMPLATES.map((template) => ( + + ))} +
+
+ ) : ( +
+
+
+ + setDraft({ ...draft, name: event.target.value })} + placeholder="例如:每日站会摘要" + /> +
+
+ + setDraft({ ...draft, cron: event.target.value })} + placeholder="0 9 * * 1-5" + className="font-mono" + /> +

+ {cronHint(cronValue)} +

+
+
+ +