@gonzih/cc-agent 0.2.5 → 0.3.0
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 +159 -12
- package/dist/agent.d.ts +7 -5
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +91 -102
- package/dist/agent.js.map +1 -1
- package/dist/index.js +19 -10
- package/dist/index.js.map +1 -1
- package/dist/profiles.d.ts +6 -14
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +9 -36
- package/dist/profiles.js.map +1 -1
- package/dist/redis.d.ts +4 -0
- package/dist/redis.d.ts.map +1 -0
- package/dist/redis.js +106 -0
- package/dist/redis.js.map +1 -0
- package/dist/store.d.ts +69 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +286 -0
- package/dist/store.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# cc-agent
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@gonzih/cc-agent)
|
|
4
|
+
|
|
3
5
|
MCP server for spawning Claude Code agents in GitHub repos. Give Claude Code the ability to **branch itself** — clone a repo and kick off a sub-agent to work on it autonomously, with persistent state across MCP restarts.
|
|
4
6
|
|
|
5
7
|
Built by [@Gonzih](https://github.com/Gonzih).
|
|
@@ -16,33 +18,81 @@ CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-... # OAuth token (recommended)
|
|
|
16
18
|
ANTHROPIC_API_KEY=sk-ant-api03-... # API key
|
|
17
19
|
```
|
|
18
20
|
|
|
19
|
-
Restart Claude Code. You now have
|
|
21
|
+
Restart Claude Code. You now have 13 new MCP tools.
|
|
20
22
|
|
|
21
23
|
## MCP Tools
|
|
22
24
|
|
|
23
25
|
| Tool | Description |
|
|
24
26
|
|------|-------------|
|
|
25
27
|
| `spawn_agent` | Clone a repo, optionally create a branch, run Claude Code on a task |
|
|
26
|
-
| `list_jobs` | List all jobs with status, recent tool calls, and exit info |
|
|
27
28
|
| `get_job_status` | Check status of a specific job |
|
|
28
29
|
| `get_job_output` | Stream output lines from a job (supports offset for tailing) |
|
|
30
|
+
| `list_jobs` | List all jobs with status, recent tool calls, and exit info |
|
|
29
31
|
| `cancel_job` | Kill a running job |
|
|
30
32
|
| `send_message` | Write a message to a running agent's stdin mid-task |
|
|
33
|
+
| `cost_summary` | Total USD cost across all jobs, broken down by repo |
|
|
31
34
|
| `get_version` | Return the running cc-agent version |
|
|
35
|
+
| `create_plan` | Spawn a dependency graph of agent jobs in one call |
|
|
36
|
+
| `create_profile` | Save a named spawn config for repeated use with `{{variable}}` templates |
|
|
37
|
+
| `list_profiles` | List all saved profiles |
|
|
38
|
+
| `delete_profile` | Delete a named profile |
|
|
39
|
+
| `spawn_from_profile` | Spawn a job from a saved profile with variable interpolation |
|
|
32
40
|
|
|
33
41
|
## spawn_agent parameters
|
|
34
42
|
|
|
35
43
|
| Parameter | Type | Required | Description |
|
|
36
44
|
|-----------|------|----------|-------------|
|
|
37
|
-
| `repo_url` | string | yes | Git repo to clone (HTTPS) |
|
|
45
|
+
| `repo_url` | string | yes | Git repo to clone (HTTPS or SSH) |
|
|
38
46
|
| `task` | string | yes | Task prompt for Claude Code |
|
|
39
47
|
| `branch` | string | no | Existing branch to check out after clone |
|
|
40
48
|
| `create_branch` | string | no | New branch to create (e.g. `feat/my-feature`) |
|
|
41
49
|
| `claude_token` | string | no | Per-job token override |
|
|
42
50
|
| `continue_session` | boolean | no | Pass `--continue` to resume last Claude session in workdir |
|
|
43
|
-
| `max_budget_usd` | number | no | Spend cap in USD (default: 20)
|
|
51
|
+
| `max_budget_usd` | number | no | Spend cap in USD (default: 20) |
|
|
52
|
+
| `session_id` | string | no | Session ID from a prior job's `sessionIdAfter` — resumes that session |
|
|
53
|
+
| `depends_on` | string[] | no | Job IDs that must be `done` before this job starts (queued as `pending`) |
|
|
54
|
+
|
|
55
|
+
## create_plan parameters
|
|
56
|
+
|
|
57
|
+
| Parameter | Type | Required | Description |
|
|
58
|
+
|-----------|------|----------|-------------|
|
|
59
|
+
| `goal` | string | yes | High-level description of what this plan achieves |
|
|
60
|
+
| `steps` | array | yes | Ordered list of steps to execute |
|
|
44
61
|
|
|
45
|
-
|
|
62
|
+
Each step in `steps`:
|
|
63
|
+
|
|
64
|
+
| Field | Type | Required | Description |
|
|
65
|
+
|-------|------|----------|-------------|
|
|
66
|
+
| `id` | string | yes | Logical step ID (used for `depends_on` references within the plan) |
|
|
67
|
+
| `repo_url` | string | yes | Git repo to clone |
|
|
68
|
+
| `task` | string | yes | Task prompt for Claude Code |
|
|
69
|
+
| `create_branch` | string | no | New branch to create before running |
|
|
70
|
+
| `depends_on` | string[] | no | Step IDs from this plan that must complete first |
|
|
71
|
+
|
|
72
|
+
## create_profile parameters
|
|
73
|
+
|
|
74
|
+
| Parameter | Type | Required | Description |
|
|
75
|
+
|-----------|------|----------|-------------|
|
|
76
|
+
| `name` | string | yes | Profile name (alphanumeric, dashes, underscores) |
|
|
77
|
+
| `repo_url` | string | yes | Git repo to clone |
|
|
78
|
+
| `task_template` | string | yes | Task template — use `{{varName}}` for substitution |
|
|
79
|
+
| `default_budget_usd` | number | no | Default USD budget for jobs from this profile |
|
|
80
|
+
| `branch` | string | no | Branch to check out after cloning |
|
|
81
|
+
| `description` | string | no | Human-readable profile description |
|
|
82
|
+
|
|
83
|
+
## spawn_from_profile parameters
|
|
84
|
+
|
|
85
|
+
| Parameter | Type | Required | Description |
|
|
86
|
+
|-----------|------|----------|-------------|
|
|
87
|
+
| `profile_name` | string | yes | Name of the saved profile to use |
|
|
88
|
+
| `vars` | object | no | Variables to interpolate into the task template |
|
|
89
|
+
| `task_override` | string | no | Use this task instead of the profile template |
|
|
90
|
+
| `branch_override` | string | no | Override the profile's branch |
|
|
91
|
+
| `budget_override` | number | no | Override the profile's default budget |
|
|
92
|
+
|
|
93
|
+
## Usage examples
|
|
94
|
+
|
|
95
|
+
### Basic agent
|
|
46
96
|
|
|
47
97
|
```
|
|
48
98
|
spawn_agent({
|
|
@@ -60,19 +110,114 @@ get_job_output({ job_id: "abc-123", offset: 0 })
|
|
|
60
110
|
// → { lines: ["[cc-agent] Cloning...", "Reading src/api.ts...", ...], done: false }
|
|
61
111
|
|
|
62
112
|
send_message({ job_id: "abc-123", message: "Also update the tests." })
|
|
63
|
-
// → {
|
|
113
|
+
// → { sent: true }
|
|
114
|
+
|
|
115
|
+
cost_summary()
|
|
116
|
+
// → { totalJobs: 1, totalCostUsd: 1.23, byRepo: { "https://github.com/...": 1.23 } }
|
|
64
117
|
```
|
|
65
118
|
|
|
66
|
-
|
|
119
|
+
### Multi-step plan with dependencies
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
create_plan({
|
|
123
|
+
goal: "Refactor auth and update docs",
|
|
124
|
+
steps: [
|
|
125
|
+
{
|
|
126
|
+
id: "refactor",
|
|
127
|
+
repo_url: "https://github.com/yourorg/app",
|
|
128
|
+
task: "Refactor auth middleware to use JWT. Open a PR.",
|
|
129
|
+
create_branch: "feat/jwt-auth"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
id: "docs",
|
|
133
|
+
repo_url: "https://github.com/yourorg/app",
|
|
134
|
+
task: "Update README to document the new JWT auth flow.",
|
|
135
|
+
create_branch: "docs/jwt-auth",
|
|
136
|
+
depends_on: ["refactor"]
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
})
|
|
140
|
+
// → { goal: "...", totalSteps: 2, steps: [{ stepId: "refactor", jobId: "abc-1", status: "cloning" }, { stepId: "docs", jobId: "abc-2", status: "pending" }] }
|
|
141
|
+
```
|
|
67
142
|
|
|
68
|
-
|
|
143
|
+
### Profiles for repeated tasks
|
|
69
144
|
|
|
70
|
-
|
|
145
|
+
```
|
|
146
|
+
// Save once:
|
|
147
|
+
create_profile({
|
|
148
|
+
name: "fix-issue",
|
|
149
|
+
repo_url: "https://github.com/yourorg/app",
|
|
150
|
+
task_template: "Fix issue #{{issue}}: {{title}}. Open a PR when done.",
|
|
151
|
+
default_budget_usd: 5
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
// Use many times:
|
|
155
|
+
spawn_from_profile({
|
|
156
|
+
profile_name: "fix-issue",
|
|
157
|
+
vars: { issue: "42", title: "Login broken on mobile" }
|
|
158
|
+
})
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Resume a prior session
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
// Get session ID from a completed job:
|
|
165
|
+
get_job_status({ job_id: "abc-123" })
|
|
166
|
+
// → { ..., session_id_after: "ses_xyz" }
|
|
167
|
+
|
|
168
|
+
// Resume it:
|
|
169
|
+
spawn_agent({
|
|
170
|
+
repo_url: "https://github.com/yourorg/app",
|
|
171
|
+
task: "Continue where you left off — finish the tests.",
|
|
172
|
+
session_id: "ses_xyz"
|
|
173
|
+
})
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Persistence
|
|
177
|
+
|
|
178
|
+
cc-agent v0.3.0+ stores all job state in **Redis**, which is auto-provisioned on startup — zero configuration needed.
|
|
179
|
+
|
|
180
|
+
### Auto-provisioning
|
|
181
|
+
|
|
182
|
+
On startup, cc-agent tries to connect to Redis at `localhost:6379`. If unavailable:
|
|
183
|
+
|
|
184
|
+
1. **Docker** — runs `docker run -d --name cc-agent-redis -p 6379:6379 --restart=unless-stopped redis:alpine`
|
|
185
|
+
2. **redis-server** — if `redis-server` is on PATH, spawns it as a daemon
|
|
186
|
+
3. **In-memory fallback** — logs a warning and continues; jobs are not persisted across restarts
|
|
187
|
+
|
|
188
|
+
Once Redis is available, all job state, output, profiles, and plans survive MCP server restarts and are **shared across all Claude Code sessions** pointing at the same Redis instance.
|
|
189
|
+
|
|
190
|
+
### Key schema
|
|
191
|
+
|
|
192
|
+
| Key | Type | TTL | Contents |
|
|
193
|
+
|-----|------|-----|----------|
|
|
194
|
+
| `cca:job:<id>` | String (JSON) | 7 days | Full job record |
|
|
195
|
+
| `cca:jobs:index` | List | — | Job IDs, newest first (capped at 500) |
|
|
196
|
+
| `cca:job:<id>:output` | List | 7 days | Output lines (one entry per line) |
|
|
197
|
+
| `cca:plan:<id>` | String (JSON) | 30 days | Plan record with step→job mapping |
|
|
198
|
+
| `cca:profile:<name>` | String (JSON) | permanent | Profile config |
|
|
199
|
+
| `cca:profiles:index` | Set | permanent | All profile names |
|
|
200
|
+
|
|
201
|
+
### Disk fallback
|
|
202
|
+
|
|
203
|
+
When Redis is unavailable, cc-agent falls back to the original disk-based storage:
|
|
204
|
+
|
|
205
|
+
- `.cc-agent/jobs.json` — job metadata
|
|
71
206
|
- `.cc-agent/jobs/<id>.log` — per-job output log
|
|
207
|
+
- `~/.cc-agent/profiles.json` — profiles
|
|
208
|
+
|
|
209
|
+
Existing disk profiles are automatically migrated to Redis on first startup with Redis available.
|
|
72
210
|
|
|
73
|
-
|
|
211
|
+
## Job statuses
|
|
74
212
|
|
|
75
|
-
|
|
213
|
+
| Status | Meaning |
|
|
214
|
+
|--------|---------|
|
|
215
|
+
| `pending` | Waiting for `depends_on` jobs to complete |
|
|
216
|
+
| `cloning` | Cloning the repo |
|
|
217
|
+
| `running` | Claude Code is running |
|
|
218
|
+
| `done` | Completed successfully |
|
|
219
|
+
| `failed` | Exited with an error (check `error` field) |
|
|
220
|
+
| `cancelled` | Cancelled by `cancel_job` |
|
|
76
221
|
|
|
77
222
|
## Tool call visibility
|
|
78
223
|
|
|
@@ -127,12 +272,14 @@ npm version patch && npm publish # if it's a library
|
|
|
127
272
|
6. Tool calls are captured from the stream-JSON and stored in `tool_calls[]`
|
|
128
273
|
7. On exit: job marked done/failed, workdir cleaned up after 10 minutes
|
|
129
274
|
8. Jobs expire from memory after 1 hour (log file remains on disk)
|
|
275
|
+
9. Pending jobs are promoted automatically every 3 seconds when their dependencies complete
|
|
130
276
|
|
|
131
277
|
## Environment variables
|
|
132
278
|
|
|
133
279
|
| Variable | Description |
|
|
134
280
|
|----------|-------------|
|
|
135
|
-
| `
|
|
281
|
+
| `CLAUDE_CODE_TOKEN` | Claude OAuth token or Anthropic API key |
|
|
282
|
+
| `CLAUDE_CODE_OAUTH_TOKEN` | Claude OAuth token (alternative) |
|
|
136
283
|
| `ANTHROPIC_API_KEY` | Anthropic API key (alternative) |
|
|
137
284
|
|
|
138
285
|
## Requirements
|
package/dist/agent.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ export declare class JobManager {
|
|
|
3
3
|
private jobs;
|
|
4
4
|
private kills;
|
|
5
5
|
private defaultToken?;
|
|
6
|
-
|
|
6
|
+
/** Jobs restored from storage — their output lives in store, not in job.output[]. */
|
|
7
|
+
private restoredJobs;
|
|
7
8
|
constructor(token?: string);
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
/** Must be called after initRedis() at startup. */
|
|
10
|
+
init(): Promise<void>;
|
|
11
|
+
private checkRestoredRunning;
|
|
10
12
|
private persistJob;
|
|
11
13
|
private addOutput;
|
|
12
14
|
spawn(opts: SpawnOptions): Promise<string>;
|
|
@@ -14,11 +16,11 @@ export declare class JobManager {
|
|
|
14
16
|
private tick;
|
|
15
17
|
private promote;
|
|
16
18
|
getJob(id: string): Job | undefined;
|
|
17
|
-
getOutput(id: string, offset?: number): {
|
|
19
|
+
getOutput(id: string, offset?: number): Promise<{
|
|
18
20
|
lines: string[];
|
|
19
21
|
done: boolean;
|
|
20
22
|
toolCalls: string[];
|
|
21
|
-
}
|
|
23
|
+
}>;
|
|
22
24
|
list(): JobSummary[];
|
|
23
25
|
sendMessage(id: string, message: string): {
|
|
24
26
|
ok: boolean;
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4EhE,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,qFAAqF;IACrF,OAAO,CAAC,YAAY,CAAqB;gBAE7B,KAAK,CAAC,EAAE,MAAM;IAW1B,mDAAmD;IAC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAKX,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAsClC,GAAG;IAwGjB,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,OAAO;IASf,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAI7B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAazG,IAAI,IAAI,UAAU,EAAE;IAuBpB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAWzE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAkB3B,OAAO,CAAC,OAAO;CAahB"}
|
package/dist/agent.js
CHANGED
|
@@ -5,9 +5,10 @@ import { join } from "path";
|
|
|
5
5
|
import { promisify } from "util";
|
|
6
6
|
import { v4 as uuidv4 } from "uuid";
|
|
7
7
|
import { runClaude } from "./claude.js";
|
|
8
|
-
import { ensureStateDirs,
|
|
8
|
+
import { ensureStateDirs, isPidAlive } from "./state.js";
|
|
9
|
+
import { jobStore } from "./store.js";
|
|
9
10
|
const execFileAsync = promisify(execFile);
|
|
10
|
-
const JOB_TTL_MS = 60 * 60 * 1000; // 1 hour — clean up old done jobs
|
|
11
|
+
const JOB_TTL_MS = 60 * 60 * 1000; // 1 hour — clean up old done jobs from memory
|
|
11
12
|
// Claude Sonnet 4.6 pricing (USD per 1M tokens)
|
|
12
13
|
const PRICE_INPUT = 3.00;
|
|
13
14
|
const PRICE_OUTPUT = 15.00;
|
|
@@ -21,32 +22,83 @@ function calculateCost(job) {
|
|
|
21
22
|
1_000_000;
|
|
22
23
|
return Math.round(cost * 10000) / 10000;
|
|
23
24
|
}
|
|
25
|
+
function toRecord(job) {
|
|
26
|
+
return {
|
|
27
|
+
id: job.id,
|
|
28
|
+
status: job.status,
|
|
29
|
+
repoUrl: job.repoUrl,
|
|
30
|
+
task: job.task,
|
|
31
|
+
branch: job.branch,
|
|
32
|
+
createBranch: job.createBranch,
|
|
33
|
+
dependsOn: job.dependsOn,
|
|
34
|
+
startedAt: job.startedAt.toISOString(),
|
|
35
|
+
finishedAt: job.finishedAt?.toISOString(),
|
|
36
|
+
exitCode: job.exitCode,
|
|
37
|
+
error: job.error,
|
|
38
|
+
pid: job.pid,
|
|
39
|
+
sessionIdAfter: job.sessionIdAfter,
|
|
40
|
+
usage: job.usage,
|
|
41
|
+
totalInputTokens: job.totalInputTokens,
|
|
42
|
+
totalOutputTokens: job.totalOutputTokens,
|
|
43
|
+
totalCacheReadTokens: job.totalCacheReadTokens,
|
|
44
|
+
totalCacheWriteTokens: job.totalCacheWriteTokens,
|
|
45
|
+
costUsd: job.costUsd,
|
|
46
|
+
recentTools: job.toolCalls.slice(-10),
|
|
47
|
+
outputLineCount: job.output.length,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function fromRecord(r) {
|
|
51
|
+
return {
|
|
52
|
+
id: r.id,
|
|
53
|
+
repoUrl: r.repoUrl,
|
|
54
|
+
task: r.task,
|
|
55
|
+
branch: r.branch,
|
|
56
|
+
createBranch: r.createBranch,
|
|
57
|
+
status: r.status,
|
|
58
|
+
output: [],
|
|
59
|
+
toolCalls: r.recentTools ?? [],
|
|
60
|
+
exitCode: r.exitCode,
|
|
61
|
+
error: r.error,
|
|
62
|
+
startedAt: new Date(r.startedAt ?? Date.now()),
|
|
63
|
+
finishedAt: r.finishedAt ? new Date(r.finishedAt) : undefined,
|
|
64
|
+
pid: r.pid,
|
|
65
|
+
sessionIdAfter: r.sessionIdAfter,
|
|
66
|
+
usage: r.usage,
|
|
67
|
+
totalInputTokens: r.totalInputTokens,
|
|
68
|
+
totalOutputTokens: r.totalOutputTokens,
|
|
69
|
+
totalCacheReadTokens: r.totalCacheReadTokens,
|
|
70
|
+
totalCacheWriteTokens: r.totalCacheWriteTokens,
|
|
71
|
+
costUsd: r.costUsd,
|
|
72
|
+
dependsOn: r.dependsOn,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
24
75
|
export class JobManager {
|
|
25
76
|
jobs = new Map();
|
|
26
77
|
kills = new Map();
|
|
27
78
|
defaultToken;
|
|
28
|
-
|
|
79
|
+
/** Jobs restored from storage — their output lives in store, not in job.output[]. */
|
|
80
|
+
restoredJobs = new Set();
|
|
29
81
|
constructor(token) {
|
|
30
82
|
this.defaultToken = token;
|
|
31
83
|
ensureStateDirs();
|
|
32
|
-
this.loadFromDisk();
|
|
33
84
|
// Periodic cleanup of old finished jobs
|
|
34
85
|
setInterval(() => this.cleanup(), 5 * 60 * 1000).unref();
|
|
35
|
-
// Periodic check for
|
|
36
|
-
setInterval(() => this.
|
|
86
|
+
// Periodic check for restored running jobs whose PID may have died
|
|
87
|
+
setInterval(() => this.checkRestoredRunning(), 30 * 1000).unref();
|
|
37
88
|
// Dependency scheduler — promote pending jobs when deps are done
|
|
38
89
|
setInterval(() => this.tick(), 3000).unref();
|
|
39
90
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
let
|
|
46
|
-
let
|
|
91
|
+
/** Must be called after initRedis() at startup. */
|
|
92
|
+
async init() {
|
|
93
|
+
const records = await jobStore.loadAll();
|
|
94
|
+
const updates = [];
|
|
95
|
+
for (const r of records) {
|
|
96
|
+
let status = r.status;
|
|
97
|
+
let error = r.error;
|
|
98
|
+
let finishedAt = r.finishedAt;
|
|
47
99
|
if (status === "running" || status === "cloning") {
|
|
48
|
-
if (
|
|
49
|
-
//
|
|
100
|
+
if (r.pid && isPidAlive(r.pid)) {
|
|
101
|
+
// Process still alive — keep as running
|
|
50
102
|
}
|
|
51
103
|
else {
|
|
52
104
|
status = "failed";
|
|
@@ -54,39 +106,20 @@ export class JobManager {
|
|
|
54
106
|
finishedAt = finishedAt ?? new Date().toISOString();
|
|
55
107
|
}
|
|
56
108
|
}
|
|
57
|
-
const job = {
|
|
58
|
-
id: p.id,
|
|
59
|
-
repoUrl: p.repoUrl,
|
|
60
|
-
task: p.task,
|
|
61
|
-
branch: p.branch,
|
|
62
|
-
createBranch: p.createBranch,
|
|
63
|
-
status,
|
|
64
|
-
output: [],
|
|
65
|
-
toolCalls: [],
|
|
66
|
-
exitCode: p.exitCode,
|
|
67
|
-
error,
|
|
68
|
-
startedAt: new Date(p.startedAt),
|
|
69
|
-
finishedAt: finishedAt ? new Date(finishedAt) : undefined,
|
|
70
|
-
pid: p.pid,
|
|
71
|
-
sessionIdAfter: p.sessionIdAfter,
|
|
72
|
-
usage: p.usage,
|
|
73
|
-
totalInputTokens: p.totalInputTokens,
|
|
74
|
-
totalOutputTokens: p.totalOutputTokens,
|
|
75
|
-
totalCacheReadTokens: p.totalCacheReadTokens,
|
|
76
|
-
totalCacheWriteTokens: p.totalCacheWriteTokens,
|
|
77
|
-
costUsd: p.costUsd,
|
|
78
|
-
dependsOn: p.dependsOn,
|
|
79
|
-
};
|
|
109
|
+
const job = fromRecord({ ...r, status, error, finishedAt });
|
|
80
110
|
this.jobs.set(job.id, job);
|
|
81
|
-
this.
|
|
82
|
-
|
|
111
|
+
this.restoredJobs.add(job.id);
|
|
112
|
+
if (status !== r.status) {
|
|
113
|
+
updates.push({ ...r, status, error, finishedAt });
|
|
114
|
+
}
|
|
83
115
|
}
|
|
84
|
-
|
|
85
|
-
|
|
116
|
+
// Persist any status corrections back to store
|
|
117
|
+
for (const updated of updates) {
|
|
118
|
+
jobStore.saveJob(updated).catch(() => { });
|
|
86
119
|
}
|
|
87
120
|
}
|
|
88
|
-
|
|
89
|
-
for (const id of this.
|
|
121
|
+
checkRestoredRunning() {
|
|
122
|
+
for (const id of this.restoredJobs) {
|
|
90
123
|
const job = this.jobs.get(id);
|
|
91
124
|
if (!job)
|
|
92
125
|
continue;
|
|
@@ -96,46 +129,17 @@ export class JobManager {
|
|
|
96
129
|
job.finishedAt = new Date();
|
|
97
130
|
job.error = (job.error ? job.error + "; " : "") + "Process exited after MCP restart";
|
|
98
131
|
this.persistJob(job);
|
|
99
|
-
|
|
132
|
+
this.addOutput(job, "[cc-agent] Process no longer alive after MCP restart");
|
|
100
133
|
}
|
|
101
134
|
}
|
|
102
135
|
}
|
|
103
136
|
}
|
|
104
137
|
persistJob(job) {
|
|
105
|
-
|
|
106
|
-
const entry = {
|
|
107
|
-
id: job.id,
|
|
108
|
-
status: job.status,
|
|
109
|
-
repoUrl: job.repoUrl,
|
|
110
|
-
task: job.task,
|
|
111
|
-
branch: job.branch,
|
|
112
|
-
createBranch: job.createBranch,
|
|
113
|
-
startedAt: job.startedAt.toISOString(),
|
|
114
|
-
finishedAt: job.finishedAt?.toISOString(),
|
|
115
|
-
exitCode: job.exitCode,
|
|
116
|
-
error: job.error,
|
|
117
|
-
pid: job.pid,
|
|
118
|
-
sessionIdAfter: job.sessionIdAfter,
|
|
119
|
-
usage: job.usage,
|
|
120
|
-
totalInputTokens: job.totalInputTokens,
|
|
121
|
-
totalOutputTokens: job.totalOutputTokens,
|
|
122
|
-
totalCacheReadTokens: job.totalCacheReadTokens,
|
|
123
|
-
totalCacheWriteTokens: job.totalCacheWriteTokens,
|
|
124
|
-
costUsd: job.costUsd,
|
|
125
|
-
dependsOn: job.dependsOn,
|
|
126
|
-
};
|
|
127
|
-
const idx = persisted.findIndex((p) => p.id === job.id);
|
|
128
|
-
if (idx >= 0) {
|
|
129
|
-
persisted[idx] = entry;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
persisted.push(entry);
|
|
133
|
-
}
|
|
134
|
-
savePersistedJobs(persisted);
|
|
138
|
+
jobStore.saveJob(toRecord(job)).catch(() => { });
|
|
135
139
|
}
|
|
136
140
|
addOutput(job, line) {
|
|
137
141
|
job.output.push(line);
|
|
138
|
-
|
|
142
|
+
jobStore.appendOutput(job.id, line).catch(() => { });
|
|
139
143
|
}
|
|
140
144
|
async spawn(opts) {
|
|
141
145
|
const id = uuidv4();
|
|
@@ -163,7 +167,6 @@ export class JobManager {
|
|
|
163
167
|
this.jobs.set(id, job);
|
|
164
168
|
this.persistJob(job);
|
|
165
169
|
if (!isPending) {
|
|
166
|
-
// Run async — don't await
|
|
167
170
|
this.run(job, opts.claudeToken ?? this.defaultToken).catch((err) => {
|
|
168
171
|
job.status = "failed";
|
|
169
172
|
job.error = String(err);
|
|
@@ -195,7 +198,6 @@ export class JobManager {
|
|
|
195
198
|
this.addOutput(job, `[cc-agent] Created branch: ${branchName}`);
|
|
196
199
|
}
|
|
197
200
|
else if (job.createBranch === "true") {
|
|
198
|
-
// createBranch=true but no name — generate one from job id
|
|
199
201
|
const auto = `agent/${job.id.slice(0, 8)}`;
|
|
200
202
|
await execFileAsync("git", ["checkout", "-b", auto], { cwd: workDir });
|
|
201
203
|
this.addOutput(job, `[cc-agent] Created branch: ${auto}`);
|
|
@@ -210,7 +212,6 @@ export class JobManager {
|
|
|
210
212
|
maxBudgetUsd: job.maxBudgetUsd,
|
|
211
213
|
sessionId: job.sessionId,
|
|
212
214
|
});
|
|
213
|
-
// Save PID for cross-restart tracking
|
|
214
215
|
if (proc.pid != null) {
|
|
215
216
|
job.pid = proc.pid;
|
|
216
217
|
this.persistJob(job);
|
|
@@ -228,7 +229,6 @@ export class JobManager {
|
|
|
228
229
|
job.totalOutputTokens = (job.totalOutputTokens ?? 0) + u.outputTokens;
|
|
229
230
|
job.totalCacheReadTokens = (job.totalCacheReadTokens ?? 0) + (u.cacheReadTokens ?? 0);
|
|
230
231
|
job.totalCacheWriteTokens = (job.totalCacheWriteTokens ?? 0) + (u.cacheWriteTokens ?? 0);
|
|
231
|
-
// Prefer authoritative cost_usd from CLI result; fall back to calculated
|
|
232
232
|
job.costUsd = u.costUsd != null ? u.costUsd : calculateCost(job);
|
|
233
233
|
this.persistJob(job);
|
|
234
234
|
});
|
|
@@ -238,23 +238,18 @@ export class JobManager {
|
|
|
238
238
|
});
|
|
239
239
|
proc.on("tool", (name) => {
|
|
240
240
|
job.toolCalls.push(name);
|
|
241
|
-
// Keep last 50 tool calls to avoid unbounded growth
|
|
242
241
|
if (job.toolCalls.length > 50)
|
|
243
242
|
job.toolCalls = job.toolCalls.slice(-50);
|
|
244
243
|
});
|
|
245
|
-
proc.on("error", (err) => {
|
|
246
|
-
reject(err);
|
|
247
|
-
});
|
|
244
|
+
proc.on("error", (err) => { reject(err); });
|
|
248
245
|
proc.on("exit", (code) => {
|
|
249
246
|
job.exitCode = code ?? undefined;
|
|
250
247
|
job.stdinStream = null;
|
|
251
248
|
this.kills.delete(job.id);
|
|
252
|
-
if (code === 0 || code === null)
|
|
249
|
+
if (code === 0 || code === null)
|
|
253
250
|
resolve();
|
|
254
|
-
|
|
255
|
-
else {
|
|
251
|
+
else
|
|
256
252
|
reject(new Error(`Claude exited with code ${code}`));
|
|
257
|
-
}
|
|
258
253
|
});
|
|
259
254
|
});
|
|
260
255
|
job.status = "done";
|
|
@@ -270,7 +265,6 @@ export class JobManager {
|
|
|
270
265
|
finally {
|
|
271
266
|
job.finishedAt = new Date();
|
|
272
267
|
this.persistJob(job);
|
|
273
|
-
// Clean up work dir after 10 minutes to allow output inspection
|
|
274
268
|
if (workDir) {
|
|
275
269
|
setTimeout(() => rm(workDir, { recursive: true, force: true }).catch(() => { }), 10 * 60 * 1000).unref();
|
|
276
270
|
}
|
|
@@ -284,13 +278,10 @@ export class JobManager {
|
|
|
284
278
|
this.promote(job);
|
|
285
279
|
continue;
|
|
286
280
|
}
|
|
287
|
-
const allDone = job.dependsOn.every((depId) =>
|
|
288
|
-
const dep = this.jobs.get(depId);
|
|
289
|
-
return dep?.status === "done";
|
|
290
|
-
});
|
|
281
|
+
const allDone = job.dependsOn.every((depId) => this.jobs.get(depId)?.status === "done");
|
|
291
282
|
const anyFailed = job.dependsOn.some((depId) => {
|
|
292
|
-
const
|
|
293
|
-
return
|
|
283
|
+
const s = this.jobs.get(depId)?.status;
|
|
284
|
+
return s === "failed" || s === "cancelled";
|
|
294
285
|
});
|
|
295
286
|
if (anyFailed) {
|
|
296
287
|
job.status = "failed";
|
|
@@ -314,17 +305,15 @@ export class JobManager {
|
|
|
314
305
|
getJob(id) {
|
|
315
306
|
return this.jobs.get(id);
|
|
316
307
|
}
|
|
317
|
-
getOutput(id, offset = 0) {
|
|
308
|
+
async getOutput(id, offset = 0) {
|
|
318
309
|
const job = this.jobs.get(id);
|
|
319
310
|
if (!job) {
|
|
320
|
-
|
|
321
|
-
const lines = readLogSync(id, offset);
|
|
311
|
+
const lines = await jobStore.getOutput(id, offset);
|
|
322
312
|
return { lines, done: true, toolCalls: [] };
|
|
323
313
|
}
|
|
324
314
|
const done = job.status === "done" || job.status === "failed" || job.status === "cancelled";
|
|
325
|
-
if (this.
|
|
326
|
-
|
|
327
|
-
return { lines: readLogSync(id, offset), done, toolCalls: job.toolCalls };
|
|
315
|
+
if (this.restoredJobs.has(id)) {
|
|
316
|
+
return { lines: await jobStore.getOutput(id, offset), done, toolCalls: job.toolCalls };
|
|
328
317
|
}
|
|
329
318
|
return { lines: job.output.slice(offset), done, toolCalls: job.toolCalls };
|
|
330
319
|
}
|
|
@@ -386,7 +375,7 @@ export class JobManager {
|
|
|
386
375
|
job.finishedAt &&
|
|
387
376
|
now - job.finishedAt.getTime() > JOB_TTL_MS) {
|
|
388
377
|
this.jobs.delete(id);
|
|
389
|
-
this.
|
|
378
|
+
this.restoredJobs.delete(id);
|
|
390
379
|
}
|
|
391
380
|
}
|
|
392
381
|
}
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAkB,MAAM,YAAY,CAAC;AAEtD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,8CAA8C;AAEjF,gDAAgD;AAChD,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,SAAS,aAAa,CAAC,GAAQ;IAC7B,MAAM,IAAI,GACR,CAAC,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,WAAW;QACxC,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,YAAY;QAC3C,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,gBAAgB;QAClD,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC;QACvD,SAAS,CAAC;IACZ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAC,GAAQ;IACxB,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE;QACzC,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;QACxC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;QAC9C,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;QAChD,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,CAAY;IAC9B,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;QAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9C,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7D,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,oBAAoB,EAAE,CAAC,CAAC,oBAAoB;QAC5C,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;QAC9C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,UAAU;IACb,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IAC9B,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtC,YAAY,CAAU;IAC9B,qFAAqF;IAC7E,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,YAAY,KAAc;QACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,eAAe,EAAE,CAAC;QAClB,wCAAwC;QACxC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACzD,mEAAmE;QACnE,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAClE,iEAAiE;QACjE,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACtB,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,IAAI,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;YAE9B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjD,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/B,wCAAwC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,QAAQ,CAAC;oBAClB,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,iCAAiC,CAAC;oBACxE,UAAU,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACtD,CAAC;YACH,CAAC;YAED,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAE9B,IAAI,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACtB,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC5B,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,kCAAkC,CAAC;oBACrF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,GAAQ;QACzB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,SAAS,CAAC,GAAQ,EAAE,IAAY;QACtC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAkB;QAC5B,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,OAAO,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,MAAM,GAAG,GAAQ;YACf,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YACzC,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAErB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjE,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACtB,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,GAAQ,EAAE,KAAc;QACxC,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,WAAW;YACX,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3E,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,sBAAsB,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC;YAE5D,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,GAAG,CAAC,MAAM;gBAAE,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACvD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAErC,MAAM,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,wBAAwB,OAAO,EAAE,CAAC,CAAC;YAEvD,gCAAgC;YAChC,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,KAAK,MAAM,IAAI,GAAG,CAAC,YAAY,KAAK,OAAO;gBAChG,CAAC,CAAC,GAAG,CAAC,YAAY;gBAClB,CAAC,CAAC,IAAI,CAAC;YACT,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC7E,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,8BAA8B,UAAU,EAAE,CAAC,CAAC;YAClE,CAAC;iBAAM,IAAI,GAAG,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,8BAA8B,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,gBAAgB;YAChB,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAC;YAE/D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAQ,EAAE,KAAK,EAAE;oBAChD,eAAe,EAAE,GAAG,CAAC,eAAe;oBACpC,YAAY,EAAE,GAAG,CAAC,YAAY;oBAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC,CAAC;gBAEH,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;oBACrB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;oBACnB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1C,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;gBAErC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;wBACxB,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC;wBACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACrB,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;oBACnE,GAAG,CAAC,iBAAiB,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;oBACtE,GAAG,CAAC,oBAAoB,GAAG,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;oBACtF,GAAG,CAAC,qBAAqB,GAAG,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;oBACzF,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACjE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACvB,IAAI,IAAI,CAAC,IAAI,EAAE;wBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;oBAC/B,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACzB,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE;wBAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE5C,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACvB,GAAG,CAAC,QAAQ,GAAG,IAAI,IAAI,SAAS,CAAC;oBACjC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;oBACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC1B,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI;wBAAE,OAAO,EAAE,CAAC;;wBACtC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,+BAA+B,GAAG,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,sBAAsB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,OAAO,EAAE,CAAC;gBACZ,UAAU,CACR,GAAG,EAAE,CAAC,EAAE,CAAC,OAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EACpE,EAAE,GAAG,EAAE,GAAG,IAAI,CACf,CAAC,KAAK,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,IAAI;QACV,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;gBAAE,SAAS;YACvC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;YACxF,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBACvC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,WAAW,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACtB,GAAG,CAAC,KAAK,GAAG,mBAAmB,CAAC;gBAChC,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,GAAQ;QACtB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAChE,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU,EAAE,MAAM,GAAG,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACnD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC;QAC5F,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;QACzF,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChD,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;YACpC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE;YACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACpC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;YACtC,oBAAoB,EAAE,CAAC,CAAC,oBAAoB;YAC5C,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;SAC/C,CAAC,CAAC,CAAC;IACN,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,OAAe;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;QACvD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kEAAkE,EAAE,CAAC;QAClG,CAAC;QACD,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACtC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,EAAU;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAEnG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QAED,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;QACzB,GAAG,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,IACE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC;gBAChF,GAAG,CAAC,UAAU;gBACd,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,UAAU,EAC3C,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|