@mlpal/yodex-ui 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/client/client.d.ts +12 -18
- package/dist/client/types.d.ts +16 -34
- package/dist/client/useYodexSession.d.ts +6 -0
- package/dist/components/ApprovalPrompt.d.ts +7 -0
- package/dist/components/Composer.d.ts +11 -7
- package/dist/components/PermissionPrompt.d.ts +8 -3
- package/dist/components/RunStatus.d.ts +3 -1
- package/dist/components/SessionList.d.ts +3 -10
- package/dist/components/Transcript.d.ts +7 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +488 -313
- package/dist/index.js.map +13 -12
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/client/client.ts", "../src/client/reducer.ts", "../src/client/useYodexSession.ts", "../src/components/Transcript.tsx", "../src/components/AssistantMessage.tsx", "../src/components/cn.ts", "../src/components/PlanChecklist.tsx", "../src/components/ToolCall.tsx", "../src/components/DiffView.tsx", "../src/components/PermissionPrompt.tsx", "../src/components/QuestionForm.tsx", "../src/components/RunStatus.tsx", "../src/components/SessionList.tsx", "../src/components/Composer.tsx"],
|
|
3
|
+
"sources": ["../src/client/client.ts", "../src/client/reducer.ts", "../src/client/useYodexSession.ts", "../src/components/Transcript.tsx", "../src/components/AssistantMessage.tsx", "../src/components/cn.ts", "../src/components/PlanChecklist.tsx", "../src/components/ToolCall.tsx", "../src/components/DiffView.tsx", "../src/components/PermissionPrompt.tsx", "../src/components/ApprovalPrompt.tsx", "../src/components/QuestionForm.tsx", "../src/components/RunStatus.tsx", "../src/components/SessionList.tsx", "../src/components/Composer.tsx"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { ClientMessage, ServerMessage } from \"@mlpal/harness-protocol\";\nimport type { AskOutcome, ConnectionState, IncomingMessage } from \"./types\";\n\n/** The subset of the WebSocket API the client uses, so tests can inject a fake. */\nexport interface SocketLike {\n readyState: number;\n send(data: string): void;\n close(): void;\n onopen: ((ev: unknown) => void) | null;\n onclose: ((ev: unknown) => void) | null;\n onerror: ((ev: unknown) => void) | null;\n onmessage: ((ev: { data: unknown }) => void) | null;\n}\nexport type SocketFactory = (url: string) => SocketLike;\n\nexport interface RunOptions {\n sessionId?: string;\n model?: string;\n mode?: string;\n /** yodex/2:
|
|
6
|
-
"import type { EngineEvent, ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport { addUsage, emptyUsage, HUMAN } from \"@mlpal/harness-protocol\";\nimport type { PlanItem, PlanStatus, SessionAction, SessionState, TranscriptItem } from \"./types\";\n\nexport function initialState(): SessionState {\n return {\n connection: \"connecting\",\n items: [],\n running: false,\n usageTotal: emptyUsage(),\n pendingPermissions: [],\n sessions: [],\n models: [],\n skills: [],\n };\n}\n\nconst TASK_TOOLS = new Set([\"TaskCreate\", \"TaskUpdate\", \"TaskList\"]);\nlet seq = 0;\nconst nextId = (prefix: string) => `${prefix}-${++seq}`;\n\nfunction textOf(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((b) => (b && typeof b === \"object\" && (b as { type?: string }).type === \"text\" ? String((b as { text?: string }).text ?? \"\") : \"\"))\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction replaceOrAppendPlan(items: TranscriptItem[], plan: PlanItem[]): TranscriptItem[] {\n const idx = items.findIndex((i) => i.kind === \"plan\");\n const row: TranscriptItem = { kind: \"plan\", id: \"plan\", items: plan };\n if (idx === -1) return [...items, row];\n const out = items.slice();\n out[idx] = row;\n return out;\n}\n\nfunction currentPlan(items: TranscriptItem[]): PlanItem[] {\n const row = items.find((i) => i.kind === \"plan\");\n return row && row.kind === \"plan\" ? row.items : [];\n}\n\nfunction dropDraft(items: TranscriptItem[]): TranscriptItem[] {\n const last = items[items.length - 1];\n return last && last.kind === \"assistant\" && last.live ? items.slice(0, -1) : items;\n}\n\n/**\n * Apply one engine event. `live` distinguishes the running stream from a history replay:\n * a human turn on the live stream was already echoed locally by `local_user`, so it is\n * skipped there and rendered only from history.\n */\nexport function applyEvent(state: SessionState, ev: EngineEvent, live: boolean): SessionState {\n switch (ev.type) {\n case \"system\":\n return { ...state, sessionId: ev.sessionId, model: state.model ?? ev.model, cwd: ev.cwd };\n case \"user\": {\n if (live && ev.author.type === \"human\") return state;\n const text = textOf(ev.message.content);\n const blocks = Array.isArray(ev.message.content) ? ev.message.content.filter((b) => b.type !== \"text\") : undefined;\n return {\n ...state,\n items: [...dropDraft(state.items), { kind: \"user\", id: nextId(\"u\"), text, author: ev.author, ts: ev.ts, ...(blocks?.length ? { blocks } : {}) }],\n };\n }\n case \"text_delta\": {\n const items = state.items.slice();\n const last = items[items.length - 1];\n if (last && last.kind === \"assistant\" && last.live) items[items.length - 1] = { ...last, text: last.text + ev.text };\n else items.push({ kind: \"assistant\", id: nextId(\"a\"), text: ev.text, ts: new Date().toISOString(), live: true });\n return { ...state, items, activity: \"Responding\" };\n }\n case \"thinking_delta\":\n return state.activity === \"Thinking\" ? state : { ...state, activity: \"Thinking\" };\n case \"tool_use_start\":\n return { ...state, activity: ev.name };\n case \"reset\":\n return { ...state, items: dropDraft(state.items) };\n case \"assistant\": {\n let items = dropDraft(state.items);\n const text = textOf(ev.message.content);\n if (text.trim()) items = [...items, { kind: \"assistant\", id: nextId(\"a\"), text, ts: ev.ts, live: false }];\n let plan = currentPlan(items);\n let planChanged = false;\n if (Array.isArray(ev.message.content)) {\n for (const b of ev.message.content) {\n if (b.type !== \"tool_use\") continue;\n const input = (b.input ?? {}) as Record<string, unknown>;\n if (TASK_TOOLS.has(b.name)) {\n if (b.name === \"TaskCreate\") {\n plan = [...plan, { id: b.id, subject: String(input.subject ?? \"\"), ...(input.description ? { description: String(input.description) } : {}), status: (input.status as PlanStatus) ?? \"pending\" }];\n planChanged = true;\n } else if (b.name === \"TaskUpdate\") {\n const id = String(input.id ?? \"\");\n plan = plan.map((p) =>\n p.id === id\n ? { ...p, ...(input.status ? { status: input.status as PlanStatus } : {}), ...(input.subject ? { subject: String(input.subject) } : {}), ...(input.description ? { description: String(input.description) } : {}) }\n : p,\n );\n planChanged = true;\n }\n continue;\n }\n items = [...items, { kind: \"tool\", id: b.id, name: b.name, input, ts: ev.ts }];\n }\n }\n if (planChanged) items = replaceOrAppendPlan(items, plan);\n return { ...state, items, usageTotal: addUsage(state.usageTotal, ev.usage), activity: undefined };\n }\n case \"tool_result\": {\n const idx = state.items.findIndex((i) => i.kind === \"tool\" && i.id === ev.toolUseId);\n if (idx !== -1) {\n const items = state.items.slice();\n const t = items[idx] as Extract<TranscriptItem, { kind: \"tool\" }>;\n items[idx] = { ...t, result: { content: ev.content, isError: ev.isError, ...(ev.diff ? { diff: ev.diff } : {}), ...(ev.blocks ? { blocks: ev.blocks } : {}) } };\n return { ...state, items };\n }\n // A TaskCreate result names the tracker id its plan row goes by from now on.\n const m = /^#(\\d+) created:/.exec(ev.content);\n if (m && ev.toolName === \"TaskCreate\") {\n const plan = currentPlan(state.items).map((p) => (p.id === ev.toolUseId ? { ...p, id: m[1]! } : p));\n return { ...state, items: replaceOrAppendPlan(state.items, plan) };\n }\n return state;\n }\n case \"result\":\n return {\n ...state,\n running: false,\n activity: undefined,\n lastResult: ev,\n items: [...dropDraft(state.items), { kind: \"result\", id: nextId(\"r\"), result: ev }],\n };\n case \"error\":\n return { ...state, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: ev.message, ts: ev.ts }] };\n case \"compact\":\n return { ...state, items: [...state.items, { kind: \"compact\", id: nextId(\"c\"), replacedMessages: ev.replacedMessages, ts: ev.ts }] };\n case \"rewind\":\n return state;\n }\n}\n\nexport function reduce(state: SessionState, action: SessionAction): SessionState {\n switch (action.type) {\n case \"connection\":\n return { ...state, connection: action.state };\n case \"clear\":\n return { ...initialState(), connection: state.connection, protocol: state.protocol, sessions: state.sessions, models: state.models, skills: state.skills };\n case \"error\":\n return { ...state, error: action.message };\n case \"local_user\":\n return {\n ...state,\n items: [...state.items, { kind: \"user\", id: nextId(\"u\"), text: action.text, author: HUMAN, ts: action.ts, ...(action.blocks?.length ? { blocks: action.blocks } : {}) }],\n };\n case \"run_started\":\n return { ...state, running: true, runStartedAt: action.at, activity: \"Thinking\", error: undefined, lastResult: undefined, ...(action.sessionId ? { sessionId: action.sessionId } : {}) };\n case \"permission_answered\":\n return { ...state, pendingPermissions: state.pendingPermissions.filter((p) => p.id !== action.id) };\n case \"question_answered\":\n return state.pendingQuestion?.id === action.id ? { ...state, pendingQuestion: undefined } : state;\n case \"history\": {\n let s: SessionState = { ...state, items: [], sessionId: action.sessionId, usageTotal: emptyUsage(), lastResult: undefined };\n for (const m of action.messages) s = applyEvent(s, m as EngineEvent, false);\n return { ...s, running: state.running };\n }\n case \"server\": {\n const m = action.message;\n switch (m.type) {\n case \"ready\":\n return { ...state, connection: \"connected\", protocol: m.protocol };\n case \"event\":\n return applyEvent(state.sessionId ? state : { ...state, sessionId: m.sessionId }, m.event, true);\n case \"permission_request\":\n return { ...state, pendingPermissions: [...state.pendingPermissions, { id: m.id, sessionId: m.sessionId, toolName: m.toolName, input: m.input }] };\n case \"question_request\":\n return { ...state, pendingQuestion: { id: m.id, sessionId: m.sessionId, questions: m.questions } };\n case \"question_cleared\":\n return state.pendingQuestion?.id === m.id ? { ...state, pendingQuestion: undefined } : state;\n case \"sessions\":\n return { ...state, sessions: m.sessions };\n case \"models\":\n return { ...state, models: m.models };\n case \"skills\":\n return { ...state, skills: m.skills };\n case \"session_history\":\n return reduce(state, { type: \"history\", sessionId: m.sessionId, messages: m.messages });\n case \"done\":\n return { ...state, running: false, activity: undefined, pendingPermissions: [], sessionId: m.sessionId };\n case \"error\":\n return { ...state, error: m.message, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: m.message, ts: new Date().toISOString() }] };\n default:\n return state;\n }\n }\n }\n}\n\nexport function elapsedLabel(ms: number): string {\n const s = Math.max(0, Math.floor(ms / 1000));\n return s < 60 ? `${s}s` : `${Math.floor(s / 60)}m ${s % 60}s`;\n}\n\nexport function resultLabel(r: ResultEvent): { label: string; tone: \"ok\" | \"bad\" | \"warn\" | \"muted\" } {\n switch (r.subtype) {\n case \"success\":\n return { label: \"Done\", tone: \"ok\" };\n case \"cancelled\":\n return { label: \"Interrupted\", tone: \"muted\" };\n case \"needs_approval\":\n return { label: \"Needs your approval\", tone: \"warn\" };\n case \"max_turns\":\n return { label: \"Stopped at the turn limit\", tone: \"warn\" };\n case \"error\":\n return { label: r.reason ? `Failed: ${r.reason}` : \"Failed\", tone: \"bad\" };\n default:\n return { label: String((r as { subtype: string }).subtype).replace(/_/g, \" \"), tone: \"warn\" };\n }\n}\n\nexport function formatTokens(u: Usage): string {\n const k = (n: number) => (n >= 10_000 ? `${(n / 1000).toFixed(1)}k` : String(n));\n return `${k(u.input_tokens)}↑ ${k(u.output_tokens)}↓`;\n}\n",
|
|
7
|
-
"import { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport type { ContentBlock } from \"@mlpal/harness-protocol\";\nimport { type RunOptions, type SocketFactory, YodexClient } from \"./client\";\nimport { initialState, reduce } from \"./reducer\";\nimport type { AskOutcome, SessionState } from \"./types\";\n\nexport interface UseYodexSessionOptions {\n url: string;\n token?: string;\n /** Load this session's history on connect and run turns against it. */\n sessionId?: string;\n /** Default run options (model, mode, hop, cwd) applied to every turn. */\n run?: RunOptions;\n autoConnect?: boolean;\n socketFactory?: SocketFactory;\n}\n\nexport interface Attachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n}\n\nexport interface YodexSession {\n state: SessionState;\n client: YodexClient;\n /** Send a turn. Attachments ride as image blocks once the server speaks yodex/2. */\n run: (text: string, attachments?: Attachment[], options?: RunOptions) => void;\n stop: () => void;\n allow: (permissionId: string) => void;\n deny: (permissionId: string, reason?: string) => void;\n answer: (questionId: string, outcome: AskOutcome) => void;\n approve: (decision: \"allow\" | \"deny\", reason?: string) => void;\n loadSession: (sessionId: string) => Promise<void>;\n refreshSessions: () => Promise<void>;\n refreshModels: () => Promise<void>;\n newSession: () => void;\n}\n\n/** One session view over one socket: connect, replay, stream, answer. */\nexport function useYodexSession(options: UseYodexSessionOptions): YodexSession {\n const [state, dispatch] = useReducer(reduce, undefined, initialState);\n const sessionIdRef = useRef<string | undefined>(options.sessionId);\n const client = useMemo(\n () =>\n new YodexClient({\n url: options.url,\n token: options.token,\n socketFactory: options.socketFactory,\n onState: (s) => dispatch({ type: \"connection\", state: s }),\n onMessage: (m) => {\n dispatch({ type: \"server\", message: m });\n if (m.type === \"ready\" && sessionIdRef.current) {\n client.loadSession(sessionIdRef.current).catch((e: Error) => dispatch({ type: \"error\", message: e.message }));\n }\n },\n }),\n // The socket outlives renders; a URL or token change means a new client.\n [options.url, options.token, options.socketFactory],\n );\n\n useEffect(() => {\n if (options.autoConnect === false) return;\n client.connect();\n return () => client.close();\n }, [client, options.autoConnect]);\n\n useEffect(() => {\n sessionIdRef.current = state.sessionId ?? options.sessionId;\n }, [state.sessionId, options.sessionId]);\n\n const guard = useCallback(\n (fn: () => void) => {\n try {\n fn();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [],\n );\n\n const run = useCallback(\n (text: string, attachments: Attachment[] = [], runOptions: RunOptions = {}) => {\n const blocks: ContentBlock[] = attachments.map((a) => ({ type: \"image\", source: { type: \"base64\", media_type: a.mediaType
|
|
8
|
-
"import { useEffect, useRef } from \"react\";\nimport type { TranscriptItem } from \"../client/types\";\nimport { AssistantMessage } from \"./AssistantMessage\";\nimport { cn } from \"./cn\";\nimport { PlanChecklist } from \"./PlanChecklist\";\nimport { ToolCall } from \"./ToolCall\";\nimport { resultLabel, formatTokens } from \"../client/reducer\";\n\nexport interface TranscriptProps {\n items: TranscriptItem[];\n /** Keep the view pinned to the bottom while new rows arrive, unless the reader scrolled up. */\n autoScroll?: boolean;\n onOpenFile?: (path: string) => void;\n /** Rendered after the last row: pending prompts, the status line. */\n footer?: React.ReactNode;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\
|
|
9
|
-
"import Markdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { cn } from \"./cn\";\n\nconst plugins = [remarkGfm];\n\n/**\n * Assistant prose as sanitised markdown: GFM tables and task lists, raw HTML skipped, links\n * opened in a new tab. `live` marks a still-streaming turn.\n */\nexport function AssistantMessage({ text, live, className }: { text: string; live?: boolean; className?: string }) {\n return (\n <div className={cn(\"yx-assistant
|
|
5
|
+
"import type { ClientMessage, ContentBlock, ServerMessage } from \"@mlpal/harness-protocol\";\nimport type { AskOutcome, ConnectionState, IncomingMessage } from \"./types\";\n\n/** The subset of the WebSocket API the client uses, so tests can inject a fake. */\nexport interface SocketLike {\n readyState: number;\n send(data: string): void;\n close(): void;\n onopen: ((ev: unknown) => void) | null;\n onclose: ((ev: unknown) => void) | null;\n onerror: ((ev: unknown) => void) | null;\n onmessage: ((ev: { data: unknown }) => void) | null;\n}\nexport type SocketFactory = (url: string) => SocketLike;\n\nexport interface RunOptions {\n sessionId?: string;\n model?: string;\n mode?: string;\n /** yodex/2: the HOP for this run (must be the server's own unless it claims \"hop_per_run\"),\n * the working directory under the workspace root, and attachments (\"attachments\"). */\n hop?: string;\n cwd?: string;\n blocks?: ContentBlock[];\n}\n\n/** Outgoing messages: the protocol's ClientMessage (yodex/2, additive over yodex/1). */\nexport type OutgoingMessage = ClientMessage;\n\nexport interface YodexClientOptions {\n /** ws:// or wss:// URL of `yodex serve`'s /ws endpoint. */\n url: string;\n /** Appended as ?token= when the proxy does not inject Authorization on the upgrade. */\n token?: string;\n onMessage: (m: IncomingMessage) => void;\n onState?: (s: ConnectionState) => void;\n socketFactory?: SocketFactory;\n /** Reconnect backoff bounds, ms. */\n backoffMs?: { min: number; max: number };\n requestTimeoutMs?: number;\n /** Injected for deterministic tests. */\n setTimer?: (fn: () => void, ms: number) => unknown;\n clearTimer?: (h: unknown) => void;\n random?: () => number;\n}\n\ninterface Pending {\n resolve: (m: ServerMessage) => void;\n reject: (e: Error) => void;\n timer: unknown;\n}\n\n/**\n * A yodex serve client: one socket per session view, reconnect with jittered exponential\n * backoff, and request-id correlation for the list_* / load_session round-trips. Everything\n * streamed (events, permission and question requests, done, error) goes to `onMessage`;\n * the reducer in ./reducer turns it into view state.\n */\nexport class YodexClient {\n private socket: SocketLike | null = null;\n private closedByUser = false;\n private attempt = 0;\n private reconnectHandle: unknown = null;\n private readonly pending = new Map<string, Pending>();\n private readonly opts: Required<Pick<YodexClientOptions, \"backoffMs\" | \"requestTimeoutMs\" | \"socketFactory\" | \"setTimer\" | \"clearTimer\" | \"random\">> & YodexClientOptions;\n private seq = 0;\n state: ConnectionState = \"closed\";\n\n constructor(options: YodexClientOptions) {\n // An option passed as `undefined` (a hook forwarding an unset prop) must not erase a default.\n const given = Object.fromEntries(Object.entries(options).filter(([, v]) => v !== undefined)) as YodexClientOptions;\n this.opts = {\n backoffMs: { min: 500, max: 10_000 },\n requestTimeoutMs: 15_000,\n socketFactory: (url) => new WebSocket(url) as unknown as SocketLike,\n setTimer: (fn, ms) => setTimeout(fn, ms),\n clearTimer: (h) => clearTimeout(h as ReturnType<typeof setTimeout>),\n random: Math.random,\n ...given,\n };\n }\n\n get url(): string {\n const u = this.opts.url;\n if (!this.opts.token) return u;\n return `${u}${u.includes(\"?\") ? \"&\" : \"?\"}token=${encodeURIComponent(this.opts.token)}`;\n }\n\n connect(): void {\n this.closedByUser = false;\n this.open();\n }\n\n close(): void {\n this.closedByUser = true;\n if (this.reconnectHandle) this.opts.clearTimer(this.reconnectHandle);\n this.reconnectHandle = null;\n this.socket?.close();\n this.socket = null;\n this.failPending(new Error(\"client closed\"));\n this.setState(\"closed\");\n }\n\n private setState(s: ConnectionState): void {\n if (this.state === s) return;\n this.state = s;\n this.opts.onState?.(s);\n }\n\n private open(): void {\n this.setState(this.attempt === 0 ? \"connecting\" : \"reconnecting\");\n const ws = this.opts.socketFactory(this.url);\n this.socket = ws;\n ws.onopen = () => {\n this.attempt = 0;\n };\n ws.onmessage = (ev) => {\n let m: IncomingMessage;\n try {\n m = JSON.parse(String(ev.data)) as IncomingMessage;\n } catch {\n return;\n }\n if (m.type === \"ready\") this.setState(\"connected\");\n const rid = (m as { requestId?: string }).requestId;\n if (rid && this.pending.has(rid) && m.type !== \"done\") {\n const p = this.pending.get(rid)!;\n this.pending.delete(rid);\n this.opts.clearTimer(p.timer);\n p.resolve(m as ServerMessage);\n }\n this.opts.onMessage(m);\n };\n ws.onerror = () => {\n // onclose follows; the reconnect decision lives there.\n };\n ws.onclose = () => {\n if (this.socket !== ws) return;\n this.socket = null;\n this.failPending(new Error(\"connection lost\"));\n if (this.closedByUser) return;\n this.scheduleReconnect();\n };\n }\n\n private scheduleReconnect(): void {\n const { min, max } = this.opts.backoffMs;\n const base = Math.min(max, min * 2 ** this.attempt);\n const delay = Math.round(base * (0.5 + this.opts.random() * 0.5));\n this.attempt += 1;\n this.setState(\"reconnecting\");\n this.reconnectHandle = this.opts.setTimer(() => {\n this.reconnectHandle = null;\n if (!this.closedByUser) this.open();\n }, delay);\n }\n\n private failPending(e: Error): void {\n for (const p of this.pending.values()) {\n this.opts.clearTimer(p.timer);\n p.reject(e);\n }\n this.pending.clear();\n }\n\n get connected(): boolean {\n return this.state === \"connected\" && this.socket !== null;\n }\n\n send(m: OutgoingMessage): void {\n if (!this.socket || this.state !== \"connected\") throw new Error(\"not connected\");\n this.socket.send(JSON.stringify(m));\n }\n\n private requestId(): string {\n return `${Date.now().toString(36)}-${(++this.seq).toString(36)}`;\n }\n\n /** Send a request carrying a requestId and resolve with the server's correlated reply. */\n request<T extends ServerMessage[\"type\"]>(m: OutgoingMessage & { requestId: string }, _expect: T): Promise<Extract<ServerMessage, { type: T }>> {\n return new Promise((resolve, reject) => {\n const timer = this.opts.setTimer(() => {\n this.pending.delete(m.requestId);\n reject(new Error(`${m.type}: no reply within ${this.opts.requestTimeoutMs} ms`));\n }, this.opts.requestTimeoutMs);\n this.pending.set(m.requestId, { resolve: (r) => resolve(r as Extract<ServerMessage, { type: T }>), reject, timer });\n try {\n this.send(m);\n } catch (e) {\n this.pending.delete(m.requestId);\n this.opts.clearTimer(timer);\n reject(e as Error);\n }\n });\n }\n\n /** Start a turn. Returns the requestId the matching `done` will carry. */\n run(prompt: string, options: RunOptions = {}): string {\n const requestId = this.requestId();\n this.send({ type: \"run\", requestId, prompt, ...options });\n return requestId;\n }\n\n interrupt(): void {\n this.send({ type: \"interrupt\" });\n }\n\n sendPeer(sessionId: string, text: string): void {\n this.send({ type: \"send\", sessionId, text });\n }\n\n respondPermission(id: string, decision: \"allow\" | \"deny\", reason?: string): void {\n this.send({ type: \"permission_response\", id, decision, ...(reason ? { reason } : {}) });\n }\n\n respondQuestion(id: string, outcome: AskOutcome): void {\n this.send({ type: \"question_response\", id, outcome });\n }\n\n respondApproval(sessionId: string, decision: \"allow\" | \"deny\", reason?: string): void {\n this.send({ type: \"approval_response\", sessionId, decision, ...(reason ? { reason } : {}) });\n }\n\n listSessions() {\n return this.request({ type: \"list_sessions\", requestId: this.requestId() }, \"sessions\");\n }\n listModels() {\n return this.request({ type: \"list_models\", requestId: this.requestId() }, \"models\");\n }\n listSkills() {\n return this.request({ type: \"list_skills\", requestId: this.requestId() }, \"skills\");\n }\n loadSession(sessionId: string) {\n return this.request({ type: \"load_session\", requestId: this.requestId(), sessionId }, \"session_history\");\n }\n}\n",
|
|
6
|
+
"import type { EngineEvent, ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport { addUsage, emptyUsage, HUMAN } from \"@mlpal/harness-protocol\";\nimport type { PlanItem, PlanStatus, SessionAction, SessionState, TranscriptItem } from \"./types\";\n\nexport function initialState(): SessionState {\n return {\n connection: \"connecting\",\n capabilities: [],\n items: [],\n running: false,\n usageTotal: emptyUsage(),\n pendingPermissions: [],\n sessions: [],\n models: [],\n skills: [],\n };\n}\n\nconst TASK_TOOLS = new Set([\"TaskCreate\", \"TaskUpdate\", \"TaskList\"]);\nlet seq = 0;\nconst nextId = (prefix: string) => `${prefix}-${++seq}`;\n\nfunction textOf(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((b) => (b && typeof b === \"object\" && (b as { type?: string }).type === \"text\" ? String((b as { text?: string }).text ?? \"\") : \"\"))\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction replaceOrAppendPlan(items: TranscriptItem[], plan: PlanItem[]): TranscriptItem[] {\n const idx = items.findIndex((i) => i.kind === \"plan\");\n const row: TranscriptItem = { kind: \"plan\", id: \"plan\", items: plan };\n if (idx === -1) return [...items, row];\n const out = items.slice();\n out[idx] = row;\n return out;\n}\n\nfunction currentPlan(items: TranscriptItem[]): PlanItem[] {\n const row = items.find((i) => i.kind === \"plan\");\n return row && row.kind === \"plan\" ? row.items : [];\n}\n\nfunction dropDraft(items: TranscriptItem[]): TranscriptItem[] {\n const last = items[items.length - 1];\n return last && last.kind === \"assistant\" && last.live ? items.slice(0, -1) : items;\n}\n\n/**\n * Apply one engine event. `live` distinguishes the running stream from a history replay:\n * a human turn on the live stream was already echoed locally by `local_user`, so it is\n * skipped there and rendered only from history.\n */\nexport function applyEvent(state: SessionState, ev: EngineEvent, live: boolean): SessionState {\n switch (ev.type) {\n case \"system\":\n return { ...state, sessionId: ev.sessionId, model: state.model ?? ev.model, cwd: ev.cwd };\n case \"user\": {\n if (live && ev.author.type === \"human\") return state;\n const text = textOf(ev.message.content);\n const blocks = Array.isArray(ev.message.content) ? ev.message.content.filter((b) => b.type !== \"text\") : undefined;\n return {\n ...state,\n items: [...dropDraft(state.items), { kind: \"user\", id: nextId(\"u\"), text, author: ev.author, ts: ev.ts, ...(blocks?.length ? { blocks } : {}) }],\n };\n }\n case \"text_delta\": {\n const items = state.items.slice();\n const last = items[items.length - 1];\n if (last && last.kind === \"assistant\" && last.live) items[items.length - 1] = { ...last, text: last.text + ev.text };\n else items.push({ kind: \"assistant\", id: nextId(\"a\"), text: ev.text, ts: new Date().toISOString(), live: true });\n return { ...state, items, activity: \"Responding\" };\n }\n case \"thinking_delta\":\n return state.activity === \"Thinking\" ? state : { ...state, activity: \"Thinking\" };\n case \"tool_use_start\":\n return { ...state, activity: ev.name };\n case \"reset\":\n return { ...state, items: dropDraft(state.items) };\n case \"assistant\": {\n let items = dropDraft(state.items);\n const text = textOf(ev.message.content);\n if (text.trim()) items = [...items, { kind: \"assistant\", id: nextId(\"a\"), text, ts: ev.ts, live: false }];\n let plan = currentPlan(items);\n let planChanged = false;\n if (Array.isArray(ev.message.content)) {\n for (const b of ev.message.content) {\n if (b.type !== \"tool_use\") continue;\n const input = (b.input ?? {}) as Record<string, unknown>;\n if (TASK_TOOLS.has(b.name)) {\n if (b.name === \"TaskCreate\") {\n plan = [...plan, { id: b.id, subject: String(input.subject ?? \"\"), ...(input.description ? { description: String(input.description) } : {}), status: (input.status as PlanStatus) ?? \"pending\" }];\n planChanged = true;\n } else if (b.name === \"TaskUpdate\") {\n const id = String(input.id ?? \"\");\n plan = plan.map((p) =>\n p.id === id\n ? { ...p, ...(input.status ? { status: input.status as PlanStatus } : {}), ...(input.subject ? { subject: String(input.subject) } : {}), ...(input.description ? { description: String(input.description) } : {}) }\n : p,\n );\n planChanged = true;\n }\n continue;\n }\n items = [...items, { kind: \"tool\", id: b.id, name: b.name, input, ts: ev.ts }];\n }\n }\n if (planChanged) items = replaceOrAppendPlan(items, plan);\n return { ...state, items, usageTotal: addUsage(state.usageTotal, ev.usage), activity: undefined };\n }\n case \"tool_result\": {\n const idx = state.items.findIndex((i) => i.kind === \"tool\" && i.id === ev.toolUseId);\n if (idx !== -1) {\n const items = state.items.slice();\n const t = items[idx] as Extract<TranscriptItem, { kind: \"tool\" }>;\n items[idx] = { ...t, result: { content: ev.content, isError: ev.isError, ...(ev.diff ? { diff: ev.diff } : {}), ...(ev.blocks ? { blocks: ev.blocks } : {}) } };\n return { ...state, items };\n }\n // A TaskCreate result names the tracker id its plan row goes by from now on.\n const m = /^#(\\d+) created:/.exec(ev.content);\n if (m && ev.toolName === \"TaskCreate\") {\n const plan = currentPlan(state.items).map((p) => (p.id === ev.toolUseId ? { ...p, id: m[1]! } : p));\n return { ...state, items: replaceOrAppendPlan(state.items, plan) };\n }\n return state;\n }\n case \"result\":\n return {\n ...state,\n running: false,\n activity: undefined,\n lastResult: ev,\n items: [...dropDraft(state.items), { kind: \"result\", id: nextId(\"r\"), result: ev }],\n };\n case \"error\":\n return { ...state, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: ev.message, ts: ev.ts }] };\n case \"compact\":\n return { ...state, items: [...state.items, { kind: \"compact\", id: nextId(\"c\"), replacedMessages: ev.replacedMessages, ts: ev.ts }] };\n case \"rewind\":\n return state;\n }\n}\n\nexport function reduce(state: SessionState, action: SessionAction): SessionState {\n switch (action.type) {\n case \"connection\": {\n if (action.state === \"connected\" || !state.running) return { ...state, connection: action.state };\n // The socket is gone mid-run: the server aborts and no `done` will come. Settle the run so\n // the composer and status recover; the transcript keeps what streamed.\n return {\n ...state,\n connection: action.state,\n running: false,\n activity: undefined,\n pendingPermissions: [],\n pendingQuestion: undefined,\n items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: \"Connection lost while the agent was working; what streamed so far was kept.\", ts: new Date().toISOString() }],\n };\n }\n case \"clear\":\n return { ...initialState(), connection: state.connection, protocol: state.protocol, capabilities: state.capabilities, hop: state.hop, rootCwd: state.rootCwd, sessions: state.sessions, models: state.models, skills: state.skills };\n case \"error\":\n return { ...state, error: action.message };\n case \"local_user\":\n return {\n ...state,\n items: [...state.items, { kind: \"user\", id: nextId(\"u\"), text: action.text, author: HUMAN, ts: action.ts, ...(action.blocks?.length ? { blocks: action.blocks } : {}) }],\n };\n case \"run_started\":\n return { ...state, running: true, runStartedAt: action.at, activity: \"Thinking\", error: undefined, lastResult: undefined, pendingApproval: undefined, ...(action.sessionId ? { sessionId: action.sessionId } : {}) };\n case \"permission_answered\":\n return { ...state, pendingPermissions: state.pendingPermissions.filter((p) => p.id !== action.id) };\n case \"question_answered\":\n return state.pendingQuestion?.id === action.id ? { ...state, pendingQuestion: undefined } : state;\n case \"history\": {\n let s: SessionState = { ...state, items: [], sessionId: action.sessionId, usageTotal: emptyUsage(), lastResult: undefined };\n for (const m of action.messages) s = applyEvent(s, m as EngineEvent, false);\n return { ...s, running: state.running };\n }\n case \"server\": {\n const m = action.message;\n switch (m.type) {\n case \"ready\":\n return { ...state, connection: \"connected\", protocol: m.protocol, capabilities: m.capabilities ?? [], hop: m.hop, rootCwd: m.cwd };\n case \"event\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state; // another session on this socket\n return applyEvent(state.sessionId ? state : { ...state, sessionId: m.sessionId }, m.event, true);\n case \"permission_request\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return { ...state, pendingPermissions: [...state.pendingPermissions, { id: m.id, sessionId: m.sessionId, toolName: m.toolName, input: m.input, ...(m.reason ? { reason: m.reason } : {}), ...(m.safetyReason ? { safetyReason: m.safetyReason } : {}) }] };\n case \"question_request\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return { ...state, pendingQuestion: { id: m.id, sessionId: m.sessionId, questions: m.questions } };\n case \"sessions\":\n return { ...state, sessions: m.sessions };\n case \"models\":\n return { ...state, models: m.models };\n case \"skills\":\n return { ...state, skills: m.skills };\n case \"session_history\": {\n const s = reduce(state, { type: \"history\", sessionId: m.sessionId, messages: m.messages });\n return {\n ...s,\n pendingQuestion: m.pendingQuestion ? { id: m.pendingQuestion.id, sessionId: m.sessionId, questions: m.pendingQuestion.questions } : undefined,\n pendingApproval: m.pendingApproval,\n liveElsewhere: m.live ?? false,\n };\n }\n case \"done\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return {\n ...state,\n running: false,\n activity: undefined,\n pendingPermissions: [],\n sessionId: m.sessionId,\n ...(m.pendingApproval ? { pendingApproval: m.pendingApproval } : {}),\n ...(m.usage && !state.lastResult ? { usageTotal: addUsage(state.usageTotal, m.usage) } : {}),\n };\n case \"error\":\n return { ...state, error: m.message, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: m.message, ts: new Date().toISOString() }] };\n default:\n return state;\n }\n }\n }\n}\n\nexport function elapsedLabel(ms: number): string {\n const s = Math.max(0, Math.floor(ms / 1000));\n return s < 60 ? `${s}s` : `${Math.floor(s / 60)}m ${s % 60}s`;\n}\n\nexport function resultLabel(r: ResultEvent): { label: string; tone: \"ok\" | \"bad\" | \"warn\" | \"muted\" } {\n switch (r.subtype) {\n case \"success\":\n return { label: \"Done\", tone: \"ok\" };\n case \"cancelled\":\n return { label: \"Interrupted\", tone: \"muted\" };\n case \"needs_approval\":\n return { label: \"Needs your approval\", tone: \"warn\" };\n case \"max_turns\":\n return { label: \"Stopped at the turn limit\", tone: \"warn\" };\n case \"error\":\n return { label: r.reason ? `Failed: ${r.reason}` : \"Failed\", tone: \"bad\" };\n default:\n return { label: String((r as { subtype: string }).subtype).replace(/_/g, \" \"), tone: \"warn\" };\n }\n}\n\nexport function formatTokens(u: Usage): string {\n const k = (n: number) => (n >= 10_000 ? `${(n / 1000).toFixed(1)}k` : String(n));\n return `${k(u.input_tokens)}↑ ${k(u.output_tokens)}↓`;\n}\n",
|
|
7
|
+
"import { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport type { ContentBlock } from \"@mlpal/harness-protocol\";\nimport { type RunOptions, type SocketFactory, YodexClient } from \"./client\";\nimport { initialState, reduce } from \"./reducer\";\nimport type { AskOutcome, SessionState } from \"./types\";\n\nexport interface UseYodexSessionOptions {\n url: string;\n token?: string;\n /** Load this session's history on connect and run turns against it. */\n sessionId?: string;\n /** Default run options (model, mode, hop, cwd) applied to every turn. */\n run?: RunOptions;\n autoConnect?: boolean;\n socketFactory?: SocketFactory;\n}\n\nexport interface Attachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n}\n\nexport interface YodexSession {\n state: SessionState;\n client: YodexClient;\n /** Send a turn. Attachments ride as image blocks once the server speaks yodex/2. */\n run: (text: string, attachments?: Attachment[], options?: RunOptions) => void;\n stop: () => void;\n allow: (permissionId: string) => void;\n deny: (permissionId: string, reason?: string) => void;\n answer: (questionId: string, outcome: AskOutcome) => void;\n approve: (decision: \"allow\" | \"deny\", reason?: string) => void;\n /** Allow this tool (and, for Bash, this exact command) without asking again while this hook lives. */\n allowForSession: (permissionId: string) => void;\n /** Steer a running session: the text reaches the agent at its next turn boundary. */\n steer: (text: string) => void;\n /** What the run is waiting on, for the status row. */\n waitingOn?: \"permission\" | \"question\";\n loadSession: (sessionId: string) => Promise<void>;\n refreshSessions: () => Promise<void>;\n refreshModels: () => Promise<void>;\n newSession: () => void;\n}\n\n/** One session view over one socket: connect, replay, stream, answer. */\nexport function useYodexSession(options: UseYodexSessionOptions): YodexSession {\n const [state, dispatch] = useReducer(reduce, undefined, initialState);\n const sessionIdRef = useRef<string | undefined>(options.sessionId);\n /** Session-scoped allow rules: tool name plus, for commands, the exact command. */\n const allowed = useRef<Set<string>>(new Set());\n const ruleFor = (p: { toolName: string; input: Record<string, unknown> }) => `${p.toolName}\\u0000${typeof p.input.command === \"string\" ? p.input.command : \"\"}`;\n const client = useMemo(\n () =>\n new YodexClient({\n url: options.url,\n token: options.token,\n socketFactory: options.socketFactory,\n onState: (s) => dispatch({ type: \"connection\", state: s }),\n onMessage: (m) => {\n if (m.type === \"permission_request\" && allowed.current.has(ruleFor(m))) {\n client.respondPermission(m.id, \"allow\");\n return;\n }\n dispatch({ type: \"server\", message: m });\n if (m.type === \"ready\" && sessionIdRef.current) {\n client.loadSession(sessionIdRef.current).catch((e: Error) => dispatch({ type: \"error\", message: e.message }));\n }\n },\n }),\n // The socket outlives renders; a URL or token change means a new client.\n [options.url, options.token, options.socketFactory],\n );\n\n useEffect(() => {\n if (options.autoConnect === false) return;\n client.connect();\n return () => client.close();\n }, [client, options.autoConnect]);\n\n useEffect(() => {\n sessionIdRef.current = state.sessionId ?? options.sessionId;\n }, [state.sessionId, options.sessionId]);\n\n // A new sessionId prop switches the view: clear and replay that session on the same socket.\n const lastRequested = useRef(options.sessionId);\n useEffect(() => {\n if (options.sessionId === lastRequested.current) return;\n lastRequested.current = options.sessionId;\n sessionIdRef.current = options.sessionId;\n dispatch({ type: \"clear\" });\n if (options.sessionId && client.connected) client.loadSession(options.sessionId).catch((e: Error) => dispatch({ type: \"error\", message: e.message }));\n }, [options.sessionId, client]);\n\n const guard = useCallback(\n (fn: () => void) => {\n try {\n fn();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [],\n );\n\n const run = useCallback(\n (text: string, attachments: Attachment[] = [], runOptions: RunOptions = {}) => {\n const blocks: ContentBlock[] = attachments.map((a) => ({ type: \"image\", source: { type: \"base64\", media_type: a.mediaType, data: a.data } }));\n if (blocks.length && !state.capabilities.includes(\"attachments\")) {\n dispatch({ type: \"error\", message: \"This server does not accept image attachments; the message was not sent.\" });\n return;\n }\n guard(() => {\n const sessionId = sessionIdRef.current;\n dispatch({ type: \"local_user\", text, ts: new Date().toISOString(), blocks });\n dispatch({ type: \"run_started\", sessionId, at: Date.now() });\n client.run(text, { ...(sessionId ? { sessionId } : {}), ...options.run, ...runOptions, ...(blocks.length ? { blocks } : {}) });\n });\n },\n [client, guard, options.run, state.capabilities],\n );\n\n const stop = useCallback(() => guard(() => client.interrupt()), [client, guard]);\n const allow = useCallback(\n (id: string) =>\n guard(() => {\n client.respondPermission(id, \"allow\");\n dispatch({ type: \"permission_answered\", id });\n }),\n [client, guard],\n );\n const deny = useCallback(\n (id: string, reason?: string) =>\n guard(() => {\n client.respondPermission(id, \"deny\", reason);\n dispatch({ type: \"permission_answered\", id });\n }),\n [client, guard],\n );\n const answer = useCallback(\n (id: string, outcome: AskOutcome) =>\n guard(() => {\n client.respondQuestion(id, outcome);\n dispatch({ type: \"question_answered\", id });\n }),\n [client, guard],\n );\n const approve = useCallback(\n (decision: \"allow\" | \"deny\", reason?: string) =>\n guard(() => {\n const sessionId = sessionIdRef.current;\n if (!sessionId) throw new Error(\"no session to approve\");\n dispatch({ type: \"run_started\", sessionId, at: Date.now() });\n client.respondApproval(sessionId, decision, reason);\n }),\n [client, guard],\n );\n const allowForSession = useCallback(\n (id: string) => {\n const p = state.pendingPermissions.find((x) => x.id === id);\n if (p) allowed.current.add(ruleFor(p));\n guard(() => {\n client.respondPermission(id, \"allow\");\n dispatch({ type: \"permission_answered\", id });\n });\n },\n [client, guard, state.pendingPermissions],\n );\n const steer = useCallback(\n (text: string) =>\n guard(() => {\n const sessionId = sessionIdRef.current;\n if (!sessionId) throw new Error(\"no session to steer\");\n client.sendPeer(sessionId, text);\n dispatch({ type: \"local_user\", text, ts: new Date().toISOString() });\n }),\n [client, guard],\n );\n const waitingOn = state.pendingQuestion ? \"question\" : state.pendingPermissions.length ? \"permission\" : undefined;\n const loadSession = useCallback(\n async (sessionId: string) => {\n sessionIdRef.current = sessionId;\n dispatch({ type: \"clear\" });\n try {\n await client.loadSession(sessionId);\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [client],\n );\n const refreshSessions = useCallback(async () => {\n try {\n await client.listSessions();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n }, [client]);\n const refreshModels = useCallback(async () => {\n try {\n await client.listModels();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n }, [client]);\n const newSession = useCallback(() => {\n sessionIdRef.current = undefined;\n dispatch({ type: \"clear\" });\n }, []);\n\n return { state, client, run, stop, allow, deny, answer, approve, allowForSession, steer, waitingOn, loadSession, refreshSessions, refreshModels, newSession };\n}\n",
|
|
8
|
+
"import { useEffect, useRef } from \"react\";\nimport type { TranscriptItem } from \"../client/types\";\nimport { AssistantMessage } from \"./AssistantMessage\";\nimport { cn } from \"./cn\";\nimport { PlanChecklist } from \"./PlanChecklist\";\nimport { ToolCall } from \"./ToolCall\";\nimport { resultLabel, formatTokens } from \"../client/reducer\";\n\nexport interface TranscriptProps {\n items: TranscriptItem[];\n /** Keep the view pinned to the bottom while new rows arrive, unless the reader scrolled up. */\n autoScroll?: boolean;\n onOpenFile?: (path: string) => void;\n /** Rendered after the last row: pending prompts, the status line. */\n footer?: React.ReactNode;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\n/** One transcript row. Exported so a host that virtualizes the list renders the same markup. */\nexport function TranscriptRow({ item, onOpenFile }: { item: TranscriptItem; onOpenFile?: (path: string) => void }) {\n const it = item;\n switch (it.kind) {\n case \"user\":\n return (\n <div className={cn(\"flex\", it.author.type === \"human\" ? \"justify-end\" : \"justify-start\")} data-author={it.author.type}>\n <div className={cn(\"max-w-[85%] whitespace-pre-wrap break-words rounded-2xl px-4 py-2 text-[15px] leading-6\", it.author.type === \"human\" ? \"rounded-br-md bg-primary text-primary-foreground\" : \"rounded-bl-md border border-border bg-card\")}>\n {it.author.type !== \"human\" && <div className=\"mb-1 text-[11px] text-muted-foreground\">{it.author.displayName ?? it.author.type}</div>}\n {it.blocks?.some((b) => b.type === \"image\") && <div className=\"mb-1 text-[11px] opacity-80\">[image]</div>}\n {it.text}\n </div>\n </div>\n );\n case \"assistant\":\n return <AssistantMessage text={it.text} live={it.live} />;\n case \"tool\":\n return <ToolCall item={it} onOpenFile={onOpenFile} />;\n case \"plan\":\n return <PlanChecklist items={it.items} />;\n case \"result\": {\n const { label, tone } = resultLabel(it.result);\n return (\n <div className={cn(\"flex items-center gap-2 text-[12px] text-muted-foreground\", tone === \"bad\" && \"text-destructive\")} data-subtype={it.result.subtype}>\n <span>{label}</span>\n <span>·</span>\n <span className=\"font-mono tabular-nums\">\n {it.result.numTurns} step{it.result.numTurns === 1 ? \"\" : \"s\"} · {formatTokens(it.result.usage)}\n </span>\n </div>\n );\n }\n case \"error\":\n return (\n <div role=\"alert\" className=\"rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-[13px] text-destructive\">\n {it.message}\n </div>\n );\n case \"compact\":\n return (\n <div className=\"text-center text-[11px] text-muted-foreground\">\n — context compacted ({it.replacedMessages} earlier messages summarised) —\n </div>\n );\n }\n}\n\n/** The whole transcript in a scrolling column. For long sessions a host may virtualize with\n * TranscriptRow instead; announcements belong to RunStatus, not to the log itself. */\nexport function Transcript({ items, autoScroll = true, onOpenFile, footer, emptyState, className }: TranscriptProps) {\n const ref = useRef<HTMLDivElement>(null);\n const pinned = useRef(true);\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const onScroll = () => {\n pinned.current = el.scrollHeight - el.scrollTop - el.clientHeight < 48;\n };\n el.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => el.removeEventListener(\"scroll\", onScroll);\n }, []);\n useEffect(() => {\n const el = ref.current;\n if (el && autoScroll && pinned.current) el.scrollTop = el.scrollHeight;\n });\n return (\n <div ref={ref} className={cn(\"yx-transcript flex-1 overflow-y-auto px-4 py-3\", className)} role=\"log\">\n <div className=\"mx-auto flex w-full max-w-3xl flex-col gap-3\">\n {items.length === 0 && emptyState}\n {items.map((it) => (\n <TranscriptRow key={it.id} item={it} onOpenFile={onOpenFile} />\n ))}\n {footer}\n </div>\n </div>\n );\n}\n",
|
|
9
|
+
"import Markdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { cn } from \"./cn\";\n\nconst plugins = [remarkGfm];\n\n/**\n * Assistant prose as sanitised markdown: GFM tables and task lists, raw HTML skipped, links\n * opened in a new tab. `live` marks a still-streaming turn.\n */\nexport function AssistantMessage({ text, live, className }: { text: string; live?: boolean; className?: string }) {\n return (\n <div className={cn(\"yx-assistant max-w-none break-words text-[15px] leading-6 text-foreground\", className)} data-live={live ? \"true\" : undefined}>\n <Markdown\n remarkPlugins={plugins}\n skipHtml\n components={{\n a: ({ node: _n, ...props }) => <a {...props} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-info underline underline-offset-2\" />,\n pre: ({ node: _n, ...props }) => <pre {...props} className=\"overflow-x-auto rounded-md border border-border bg-card p-3 font-mono text-[12.5px] leading-5\" />,\n code: ({ node: _n, className: cls, ...props }) =>\n cls ? <code {...props} className={cls} /> : <code {...props} className=\"rounded bg-muted px-1 py-0.5 font-mono text-[0.9em]\" />,\n table: ({ node: _n, ...props }) => (\n <div className=\"overflow-x-auto\">\n <table {...props} className=\"my-2 w-full border-collapse text-sm\" />\n </div>\n ),\n th: ({ node: _n, ...props }) => <th {...props} className=\"border border-border bg-muted px-2 py-1 text-left font-medium text-foreground\" />,\n strong: ({ node: _n, ...props }) => <strong {...props} className=\"font-semibold text-foreground\" />,\n blockquote: ({ node: _n, ...props }) => <blockquote {...props} className=\"border-l-2 border-border pl-3 text-muted-foreground\" />,\n td: ({ node: _n, ...props }) => <td {...props} className=\"border border-border px-2 py-1 align-top\" />,\n }}\n >\n {text}\n </Markdown>\n {live && (\n <span className=\"yx-caret\" aria-hidden>\n ▍\n </span>\n )}\n </div>\n );\n}\n",
|
|
10
10
|
"import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n",
|
|
11
11
|
"import { Check, Circle, Loader2 } from \"lucide-react\";\nimport type { PlanItem } from \"../client/types\";\nimport { cn } from \"./cn\";\n\n/** The agent's task list (TaskCreate / TaskUpdate), re-rendered in place as it changes. */\nexport function PlanChecklist({ items, className }: { items: PlanItem[]; className?: string }) {\n if (!items.length) return null;\n const done = items.filter((t) => t.status === \"completed\").length;\n return (\n <div className={cn(\"yx-plan rounded-md border border-border bg-card p-3 text-sm\", className)} aria-label=\"plan\">\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"font-medium\">Plan</span>\n <span className=\"font-mono text-[12px] tabular-nums text-muted-foreground\">\n {done} / {items.length}\n </span>\n </div>\n <ol className=\"space-y-1\">\n {items.map((t) => (\n <li key={t.id} className={cn(\"flex items-start gap-2\", t.status === \"completed\" && \"text-muted-foreground line-through\")} data-status={t.status}>\n {t.status === \"completed\" ? <Check className=\"mt-0.5 h-4 w-4 shrink-0 text-success\" aria-label=\"completed\" /> : t.status === \"in_progress\" ? <Loader2 className=\"mt-0.5 h-4 w-4 shrink-0 animate-spin text-info\" aria-label=\"in progress\" /> : <Circle className=\"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground\" aria-label=\"pending\" />}\n <span>{t.subject}</span>\n </li>\n ))}\n </ol>\n </div>\n );\n}\n",
|
|
12
12
|
"import { useState } from \"react\";\nimport { AlertCircle, Check, ChevronRight, FileDiff, Loader2, Terminal, Wrench } from \"lucide-react\";\nimport type { TranscriptItem } from \"../client/types\";\nimport { cn } from \"./cn\";\nimport { DiffView, diffCounts } from \"./DiffView\";\n\ntype ToolItem = Extract<TranscriptItem, { kind: \"tool\" }>;\n\n/** The one argument worth showing in the header: a command, a path, a pattern, a prompt. */\nexport function toolSummary(name: string, input: Record<string, unknown>): string {\n const pick = (...keys: string[]) => {\n for (const k of keys) {\n const v = input[k];\n if (typeof v === \"string\" && v.trim()) return v.trim();\n }\n return \"\";\n };\n switch (name) {\n case \"Bash\":\n return pick(\"command\");\n case \"Read\":\n case \"Write\":\n case \"Edit\":\n case \"List\":\n return pick(\"file_path\", \"path\");\n case \"Grep\":\n case \"Glob\":\n return pick(\"pattern\");\n case \"Task\":\n case \"Agent\":\n return pick(\"description\", \"prompt\");\n case \"WebFetch\":\n return pick(\"url\");\n case \"WebSearch\":\n return pick(\"query\");\n case \"Skill\":\n return pick(\"name\", \"skill\");\n default:\n return pick(\"command\", \"path\", \"file_path\", \"pattern\", \"query\", \"description\", \"name\") || \"\";\n }\n}\n\nfunction clip(s: string, n = 160): string {\n return s.length > n ? `${s.slice(0, n - 1)}…` : s;\n}\n\nconst MAX_OUTPUT = 4000;\n\n/** One tool call with its result, collapsed to a single row by default. */\nexport function ToolCall({ item, defaultOpen = false, onOpenFile }: { item: ToolItem; defaultOpen?: boolean; onOpenFile?: (path: string) => void }) {\n const [open, setOpen] = useState(defaultOpen);\n const summary = toolSummary(item.name, item.input);\n const r = item.result;\n const status = !r ? \"running\" : r.isError ? \"error\" : \"ok\";\n const counts = r?.diff ? diffCounts(r.diff) : null;\n const path = typeof item.input.file_path === \"string\" ? item.input.file_path : typeof item.input.path === \"string\" ? item.input.path : undefined;\n const Icon = r?.diff ? FileDiff : item.name === \"Bash\" ? Terminal : Wrench;\n return (\n <div className={cn(\"yx-tool rounded-md border border-border bg-card text-sm\", status === \"error\" && \"border-destructive/40\")} data-tool={item.name} data-status={status}>\n <button\n type=\"button\"\n onClick={() => setOpen((o) => !o)}\n aria-expanded={open}\n className=\"flex min-h-11 w-full items-center gap-2 px-3 py-2 text-left hover:bg-muted/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronRight className={cn(\"h-4 w-4 shrink-0 text-muted-foreground transition-transform\", open && \"rotate-90\")} aria-hidden />\n <Icon className=\"h-4 w-4 shrink-0 text-muted-foreground\" aria-hidden />\n <span className=\"font-medium\">{item.name}</span>\n {summary && <span className=\"min-w-0 flex-1 truncate font-mono text-[12.5px] text-muted-foreground\">{clip(summary)}</span>}\n {counts && (\n <span className=\"shrink-0 font-mono text-[12px] tabular-nums\">\n <span className=\"text-success\">+{counts.added}</span> <span className=\"text-destructive\">−{counts.removed}</span>\n </span>\n )}\n {status === \"running\" && <Loader2 className=\"h-4 w-4 shrink-0 animate-spin text-muted-foreground\" aria-label=\"running\" />}\n {status === \"ok\" && <Check className=\"h-4 w-4 shrink-0 text-success\" aria-label=\"ok\" />}\n {status === \"error\" && <AlertCircle className=\"h-4 w-4 shrink-0 text-destructive\" aria-label=\"error\" />}\n </button>\n {open && (\n <div className=\"border-t border-border px-3 py-2\">\n <div className=\"mb-1 text-[11px] uppercase tracking-wide text-muted-foreground\">input</div>\n <pre className=\"overflow-x-auto whitespace-pre-wrap break-words font-mono text-[12px] leading-5\">{summary && Object.keys(item.input).length === 1 ? summary : JSON.stringify(item.input, null, 2)}</pre>\n {r && (\n <>\n <div className=\"mb-1 mt-2 flex items-center gap-2 text-[11px] uppercase tracking-wide text-muted-foreground\">\n <span>{r.isError ? \"error\" : \"result\"}</span>\n {path && onOpenFile && (\n <button type=\"button\" onClick={() => onOpenFile(path)} className=\"ml-auto min-h-8 rounded px-2 text-info hover:bg-muted\">\n open file\n </button>\n )}\n </div>\n {r.diff ? (\n <DiffView diff={r.diff} />\n ) : (\n <pre className={cn(\"max-h-80 overflow-auto whitespace-pre-wrap break-words font-mono text-[12px] leading-5\", r.isError && \"text-destructive\")}>\n {r.content.length > MAX_OUTPUT ? `${r.content.slice(0, MAX_OUTPUT)}\\n… (${r.content.length - MAX_OUTPUT} more characters)` : r.content || \"(no output)\"}\n </pre>\n )}\n </>\n )}\n </div>\n )}\n </div>\n );\n}\n",
|
|
13
13
|
"import { cn } from \"./cn\";\n\nexport function diffCounts(diff: string): { added: number; removed: number } {\n let added = 0;\n let removed = 0;\n for (const line of diff.split(\"\\n\")) {\n if (line.startsWith(\"+++\") || line.startsWith(\"---\")) continue;\n if (line.startsWith(\"+\")) added += 1;\n else if (line.startsWith(\"-\")) removed += 1;\n }\n return { added, removed };\n}\n\n/** A unified diff, line by line. Render-only: the engine computed it, the model never sees it. */\nexport function DiffView({ diff, className }: { diff: string; className?: string }) {\n const lines = diff.split(\"\\n\");\n return (\n <pre className={cn(\"yx-diff overflow-x-auto rounded-md border border-border bg-card font-mono text-[12px] leading-5\", className)} aria-label=\"diff\">\n {lines.map((line, i) => {\n const kind = line.startsWith(\"+++\") || line.startsWith(\"---\") ? \"file\" : line.startsWith(\"@@\") ? \"hunk\" : line.startsWith(\"+\") ? \"add\" : line.startsWith(\"-\") ? \"del\" : \"ctx\";\n return (\n <div\n key={i}\n className={cn(\n \"whitespace-pre px-3\",\n kind === \"add\" && \"bg-success/10 text-success\",\n kind === \"del\" && \"bg-destructive/10 text-destructive\",\n kind === \"hunk\" && \"text-info\",\n kind === \"file\" && \"text-muted-foreground\",\n )}\n >\n {line || \" \"}\n </div>\n );\n })}\n </pre>\n );\n}\n",
|
|
14
|
-
"import { useEffect } from \"react\";\nimport { ShieldAlert } from \"lucide-react\";\nimport type { PendingPermission } from \"../client/types\";\nimport { cn } from \"./cn\";\n\nexport function permissionSummary(p: PendingPermission): string {\n const v = p.input.command ?? p.input.file_path ?? p.input.path ?? p.input.url;\n if (typeof v === \"string\") return v;\n const s = JSON.stringify(p.input);\n return s.length > 240 ? `${s.slice(0, 239)}…` : s;\n}\n\n
|
|
14
|
+
"import { useEffect, useState } from \"react\";\nimport { ShieldAlert } from \"lucide-react\";\nimport type { PendingPermission } from \"../client/types\";\nimport { cn } from \"./cn\";\n\nexport function permissionSummary(p: PendingPermission): string {\n const v = p.input.command ?? p.input.file_path ?? p.input.path ?? p.input.url;\n if (typeof v === \"string\") return v;\n const s = JSON.stringify(p.input);\n return s.length > 240 ? `${s.slice(0, 239)}…` : s;\n}\n\nexport interface PermissionPromptProps {\n request: PendingPermission;\n onAllow: (id: string) => void;\n onDeny: (id: string, reason?: string) => void;\n /** Shown as a third choice when given (the hook's allowForSession). */\n onAllowSession?: (id: string) => void;\n /** `a` / `d` answer this prompt while focus is outside an input. Enable on one prompt at a time. */\n hotkeys?: boolean;\n className?: string;\n}\n\n/** The engine asks before a tool runs: Allow, Allow for this session, or Deny with an optional reason. */\nexport function PermissionPrompt({ request, onAllow, onDeny, onAllowSession, hotkeys = false, className }: PermissionPromptProps) {\n const [reasonOpen, setReasonOpen] = useState(false);\n const [reason, setReason] = useState(\"\");\n useEffect(() => {\n if (!hotkeys) return;\n const key = (e: KeyboardEvent) => {\n const t = e.target as HTMLElement | null;\n if (t && (t.tagName === \"TEXTAREA\" || t.tagName === \"INPUT\" || t.isContentEditable)) return;\n if (e.key === \"a\") onAllow(request.id);\n else if (e.key === \"d\") onDeny(request.id);\n };\n document.addEventListener(\"keydown\", key);\n return () => document.removeEventListener(\"keydown\", key);\n }, [hotkeys, request.id, onAllow, onDeny]);\n const kbd = (k: string) => (hotkeys ? <kbd className=\"ml-1 rounded bg-black/10 px-1 text-[11px]\">{k}</kbd> : null);\n return (\n <div role=\"alertdialog\" aria-labelledby={`perm-${request.id}`} className={cn(\"yx-permission rounded-md border border-warning/50 bg-card p-3 text-sm\", className)}>\n <div id={`perm-${request.id}`} className=\"mb-1 flex items-center gap-2 font-medium\">\n <ShieldAlert className=\"h-4 w-4 text-warning\" aria-hidden />\n Run <span className=\"font-mono\">{request.toolName}</span>?\n </div>\n {(request.safetyReason || request.reason) && <div className=\"mb-2 text-[12px] text-muted-foreground\">{request.safetyReason ?? request.reason}</div>}\n <pre className=\"mb-3 overflow-x-auto whitespace-pre-wrap break-words rounded bg-muted p-2 font-mono text-[12.5px] leading-5\">{permissionSummary(request)}</pre>\n <div className=\"flex flex-wrap gap-2\">\n <button type=\"button\" onClick={() => onAllow(request.id)} className=\"min-h-11 flex-1 rounded-md bg-primary px-4 font-medium text-primary-foreground hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\">\n Allow {kbd(\"a\")}\n </button>\n {onAllowSession && (\n <button type=\"button\" onClick={() => onAllowSession(request.id)} className=\"min-h-11 flex-1 rounded-md border border-border bg-background px-4 font-medium hover:bg-muted\">\n Allow for this session\n </button>\n )}\n <button type=\"button\" onClick={() => (reasonOpen ? onDeny(request.id, reason.trim() || undefined) : onDeny(request.id))} className=\"min-h-11 flex-1 rounded-md border border-border bg-background px-4 font-medium hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\">\n Deny {kbd(\"d\")}\n </button>\n </div>\n {reasonOpen ? (\n <label className=\"mt-2 block\">\n <span className=\"mb-1 block text-[12px] text-muted-foreground\">Tell the agent why (sent with the denial)</span>\n <input value={reason} onChange={(e) => setReason(e.target.value)} className=\"min-h-11 w-full rounded-md border border-border bg-input-background px-3 text-[16px]\" />\n </label>\n ) : (\n <button type=\"button\" onClick={() => setReasonOpen(true)} className=\"mt-2 min-h-9 text-[12px] text-info underline-offset-2 hover:underline\">\n Deny with a reason…\n </button>\n )}\n </div>\n );\n}\n",
|
|
15
|
+
"import { ShieldAlert } from \"lucide-react\";\nimport type { PendingApproval } from \"@mlpal/harness-protocol\";\nimport { cn } from \"./cn\";\n\n/** The last run stopped at the HOP's safety edge (needs_approval). Approve to resume, or decline. */\nexport function ApprovalPrompt({ approval, onDecide, className }: { approval: PendingApproval; onDecide: (decision: \"allow\" | \"deny\", reason?: string) => void; className?: string }) {\n return (\n <div role=\"alertdialog\" aria-label=\"Approval needed\" className={cn(\"yx-approval rounded-md border border-warning/50 bg-card p-3 text-sm\", className)}>\n <div className=\"mb-1 flex items-center gap-2 font-medium\">\n <ShieldAlert className=\"h-4 w-4 text-warning\" aria-hidden />\n The agent stopped before this and needs your approval\n </div>\n <div className=\"mb-2 text-[12px] text-muted-foreground\">{approval.reason}</div>\n <pre className=\"mb-3 overflow-x-auto whitespace-pre-wrap break-words rounded bg-muted p-2 font-mono text-[12.5px] leading-5\">{approval.command}</pre>\n <div className=\"flex gap-2\">\n <button type=\"button\" onClick={() => onDecide(\"allow\")} className=\"min-h-11 flex-1 rounded-md bg-primary px-4 font-medium text-primary-foreground hover:opacity-90\">\n Approve and continue\n </button>\n <button type=\"button\" onClick={() => onDecide(\"deny\")} className=\"min-h-11 flex-1 rounded-md border border-border px-4 font-medium hover:bg-muted\">\n Don't run it\n </button>\n </div>\n </div>\n );\n}\n",
|
|
15
16
|
"import { useState } from \"react\";\nimport { HelpCircle, X } from \"lucide-react\";\nimport type { AskOutcome, AskQuestion, PendingQuestion } from \"../client/types\";\nimport { cn } from \"./cn\";\n\n/** What the person has picked or typed so far, per question index. */\nexport interface QuestionDraft {\n selected: string[][];\n notes: string[];\n}\n\nexport function emptyDraft(questions: AskQuestion[]): QuestionDraft {\n return { selected: questions.map(() => []), notes: questions.map(() => \"\") };\n}\n\n/** The ask.ts outcome: labels and free text per question; a closed form is `declined`. */\nexport function buildOutcome(questions: AskQuestion[], draft: QuestionDraft, declined = false): AskOutcome {\n if (declined) return { declined: true, answers: [] };\n return {\n declined: false,\n answers: questions.map((q, i) => {\n const picked = draft.selected[i] ?? [];\n const note = (draft.notes[i] ?? \"\").trim();\n const answers = picked.length ? picked : note ? [note] : [];\n return { question: q.question, answers, ...(picked.length && note ? { note } : {}) };\n }),\n };\n}\n\nfunction chip(q: AskQuestion, i: number): string {\n const h = (q.header ?? \"\").trim();\n return h || `Q${i + 1}`;\n}\n\n/**\n * AskUserQuestion as a form: one tab per question, single or multi select with optional\n * previews, free text, Submit or close-to-decline. The outcome shape mirrors harness ask.ts.\n */\nexport function QuestionForm({ request, onSubmit, onDecline, className }: { request: PendingQuestion; onSubmit: (id: string, outcome: AskOutcome) => void; onDecline: (id: string) => void; className?: string }) {\n const qs = request.questions;\n const [tab, setTab] = useState(0);\n const [draft, setDraft] = useState<QuestionDraft>(() => emptyDraft(qs));\n const q = qs[tab];\n if (!q) return null;\n const picked = draft.selected[tab] ?? [];\n const toggle = (label: string) => {\n setDraft((d) => {\n const selected = d.selected.slice();\n const cur = selected[tab] ?? [];\n selected[tab] = q.multiSelect ? (cur.includes(label) ? cur.filter((l) => l !== label) : [...cur, label]) : cur[0] === label ? [] : [label];\n return { ...d, selected };\n });\n };\n const setNote = (v: string) =>\n setDraft((d) => {\n const notes = d.notes.slice();\n notes[tab] = v;\n return { ...d, notes };\n });\n const answered = qs.map((_, i) => (draft.selected[i]?.length ?? 0) > 0 || (draft.notes[i] ?? \"\").trim().length > 0);\n const previewOf = (q.options ?? []).find((o) => picked[0] === o.label)?.preview;\n return (\n <div role=\"dialog\" aria-label=\"The agent has a question\" className={cn(\"yx-question rounded-md border border-info/50 bg-card text-sm\", className)}>\n <div className=\"flex items-center gap-2 border-b border-border px-3 py-2\">\n <HelpCircle className=\"h-4 w-4 text-info\" aria-hidden />\n <span className=\"font-medium\">The agent needs your input</span>\n <button type=\"button\" onClick={() => onDecline(request.id)} aria-label=\"Close and keep talking\" className=\"ml-auto flex h-11 w-11 items-center justify-center rounded-md text-muted-foreground hover:bg-muted\">\n <X className=\"h-4 w-4\" aria-hidden />\n </button>\n </div>\n {qs.length > 1 && (\n <div role=\"tablist\" className=\"flex gap-1 overflow-x-auto border-b border-border px-2 py-1\">\n {qs.map((qq, i) => (\n <button key={i} role=\"tab\" type=\"button\" aria-selected={i === tab} onClick={() => setTab(i)} className={cn(\"min-h-9 shrink-0 rounded-md px-3 text-[12px]\", i === tab ? \"bg-primary text-primary-foreground\" : \"bg-muted text-muted-foreground hover:bg-muted/70\", answered[i] && i !== tab && \"ring-1 ring-success\")}>\n {chip(qq, i)}\n </button>\n ))}\n </div>\n )}\n <div className=\"space-y-3 p-3\">\n <p className=\"font-medium\">{q.question}</p>\n {(q.options ?? []).length > 0 && (\n <div role={q.multiSelect ? \"group\" : \"radiogroup\"} className=\"space-y-2\">\n {(q.options ?? []).map((o) => {\n const on = picked.includes(o.label);\n return (\n <button key={o.label} type=\"button\" role={q.multiSelect ? \"checkbox\" : \"radio\"} aria-checked={on} onClick={() => toggle(o.label)} className={cn(\"flex min-h-11 w-full items-start gap-3 rounded-md border px-3 py-2 text-left hover:bg-muted/60\", on ? \"border-primary bg-muted\" : \"border-border\")}>\n <span className={cn(\"mt-1 h-4 w-4 shrink-0 border\", q.multiSelect ? \"rounded\" : \"rounded-full\", on ? \"border-primary bg-primary\" : \"border-muted-foreground\")} aria-hidden />\n <span className=\"min-w-0\">\n <span className=\"block font-medium\">{o.label}</span>\n {o.description && <span className=\"block text-muted-foreground\">{o.description}</span>}\n </span>\n </button>\n );\n })}\n </div>\n )}\n {previewOf && <pre className=\"overflow-x-auto rounded-md border border-border bg-muted p-2 font-mono text-[12px] leading-5\">{previewOf}</pre>}\n <label className=\"block\">\n <span className=\"mb-1 block text-[12px] text-muted-foreground\">{(q.options ?? []).length ? \"Add a note (optional)\" : \"Your answer\"}</span>\n <textarea value={draft.notes[tab] ?? \"\"} onChange={(e) => setNote(e.target.value)} rows={2} className=\"w-full rounded-md border border-border bg-input-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\" />\n </label>\n <div className=\"flex gap-2\">\n {tab < qs.length - 1 ? (\n <button type=\"button\" onClick={() => setTab(tab + 1)} className=\"min-h-11 flex-1 rounded-md border border-border px-4 font-medium hover:bg-muted\">\n Next\n </button>\n ) : null}\n <button type=\"button\" onClick={() => onSubmit(request.id, buildOutcome(qs, draft))} disabled={!answered.some(Boolean)} className=\"min-h-11 flex-1 rounded-md bg-primary px-4 font-medium text-primary-foreground hover:opacity-90 disabled:opacity-50\">\n Submit\n </button>\n </div>\n </div>\n </div>\n );\n}\n",
|
|
16
|
-
"import { useEffect, useState } from \"react\";\nimport { AlertTriangle, Check, Loader2, Square } from \"lucide-react\";\nimport type { ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport type { ConnectionState } from \"../client/types\";\nimport { elapsedLabel, formatTokens, resultLabel } from \"../client/reducer\";\nimport { cn } from \"./cn\";\n\nexport interface RunStatusProps {\n running: boolean;\n startedAt?: number;\n activity?: string;\n lastResult?: ResultEvent;\n usageTotal?: Usage;\n connection?: ConnectionState;\n onStop?: () => void;\n onApprove?: (decision: \"allow\" | \"deny\") => void;\n className?: string;\n /** Injected clock for deterministic rendering. */\n now?: () => number;\n}\n\n/** One row: what the agent is doing with elapsed time while running; the result line after. */\nexport function RunStatus({ running, startedAt, activity, lastResult, usageTotal, connection, onStop, onApprove, className, now = Date.now }: RunStatusProps) {\n const [, tick] = useState(0);\n useEffect(() => {\n if (!running) return;\n const h = setInterval(() => tick((n) => n + 1), 1000);\n return () => clearInterval(h);\n }, [running]);\n if (connection && connection !== \"connected\") {\n return (\n <div className={cn(\"yx-status flex min-h-9 items-center gap-2 text-[12.5px] text-muted-foreground\", className)} role=\"status\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" aria-hidden />\n {connection === \"closed\" ? \"Disconnected\" : connection === \"reconnecting\" ? \"Reconnecting…\" : \"Connecting…\"}\n </div>\n );\n }\n if (running) {\n return (\n <div className={cn(\"yx-status flex min-h-
|
|
17
|
-
"import { Plus } from \"lucide-react\";\nimport type { SessionSummary } from \"@mlpal/harness-protocol\";\nimport { cn } from \"./cn\";\n\n/** A
|
|
18
|
-
"import { type ClipboardEvent, type DragEvent, type KeyboardEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport { ArrowUp, ImagePlus, Square, X } from \"lucide-react\";\nimport { cn } from \"./cn\";\n\nexport interface ComposerAttachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n /** object URL for the thumbnail; revoked when removed. */\n previewUrl?: string;\n}\n\nexport interface HopOption {\n value: string;\n label: string;\n description?: string;\n}\n\nexport interface ComposerProps {\n onSubmit: (text: string, attachments: ComposerAttachment[]) => void;\n /** While a run is live the send button becomes Stop. */\n running?: boolean;\n onStop?: () => void;\n disabled?: boolean;\n /** Shown as a placeholder reason while disabled, e.g. \"Workspace is waking up\". */\n disabledReason?: string;\n placeholder?: string;\n hopOptions?: HopOption[];\n hop?: string;\n onHopChange?: (hop: string) => void;\n /** A slot beside the HOP picker (model picker, mode pill). */\n leading?: React.ReactNode;\n maxAttachmentBytes?: number;\n className?: string;\n autoFocus?: boolean;\n}\n\nconst ACCEPT = [\"image/png\", \"image/jpeg\", \"image/gif\", \"image/webp\"];\n\nasync function fileToAttachment(f: File): Promise<ComposerAttachment> {\n const buf = new Uint8Array(await f.arrayBuffer());\n let bin = \"\";\n for (let i = 0; i < buf.length; i += 0x8000) bin += String.fromCharCode(...buf.subarray(i, i + 0x8000));\n return { name: f.name || \"image\", mediaType: f.type, data: btoa(bin), previewUrl: URL.createObjectURL(f) };\n}\n\n/**\n * The input: a growing textarea, Enter sends and Shift+Enter breaks a line, images paste or\n * drop in as attachments, a HOP picker slot, Stop while running, and an outside-controlled\n * disabled state for a sleeping workspace.\n */\nexport function Composer({ onSubmit, running, onStop, disabled, disabledReason, placeholder = \"Ask yodex to do something…\", hopOptions, hop, onHopChange, leading, maxAttachmentBytes = 8 * 1024 * 1024, className, autoFocus }: ComposerProps) {\n const [
|
|
17
|
+
"import { useEffect, useState } from \"react\";\nimport { AlertTriangle, Check, Loader2, Square } from \"lucide-react\";\nimport type { ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport type { ConnectionState } from \"../client/types\";\nimport { elapsedLabel, formatTokens, resultLabel } from \"../client/reducer\";\nimport { ApprovalPrompt } from \"./ApprovalPrompt\";\nimport { cn } from \"./cn\";\n\nexport interface RunStatusProps {\n running: boolean;\n startedAt?: number;\n activity?: string;\n /** The run is waiting on the person; shown instead of the activity. */\n waitingOn?: \"permission\" | \"question\";\n lastResult?: ResultEvent;\n usageTotal?: Usage;\n connection?: ConnectionState;\n onStop?: () => void;\n onApprove?: (decision: \"allow\" | \"deny\") => void;\n className?: string;\n /** Injected clock for deterministic rendering. */\n now?: () => number;\n}\n\n/** One row: what the agent is doing with elapsed time while running; the result line after. */\nexport function RunStatus({ running, startedAt, activity, waitingOn, lastResult, usageTotal, connection, onStop, onApprove, className, now = Date.now }: RunStatusProps) {\n const [, tick] = useState(0);\n useEffect(() => {\n if (!running) return;\n const h = setInterval(() => tick((n) => n + 1), 1000);\n return () => clearInterval(h);\n }, [running]);\n if (connection && connection !== \"connected\") {\n return (\n <div className={cn(\"yx-status flex min-h-9 items-center gap-2 text-[12.5px] text-muted-foreground\", className)} role=\"status\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" aria-hidden />\n {connection === \"closed\" ? \"Disconnected\" : connection === \"reconnecting\" ? \"Reconnecting…\" : \"Connecting…\"}\n </div>\n );\n }\n if (running) {\n const label = waitingOn === \"permission\" ? \"Waiting for your approval\" : waitingOn === \"question\" ? \"Waiting for your answer\" : (activity ?? \"Working\");\n return (\n <div className={cn(\"yx-status flex min-h-11 items-center gap-2 text-[12.5px] text-muted-foreground\", className)}>\n <Loader2 className={cn(\"h-3.5 w-3.5 animate-spin\", waitingOn ? \"text-warning\" : \"text-accent\")} aria-hidden />\n {/* Only the label is announced; the ticking clock stays out of the live region. */}\n <span role=\"status\" aria-live=\"polite\">\n {label}\n </span>\n {startedAt !== undefined && (\n <span className=\"font-mono tabular-nums\" aria-hidden>\n · {elapsedLabel(now() - startedAt)}\n </span>\n )}\n {onStop && (\n <button type=\"button\" onClick={onStop} className=\"ml-auto flex min-h-11 items-center gap-1 rounded-md px-3 hover:bg-muted\" aria-label=\"Stop\">\n <Square className=\"h-3.5 w-3.5\" aria-hidden /> Stop\n </button>\n )}\n </div>\n );\n }\n if (!lastResult) return null;\n const { label, tone } = resultLabel(lastResult);\n const needsApproval = lastResult.subtype === \"needs_approval\";\n return (\n <div className={cn(\"yx-status flex min-h-9 flex-wrap items-center gap-2 text-[12.5px]\", className)} role=\"status\" data-subtype={lastResult.subtype}>\n {tone === \"ok\" ? <Check className=\"h-3.5 w-3.5 text-success\" aria-hidden /> : tone === \"bad\" ? <AlertTriangle className=\"h-3.5 w-3.5 text-destructive\" aria-hidden /> : <AlertTriangle className={cn(\"h-3.5 w-3.5\", tone === \"warn\" ? \"text-warning\" : \"text-muted-foreground\")} aria-hidden />}\n <span className={cn(tone === \"ok\" && \"text-success\", tone === \"bad\" && \"text-destructive\", tone === \"warn\" && \"text-warning\", tone === \"muted\" && \"text-muted-foreground\")}>{label}</span>\n <span className=\"text-muted-foreground\">·</span>\n <span className=\"font-mono tabular-nums text-muted-foreground\">\n {lastResult.numTurns} step{lastResult.numTurns === 1 ? \"\" : \"s\"} · {formatTokens(usageTotal ?? lastResult.usage)}\n </span>\n {needsApproval && lastResult.pendingApproval && onApprove && (\n <div className=\"basis-full\">\n <ApprovalPrompt approval={lastResult.pendingApproval} onDecide={onApprove} />\n </div>\n )}\n </div>\n );\n}\n",
|
|
18
|
+
"import { Plus } from \"lucide-react\";\nimport type { SessionSummary } from \"@mlpal/harness-protocol\";\nimport { cn } from \"./cn\";\n\n/** A SessionSummary; the yodex/2 fields (hop, relCwd, projectName, …) are present when the\n * server claims \"sessions_v2\". */\nexport type SessionRow = SessionSummary;\n\nexport function groupSessions(rows: SessionRow[]): Array<{ project: string; rows: SessionRow[] }> {\n const groups = new Map<string, SessionRow[]>();\n for (const r of rows) {\n const key = r.projectName ?? \"\";\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key)!.push(r);\n }\n return [...groups.entries()].map(([project, rows]) => ({ project, rows }));\n}\n\nfunction when(iso: string): string {\n const t = Date.parse(iso);\n if (Number.isNaN(t)) return \"\";\n const d = new Date(t);\n return `${d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" })} ${d.toLocaleTimeString(undefined, { hour: \"2-digit\", minute: \"2-digit\" })}`;\n}\n\nexport function SessionList({ sessions, selectedId, onSelect, onNew, className }: { sessions: SessionRow[]; selectedId?: string; onSelect: (sessionId: string) => void; onNew?: () => void; className?: string }) {\n const groups = groupSessions(sessions);\n return (\n <nav className={cn(\"yx-sessions text-sm\", className)} aria-label=\"Sessions\">\n {onNew && (\n <button type=\"button\" onClick={onNew} className=\"mb-2 flex min-h-11 w-full items-center gap-2 rounded-md border border-dashed border-border px-3 text-left hover:bg-muted\">\n <Plus className=\"h-4 w-4\" aria-hidden /> New session\n </button>\n )}\n {sessions.length === 0 && <p className=\"px-3 py-2 text-muted-foreground\">No sessions yet.</p>}\n {groups.map((g) => (\n <div key={g.project} className=\"mb-2\">\n {g.project && <div className=\"px-3 py-1 text-[11px] uppercase tracking-wide text-muted-foreground\">{g.project}</div>}\n <ul>\n {g.rows.map((s) => {\n const on = s.sessionId === selectedId;\n const title = s.name || s.title || s.lastMessagePreview || s.sessionId.slice(0, 8);\n return (\n <li key={s.sessionId}>\n <button type=\"button\" onClick={() => onSelect(s.sessionId)} aria-current={on ? \"true\" : undefined} className={cn(\"flex min-h-11 w-full flex-col gap-0.5 rounded-md px-3 py-2 text-left hover:bg-muted\", on && \"bg-muted\")} data-status={s.status}>\n <span className=\"flex items-center gap-2\">\n {/* live = a run is streaming right now (sessions_v2); the record's status otherwise. */}\n <span\n className={cn(\"h-2 w-2 shrink-0 rounded-full\", s.live ? \"animate-pulse bg-accent\" : s.status === \"active\" ? \"bg-success\" : s.status === \"listening\" ? \"bg-info\" : s.status === \"error\" ? \"bg-destructive\" : \"bg-muted-foreground/40\")}\n aria-label={s.live ? \"working\" : s.status}\n data-live={s.live ? \"true\" : undefined}\n />\n <span className=\"min-w-0 flex-1 truncate font-medium\">{title}</span>\n {s.pendingQuestion && <span className=\"shrink-0 rounded-full bg-warning px-1.5 text-[10px] font-medium text-warning-foreground\">question</span>}\n </span>\n <span className=\"flex gap-2 truncate text-[11.5px] text-muted-foreground\">\n {s.hop && <span className=\"truncate\">{s.hop}</span>}\n {s.relCwd && <span className=\"truncate\">{s.relCwd}</span>}\n <span className=\"ml-auto shrink-0 tabular-nums\">{when(s.updatedAt)}</span>\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </nav>\n );\n}\n",
|
|
19
|
+
"import { type ClipboardEvent, type DragEvent, type KeyboardEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport { ArrowUp, ImagePlus, Square, X } from \"lucide-react\";\nimport { cn } from \"./cn\";\n\nexport interface ComposerAttachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n /** object URL for the thumbnail; revoked when removed. */\n previewUrl?: string;\n}\n\nexport interface HopOption {\n value: string;\n label: string;\n description?: string;\n}\n\nexport interface ComposerProps {\n onSubmit: (text: string, attachments: ComposerAttachment[]) => void;\n /** While a run is live the send button becomes Stop; with `onSteer`, typed text sends as a steer instead. */\n running?: boolean;\n onStop?: () => void;\n onSteer?: (text: string) => void;\n /** Controlled text (with onChange), or `initialValue` to prefill once. */\n value?: string;\n onChange?: (text: string) => void;\n initialValue?: string;\n /** Enter sends on keyboards; on touch devices the send button does (Shift+Enter always breaks a line).\n * Force one behaviour with true / false. */\n submitOnEnter?: boolean;\n hideAttach?: boolean;\n disabled?: boolean;\n /** Shown as a placeholder reason while disabled, e.g. \"Workspace is waking up\". */\n disabledReason?: string;\n placeholder?: string;\n hopOptions?: HopOption[];\n hop?: string;\n onHopChange?: (hop: string) => void;\n /** A slot beside the HOP picker (model picker, mode pill). */\n leading?: React.ReactNode;\n maxAttachmentBytes?: number;\n className?: string;\n autoFocus?: boolean;\n}\n\nconst ACCEPT = [\"image/png\", \"image/jpeg\", \"image/gif\", \"image/webp\"];\n\nasync function fileToAttachment(f: File): Promise<ComposerAttachment> {\n const buf = new Uint8Array(await f.arrayBuffer());\n let bin = \"\";\n for (let i = 0; i < buf.length; i += 0x8000) bin += String.fromCharCode(...buf.subarray(i, i + 0x8000));\n return { name: f.name || \"image\", mediaType: f.type, data: btoa(bin), previewUrl: URL.createObjectURL(f) };\n}\n\n/**\n * The input: a growing textarea, Enter sends and Shift+Enter breaks a line, images paste or\n * drop in as attachments, a HOP picker slot, Stop while running, and an outside-controlled\n * disabled state for a sleeping workspace.\n */\nfunction coarsePointer(): boolean {\n return typeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(pointer: coarse)\").matches;\n}\n\nexport function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initialValue, submitOnEnter, hideAttach, disabled, disabledReason, placeholder = \"Ask yodex to do something…\", hopOptions, hop, onHopChange, leading, maxAttachmentBytes = 8 * 1024 * 1024, className, autoFocus }: ComposerProps) {\n const [own, setOwn] = useState(initialValue ?? \"\");\n const text = value ?? own;\n const setText = (t: string) => {\n if (value === undefined) setOwn(t);\n onChange?.(t);\n };\n const [attachments, setAttachments] = useState<ComposerAttachment[]>([]);\n const [note, setNote] = useState<string | null>(null);\n const ref = useRef<HTMLTextAreaElement>(null);\n\n // Autosize on text and on width (a panel resize would otherwise leave a stale height).\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const fit = () => {\n el.style.height = \"0px\";\n el.style.height = `${Math.min(el.scrollHeight, 240)}px`;\n };\n fit();\n if (typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(fit);\n ro.observe(el);\n return () => ro.disconnect();\n }, [text]);\n\n const addFiles = useCallback(\n async (files: FileList | File[]) => {\n const list = [...files].filter((f) => ACCEPT.includes(f.type));\n if (!list.length) return;\n const big = list.find((f) => f.size > maxAttachmentBytes);\n if (big) {\n setNote(`${big.name} is larger than ${Math.round(maxAttachmentBytes / 1024 / 1024)} MB`);\n return;\n }\n const next = await Promise.all(list.map(fileToAttachment));\n setAttachments((a) => [...a, ...next]);\n setNote(null);\n },\n [maxAttachmentBytes],\n );\n\n const remove = (i: number) =>\n setAttachments((a) => {\n const gone = a[i];\n if (gone?.previewUrl) URL.revokeObjectURL(gone.previewUrl);\n return a.filter((_, j) => j !== i);\n });\n\n const steering = Boolean(running && onSteer);\n const canSend = !disabled && (steering ? text.trim().length > 0 : !running && (text.trim().length > 0 || attachments.length > 0));\n const submit = () => {\n if (!canSend) return;\n if (steering) {\n onSteer!(text.trim());\n setText(\"\");\n return;\n }\n onSubmit(text.trim(), attachments);\n setText(\"\");\n for (const a of attachments) if (a.previewUrl) URL.revokeObjectURL(a.previewUrl);\n setAttachments([]);\n };\n\n const onKey = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key !== \"Enter\" || e.shiftKey || e.nativeEvent.isComposing) return;\n const enterSends = submitOnEnter ?? !coarsePointer();\n if (!enterSends) return;\n e.preventDefault();\n submit();\n };\n const onPaste = (e: ClipboardEvent<HTMLTextAreaElement>) => {\n const files = [...e.clipboardData.files];\n if (files.length) {\n e.preventDefault();\n void addFiles(files);\n }\n };\n const onDrop = (e: DragEvent<HTMLDivElement>) => {\n if (e.dataTransfer.files.length) {\n e.preventDefault();\n void addFiles(e.dataTransfer.files);\n }\n };\n\n return (\n <div className={cn(\"yx-composer rounded-lg border border-border bg-card shadow-sm\", disabled && \"opacity-70\", className)} onDrop={onDrop} onDragOver={(e) => e.preventDefault()} data-disabled={disabled ? \"true\" : undefined}>\n {attachments.length > 0 && (\n <ul className=\"flex flex-wrap gap-2 px-3 pt-3\" aria-label=\"attachments\">\n {attachments.map((a, i) => (\n <li key={`${a.name}-${i}`} className=\"relative\">\n {a.previewUrl ? <img src={a.previewUrl} alt={a.name} className=\"h-14 w-14 rounded-md border border-border object-cover\" /> : <span className=\"block h-14 w-14 rounded-md border border-border bg-muted\" />}\n <button type=\"button\" onClick={() => remove(i)} aria-label={`Remove ${a.name}`} className=\"absolute -right-4 -top-4 flex h-11 w-11 items-center justify-center rounded-full\">\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full border border-border bg-background\">\n <X className=\"h-3 w-3\" aria-hidden />\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n <textarea\n ref={ref}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={onKey}\n onPaste={onPaste}\n disabled={disabled}\n autoFocus={autoFocus}\n rows={1}\n placeholder={disabled && disabledReason ? disabledReason : steering ? \"Steer the agent (it reads this at its next step)…\" : placeholder}\n aria-label={steering ? \"Steer\" : \"Message\"}\n className=\"block w-full resize-none bg-transparent px-3 py-3 text-[16px] leading-6 placeholder:text-muted-foreground focus-visible:outline-none\"\n />\n <div className=\"flex items-center gap-1 px-2 pb-2\">\n {leading}\n {hopOptions && hopOptions.length > 0 && (\n <select value={hop ?? \"\"} onChange={(e) => onHopChange?.(e.target.value)} disabled={disabled} aria-label=\"HOP\" className=\"min-h-9 max-w-[45%] rounded-md border border-border bg-background px-2 text-[12.5px]\">\n {hopOptions.map((o) => (\n <option key={o.value} value={o.value} title={o.description}>\n {o.label}\n </option>\n ))}\n </select>\n )}\n {!hideAttach && (\n <label className={cn(\"flex h-11 w-11 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted\", disabled && \"pointer-events-none\")} aria-label=\"Attach image\">\n <ImagePlus className=\"h-4 w-4\" aria-hidden />\n <input type=\"file\" accept={ACCEPT.join(\",\")} multiple className=\"sr-only\" disabled={disabled} onChange={(e) => e.target.files && void addFiles(e.target.files)} />\n </label>\n )}\n {note && <span className=\"truncate text-[12px] text-destructive\">{note}</span>}\n <span className=\"flex-1\" />\n {running && onStop && !(steering && text.trim()) ? (\n <button type=\"button\" onClick={onStop} aria-label=\"Stop\" className=\"flex h-11 w-11 items-center justify-center rounded-md bg-destructive text-destructive-foreground\">\n <Square className=\"h-4 w-4\" aria-hidden />\n </button>\n ) : (\n <button type=\"button\" onClick={submit} disabled={!canSend} aria-label=\"Send\" className=\"flex h-11 w-11 items-center justify-center rounded-md bg-primary text-primary-foreground disabled:opacity-40\">\n <ArrowUp className=\"h-4 w-4\" aria-hidden />\n </button>\n )}\n </div>\n </div>\n );\n}\n"
|
|
19
20
|
],
|
|
20
|
-
"mappings": "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",
|
|
21
|
-
"debugId": "
|
|
21
|
+
"mappings": ";AA0DO,MAAM,YAAY;AAAA,EACf,SAA4B;AAAA,EAC5B,eAAe;AAAA,EACf,UAAU;AAAA,EACV,kBAA2B;AAAA,EAClB,UAAU,IAAI;AAAA,EACd;AAAA,EACT,MAAM;AAAA,EACd,QAAyB;AAAA,EAEzB,WAAW,CAAC,SAA6B;AAAA,IAEvC,MAAM,QAAQ,OAAO,YAAY,OAAO,QAAQ,OAAO,EAAE,OAAO,IAAI,OAAO,MAAM,SAAS,CAAC;AAAA,IAC3F,KAAK,OAAO;AAAA,MACV,WAAW,EAAE,KAAK,KAAK,KAAK,IAAO;AAAA,MACnC,kBAAkB;AAAA,MAClB,eAAe,CAAC,QAAQ,IAAI,UAAU,GAAG;AAAA,MACzC,UAAU,CAAC,IAAI,OAAO,WAAW,IAAI,EAAE;AAAA,MACvC,YAAY,CAAC,MAAM,aAAa,CAAkC;AAAA,MAClE,QAAQ,KAAK;AAAA,SACV;AAAA,IACL;AAAA;AAAA,MAGE,GAAG,GAAW;AAAA,IAChB,MAAM,IAAI,KAAK,KAAK;AAAA,IACpB,IAAI,CAAC,KAAK,KAAK;AAAA,MAAO,OAAO;AAAA,IAC7B,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,MAAM,YAAY,mBAAmB,KAAK,KAAK,KAAK;AAAA;AAAA,EAGtF,OAAO,GAAS;AAAA,IACd,KAAK,eAAe;AAAA,IACpB,KAAK,KAAK;AAAA;AAAA,EAGZ,KAAK,GAAS;AAAA,IACZ,KAAK,eAAe;AAAA,IACpB,IAAI,KAAK;AAAA,MAAiB,KAAK,KAAK,WAAW,KAAK,eAAe;AAAA,IACnE,KAAK,kBAAkB;AAAA,IACvB,KAAK,QAAQ,MAAM;AAAA,IACnB,KAAK,SAAS;AAAA,IACd,KAAK,YAAY,IAAI,MAAM,eAAe,CAAC;AAAA,IAC3C,KAAK,SAAS,QAAQ;AAAA;AAAA,EAGhB,QAAQ,CAAC,GAA0B;AAAA,IACzC,IAAI,KAAK,UAAU;AAAA,MAAG;AAAA,IACtB,KAAK,QAAQ;AAAA,IACb,KAAK,KAAK,UAAU,CAAC;AAAA;AAAA,EAGf,IAAI,GAAS;AAAA,IACnB,KAAK,SAAS,KAAK,YAAY,IAAI,eAAe,cAAc;AAAA,IAChE,MAAM,KAAK,KAAK,KAAK,cAAc,KAAK,GAAG;AAAA,IAC3C,KAAK,SAAS;AAAA,IACd,GAAG,SAAS,MAAM;AAAA,MAChB,KAAK,UAAU;AAAA;AAAA,IAEjB,GAAG,YAAY,CAAC,OAAO;AAAA,MACrB,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,IAAI,KAAK,MAAM,OAAO,GAAG,IAAI,CAAC;AAAA,QAC9B,MAAM;AAAA,QACN;AAAA;AAAA,MAEF,IAAI,EAAE,SAAS;AAAA,QAAS,KAAK,SAAS,WAAW;AAAA,MACjD,MAAM,MAAO,EAA6B;AAAA,MAC1C,IAAI,OAAO,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,SAAS,QAAQ;AAAA,QACrD,MAAM,IAAI,KAAK,QAAQ,IAAI,GAAG;AAAA,QAC9B,KAAK,QAAQ,OAAO,GAAG;AAAA,QACvB,KAAK,KAAK,WAAW,EAAE,KAAK;AAAA,QAC5B,EAAE,QAAQ,CAAkB;AAAA,MAC9B;AAAA,MACA,KAAK,KAAK,UAAU,CAAC;AAAA;AAAA,IAEvB,GAAG,UAAU,MAAM;AAAA,IAGnB,GAAG,UAAU,MAAM;AAAA,MACjB,IAAI,KAAK,WAAW;AAAA,QAAI;AAAA,MACxB,KAAK,SAAS;AAAA,MACd,KAAK,YAAY,IAAI,MAAM,iBAAiB,CAAC;AAAA,MAC7C,IAAI,KAAK;AAAA,QAAc;AAAA,MACvB,KAAK,kBAAkB;AAAA;AAAA;AAAA,EAInB,iBAAiB,GAAS;AAAA,IAChC,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAAA,IAC/B,MAAM,OAAO,KAAK,IAAI,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,IAClD,MAAM,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,KAAK,OAAO,IAAI,IAAI;AAAA,IAChE,KAAK,WAAW;AAAA,IAChB,KAAK,SAAS,cAAc;AAAA,IAC5B,KAAK,kBAAkB,KAAK,KAAK,SAAS,MAAM;AAAA,MAC9C,KAAK,kBAAkB;AAAA,MACvB,IAAI,CAAC,KAAK;AAAA,QAAc,KAAK,KAAK;AAAA,OACjC,KAAK;AAAA;AAAA,EAGF,WAAW,CAAC,GAAgB;AAAA,IAClC,WAAW,KAAK,KAAK,QAAQ,OAAO,GAAG;AAAA,MACrC,KAAK,KAAK,WAAW,EAAE,KAAK;AAAA,MAC5B,EAAE,OAAO,CAAC;AAAA,IACZ;AAAA,IACA,KAAK,QAAQ,MAAM;AAAA;AAAA,MAGjB,SAAS,GAAY;AAAA,IACvB,OAAO,KAAK,UAAU,eAAe,KAAK,WAAW;AAAA;AAAA,EAGvD,IAAI,CAAC,GAA0B;AAAA,IAC7B,IAAI,CAAC,KAAK,UAAU,KAAK,UAAU;AAAA,MAAa,MAAM,IAAI,MAAM,eAAe;AAAA,IAC/E,KAAK,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA;AAAA,EAG5B,SAAS,GAAW;AAAA,IAC1B,OAAO,GAAG,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE;AAAA;AAAA,EAI/D,OAAwC,CAAC,GAA4C,SAA0D;AAAA,IAC7I,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACtC,MAAM,QAAQ,KAAK,KAAK,SAAS,MAAM;AAAA,QACrC,KAAK,QAAQ,OAAO,EAAE,SAAS;AAAA,QAC/B,OAAO,IAAI,MAAM,GAAG,EAAE,yBAAyB,KAAK,KAAK,qBAAqB,CAAC;AAAA,SAC9E,KAAK,KAAK,gBAAgB;AAAA,MAC7B,KAAK,QAAQ,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,QAAQ,CAAwC,GAAG,QAAQ,MAAM,CAAC;AAAA,MAClH,IAAI;AAAA,QACF,KAAK,KAAK,CAAC;AAAA,QACX,OAAO,GAAG;AAAA,QACV,KAAK,QAAQ,OAAO,EAAE,SAAS;AAAA,QAC/B,KAAK,KAAK,WAAW,KAAK;AAAA,QAC1B,OAAO,CAAU;AAAA;AAAA,KAEpB;AAAA;AAAA,EAIH,GAAG,CAAC,QAAgB,UAAsB,CAAC,GAAW;AAAA,IACpD,MAAM,YAAY,KAAK,UAAU;AAAA,IACjC,KAAK,KAAK,EAAE,MAAM,OAAO,WAAW,WAAW,QAAQ,CAAC;AAAA,IACxD,OAAO;AAAA;AAAA,EAGT,SAAS,GAAS;AAAA,IAChB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAAA;AAAA,EAGjC,QAAQ,CAAC,WAAmB,MAAoB;AAAA,IAC9C,KAAK,KAAK,EAAE,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA;AAAA,EAG7C,iBAAiB,CAAC,IAAY,UAA4B,QAAuB;AAAA,IAC/E,KAAK,KAAK,EAAE,MAAM,uBAAuB,IAAI,aAAc,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA;AAAA,EAGxF,eAAe,CAAC,IAAY,SAA2B;AAAA,IACrD,KAAK,KAAK,EAAE,MAAM,qBAAqB,IAAI,QAAQ,CAAC;AAAA;AAAA,EAGtD,eAAe,CAAC,WAAmB,UAA4B,QAAuB;AAAA,IACpF,KAAK,KAAK,EAAE,MAAM,qBAAqB,WAAW,aAAc,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA;AAAA,EAG7F,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,QAAQ,EAAE,MAAM,iBAAiB,WAAW,KAAK,UAAU,EAAE,GAAG,UAAU;AAAA;AAAA,EAExF,UAAU,GAAG;AAAA,IACX,OAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,WAAW,KAAK,UAAU,EAAE,GAAG,QAAQ;AAAA;AAAA,EAEpF,UAAU,GAAG;AAAA,IACX,OAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,WAAW,KAAK,UAAU,EAAE,GAAG,QAAQ;AAAA;AAAA,EAEpF,WAAW,CAAC,WAAmB;AAAA,IAC7B,OAAO,KAAK,QAAQ,EAAE,MAAM,gBAAgB,WAAW,KAAK,UAAU,GAAG,UAAU,GAAG,iBAAiB;AAAA;AAE3G;;AC1OA;AAGO,SAAS,YAAY,GAAiB;AAAA,EAC3C,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,cAAc,CAAC;AAAA,IACf,OAAO,CAAC;AAAA,IACR,SAAS;AAAA,IACT,YAAY,WAAW;AAAA,IACvB,oBAAoB,CAAC;AAAA,IACrB,UAAU,CAAC;AAAA,IACX,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,EACX;AAAA;AAGF,IAAM,aAAa,IAAI,IAAI,CAAC,cAAc,cAAc,UAAU,CAAC;AACnE,IAAI,MAAM;AACV,IAAM,SAAS,CAAC,WAAmB,GAAG,UAAU,EAAE;AAElD,SAAS,MAAM,CAAC,SAA0B;AAAA,EACxC,IAAI,OAAO,YAAY;AAAA,IAAU,OAAO;AAAA,EACxC,IAAI,CAAC,MAAM,QAAQ,OAAO;AAAA,IAAG,OAAO;AAAA,EACpC,OAAO,QACJ,IAAI,CAAC,MAAO,KAAK,OAAO,MAAM,YAAa,EAAwB,SAAS,SAAS,OAAQ,EAAwB,QAAQ,EAAE,IAAI,EAAG,EACtI,OAAO,OAAO,EACd,KAAK;AAAA,CAAI;AAAA;AAGd,SAAS,mBAAmB,CAAC,OAAyB,MAAoC;AAAA,EACxF,MAAM,MAAM,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EACpD,MAAM,MAAsB,EAAE,MAAM,QAAQ,IAAI,QAAQ,OAAO,KAAK;AAAA,EACpE,IAAI,QAAQ;AAAA,IAAI,OAAO,CAAC,GAAG,OAAO,GAAG;AAAA,EACrC,MAAM,MAAM,MAAM,MAAM;AAAA,EACxB,IAAI,OAAO;AAAA,EACX,OAAO;AAAA;AAGT,SAAS,WAAW,CAAC,OAAqC;AAAA,EACxD,MAAM,MAAM,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EAC/C,OAAO,OAAO,IAAI,SAAS,SAAS,IAAI,QAAQ,CAAC;AAAA;AAGnD,SAAS,SAAS,CAAC,OAA2C;AAAA,EAC5D,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,EAClC,OAAO,QAAQ,KAAK,SAAS,eAAe,KAAK,OAAO,MAAM,MAAM,GAAG,EAAE,IAAI;AAAA;AAQxE,SAAS,UAAU,CAAC,OAAqB,IAAiB,MAA6B;AAAA,EAC5F,QAAQ,GAAG;AAAA,SACJ;AAAA,MACH,OAAO,KAAK,OAAO,WAAW,GAAG,WAAW,OAAO,MAAM,SAAS,GAAG,OAAO,KAAK,GAAG,IAAI;AAAA,SACrF,QAAQ;AAAA,MACX,IAAI,QAAQ,GAAG,OAAO,SAAS;AAAA,QAAS,OAAO;AAAA,MAC/C,MAAM,OAAO,OAAO,GAAG,QAAQ,OAAO;AAAA,MACtC,MAAM,SAAS,MAAM,QAAQ,GAAG,QAAQ,OAAO,IAAI,GAAG,QAAQ,QAAQ,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,IAAI;AAAA,MACzG,OAAO;AAAA,WACF;AAAA,QACH,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,QAAQ,IAAI,OAAO,GAAG,GAAG,MAAM,QAAQ,GAAG,QAAQ,IAAI,GAAG,OAAQ,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA,MACjJ;AAAA,IACF;AAAA,SACK,cAAc;AAAA,MACjB,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,MAChC,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,MAClC,IAAI,QAAQ,KAAK,SAAS,eAAe,KAAK;AAAA,QAAM,MAAM,MAAM,SAAS,KAAK,KAAK,MAAM,MAAM,KAAK,OAAO,GAAG,KAAK;AAAA,MAC9G;AAAA,cAAM,KAAK,EAAE,MAAM,aAAa,IAAI,OAAO,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,KAAK,EAAE,YAAY,GAAG,MAAM,KAAK,CAAC;AAAA,MAC/G,OAAO,KAAK,OAAO,OAAO,UAAU,aAAa;AAAA,IACnD;AAAA,SACK;AAAA,MACH,OAAO,MAAM,aAAa,aAAa,QAAQ,KAAK,OAAO,UAAU,WAAW;AAAA,SAC7E;AAAA,MACH,OAAO,KAAK,OAAO,UAAU,GAAG,KAAK;AAAA,SAClC;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,UAAU,MAAM,KAAK,EAAE;AAAA,SAC9C,aAAa;AAAA,MAChB,IAAI,QAAQ,UAAU,MAAM,KAAK;AAAA,MACjC,MAAM,OAAO,OAAO,GAAG,QAAQ,OAAO;AAAA,MACtC,IAAI,KAAK,KAAK;AAAA,QAAG,QAAQ,CAAC,GAAG,OAAO,EAAE,MAAM,aAAa,IAAI,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,MAAM,CAAC;AAAA,MACxG,IAAI,OAAO,YAAY,KAAK;AAAA,MAC5B,IAAI,cAAc;AAAA,MAClB,IAAI,MAAM,QAAQ,GAAG,QAAQ,OAAO,GAAG;AAAA,QACrC,WAAW,KAAK,GAAG,QAAQ,SAAS;AAAA,UAClC,IAAI,EAAE,SAAS;AAAA,YAAY;AAAA,UAC3B,MAAM,QAAS,EAAE,SAAS,CAAC;AAAA,UAC3B,IAAI,WAAW,IAAI,EAAE,IAAI,GAAG;AAAA,YAC1B,IAAI,EAAE,SAAS,cAAc;AAAA,cAC3B,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,OAAO,MAAM,WAAW,EAAE,MAAO,MAAM,cAAc,EAAE,aAAa,OAAO,MAAM,WAAW,EAAE,IAAI,CAAC,GAAI,QAAS,MAAM,UAAyB,UAAU,CAAC;AAAA,cAChM,cAAc;AAAA,YAChB,EAAO,SAAI,EAAE,SAAS,cAAc;AAAA,cAClC,MAAM,KAAK,OAAO,MAAM,MAAM,EAAE;AAAA,cAChC,OAAO,KAAK,IAAI,CAAC,MACf,EAAE,OAAO,KACL,KAAK,MAAO,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAqB,IAAI,CAAC,MAAQ,MAAM,UAAU,EAAE,SAAS,OAAO,MAAM,OAAO,EAAE,IAAI,CAAC,MAAQ,MAAM,cAAc,EAAE,aAAa,OAAO,MAAM,WAAW,EAAE,IAAI,CAAC,EAAG,IAChN,CACN;AAAA,cACA,cAAc;AAAA,YAChB;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ,CAAC,GAAG,OAAO,EAAE,MAAM,QAAQ,IAAI,EAAE,IAAI,MAAM,EAAE,MAAM,OAAO,IAAI,GAAG,GAAG,CAAC;AAAA,QAC/E;AAAA,MACF;AAAA,MACA,IAAI;AAAA,QAAa,QAAQ,oBAAoB,OAAO,IAAI;AAAA,MACxD,OAAO,KAAK,OAAO,OAAO,YAAY,SAAS,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,UAAU;AAAA,IAClG;AAAA,SACK,eAAe;AAAA,MAClB,MAAM,MAAM,MAAM,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,OAAO,GAAG,SAAS;AAAA,MACnF,IAAI,QAAQ,IAAI;AAAA,QACd,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,QAChC,MAAM,IAAI,MAAM;AAAA,QAChB,MAAM,OAAO,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,SAAS,SAAS,GAAG,YAAa,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK,IAAI,CAAC,MAAQ,GAAG,SAAS,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,EAAG,EAAE;AAAA,QAC9J,OAAO,KAAK,OAAO,MAAM;AAAA,MAC3B;AAAA,MAEA,MAAM,IAAI,mBAAmB,KAAK,GAAG,OAAO;AAAA,MAC5C,IAAI,KAAK,GAAG,aAAa,cAAc;AAAA,QACrC,MAAM,OAAO,YAAY,MAAM,KAAK,EAAE,IAAI,CAAC,MAAO,EAAE,OAAO,GAAG,YAAY,KAAK,GAAG,IAAI,EAAE,GAAI,IAAI,CAAE;AAAA,QAClG,OAAO,KAAK,OAAO,OAAO,oBAAoB,MAAM,OAAO,IAAI,EAAE;AAAA,MACnE;AAAA,MACA,OAAO;AAAA,IACT;AAAA,SACK;AAAA,MACH,OAAO;AAAA,WACF;AAAA,QACH,SAAS;AAAA,QACT,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,UAAU,IAAI,OAAO,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,MACpF;AAAA,SACG;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,GAAG,SAAS,IAAI,GAAG,GAAG,CAAC,EAAE;AAAA,SACvH;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,MAAM,OAAO,EAAE,MAAM,WAAW,IAAI,OAAO,GAAG,GAAG,kBAAkB,GAAG,kBAAkB,IAAI,GAAG,GAAG,CAAC,EAAE;AAAA,SAChI;AAAA,MACH,OAAO;AAAA;AAAA;AAIN,SAAS,MAAM,CAAC,OAAqB,QAAqC;AAAA,EAC/E,QAAQ,OAAO;AAAA,SACR,cAAc;AAAA,MACjB,IAAI,OAAO,UAAU,eAAe,CAAC,MAAM;AAAA,QAAS,OAAO,KAAK,OAAO,YAAY,OAAO,MAAM;AAAA,MAGhG,OAAO;AAAA,WACF;AAAA,QACH,YAAY,OAAO;AAAA,QACnB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,oBAAoB,CAAC;AAAA,QACrB,iBAAiB;AAAA,QACjB,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,+EAA+E,IAAI,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;AAAA,MAC7L;AAAA,IACF;AAAA,SACK;AAAA,MACH,OAAO,KAAK,aAAa,GAAG,YAAY,MAAM,YAAY,UAAU,MAAM,UAAU,cAAc,MAAM,cAAc,KAAK,MAAM,KAAK,SAAS,MAAM,SAAS,UAAU,MAAM,UAAU,QAAQ,MAAM,QAAQ,QAAQ,MAAM,OAAO;AAAA,SAChO;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,OAAO,QAAQ;AAAA,SACtC;AAAA,MACH,OAAO;AAAA,WACF;AAAA,QACH,OAAO,CAAC,GAAG,MAAM,OAAO,EAAE,MAAM,QAAQ,IAAI,OAAO,GAAG,GAAG,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,OAAO,OAAQ,OAAO,QAAQ,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA,MACzK;AAAA,SACG;AAAA,MACH,OAAO,KAAK,OAAO,SAAS,MAAM,cAAc,OAAO,IAAI,UAAU,YAAY,OAAO,WAAW,YAAY,WAAW,iBAAiB,cAAe,OAAO,YAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC,EAAG;AAAA,SAChN;AAAA,MACH,OAAO,KAAK,OAAO,oBAAoB,MAAM,mBAAmB,OAAO,CAAC,MAAM,EAAE,OAAO,OAAO,EAAE,EAAE;AAAA,SAC/F;AAAA,MACH,OAAO,MAAM,iBAAiB,OAAO,OAAO,KAAK,KAAK,OAAO,iBAAiB,UAAU,IAAI;AAAA,SACzF,WAAW;AAAA,MACd,IAAI,IAAkB,KAAK,OAAO,OAAO,CAAC,GAAG,WAAW,OAAO,WAAW,YAAY,WAAW,GAAG,YAAY,UAAU;AAAA,MAC1H,WAAW,KAAK,OAAO;AAAA,QAAU,IAAI,WAAW,GAAG,GAAkB,KAAK;AAAA,MAC1E,OAAO,KAAK,GAAG,SAAS,MAAM,QAAQ;AAAA,IACxC;AAAA,SACK,UAAU;AAAA,MACb,MAAM,IAAI,OAAO;AAAA,MACjB,QAAQ,EAAE;AAAA,aACH;AAAA,UACH,OAAO,KAAK,OAAO,YAAY,aAAa,UAAU,EAAE,UAAU,cAAc,EAAE,gBAAgB,CAAC,GAAG,KAAK,EAAE,KAAK,SAAS,EAAE,IAAI;AAAA,aAC9H;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO,WAAW,MAAM,YAAY,QAAQ,KAAK,OAAO,WAAW,EAAE,UAAU,GAAG,EAAE,OAAO,IAAI;AAAA,aAC5F;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO,KAAK,OAAO,oBAAoB,CAAC,GAAG,MAAM,oBAAoB,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,WAAW,UAAU,EAAE,UAAU,OAAO,EAAE,UAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC,MAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,IAAI,CAAC,EAAG,CAAC,EAAE;AAAA,aACtP;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO,KAAK,OAAO,iBAAiB,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,WAAW,WAAW,EAAE,UAAU,EAAE;AAAA,aAC9F;AAAA,UACH,OAAO,KAAK,OAAO,UAAU,EAAE,SAAS;AAAA,aACrC;AAAA,UACH,OAAO,KAAK,OAAO,QAAQ,EAAE,OAAO;AAAA,aACjC;AAAA,UACH,OAAO,KAAK,OAAO,QAAQ,EAAE,OAAO;AAAA,aACjC,mBAAmB;AAAA,UACtB,MAAM,IAAI,OAAO,OAAO,EAAE,MAAM,WAAW,WAAW,EAAE,WAAW,UAAU,EAAE,SAAS,CAAC;AAAA,UACzF,OAAO;AAAA,eACF;AAAA,YACH,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,IAAI,WAAW,EAAE,WAAW,WAAW,EAAE,gBAAgB,UAAU,IAAI;AAAA,YACpI,iBAAiB,EAAE;AAAA,YACnB,eAAe,EAAE,QAAQ;AAAA,UAC3B;AAAA,QACF;AAAA,aACK;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO;AAAA,eACF;AAAA,YACH,SAAS;AAAA,YACT,UAAU;AAAA,YACV,oBAAoB,CAAC;AAAA,YACrB,WAAW,EAAE;AAAA,eACT,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,IAAI,CAAC;AAAA,eAC9D,EAAE,SAAS,CAAC,MAAM,aAAa,EAAE,YAAY,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,UAC5F;AAAA,aACG;AAAA,UACH,OAAO,KAAK,OAAO,OAAO,EAAE,SAAS,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,EAAE,SAAS,IAAI,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE;AAAA;AAAA,UAE9J,OAAO;AAAA;AAAA,IAEb;AAAA;AAAA;AAIG,SAAS,YAAY,CAAC,IAAoB;AAAA,EAC/C,MAAM,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,EAC3C,OAAO,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK,MAAM,IAAI,EAAE,MAAM,IAAI;AAAA;AAGnD,SAAS,WAAW,CAAC,GAA0E;AAAA,EACpG,QAAQ,EAAE;AAAA,SACH;AAAA,MACH,OAAO,EAAE,OAAO,QAAQ,MAAM,KAAK;AAAA,SAChC;AAAA,MACH,OAAO,EAAE,OAAO,eAAe,MAAM,QAAQ;AAAA,SAC1C;AAAA,MACH,OAAO,EAAE,OAAO,uBAAuB,MAAM,OAAO;AAAA,SACjD;AAAA,MACH,OAAO,EAAE,OAAO,6BAA6B,MAAM,OAAO;AAAA,SACvD;AAAA,MACH,OAAO,EAAE,OAAO,EAAE,SAAS,WAAW,EAAE,WAAW,UAAU,MAAM,MAAM;AAAA;AAAA,MAEzE,OAAO,EAAE,OAAO,OAAQ,EAA0B,OAAO,EAAE,QAAQ,MAAM,GAAG,GAAG,MAAM,OAAO;AAAA;AAAA;AAI3F,SAAS,YAAY,CAAC,GAAkB;AAAA,EAC7C,MAAM,IAAI,CAAC,MAAe,KAAK,MAAS,IAAI,IAAI,MAAM,QAAQ,CAAC,OAAO,OAAO,CAAC;AAAA,EAC9E,OAAO,GAAG,EAAE,EAAE,YAAY,MAAK,EAAE,EAAE,aAAa;AAAA;;AC9PlD;AA+CO,SAAS,eAAe,CAAC,SAA+C;AAAA,EAC7E,OAAO,OAAO,YAAY,WAAW,QAAQ,WAAW,YAAY;AAAA,EACpE,MAAM,eAAe,OAA2B,QAAQ,SAAS;AAAA,EAEjE,MAAM,UAAU,OAAoB,IAAI,GAAK;AAAA,EAC7C,MAAM,UAAU,CAAC,MAA4D,GAAG,EAAE,eAAiB,OAAO,EAAE,MAAM,YAAY,WAAW,EAAE,MAAM,UAAU;AAAA,EAC3J,MAAM,SAAS,QACb,MACE,IAAI,YAAY;AAAA,IACd,KAAK,QAAQ;AAAA,IACb,OAAO,QAAQ;AAAA,IACf,eAAe,QAAQ;AAAA,IACvB,SAAS,CAAC,MAAM,SAAS,EAAE,MAAM,cAAc,OAAO,EAAE,CAAC;AAAA,IACzD,WAAW,CAAC,MAAM;AAAA,MAChB,IAAI,EAAE,SAAS,wBAAwB,QAAQ,QAAQ,IAAI,QAAQ,CAAC,CAAC,GAAG;AAAA,QACtE,OAAO,kBAAkB,EAAE,IAAI,OAAO;AAAA,QACtC;AAAA,MACF;AAAA,MACA,SAAS,EAAE,MAAM,UAAU,SAAS,EAAE,CAAC;AAAA,MACvC,IAAI,EAAE,SAAS,WAAW,aAAa,SAAS;AAAA,QAC9C,OAAO,YAAY,aAAa,OAAO,EAAE,MAAM,CAAC,MAAa,SAAS,EAAE,MAAM,SAAS,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,MAC9G;AAAA;AAAA,EAEJ,CAAC,GAEH,CAAC,QAAQ,KAAK,QAAQ,OAAO,QAAQ,aAAa,CACpD;AAAA,EAEA,UAAU,MAAM;AAAA,IACd,IAAI,QAAQ,gBAAgB;AAAA,MAAO;AAAA,IACnC,OAAO,QAAQ;AAAA,IACf,OAAO,MAAM,OAAO,MAAM;AAAA,KACzB,CAAC,QAAQ,QAAQ,WAAW,CAAC;AAAA,EAEhC,UAAU,MAAM;AAAA,IACd,aAAa,UAAU,MAAM,aAAa,QAAQ;AAAA,KACjD,CAAC,MAAM,WAAW,QAAQ,SAAS,CAAC;AAAA,EAGvC,MAAM,gBAAgB,OAAO,QAAQ,SAAS;AAAA,EAC9C,UAAU,MAAM;AAAA,IACd,IAAI,QAAQ,cAAc,cAAc;AAAA,MAAS;AAAA,IACjD,cAAc,UAAU,QAAQ;AAAA,IAChC,aAAa,UAAU,QAAQ;AAAA,IAC/B,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAC1B,IAAI,QAAQ,aAAa,OAAO;AAAA,MAAW,OAAO,YAAY,QAAQ,SAAS,EAAE,MAAM,CAAC,MAAa,SAAS,EAAE,MAAM,SAAS,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,KACnJ,CAAC,QAAQ,WAAW,MAAM,CAAC;AAAA,EAE9B,MAAM,QAAQ,YACZ,CAAC,OAAmB;AAAA,IAClB,IAAI;AAAA,MACF,GAAG;AAAA,MACH,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAG7D,CAAC,CACH;AAAA,EAEA,MAAM,MAAM,YACV,CAAC,MAAc,cAA4B,CAAC,GAAG,aAAyB,CAAC,MAAM;AAAA,IAC7E,MAAM,SAAyB,YAAY,IAAI,CAAC,OAAO,EAAE,MAAM,SAAS,QAAQ,EAAE,MAAM,UAAU,YAAY,EAAE,WAAW,MAAM,EAAE,KAAK,EAAE,EAAE;AAAA,IAC5I,IAAI,OAAO,UAAU,CAAC,MAAM,aAAa,SAAS,aAAa,GAAG;AAAA,MAChE,SAAS,EAAE,MAAM,SAAS,SAAS,2EAA2E,CAAC;AAAA,MAC/G;AAAA,IACF;AAAA,IACA,MAAM,MAAM;AAAA,MACV,MAAM,YAAY,aAAa;AAAA,MAC/B,SAAS,EAAE,MAAM,cAAc,MAAM,IAAI,IAAI,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;AAAA,MAC3E,SAAS,EAAE,MAAM,eAAe,WAAW,IAAI,KAAK,IAAI,EAAE,CAAC;AAAA,MAC3D,OAAO,IAAI,MAAM,KAAM,YAAY,EAAE,UAAU,IAAI,CAAC,MAAO,QAAQ,QAAQ,eAAgB,OAAO,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA,KAC9H;AAAA,KAEH,CAAC,QAAQ,OAAO,QAAQ,KAAK,MAAM,YAAY,CACjD;AAAA,EAEA,MAAM,OAAO,YAAY,MAAM,MAAM,MAAM,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC;AAAA,EAC/E,MAAM,QAAQ,YACZ,CAAC,OACC,MAAM,MAAM;AAAA,IACV,OAAO,kBAAkB,IAAI,OAAO;AAAA,IACpC,SAAS,EAAE,MAAM,uBAAuB,GAAG,CAAC;AAAA,GAC7C,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,OAAO,YACX,CAAC,IAAY,WACX,MAAM,MAAM;AAAA,IACV,OAAO,kBAAkB,IAAI,QAAQ,MAAM;AAAA,IAC3C,SAAS,EAAE,MAAM,uBAAuB,GAAG,CAAC;AAAA,GAC7C,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,SAAS,YACb,CAAC,IAAY,YACX,MAAM,MAAM;AAAA,IACV,OAAO,gBAAgB,IAAI,OAAO;AAAA,IAClC,SAAS,EAAE,MAAM,qBAAqB,GAAG,CAAC;AAAA,GAC3C,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,UAAU,YACd,CAAC,UAA4B,WAC3B,MAAM,MAAM;AAAA,IACV,MAAM,YAAY,aAAa;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,MAAM,uBAAuB;AAAA,IACvD,SAAS,EAAE,MAAM,eAAe,WAAW,IAAI,KAAK,IAAI,EAAE,CAAC;AAAA,IAC3D,OAAO,gBAAgB,WAAW,UAAU,MAAM;AAAA,GACnD,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,kBAAkB,YACtB,CAAC,OAAe;AAAA,IACd,MAAM,IAAI,MAAM,mBAAmB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,IAC1D,IAAI;AAAA,MAAG,QAAQ,QAAQ,IAAI,QAAQ,CAAC,CAAC;AAAA,IACrC,MAAM,MAAM;AAAA,MACV,OAAO,kBAAkB,IAAI,OAAO;AAAA,MACpC,SAAS,EAAE,MAAM,uBAAuB,GAAG,CAAC;AAAA,KAC7C;AAAA,KAEH,CAAC,QAAQ,OAAO,MAAM,kBAAkB,CAC1C;AAAA,EACA,MAAM,QAAQ,YACZ,CAAC,SACC,MAAM,MAAM;AAAA,IACV,MAAM,YAAY,aAAa;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,MAAM,qBAAqB;AAAA,IACrD,OAAO,SAAS,WAAW,IAAI;AAAA,IAC/B,SAAS,EAAE,MAAM,cAAc,MAAM,IAAI,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;AAAA,GACpE,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,YAAY,MAAM,kBAAkB,aAAa,MAAM,mBAAmB,SAAS,eAAe;AAAA,EACxG,MAAM,cAAc,YAClB,OAAO,cAAsB;AAAA,IAC3B,aAAa,UAAU;AAAA,IACvB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAC1B,IAAI;AAAA,MACF,MAAM,OAAO,YAAY,SAAS;AAAA,MAClC,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAG7D,CAAC,MAAM,CACT;AAAA,EACA,MAAM,kBAAkB,YAAY,YAAY;AAAA,IAC9C,IAAI;AAAA,MACF,MAAM,OAAO,aAAa;AAAA,MAC1B,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAE1D,CAAC,MAAM,CAAC;AAAA,EACX,MAAM,gBAAgB,YAAY,YAAY;AAAA,IAC5C,IAAI;AAAA,MACF,MAAM,OAAO,WAAW;AAAA,MACxB,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAE1D,CAAC,MAAM,CAAC;AAAA,EACX,MAAM,aAAa,YAAY,MAAM;AAAA,IACnC,aAAa,UAAU;AAAA,IACvB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,KACzB,CAAC,CAAC;AAAA,EAEL,OAAO,EAAE,OAAO,QAAQ,KAAK,MAAM,OAAO,MAAM,QAAQ,SAAS,iBAAiB,OAAO,WAAW,aAAa,iBAAiB,eAAe,WAAW;AAAA;;ACnN9J,sBAAS,sBAAW;;;ACApB;AACA;;;ACDA;AACA;AAEO,SAAS,EAAE,IAAI,QAA8B;AAAA,EAClD,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA;;;;ADA7B,IAAM,UAAU,CAAC,SAAS;AAMnB,SAAS,gBAAgB,GAAG,MAAM,MAAM,aAAmE;AAAA,EAChH,uBACE,KA2BE,OA3BF;AAAA,IAAK,WAAW,GAAG,6EAA6E,SAAS;AAAA,IAAG,aAAW,OAAO,SAAS;AAAA,IAAvI,UA2BE;AAAA,sBA1BA,IAoBE,UApBF;AAAA,QACE,eAAe;AAAA,QACf,UAAQ;AAAA,QACR,YAAY;AAAA,UACV,GAAG,GAAG,MAAM,OAAO,4BAAY,IAAC,KAAD;AAAA,eAAO;AAAA,YAAO,QAAO;AAAA,YAAS,KAAI;AAAA,YAAsB,WAAU;AAAA,WAAyC;AAAA,UAC1I,KAAK,GAAG,MAAM,OAAO,4BAAY,IAAC,OAAD;AAAA,eAAS;AAAA,YAAO,WAAU;AAAA,WAAgG;AAAA,UAC3J,MAAM,GAAG,MAAM,IAAI,WAAW,QAAQ,YACpC,sBAAM,IAAC,QAAD;AAAA,eAAU;AAAA,YAAO,WAAW;AAAA,WAAK,oBAAK,IAAC,QAAD;AAAA,eAAU;AAAA,YAAO,WAAU;AAAA,WAAsD;AAAA,UAC/H,OAAO,GAAG,MAAM,OAAO,4BACrB,IAEE,OAFF;AAAA,YAAK,WAAU;AAAA,YAAf,0BACE,IAAC,SAAD;AAAA,iBAAW;AAAA,cAAO,WAAU;AAAA,aAAsC;AAAA,WAClE;AAAA,UAEJ,IAAI,GAAG,MAAM,OAAO,4BAAY,IAAC,MAAD;AAAA,eAAQ;AAAA,YAAO,WAAU;AAAA,WAAgF;AAAA,UACzI,QAAQ,GAAG,MAAM,OAAO,4BAAY,IAAC,UAAD;AAAA,eAAY;AAAA,YAAO,WAAU;AAAA,WAAgC;AAAA,UACjG,YAAY,GAAG,MAAM,OAAO,4BAAY,IAAC,cAAD;AAAA,eAAgB;AAAA,YAAO,WAAU;AAAA,WAAsD;AAAA,UAC/H,IAAI,GAAG,MAAM,OAAO,4BAAY,IAAC,MAAD;AAAA,eAAQ;AAAA,YAAO,WAAU;AAAA,WAA2C;AAAA,QACtG;AAAA,QAjBF,UAmBG;AAAA,OACD;AAAA,MACD,wBACC,IAEE,QAFF;AAAA,QAAM,WAAU;AAAA,QAAW,eAAW;AAAA,QAAtC;AAAA,OAEE;AAAA;AAAA,GAEJ;AAAA;;;AEvCN;;AAKO,SAAS,aAAa,GAAG,OAAO,aAAwD;AAAA,EAC7F,IAAI,CAAC,MAAM;AAAA,IAAQ,OAAO;AAAA,EAC1B,MAAM,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW,EAAE;AAAA,EAC3D,uBACE,MAeE,OAfF;AAAA,IAAK,WAAW,GAAG,+DAA+D,SAAS;AAAA,IAAG,cAAW;AAAA,IAAzG,UAeE;AAAA,sBAdA,MAKE,OALF;AAAA,QAAK,WAAU;AAAA,QAAf,UAKE;AAAA,0BAJA,KAAoC,QAApC;AAAA,YAAM,WAAU;AAAA,YAAhB;AAAA,WAAoC;AAAA,0BACpC,MAEE,QAFF;AAAA,YAAM,WAAU;AAAA,YAAhB,UAEE;AAAA,cADC;AAAA,cADH;AAAA,cACY,MAAM;AAAA;AAAA,WAChB;AAAA;AAAA,OACF;AAAA,sBACF,KAOE,MAPF;AAAA,QAAI,WAAU;AAAA,QAAd,UACG,MAAM,IAAI,CAAC,sBACV,MAGE,MAHF;AAAA,UAAe,WAAW,GAAG,0BAA0B,EAAE,WAAW,eAAe,oCAAoC;AAAA,UAAG,eAAa,EAAE;AAAA,UAAzI,UAGE;AAAA,YAFC,EAAE,WAAW,8BAAc,KAAC,OAAD;AAAA,cAAO,WAAU;AAAA,cAAuC,cAAW;AAAA,aAAY,IAAK,EAAE,WAAW,gCAAgB,KAAC,SAAD;AAAA,cAAS,WAAU;AAAA,cAAiD,cAAW;AAAA,aAAc,oBAAK,KAAC,QAAD;AAAA,cAAQ,WAAU;AAAA,cAAgD,cAAW;AAAA,aAAU;AAAA,4BACtU,KAAmB,QAAnB;AAAA,wBAAO,EAAE;AAAA,aAAU;AAAA;AAAA,WAFZ,EAAE,EAGT,CACH;AAAA,OACD;AAAA;AAAA,GACF;AAAA;;;ACxBN;AACA,+BAAsB,2CAA+B;;;;ACC9C,SAAS,UAAU,CAAC,MAAkD;AAAA,EAC3E,IAAI,QAAQ;AAAA,EACZ,IAAI,UAAU;AAAA,EACd,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,IAAI,KAAK,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,MAAG;AAAA,IACtD,IAAI,KAAK,WAAW,GAAG;AAAA,MAAG,SAAS;AAAA,IAC9B,SAAI,KAAK,WAAW,GAAG;AAAA,MAAG,WAAW;AAAA,EAC5C;AAAA,EACA,OAAO,EAAE,OAAO,QAAQ;AAAA;AAInB,SAAS,QAAQ,GAAG,MAAM,aAAmD;AAAA,EAClF,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAC7B,uBACE,KAkBE,OAlBF;AAAA,IAAK,WAAW,GAAG,mGAAmG,SAAS;AAAA,IAAG,cAAW;AAAA,IAA7I,UACG,MAAM,IAAI,CAAC,MAAM,MAAM;AAAA,MACtB,MAAM,OAAO,KAAK,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK,IAAI,SAAS,KAAK,WAAW,IAAI,IAAI,SAAS,KAAK,WAAW,GAAG,IAAI,QAAQ,KAAK,WAAW,GAAG,IAAI,QAAQ;AAAA,MACxK,uBACE,KAWE,OAXF;AAAA,QAEE,WAAW,GACT,uBACA,SAAS,SAAS,8BAClB,SAAS,SAAS,sCAClB,SAAS,UAAU,aACnB,SAAS,UAAU,uBACrB;AAAA,QARF,UAUG,QAAQ;AAAA,SATJ,CAUL;AAAA,KAEL;AAAA,GACD;AAAA;;;;AD1BC,SAAS,WAAW,CAAC,MAAc,OAAwC;AAAA,EAChF,MAAM,OAAO,IAAI,SAAmB;AAAA,IAClC,WAAW,KAAK,MAAM;AAAA,MACpB,MAAM,IAAI,MAAM;AAAA,MAChB,IAAI,OAAO,MAAM,YAAY,EAAE,KAAK;AAAA,QAAG,OAAO,EAAE,KAAK;AAAA,IACvD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,QAAQ;AAAA,SACD;AAAA,MACH,OAAO,KAAK,SAAS;AAAA,SAClB;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO,KAAK,aAAa,MAAM;AAAA,SAC5B;AAAA,SACA;AAAA,MACH,OAAO,KAAK,SAAS;AAAA,SAClB;AAAA,SACA;AAAA,MACH,OAAO,KAAK,eAAe,QAAQ;AAAA,SAChC;AAAA,MACH,OAAO,KAAK,KAAK;AAAA,SACd;AAAA,MACH,OAAO,KAAK,OAAO;AAAA,SAChB;AAAA,MACH,OAAO,KAAK,QAAQ,OAAO;AAAA;AAAA,MAE3B,OAAO,KAAK,WAAW,QAAQ,aAAa,WAAW,SAAS,eAAe,MAAM,KAAK;AAAA;AAAA;AAIhG,SAAS,IAAI,CAAC,GAAW,IAAI,KAAa;AAAA,EACxC,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,OAAM;AAAA;AAGjD,IAAM,aAAa;AAGZ,SAAS,QAAQ,GAAG,MAAM,cAAc,OAAO,cAA8F;AAAA,EAClJ,OAAO,MAAM,WAAW,SAAS,WAAW;AAAA,EAC5C,MAAM,UAAU,YAAY,KAAK,MAAM,KAAK,KAAK;AAAA,EACjD,MAAM,IAAI,KAAK;AAAA,EACf,MAAM,SAAS,CAAC,IAAI,YAAY,EAAE,UAAU,UAAU;AAAA,EACtD,MAAM,SAAS,GAAG,OAAO,WAAW,EAAE,IAAI,IAAI;AAAA,EAC9C,MAAM,OAAO,OAAO,KAAK,MAAM,cAAc,WAAW,KAAK,MAAM,YAAY,OAAO,KAAK,MAAM,SAAS,WAAW,KAAK,MAAM,OAAO;AAAA,EACvI,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,SAAS,SAAS,WAAW;AAAA,EACpE,uBACE,MA6CE,OA7CF;AAAA,IAAK,WAAW,GAAG,2DAA2D,WAAW,WAAW,uBAAuB;AAAA,IAAG,aAAW,KAAK;AAAA,IAAM,eAAa;AAAA,IAAjK,UA6CE;AAAA,sBA5CA,MAkBE,UAlBF;AAAA,QACE,MAAK;AAAA,QACL,SAAS,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,QAChC,iBAAe;AAAA,QACf,WAAU;AAAA,QAJZ,UAkBE;AAAA,0BAZA,KAAC,cAAD;AAAA,YAAc,WAAW,GAAG,+DAA+D,QAAQ,WAAW;AAAA,YAAG,eAAW;AAAA,WAAC;AAAA,0BAC7H,KAAC,MAAD;AAAA,YAAM,WAAU;AAAA,YAAyC,eAAW;AAAA,WAAC;AAAA,0BACrE,KAA2C,QAA3C;AAAA,YAAM,WAAU;AAAA,YAAhB,UAA+B,KAAK;AAAA,WAAO;AAAA,UAC1C,2BAAW,KAAyG,QAAzG;AAAA,YAAM,WAAU;AAAA,YAAhB,UAAyF,KAAK,OAAO;AAAA,WAAI;AAAA,UACpH,0BACC,MAEE,QAFF;AAAA,YAAM,WAAU;AAAA,YAAhB,UAEE;AAAA,8BADA,MAAgD,QAAhD;AAAA,gBAAM,WAAU;AAAA,gBAAhB,UAAgD;AAAA,kBAAhD;AAAA,kBAAiC,OAAO;AAAA;AAAA,eAAQ;AAAA,cADlD;AAAA,8BACwD,MAAqD,QAArD;AAAA,gBAAM,WAAU;AAAA,gBAAhB,UAAqD;AAAA,kBAArD;AAAA,kBAAoC,OAAO;AAAA;AAAA,eAAU;AAAA;AAAA,WAC3G;AAAA,UAEH,WAAW,6BAAa,KAAC,UAAD;AAAA,YAAS,WAAU;AAAA,YAAsD,cAAW;AAAA,WAAU;AAAA,UACtH,WAAW,wBAAQ,KAAC,QAAD;AAAA,YAAO,WAAU;AAAA,YAAgC,cAAW;AAAA,WAAK;AAAA,UACpF,WAAW,2BAAW,KAAC,aAAD;AAAA,YAAa,WAAU;AAAA,YAAoC,cAAW;AAAA,WAAQ;AAAA;AAAA,OACrG;AAAA,MACD,wBACC,MAsBE,OAtBF;AAAA,QAAK,WAAU;AAAA,QAAf,UAsBE;AAAA,0BArBA,KAAuF,OAAvF;AAAA,YAAK,WAAU;AAAA,YAAf;AAAA,WAAuF;AAAA,0BACvF,KAAoM,OAApM;AAAA,YAAK,WAAU;AAAA,YAAf,UAAkG,WAAW,OAAO,KAAK,KAAK,KAAK,EAAE,WAAW,IAAI,UAAU,KAAK,UAAU,KAAK,OAAO,MAAM,CAAC;AAAA,WAAI;AAAA,UACnM,qBACC;AAAA,sBAgBE;AAAA,8BAfA,MAOE,OAPF;AAAA,gBAAK,WAAU;AAAA,gBAAf,UAOE;AAAA,kCANA,KAAwC,QAAxC;AAAA,8BAAO,EAAE,UAAU,UAAU;AAAA,mBAAW;AAAA,kBACvC,QAAQ,8BACP,KAEE,UAFF;AAAA,oBAAQ,MAAK;AAAA,oBAAS,SAAS,MAAM,WAAW,IAAI;AAAA,oBAAG,WAAU;AAAA,oBAAjE;AAAA,mBAEE;AAAA;AAAA,eAEJ;AAAA,cACD,EAAE,uBACD,KAAC,UAAD;AAAA,gBAAU,MAAM,EAAE;AAAA,eAAM,oBAExB,KAEE,OAFF;AAAA,gBAAK,WAAW,GAAG,0FAA0F,EAAE,WAAW,kBAAkB;AAAA,gBAA5I,UACG,EAAE,QAAQ,SAAS,aAAa,GAAG,EAAE,QAAQ,MAAM,GAAG,UAAU;AAAA,KAAQ,EAAE,QAAQ,SAAS,gCAAgC,EAAE,WAAW;AAAA,eACzI;AAAA;AAAA,WAEJ;AAAA;AAAA,OAEJ;AAAA;AAAA,GAEJ;AAAA;;;;AJnFC,SAAS,aAAa,GAAG,MAAM,cAA6E;AAAA,EACjH,MAAM,KAAK;AAAA,EACX,QAAQ,GAAG;AAAA,SACJ;AAAA,MACH,uBACE,KAME,OANF;AAAA,QAAK,WAAW,GAAG,QAAQ,GAAG,OAAO,SAAS,UAAU,gBAAgB,eAAe;AAAA,QAAG,eAAa,GAAG,OAAO;AAAA,QAAjH,0BACE,MAIE,OAJF;AAAA,UAAK,WAAW,GAAG,2FAA2F,GAAG,OAAO,SAAS,UAAU,qDAAqD,4CAA4C;AAAA,UAA5O,UAIE;AAAA,YAHC,GAAG,OAAO,SAAS,2BAAW,KAAmG,OAAnG;AAAA,cAAK,WAAU;AAAA,cAAf,UAAyD,GAAG,OAAO,eAAe,GAAG,OAAO;AAAA,aAAO;AAAA,YACjI,GAAG,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,qBAAK,KAAsD,OAAtD;AAAA,cAAK,WAAU;AAAA,cAAf;AAAA,aAAsD;AAAA,YACpG,GAAG;AAAA;AAAA,SACJ;AAAA,OACF;AAAA,SAED;AAAA,MACH,uBAAO,KAAC,kBAAD;AAAA,QAAkB,MAAM,GAAG;AAAA,QAAM,MAAM,GAAG;AAAA,OAAM;AAAA,SACpD;AAAA,MACH,uBAAO,KAAC,UAAD;AAAA,QAAU,MAAM;AAAA,QAAI;AAAA,OAAwB;AAAA,SAChD;AAAA,MACH,uBAAO,KAAC,eAAD;AAAA,QAAe,OAAO,GAAG;AAAA,OAAO;AAAA,SACpC,UAAU;AAAA,MACb,QAAQ,OAAO,SAAS,YAAY,GAAG,MAAM;AAAA,MAC7C,uBACE,MAME,OANF;AAAA,QAAK,WAAW,GAAG,6DAA6D,SAAS,SAAS,kBAAkB;AAAA,QAAG,gBAAc,GAAG,OAAO;AAAA,QAA/I,UAME;AAAA,0BALA,KAAe,QAAf;AAAA,sBAAO;AAAA,WAAQ;AAAA,0BACf,KAAQ,QAAR;AAAA;AAAA,WAAQ;AAAA,0BACR,MAEE,QAFF;AAAA,YAAM,WAAU;AAAA,YAAhB,UAEE;AAAA,cADC,GAAG,OAAO;AAAA,cADb;AAAA,cAC4B,GAAG,OAAO,aAAa,IAAI,KAAK;AAAA,cAD5D;AAAA,cACmE,aAAa,GAAG,OAAO,KAAK;AAAA;AAAA,WAC7F;AAAA;AAAA,OACF;AAAA,IAEN;AAAA,SACK;AAAA,MACH,uBACE,KAEE,OAFF;AAAA,QAAK,MAAK;AAAA,QAAQ,WAAU;AAAA,QAA5B,UACG,GAAG;AAAA,OACJ;AAAA,SAED;AAAA,MACH,uBACE,MAEE,OAFF;AAAA,QAAK,WAAU;AAAA,QAAf,UAEE;AAAA,UAFF;AAAA,UACuB,GAAG;AAAA,UAD1B;AAAA;AAAA,OAEE;AAAA;AAAA;AAOH,SAAS,UAAU,GAAG,OAAO,aAAa,MAAM,YAAY,QAAQ,YAAY,aAA8B;AAAA,EACnH,MAAM,MAAM,QAAuB,IAAI;AAAA,EACvC,MAAM,SAAS,QAAO,IAAI;AAAA,EAC1B,WAAU,MAAM;AAAA,IACd,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,CAAC;AAAA,MAAI;AAAA,IACT,MAAM,WAAW,MAAM;AAAA,MACrB,OAAO,UAAU,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe;AAAA;AAAA,IAEtE,GAAG,iBAAiB,UAAU,UAAU,EAAE,SAAS,KAAK,CAAC;AAAA,IACzD,OAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,KACrD,CAAC,CAAC;AAAA,EACL,WAAU,MAAM;AAAA,IACd,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,MAAM,cAAc,OAAO;AAAA,MAAS,GAAG,YAAY,GAAG;AAAA,GAC3D;AAAA,EACD,uBACE,KAQE,OARF;AAAA,IAAK;AAAA,IAAU,WAAW,GAAG,kDAAkD,SAAS;AAAA,IAAG,MAAK;AAAA,IAAhG,0BACE,MAME,OANF;AAAA,MAAK,WAAU;AAAA,MAAf,UAME;AAAA,QALC,MAAM,WAAW,KAAK;AAAA,QACtB,MAAM,IAAI,CAAC,uBACV,KAAC,eAAD;AAAA,UAA2B,MAAM;AAAA,UAAI;AAAA,WAAjB,GAAG,EAAsC,CAC9D;AAAA,QACA;AAAA;AAAA,KACD;AAAA,GACF;AAAA;;AM7FN,sBAAS,wBAAW;AACpB;;AAIO,SAAS,iBAAiB,CAAC,GAA8B;AAAA,EAC9D,MAAM,IAAI,EAAE,MAAM,WAAW,EAAE,MAAM,aAAa,EAAE,MAAM,QAAQ,EAAE,MAAM;AAAA,EAC1E,IAAI,OAAO,MAAM;AAAA,IAAU,OAAO;AAAA,EAClC,MAAM,IAAI,KAAK,UAAU,EAAE,KAAK;AAAA,EAChC,OAAO,EAAE,SAAS,MAAM,GAAG,EAAE,MAAM,GAAG,GAAG,OAAM;AAAA;AAe1C,SAAS,gBAAgB,GAAG,SAAS,SAAS,QAAQ,gBAAgB,UAAU,OAAO,aAAoC;AAAA,EAChI,OAAO,YAAY,iBAAiB,UAAS,KAAK;AAAA,EAClD,OAAO,QAAQ,aAAa,UAAS,EAAE;AAAA,EACvC,WAAU,MAAM;AAAA,IACd,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,MAAM,MAAM,CAAC,MAAqB;AAAA,MAChC,MAAM,IAAI,EAAE;AAAA,MACZ,IAAI,MAAM,EAAE,YAAY,cAAc,EAAE,YAAY,WAAW,EAAE;AAAA,QAAoB;AAAA,MACrF,IAAI,EAAE,QAAQ;AAAA,QAAK,QAAQ,QAAQ,EAAE;AAAA,MAChC,SAAI,EAAE,QAAQ;AAAA,QAAK,OAAO,QAAQ,EAAE;AAAA;AAAA,IAE3C,SAAS,iBAAiB,WAAW,GAAG;AAAA,IACxC,OAAO,MAAM,SAAS,oBAAoB,WAAW,GAAG;AAAA,KACvD,CAAC,SAAS,QAAQ,IAAI,SAAS,MAAM,CAAC;AAAA,EACzC,MAAM,MAAM,CAAC,MAAe,0BAAU,KAAgE,OAAhE;AAAA,IAAK,WAAU;AAAA,IAAf,UAA4D;AAAA,GAAI,IAAO;AAAA,EAC7G,uBACE,MA8BE,OA9BF;AAAA,IAAK,MAAK;AAAA,IAAc,mBAAiB,QAAQ,QAAQ;AAAA,IAAM,WAAW,GAAG,yEAAyE,SAAS;AAAA,IAA/J,UA8BE;AAAA,sBA7BA,MAGE,OAHF;AAAA,QAAK,IAAI,QAAQ,QAAQ;AAAA,QAAM,WAAU;AAAA,QAAzC,UAGE;AAAA,0BAFA,KAAC,aAAD;AAAA,YAAa,WAAU;AAAA,YAAuB,eAAW;AAAA,WAAC;AAAA,UAD5D;AAAA,0BAEM,KAAgD,QAAhD;AAAA,YAAM,WAAU;AAAA,YAAhB,UAA6B,QAAQ;AAAA,WAAW;AAAA,UAFtD;AAAA;AAAA,OAGE;AAAA,OACA,QAAQ,gBAAgB,QAAQ,2BAAW,KAAkG,OAAlG;AAAA,QAAK,WAAU;AAAA,QAAf,UAAyD,QAAQ,gBAAgB,QAAQ;AAAA,OAAS;AAAA,sBAC/I,KAA2J,OAA3J;AAAA,QAAK,WAAU;AAAA,QAAf,UAA8H,kBAAkB,OAAO;AAAA,OAAI;AAAA,sBAC3J,MAYE,OAZF;AAAA,QAAK,WAAU;AAAA,QAAf,UAYE;AAAA,0BAXA,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,QAAQ,QAAQ,EAAE;AAAA,YAAG,WAAU;AAAA,YAApE,UAEE;AAAA,cAFF;AAAA,cACS,IAAI,GAAG;AAAA;AAAA,WACd;AAAA,UACD,kCACC,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,eAAe,QAAQ,EAAE;AAAA,YAAG,WAAU;AAAA,YAA3E;AAAA,WAEE;AAAA,0BAEJ,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAO,aAAa,OAAO,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,QAAQ,EAAE;AAAA,YAAI,WAAU;AAAA,YAAnI,UAEE;AAAA,cAFF;AAAA,cACQ,IAAI,GAAG;AAAA;AAAA,WACb;AAAA;AAAA,OACF;AAAA,MACD,6BACC,MAGE,SAHF;AAAA,QAAO,WAAU;AAAA,QAAjB,UAGE;AAAA,0BAFA,KAA0G,QAA1G;AAAA,YAAM,WAAU;AAAA,YAAhB;AAAA,WAA0G;AAAA,0BAC1G,KAAC,SAAD;AAAA,YAAO,OAAO;AAAA,YAAQ,UAAU,CAAC,MAAM,UAAU,EAAE,OAAO,KAAK;AAAA,YAAG,WAAU;AAAA,WAAuF;AAAA;AAAA,OACnK,oBAEF,KAEE,UAFF;AAAA,QAAQ,MAAK;AAAA,QAAS,SAAS,MAAM,cAAc,IAAI;AAAA,QAAG,WAAU;AAAA,QAApE;AAAA,OAEE;AAAA;AAAA,GAEJ;AAAA;;ACtEN,wBAAS;;AAKF,SAAS,cAAc,GAAG,UAAU,UAAU,aAAiI;AAAA,EACpL,uBACE,MAeE,OAfF;AAAA,IAAK,MAAK;AAAA,IAAc,cAAW;AAAA,IAAkB,WAAW,GAAG,uEAAuE,SAAS;AAAA,IAAnJ,UAeE;AAAA,sBAdA,MAGE,OAHF;AAAA,QAAK,WAAU;AAAA,QAAf,UAGE;AAAA,0BAFA,KAAC,cAAD;AAAA,YAAa,WAAU;AAAA,YAAuB,eAAW;AAAA,WAAC;AAAA,UAD5D;AAAA;AAAA,OAGE;AAAA,sBACF,KAA2E,OAA3E;AAAA,QAAK,WAAU;AAAA,QAAf,UAAyD,SAAS;AAAA,OAAS;AAAA,sBAC3E,KAAiJ,OAAjJ;AAAA,QAAK,WAAU;AAAA,QAAf,UAA8H,SAAS;AAAA,OAAU;AAAA,sBACjJ,MAOE,OAPF;AAAA,QAAK,WAAU;AAAA,QAAf,UAOE;AAAA,0BANA,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,SAAS,OAAO;AAAA,YAAG,WAAU;AAAA,YAAlE;AAAA,WAEE;AAAA,0BACF,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,SAAS,MAAM;AAAA,YAAG,WAAU;AAAA,YAAjE;AAAA,WAEE;AAAA;AAAA,OACF;AAAA;AAAA,GACF;AAAA;;ACtBN,qBAAS;AACT;;AAUO,SAAS,UAAU,CAAC,WAAyC;AAAA,EAClE,OAAO,EAAE,UAAU,UAAU,IAAI,MAAM,CAAC,CAAC,GAAG,OAAO,UAAU,IAAI,MAAM,EAAE,EAAE;AAAA;AAItE,SAAS,YAAY,CAAC,WAA0B,OAAsB,WAAW,OAAmB;AAAA,EACzG,IAAI;AAAA,IAAU,OAAO,EAAE,UAAU,MAAM,SAAS,CAAC,EAAE;AAAA,EACnD,OAAO;AAAA,IACL,UAAU;AAAA,IACV,SAAS,UAAU,IAAI,CAAC,GAAG,MAAM;AAAA,MAC/B,MAAM,SAAS,MAAM,SAAS,MAAM,CAAC;AAAA,MACrC,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI,KAAK;AAAA,MACzC,MAAM,UAAU,OAAO,SAAS,SAAS,OAAO,CAAC,IAAI,IAAI,CAAC;AAAA,MAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,YAAa,OAAO,UAAU,OAAO,EAAE,KAAK,IAAI,CAAC,EAAG;AAAA,KACpF;AAAA,EACH;AAAA;AAGF,SAAS,IAAI,CAAC,GAAgB,GAAmB;AAAA,EAC/C,MAAM,KAAK,EAAE,UAAU,IAAI,KAAK;AAAA,EAChC,OAAO,KAAK,IAAI,IAAI;AAAA;AAOf,SAAS,YAAY,GAAG,SAAS,UAAU,WAAW,aAAqJ;AAAA,EAChN,MAAM,KAAK,QAAQ;AAAA,EACnB,OAAO,KAAK,UAAU,UAAS,CAAC;AAAA,EAChC,OAAO,OAAO,YAAY,UAAwB,MAAM,WAAW,EAAE,CAAC;AAAA,EACtE,MAAM,IAAI,GAAG;AAAA,EACb,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,MAAM,SAAS,MAAM,SAAS,QAAQ,CAAC;AAAA,EACvC,MAAM,SAAS,CAAC,UAAkB;AAAA,IAChC,SAAS,CAAC,MAAM;AAAA,MACd,MAAM,WAAW,EAAE,SAAS,MAAM;AAAA,MAClC,MAAM,MAAM,SAAS,QAAQ,CAAC;AAAA,MAC9B,SAAS,OAAO,EAAE,cAAe,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,IAAK,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK;AAAA,MACzI,OAAO,KAAK,GAAG,SAAS;AAAA,KACzB;AAAA;AAAA,EAEH,MAAM,UAAU,CAAC,MACf,SAAS,CAAC,MAAM;AAAA,IACd,MAAM,QAAQ,EAAE,MAAM,MAAM;AAAA,IAC5B,MAAM,OAAO;AAAA,IACb,OAAO,KAAK,GAAG,MAAM;AAAA,GACtB;AAAA,EACH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,OAAO,MAAM,SAAS,IAAI,UAAU,KAAK,MAAM,MAAM,MAAM,MAAM,IAAI,KAAK,EAAE,SAAS,CAAC;AAAA,EAClH,MAAM,aAAa,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACxE,uBACE,MAmDE,OAnDF;AAAA,IAAK,MAAK;AAAA,IAAS,cAAW;AAAA,IAA2B,WAAW,GAAG,gEAAgE,SAAS;AAAA,IAAhJ,UAmDE;AAAA,sBAlDA,MAME,OANF;AAAA,QAAK,WAAU;AAAA,QAAf,UAME;AAAA,0BALA,KAAC,YAAD;AAAA,YAAY,WAAU;AAAA,YAAoB,eAAW;AAAA,WAAC;AAAA,0BACtD,KAA0D,QAA1D;AAAA,YAAM,WAAU;AAAA,YAAhB;AAAA,WAA0D;AAAA,0BAC1D,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,UAAU,QAAQ,EAAE;AAAA,YAAG,cAAW;AAAA,YAAyB,WAAU;AAAA,YAA1G,0BACE,KAAC,GAAD;AAAA,cAAG,WAAU;AAAA,cAAU,eAAW;AAAA,aAAC;AAAA,WACnC;AAAA;AAAA,OACF;AAAA,MACD,GAAG,SAAS,qBACX,KAME,OANF;AAAA,QAAK,MAAK;AAAA,QAAU,WAAU;AAAA,QAA9B,UACG,GAAG,IAAI,CAAC,IAAI,sBACX,KAEE,UAFF;AAAA,UAAgB,MAAK;AAAA,UAAM,MAAK;AAAA,UAAS,iBAAe,MAAM;AAAA,UAAK,SAAS,MAAM,OAAO,CAAC;AAAA,UAAG,WAAW,GAAG,gDAAgD,MAAM,MAAM,uCAAuC,oDAAoD,SAAS,MAAM,MAAM,OAAO,qBAAqB;AAAA,UAAnT,UACG,KAAK,IAAI,CAAC;AAAA,WADA,CAEX,CACH;AAAA,OACD;AAAA,sBAEJ,MAiCE,OAjCF;AAAA,QAAK,WAAU;AAAA,QAAf,UAiCE;AAAA,0BAhCA,KAAyC,KAAzC;AAAA,YAAG,WAAU;AAAA,YAAb,UAA4B,EAAE;AAAA,WAAW;AAAA,WACvC,EAAE,WAAW,CAAC,GAAG,SAAS,qBAC1B,KAaE,OAbF;AAAA,YAAK,MAAM,EAAE,cAAc,UAAU;AAAA,YAAc,WAAU;AAAA,YAA7D,WACI,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM;AAAA,cAC5B,MAAM,KAAK,OAAO,SAAS,EAAE,KAAK;AAAA,cAClC,uBACE,MAME,UANF;AAAA,gBAAsB,MAAK;AAAA,gBAAS,MAAM,EAAE,cAAc,aAAa;AAAA,gBAAS,gBAAc;AAAA,gBAAI,SAAS,MAAM,OAAO,EAAE,KAAK;AAAA,gBAAG,WAAW,GAAG,kGAAkG,KAAK,4BAA4B,eAAe;AAAA,gBAAlS,UAME;AAAA,kCALA,KAAC,QAAD;AAAA,oBAAM,WAAW,GAAG,gCAAgC,EAAE,cAAc,YAAY,gBAAgB,KAAK,8BAA8B,yBAAyB;AAAA,oBAAG,eAAW;AAAA,mBAAC;AAAA,kCAC3K,MAGE,QAHF;AAAA,oBAAM,WAAU;AAAA,oBAAhB,UAGE;AAAA,sCAFA,KAA+C,QAA/C;AAAA,wBAAM,WAAU;AAAA,wBAAhB,UAAqC,EAAE;AAAA,uBAAQ;AAAA,sBAC9C,EAAE,+BAAe,KAA+D,QAA/D;AAAA,wBAAM,WAAU;AAAA,wBAAhB,UAA+C,EAAE;AAAA,uBAAc;AAAA;AAAA,mBACjF;AAAA;AAAA,iBALS,EAAE,KAMb;AAAA,aAEL;AAAA,WACD;AAAA,UAEH,6BAAa,KAA2H,OAA3H;AAAA,YAAK,WAAU;AAAA,YAAf,UAA+G;AAAA,WAAY;AAAA,0BACzI,MAGE,SAHF;AAAA,YAAO,WAAU;AAAA,YAAjB,UAGE;AAAA,8BAFA,KAAqI,QAArI;AAAA,gBAAM,WAAU;AAAA,gBAAhB,WAAiE,EAAE,WAAW,CAAC,GAAG,SAAS,0BAA0B;AAAA,eAAgB;AAAA,8BACrI,KAAC,YAAD;AAAA,gBAAU,OAAO,MAAM,MAAM,QAAQ;AAAA,gBAAI,UAAU,CAAC,MAAM,QAAQ,EAAE,OAAO,KAAK;AAAA,gBAAG,MAAM;AAAA,gBAAG,WAAU;AAAA,eAAuJ;AAAA;AAAA,WAC7P;AAAA,0BACF,MASE,OATF;AAAA,YAAK,WAAU;AAAA,YAAf,UASE;AAAA,cARC,MAAM,GAAG,SAAS,oBACjB,KAEE,UAFF;AAAA,gBAAQ,MAAK;AAAA,gBAAS,SAAS,MAAM,OAAO,MAAM,CAAC;AAAA,gBAAG,WAAU;AAAA,gBAAhE;AAAA,eAEE,IACA;AAAA,8BACJ,KAEE,UAFF;AAAA,gBAAQ,MAAK;AAAA,gBAAS,SAAS,MAAM,SAAS,QAAQ,IAAI,aAAa,IAAI,KAAK,CAAC;AAAA,gBAAG,UAAU,CAAC,SAAS,KAAK,OAAO;AAAA,gBAAG,WAAU;AAAA,gBAAjI;AAAA,eAEE;AAAA;AAAA,WACF;AAAA;AAAA,OACF;AAAA;AAAA,GACF;AAAA;;ACjHN,sBAAS,wBAAW;AACpB,iCAAwB,mBAAO;;AAwBxB,SAAS,SAAS,GAAG,SAAS,WAAW,UAAU,WAAW,YAAY,YAAY,YAAY,QAAQ,WAAW,WAAW,MAAM,KAAK,OAAuB;AAAA,EACvK,SAAS,QAAQ,UAAS,CAAC;AAAA,EAC3B,WAAU,MAAM;AAAA,IACd,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,MAAM,IAAI,YAAY,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;AAAA,IACpD,OAAO,MAAM,cAAc,CAAC;AAAA,KAC3B,CAAC,OAAO,CAAC;AAAA,EACZ,IAAI,cAAc,eAAe,aAAa;AAAA,IAC5C,uBACE,MAGE,OAHF;AAAA,MAAK,WAAW,GAAG,iFAAiF,SAAS;AAAA,MAAG,MAAK;AAAA,MAArH,UAGE;AAAA,wBAFA,KAAC,UAAD;AAAA,UAAS,WAAU;AAAA,UAA2B,eAAW;AAAA,SAAC;AAAA,QACzD,eAAe,WAAW,iBAAiB,eAAe,iBAAiB,kBAAiB;AAAA;AAAA,KAC7F;AAAA,EAEN;AAAA,EACA,IAAI,SAAS;AAAA,IACX,MAAM,SAAQ,cAAc,eAAe,8BAA8B,cAAc,aAAa,4BAA6B,YAAY;AAAA,IAC7I,uBACE,MAgBE,OAhBF;AAAA,MAAK,WAAW,GAAG,kFAAkF,SAAS;AAAA,MAA9G,UAgBE;AAAA,wBAfA,KAAC,UAAD;AAAA,UAAS,WAAW,GAAG,4BAA4B,YAAY,iBAAiB,aAAa;AAAA,UAAG,eAAW;AAAA,SAAC;AAAA,wBAE5G,KAEE,QAFF;AAAA,UAAM,MAAK;AAAA,UAAS,aAAU;AAAA,UAA9B,UACG;AAAA,SACD;AAAA,QACD,cAAc,6BACb,MAEE,QAFF;AAAA,UAAM,WAAU;AAAA,UAAyB,eAAW;AAAA,UAApD,UAEE;AAAA,YAFF;AAAA,YACI,aAAa,IAAI,IAAI,SAAS;AAAA;AAAA,SAChC;AAAA,QAEH,0BACC,MAEE,UAFF;AAAA,UAAQ,MAAK;AAAA,UAAS,SAAS;AAAA,UAAQ,WAAU;AAAA,UAA0E,cAAW;AAAA,UAAtI,UAEE;AAAA,4BADA,KAAC,QAAD;AAAA,cAAQ,WAAU;AAAA,cAAc,eAAW;AAAA,aAAC;AAAA,YAD9C;AAAA;AAAA,SAEE;AAAA;AAAA,KAEJ;AAAA,EAEN;AAAA,EACA,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,QAAQ,OAAO,SAAS,YAAY,UAAU;AAAA,EAC9C,MAAM,gBAAgB,WAAW,YAAY;AAAA,EAC7C,uBACE,MAYE,OAZF;AAAA,IAAK,WAAW,GAAG,qEAAqE,SAAS;AAAA,IAAG,MAAK;AAAA,IAAS,gBAAc,WAAW;AAAA,IAA3I,UAYE;AAAA,MAXC,SAAS,uBAAO,KAAC,QAAD;AAAA,QAAO,WAAU;AAAA,QAA2B,eAAW;AAAA,OAAC,IAAK,SAAS,wBAAQ,KAAC,eAAD;AAAA,QAAe,WAAU;AAAA,QAA+B,eAAW;AAAA,OAAC,oBAAK,KAAC,eAAD;AAAA,QAAe,WAAW,GAAG,eAAe,SAAS,SAAS,iBAAiB,uBAAuB;AAAA,QAAG,eAAW;AAAA,OAAC;AAAA,sBAC7R,KAAqL,QAArL;AAAA,QAAM,WAAW,GAAG,SAAS,QAAQ,gBAAgB,SAAS,SAAS,oBAAoB,SAAS,UAAU,gBAAgB,SAAS,WAAW,uBAAuB;AAAA,QAAzK,UAA6K;AAAA,OAAQ;AAAA,sBACrL,KAA0C,QAA1C;AAAA,QAAM,WAAU;AAAA,QAAhB;AAAA,OAA0C;AAAA,sBAC1C,MAEE,QAFF;AAAA,QAAM,WAAU;AAAA,QAAhB,UAEE;AAAA,UADC,WAAW;AAAA,UADd;AAAA,UAC6B,WAAW,aAAa,IAAI,KAAK;AAAA,UAD9D;AAAA,UACqE,aAAa,cAAc,WAAW,KAAK;AAAA;AAAA,OAC9G;AAAA,MACD,iBAAiB,WAAW,mBAAmB,6BAC9C,KAEE,OAFF;AAAA,QAAK,WAAU;AAAA,QAAf,0BACE,KAAC,gBAAD;AAAA,UAAgB,UAAU,WAAW;AAAA,UAAiB,UAAU;AAAA,SAAW;AAAA,OAC3E;AAAA;AAAA,GAEJ;AAAA;;AC9EN;;AAQO,SAAS,aAAa,CAAC,MAAoE;AAAA,EAChG,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,KAAK,MAAM;AAAA,IACpB,MAAM,MAAM,EAAE,eAAe;AAAA,IAC7B,IAAI,CAAC,OAAO,IAAI,GAAG;AAAA,MAAG,OAAO,IAAI,KAAK,CAAC,CAAC;AAAA,IACxC,OAAO,IAAI,GAAG,EAAG,KAAK,CAAC;AAAA,EACzB;AAAA,EACA,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,YAAW,EAAE,SAAS,YAAK,EAAE;AAAA;AAG3E,SAAS,IAAI,CAAC,KAAqB;AAAA,EACjC,MAAM,IAAI,KAAK,MAAM,GAAG;AAAA,EACxB,IAAI,OAAO,MAAM,CAAC;AAAA,IAAG,OAAO;AAAA,EAC5B,MAAM,IAAI,IAAI,KAAK,CAAC;AAAA,EACpB,OAAO,GAAG,EAAE,mBAAmB,WAAW,EAAE,OAAO,SAAS,KAAK,UAAU,CAAC,KAAK,EAAE,mBAAmB,WAAW,EAAE,MAAM,WAAW,QAAQ,UAAU,CAAC;AAAA;AAGlJ,SAAS,WAAW,GAAG,UAAU,YAAY,UAAU,OAAO,aAA6I;AAAA,EAChN,MAAM,SAAS,cAAc,QAAQ;AAAA,EACrC,uBACE,MAuCE,OAvCF;AAAA,IAAK,WAAW,GAAG,uBAAuB,SAAS;AAAA,IAAG,cAAW;AAAA,IAAjE,UAuCE;AAAA,MAtCC,yBACC,MAEE,UAFF;AAAA,QAAQ,MAAK;AAAA,QAAS,SAAS;AAAA,QAAO,WAAU;AAAA,QAAhD,UAEE;AAAA,0BADA,MAAC,MAAD;AAAA,YAAM,WAAU;AAAA,YAAU,eAAW;AAAA,WAAC;AAAA,UADxC;AAAA;AAAA,OAEE;AAAA,MAEH,SAAS,WAAW,qBAAK,MAAiE,KAAjE;AAAA,QAAG,WAAU;AAAA,QAAb;AAAA,OAAiE;AAAA,MAC1F,OAAO,IAAI,CAAC,sBACX,MA6BE,OA7BF;AAAA,QAAqB,WAAU;AAAA,QAA/B,UA6BE;AAAA,UA5BC,EAAE,2BAAW,MAAkG,OAAlG;AAAA,YAAK,WAAU;AAAA,YAAf,UAAsF,EAAE;AAAA,WAAU;AAAA,0BAChH,MA0BE,MA1BF;AAAA,sBACG,EAAE,KAAK,IAAI,CAAC,MAAM;AAAA,cACjB,MAAM,KAAK,EAAE,cAAc;AAAA,cAC3B,MAAM,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,MAAM,GAAG,CAAC;AAAA,cACjF,uBACE,MAkBE,MAlBF;AAAA,0CACE,MAgBE,UAhBF;AAAA,kBAAQ,MAAK;AAAA,kBAAS,SAAS,MAAM,SAAS,EAAE,SAAS;AAAA,kBAAG,gBAAc,KAAK,SAAS;AAAA,kBAAW,WAAW,GAAG,uFAAuF,MAAM,UAAU;AAAA,kBAAG,eAAa,EAAE;AAAA,kBAA1O,UAgBE;AAAA,oCAfA,MASE,QATF;AAAA,sBAAM,WAAU;AAAA,sBAAhB,UASE;AAAA,wCAPA,MAAC,QAAD;AAAA,0BACE,WAAW,GAAG,iCAAiC,EAAE,OAAO,4BAA4B,EAAE,WAAW,WAAW,eAAe,EAAE,WAAW,cAAc,YAAY,EAAE,WAAW,UAAU,mBAAmB,wBAAwB;AAAA,0BACpO,cAAY,EAAE,OAAO,YAAY,EAAE;AAAA,0BACnC,aAAW,EAAE,OAAO,SAAS;AAAA,yBAC/B;AAAA,wCACA,MAA+D,QAA/D;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAAuD;AAAA,yBAAQ;AAAA,wBAC9D,EAAE,mCAAmB,MAAoH,QAApH;AAAA,0BAAM,WAAU;AAAA,0BAAhB;AAAA,yBAAoH;AAAA;AAAA,qBAC1I;AAAA,oCACF,MAIE,QAJF;AAAA,sBAAM,WAAU;AAAA,sBAAhB,UAIE;AAAA,wBAHC,EAAE,uBAAO,MAAoC,QAApC;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAA4B,EAAE;AAAA,yBAAM;AAAA,wBAC7C,EAAE,0BAAU,MAAuC,QAAvC;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAA4B,EAAE;AAAA,yBAAS;AAAA,wCACpD,MAAqE,QAArE;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAAiD,KAAK,EAAE,SAAS;AAAA,yBAAI;AAAA;AAAA,qBACrE;AAAA;AAAA,iBACF;AAAA,iBAjBK,EAAE,SAkBT;AAAA,aAEL;AAAA,WACD;AAAA;AAAA,SA5BM,EAAE,OA6BV,CACH;AAAA;AAAA,GACD;AAAA;;ACnEN,wBAAkE,2BAAa,sBAAW,qBAAQ;AAClG,uCAA6B,cAAQ;;AA8CrC,IAAM,SAAS,CAAC,aAAa,cAAc,aAAa,YAAY;AAEpE,eAAe,gBAAgB,CAAC,GAAsC;AAAA,EACpE,MAAM,MAAM,IAAI,WAAW,MAAM,EAAE,YAAY,CAAC;AAAA,EAChD,IAAI,MAAM;AAAA,EACV,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,IAAQ,OAAO,OAAO,aAAa,GAAG,IAAI,SAAS,GAAG,IAAI,KAAM,CAAC;AAAA,EACtG,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAS,WAAW,EAAE,MAAM,MAAM,KAAK,GAAG,GAAG,YAAY,IAAI,gBAAgB,CAAC,EAAE;AAAA;AAQ3G,SAAS,aAAa,GAAY;AAAA,EAChC,OAAO,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,cAAc,OAAO,WAAW,mBAAmB,EAAE;AAAA;AAGrH,SAAS,QAAQ,GAAG,UAAU,SAAS,QAAQ,SAAS,OAAO,UAAU,cAAc,eAAe,YAAY,UAAU,gBAAgB,cAAc,8BAA6B,YAAY,KAAK,aAAa,SAAS,qBAAqB,IAAI,OAAO,MAAM,WAAW,aAA4B;AAAA,EAChT,OAAO,KAAK,UAAU,UAAS,gBAAgB,EAAE;AAAA,EACjD,MAAM,OAAO,SAAS;AAAA,EACtB,MAAM,UAAU,CAAC,MAAc;AAAA,IAC7B,IAAI,UAAU;AAAA,MAAW,OAAO,CAAC;AAAA,IACjC,WAAW,CAAC;AAAA;AAAA,EAEd,OAAO,aAAa,kBAAkB,UAA+B,CAAC,CAAC;AAAA,EACvE,OAAO,MAAM,WAAW,UAAwB,IAAI;AAAA,EACpD,MAAM,MAAM,QAA4B,IAAI;AAAA,EAG5C,WAAU,MAAM;AAAA,IACd,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,CAAC;AAAA,MAAI;AAAA,IACT,MAAM,MAAM,MAAM;AAAA,MAChB,GAAG,MAAM,SAAS;AAAA,MAClB,GAAG,MAAM,SAAS,GAAG,KAAK,IAAI,GAAG,cAAc,GAAG;AAAA;AAAA,IAEpD,IAAI;AAAA,IACJ,IAAI,OAAO,mBAAmB;AAAA,MAAa;AAAA,IAC3C,MAAM,KAAK,IAAI,eAAe,GAAG;AAAA,IACjC,GAAG,QAAQ,EAAE;AAAA,IACb,OAAO,MAAM,GAAG,WAAW;AAAA,KAC1B,CAAC,IAAI,CAAC;AAAA,EAET,MAAM,WAAW,aACf,OAAO,UAA6B;AAAA,IAClC,MAAM,OAAO,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,OAAO,SAAS,EAAE,IAAI,CAAC;AAAA,IAC7D,IAAI,CAAC,KAAK;AAAA,MAAQ;AAAA,IAClB,MAAM,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,OAAO,kBAAkB;AAAA,IACxD,IAAI,KAAK;AAAA,MACP,QAAQ,GAAG,IAAI,uBAAuB,KAAK,MAAM,qBAAqB,OAAO,IAAI,MAAM;AAAA,MACvF;AAAA,IACF;AAAA,IACA,MAAM,OAAO,MAAM,QAAQ,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAAA,IACzD,eAAe,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAAA,IACrC,QAAQ,IAAI;AAAA,KAEd,CAAC,kBAAkB,CACrB;AAAA,EAEA,MAAM,SAAS,CAAC,MACd,eAAe,CAAC,MAAM;AAAA,IACpB,MAAM,OAAO,EAAE;AAAA,IACf,IAAI,MAAM;AAAA,MAAY,IAAI,gBAAgB,KAAK,UAAU;AAAA,IACzD,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC;AAAA,GAClC;AAAA,EAEH,MAAM,WAAW,QAAQ,WAAW,OAAO;AAAA,EAC3C,MAAM,UAAU,CAAC,aAAa,WAAW,KAAK,KAAK,EAAE,SAAS,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,SAAS,KAAK,YAAY,SAAS;AAAA,EAC9H,MAAM,SAAS,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,IAAI,UAAU;AAAA,MACZ,QAAS,KAAK,KAAK,CAAC;AAAA,MACpB,QAAQ,EAAE;AAAA,MACV;AAAA,IACF;AAAA,IACA,SAAS,KAAK,KAAK,GAAG,WAAW;AAAA,IACjC,QAAQ,EAAE;AAAA,IACV,WAAW,KAAK;AAAA,MAAa,IAAI,EAAE;AAAA,QAAY,IAAI,gBAAgB,EAAE,UAAU;AAAA,IAC/E,eAAe,CAAC,CAAC;AAAA;AAAA,EAGnB,MAAM,QAAQ,CAAC,MAA0C;AAAA,IACvD,IAAI,EAAE,QAAQ,WAAW,EAAE,YAAY,EAAE,YAAY;AAAA,MAAa;AAAA,IAClE,MAAM,aAAa,iBAAiB,CAAC,cAAc;AAAA,IACnD,IAAI,CAAC;AAAA,MAAY;AAAA,IACjB,EAAE,eAAe;AAAA,IACjB,OAAO;AAAA;AAAA,EAET,MAAM,UAAU,CAAC,MAA2C;AAAA,IAC1D,MAAM,QAAQ,CAAC,GAAG,EAAE,cAAc,KAAK;AAAA,IACvC,IAAI,MAAM,QAAQ;AAAA,MAChB,EAAE,eAAe;AAAA,MACZ,SAAS,KAAK;AAAA,IACrB;AAAA;AAAA,EAEF,MAAM,SAAS,CAAC,MAAiC;AAAA,IAC/C,IAAI,EAAE,aAAa,MAAM,QAAQ;AAAA,MAC/B,EAAE,eAAe;AAAA,MACZ,SAAS,EAAE,aAAa,KAAK;AAAA,IACpC;AAAA;AAAA,EAGF,uBACE,OAyDE,OAzDF;AAAA,IAAK,WAAW,GAAG,iEAAiE,YAAY,cAAc,SAAS;AAAA,IAAG;AAAA,IAAgB,YAAY,CAAC,MAAM,EAAE,eAAe;AAAA,IAAG,iBAAe,WAAW,SAAS;AAAA,IAApN,UAyDE;AAAA,MAxDC,YAAY,SAAS,qBACpB,MAWE,MAXF;AAAA,QAAI,WAAU;AAAA,QAAiC,cAAW;AAAA,QAA1D,UACG,YAAY,IAAI,CAAC,GAAG,sBACnB,OAOE,MAPF;AAAA,UAA2B,WAAU;AAAA,UAArC,UAOE;AAAA,YANC,EAAE,6BAAa,MAAC,OAAD;AAAA,cAAK,KAAK,EAAE;AAAA,cAAY,KAAK,EAAE;AAAA,cAAM,WAAU;AAAA,aAAyD,oBAAK,MAAC,QAAD;AAAA,cAAM,WAAU;AAAA,aAA2D;AAAA,4BACxM,MAIE,UAJF;AAAA,cAAQ,MAAK;AAAA,cAAS,SAAS,MAAM,OAAO,CAAC;AAAA,cAAG,cAAY,UAAU,EAAE;AAAA,cAAQ,WAAU;AAAA,cAA1F,0BACE,MAEE,QAFF;AAAA,gBAAM,WAAU;AAAA,gBAAhB,0BACE,MAAC,IAAD;AAAA,kBAAG,WAAU;AAAA,kBAAU,eAAW;AAAA,iBAAC;AAAA,eACnC;AAAA,aACF;AAAA;AAAA,WANK,GAAG,EAAE,QAAQ,GAOpB,CACH;AAAA,OACD;AAAA,sBAEJ,MAAC,YAAD;AAAA,QACE;AAAA,QACA,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,QAAQ,EAAE,OAAO,KAAK;AAAA,QACvC,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,aAAa,YAAY,iBAAiB,iBAAiB,WAAW,sDAAqD;AAAA,QAC3H,cAAY,WAAW,UAAU;AAAA,QACjC,WAAU;AAAA,OACZ;AAAA,sBACA,OA4BE,OA5BF;AAAA,QAAK,WAAU;AAAA,QAAf,UA4BE;AAAA,UA3BC;AAAA,UACA,cAAc,WAAW,SAAS,qBACjC,MAME,UANF;AAAA,YAAQ,OAAO,OAAO;AAAA,YAAI,UAAU,CAAC,MAAM,cAAc,EAAE,OAAO,KAAK;AAAA,YAAG;AAAA,YAAoB,cAAW;AAAA,YAAM,WAAU;AAAA,YAAzH,UACG,WAAW,IAAI,CAAC,sBACf,MAEE,UAFF;AAAA,cAAsB,OAAO,EAAE;AAAA,cAAO,OAAO,EAAE;AAAA,cAA/C,UACG,EAAE;AAAA,eADQ,EAAE,KAEb,CACH;AAAA,WACD;AAAA,UAEH,CAAC,8BACF,OAGE,SAHF;AAAA,YAAO,WAAW,GAAG,6GAA6G,YAAY,qBAAqB;AAAA,YAAG,cAAW;AAAA,YAAjL,UAGE;AAAA,8BAFA,MAAC,WAAD;AAAA,gBAAW,WAAU;AAAA,gBAAU,eAAW;AAAA,eAAC;AAAA,8BAC3C,MAAC,SAAD;AAAA,gBAAO,MAAK;AAAA,gBAAO,QAAQ,OAAO,KAAK,GAAG;AAAA,gBAAG,UAAQ;AAAA,gBAAC,WAAU;AAAA,gBAAU;AAAA,gBAAoB,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS,KAAK,SAAS,EAAE,OAAO,KAAK;AAAA,eAAG;AAAA;AAAA,WAChK;AAAA,UAED,wBAAQ,MAAgE,QAAhE;AAAA,YAAM,WAAU;AAAA,YAAhB,UAAyD;AAAA,WAAO;AAAA,0BACzE,MAAC,QAAD;AAAA,YAAM,WAAU;AAAA,WAAS;AAAA,UACxB,WAAW,UAAU,EAAE,YAAY,KAAK,KAAK,qBAC5C,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS;AAAA,YAAQ,cAAW;AAAA,YAAO,WAAU;AAAA,YAAnE,0BACE,MAAC,SAAD;AAAA,cAAQ,WAAU;AAAA,cAAU,eAAW;AAAA,aAAC;AAAA,WACxC,oBAEF,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS;AAAA,YAAQ,UAAU,CAAC;AAAA,YAAS,cAAW;AAAA,YAAO,WAAU;AAAA,YAAvF,0BACE,MAAC,SAAD;AAAA,cAAS,WAAU;AAAA,cAAU,eAAW;AAAA,aAAC;AAAA,WACzC;AAAA;AAAA,OAEJ;AAAA;AAAA,GACF;AAAA;",
|
|
22
|
+
"debugId": "C0D62ACAF9016C3D64756E2164756E21",
|
|
22
23
|
"names": []
|
|
23
24
|
}
|