@extentos/mcp-server 0.0.6 → 0.0.8
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/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/localBridge.d.ts +4 -0
- package/dist/localBridge.d.ts.map +1 -0
- package/dist/localBridge.js +70 -0
- package/dist/localBridge.js.map +1 -0
- package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -1
- package/dist/tools/handlers/createSimulatorSession.js +33 -2
- package/dist/tools/handlers/createSimulatorSession.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -10,12 +10,18 @@ import { toolDefinitions } from "./tools/definitions.js";
|
|
|
10
10
|
import { handlers } from "./tools/registry.js";
|
|
11
11
|
import { mcpErrorResponse } from "./stub.js";
|
|
12
12
|
import { drainTelemetry, emitInstalledOnce, emitToolCalled, } from "./telemetry/index.js";
|
|
13
|
+
import { startLocalBridge, stopLocalBridge } from "./localBridge.js";
|
|
13
14
|
const SERVER_NAME = "@extentos/mcp-server";
|
|
14
|
-
const SERVER_VERSION = "0.0.
|
|
15
|
+
const SERVER_VERSION = "0.0.8";
|
|
15
16
|
async function main() {
|
|
16
17
|
const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {} } });
|
|
17
18
|
// First-run install event (no-op if already fired or consent declined).
|
|
18
19
|
emitInstalledOnce({ mcpVersion: SERVER_VERSION });
|
|
20
|
+
// Local /whoami listener — drives the zero-touch auto-bind path. The
|
|
21
|
+
// library on the dev's emulator/phone probes 127.0.0.1:31337 (via
|
|
22
|
+
// 10.0.2.2 from the emulator, or `adb reverse` from USB devices) to
|
|
23
|
+
// learn this MCP's installId. Failure is harmless: typed-code fallback.
|
|
24
|
+
startLocalBridge();
|
|
19
25
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
20
26
|
tools: toolDefinitions.map((def) => ({
|
|
21
27
|
name: def.name,
|
|
@@ -56,6 +62,7 @@ async function main() {
|
|
|
56
62
|
// as a belt-and-braces for direct-invocation scenarios.
|
|
57
63
|
const drain = () => {
|
|
58
64
|
void drainTelemetry();
|
|
65
|
+
stopLocalBridge();
|
|
59
66
|
};
|
|
60
67
|
transport.onclose = drain;
|
|
61
68
|
process.once("SIGINT", drain);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,2CAA2C;AAC3C,wEAAwE;AACxE,sEAAsE;AACtE,uDAAuD;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,cAAc,GAEf,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localBridge.d.ts","sourceRoot":"","sources":["../src/localBridge.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAIvC,wBAAgB,gBAAgB,IAAI,IAAI,CAsCvC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Local /whoami listener for the device-side library to discover its host
|
|
2
|
+
// MCP server's installId at runtime. Powers the zero-touch auto-bind path
|
|
3
|
+
// in PERSISTENT_DEV_SESSION.md.
|
|
4
|
+
//
|
|
5
|
+
// How it's reached:
|
|
6
|
+
// - Android emulator: http://10.0.2.2:31337/whoami → maps to host's
|
|
7
|
+
// 127.0.0.1 by emulator NAT. Each emulator only sees its own host, so
|
|
8
|
+
// two devs sharing a public IP do NOT cross — that was the whole point
|
|
9
|
+
// of using localhost IPC instead of IP correlation.
|
|
10
|
+
// - Physical Android phone (USB): `adb reverse tcp:31337 tcp:31337` makes
|
|
11
|
+
// `localhost:31337` on the device reach this listener. One-line setup.
|
|
12
|
+
// - Cellular phone / cloud-hosted agent: probe times out, library falls
|
|
13
|
+
// back to the typed-code path.
|
|
14
|
+
//
|
|
15
|
+
// Bound to 127.0.0.1 deliberately. Other apps on the same machine can read
|
|
16
|
+
// the installId, which is not a secret — it's the same value the MCP sends
|
|
17
|
+
// to api.extentos.com on every tool call. No auth needed at this layer.
|
|
18
|
+
//
|
|
19
|
+
// Lifetime: starts at MCP boot, stops on process exit. Best-effort — if the
|
|
20
|
+
// port is in use (rare; another MCP instance running), startup logs a
|
|
21
|
+
// warning and continues. Auto-bind silently degrades to typed-code; the
|
|
22
|
+
// agent still works.
|
|
23
|
+
import { createServer } from "node:http";
|
|
24
|
+
import { resolveInstallId } from "./telemetry/installRegistry.js";
|
|
25
|
+
export const LOCAL_BRIDGE_PORT = 31337;
|
|
26
|
+
let server = null;
|
|
27
|
+
export function startLocalBridge() {
|
|
28
|
+
if (server)
|
|
29
|
+
return;
|
|
30
|
+
const installId = resolveInstallId();
|
|
31
|
+
server = createServer((req, res) => {
|
|
32
|
+
if (req.method === "GET" && (req.url === "/whoami" || req.url?.startsWith("/whoami?"))) {
|
|
33
|
+
res.writeHead(200, {
|
|
34
|
+
"content-type": "application/json",
|
|
35
|
+
// Same-origin doesn't apply (this listener is reached over IP, not a
|
|
36
|
+
// browser fetch from another origin), but we set a permissive CORS
|
|
37
|
+
// header anyway in case a future browser-based dev tool wants to
|
|
38
|
+
// probe it from a localhost web app.
|
|
39
|
+
"access-control-allow-origin": "*",
|
|
40
|
+
});
|
|
41
|
+
res.end(JSON.stringify({
|
|
42
|
+
mcpInstallId: installId,
|
|
43
|
+
version: 1,
|
|
44
|
+
}));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
res.writeHead(404, { "content-type": "application/json" });
|
|
48
|
+
res.end(JSON.stringify({ error: "not_found" }));
|
|
49
|
+
});
|
|
50
|
+
server.on("error", (err) => {
|
|
51
|
+
if (err.code === "EADDRINUSE") {
|
|
52
|
+
console.error(`[extentos-mcp] localBridge: port ${LOCAL_BRIDGE_PORT} in use — another MCP instance? auto-bind degraded to typed-code.`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.error(`[extentos-mcp] localBridge error:`, err);
|
|
56
|
+
}
|
|
57
|
+
server = null;
|
|
58
|
+
});
|
|
59
|
+
// Bind to 127.0.0.1 only. The Android emulator's 10.0.2.2 alias maps to
|
|
60
|
+
// host loopback (127.0.0.1) — confirmed by Android docs and verified in
|
|
61
|
+
// dev. A real phone connected via USB needs `adb reverse` regardless.
|
|
62
|
+
server.listen(LOCAL_BRIDGE_PORT, "127.0.0.1");
|
|
63
|
+
}
|
|
64
|
+
export function stopLocalBridge() {
|
|
65
|
+
if (!server)
|
|
66
|
+
return;
|
|
67
|
+
server.close();
|
|
68
|
+
server = null;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=localBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localBridge.js","sourceRoot":"","sources":["../src/localBridge.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,gCAAgC;AAChC,EAAE;AACF,oBAAoB;AACpB,sEAAsE;AACtE,0EAA0E;AAC1E,2EAA2E;AAC3E,wDAAwD;AACxD,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,wEAAwE;AACxE,qBAAqB;AAErB,OAAO,EAAE,YAAY,EAAe,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,MAAM;QAAE,OAAO;IACnB,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,cAAc,EAAE,kBAAkB;gBAClC,qEAAqE;gBACrE,mEAAmE;gBACnE,iEAAiE;gBACjE,qCAAqC;gBACrC,6BAA6B,EAAE,GAAG;aACnC,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrB,YAAY,EAAE,SAAS;gBACvB,OAAO,EAAE,CAAC;aACX,CAAC,CAAC,CAAC;YACJ,OAAO;QACT,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;QAChD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CACX,oCAAoC,iBAAiB,mEAAmE,CACzH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSimulatorSession.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"createSimulatorSession.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA2C5E,wBAAsB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA8IpF"}
|
|
@@ -74,6 +74,14 @@ export async function handleCreateSimulatorSession(raw) {
|
|
|
74
74
|
tier: body.tier ?? null,
|
|
75
75
|
});
|
|
76
76
|
const autoOpen = attemptAutoOpen(body.sessionUrl, parsed.autoOpenBrowser);
|
|
77
|
+
// Auto-bind result drives whether we surface the legacy URL-bake
|
|
78
|
+
// instructions (Android: paste a buildConfigField; iOS: write a plist).
|
|
79
|
+
// When the device is already attached, none of that is needed — the
|
|
80
|
+
// dev's running app jumped straight to the new session via the
|
|
81
|
+
// persistent WS, and pasting a URL into Gradle would actually defeat
|
|
82
|
+
// the auto-bind path on the next rebuild.
|
|
83
|
+
const autoBind = body.autoBind ?? "no_device";
|
|
84
|
+
const attached = autoBind === "attached";
|
|
77
85
|
const baseResponse = {
|
|
78
86
|
status: "active",
|
|
79
87
|
sessionId: body.sessionId,
|
|
@@ -89,11 +97,20 @@ export async function handleCreateSimulatorSession(raw) {
|
|
|
89
97
|
autoOpenPlatform: autoOpen.platform,
|
|
90
98
|
capabilities: body.capabilities,
|
|
91
99
|
recording: body.recording ?? { enabled: true, recordBinary: parsed.recordBinary },
|
|
92
|
-
|
|
100
|
+
autoBind,
|
|
101
|
+
developerInstructions: attached
|
|
102
|
+
? attachedInstructions()
|
|
103
|
+
: instructionsFor(parsed.platform),
|
|
93
104
|
warnings,
|
|
94
|
-
summary:
|
|
105
|
+
summary: attached
|
|
106
|
+
? `Session ${body.sessionId} ready. Device auto-attached — no rebuild needed; the simulator URL has opened in your browser.`
|
|
107
|
+
: `Session ${body.sessionId} ready. Rebuild ${parsed.platform} project to bake URL into the binary.`,
|
|
95
108
|
};
|
|
96
109
|
if (parsed.platform === "ios") {
|
|
110
|
+
// iOS: still write the plist so the legacy fallback works on re-run
|
|
111
|
+
// without an MCP probe. But note attached=true means the running app
|
|
112
|
+
// already has this session — the plist only matters for the *next*
|
|
113
|
+
// build of the project.
|
|
97
114
|
const filePlan = writeSessionFile("ios", parsed.projectPath, sessionValues);
|
|
98
115
|
const gitignoreResult = ensureGitignore(parsed.projectPath, filePlan.relativePath);
|
|
99
116
|
return okResponse({
|
|
@@ -106,6 +123,12 @@ export async function handleCreateSimulatorSession(raw) {
|
|
|
106
123
|
gitignoreGuarantee: gitignoreResult.summary,
|
|
107
124
|
});
|
|
108
125
|
}
|
|
126
|
+
// Android: only emit the buildConfigField patch when auto-bind didn't
|
|
127
|
+
// attach. With attached=true the dev shouldn't paste anything; the
|
|
128
|
+
// running app is already on the new session.
|
|
129
|
+
if (attached) {
|
|
130
|
+
return okResponse(baseResponse);
|
|
131
|
+
}
|
|
109
132
|
return okResponse({
|
|
110
133
|
...baseResponse,
|
|
111
134
|
androidBuildConfigPatch: buildAndroidPatch(sessionValues.url),
|
|
@@ -222,6 +245,14 @@ function ensureGitignore(projectPath, relativePath) {
|
|
|
222
245
|
return { summary: `Could not update .gitignore. Manually add ${relativePath}.` };
|
|
223
246
|
}
|
|
224
247
|
}
|
|
248
|
+
function attachedInstructions() {
|
|
249
|
+
return ("Your running app has been auto-attached to this session via the " +
|
|
250
|
+
"Extentos MCP local bridge — no rebuild required, no code to type. " +
|
|
251
|
+
"The simulator URL has been opened in your default browser; if it didn't " +
|
|
252
|
+
"appear (sandboxed agent or remote shell), open sessionUrl manually. " +
|
|
253
|
+
"Re-running createSimulatorSession will hand the running app over to " +
|
|
254
|
+
"the next session the same way.");
|
|
255
|
+
}
|
|
225
256
|
function instructionsFor(platform) {
|
|
226
257
|
if (platform === "ios") {
|
|
227
258
|
return ("1. The session URL has been written to extentos.session.plist. " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSimulatorSession.js","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,uDAAuD;AACvD,2DAA2D;AAE3D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAmB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"createSimulatorSession.js","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,uDAAuD;AACvD,2DAA2D;AAE3D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAmB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAwClF,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,GAAY;IAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAE3C,MAAM,GAAG,GAAG,MAAM,YAAY,CAAwB,eAAe,EAAE;QACrE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,6EAA6E;IAC7E,wEAAwE;IACxE,4EAA4E;IAC5E,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1D,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/E,OAAO,aAAa,CAClB;YACE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,sBAAsB;YACrD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI;SACxC,EACD;YACE,MAAM,EAAE,eAAe;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,iBAAiB,EAAE,QAAQ,CAAC,SAAS;YACrC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;SACpC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,iCAAiC,GAAG,CAAC,SAAS,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG;YAClF,OAAO,EACL,yIAAyI;YAC3I,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAClE,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,6DAA6D;YACtE,OAAO,EAAE,sCAAsC;YAC/C,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG;QACpB,GAAG,EAAE,IAAI,CAAC,iBAAiB;QAC3B,EAAE,EAAE,IAAI,CAAC,SAAS;QAClB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,MAAM,QAAQ,GAAmC,EAAE,CAAC;IAEpD,kBAAkB,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,IAAI;QACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;KACxB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAE1E,iEAAiE;IACjE,wEAAwE;IACxE,oEAAoE;IACpE,+DAA+D;IAC/D,qEAAqE;IACrE,0CAA0C;IAC1C,MAAM,QAAQ,GAAuC,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;IAClF,MAAM,QAAQ,GAAG,QAAQ,KAAK,UAAU,CAAC;IAEzC,MAAM,YAAY,GAAG;QACnB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;QAC5C,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,CAAC;QAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW;QAC9B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC3C,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK;QACxC,iBAAiB,EAAE,QAAQ,CAAC,SAAS;QACrC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;QACnC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;QACjF,QAAQ;QACR,qBAAqB,EAAE,QAAQ;YAC7B,CAAC,CAAC,oBAAoB,EAAE;YACxB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;QACpC,QAAQ;QACR,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,iGAAiG;YAC5H,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,mBAAmB,MAAM,CAAC,QAAQ,uCAAuC;KACvG,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC9B,oEAAoE;QACpE,qEAAqE;QACrE,mEAAmE;QACnE,wBAAwB;QACxB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC5E,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;QACnF,OAAO,UAAU,CAAC;YAChB,GAAG,YAAY;YACf,qBAAqB,EAAE;gBACrB,IAAI,EAAE,QAAQ,CAAC,YAAY;gBAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B;YACD,kBAAkB,EAAE,eAAe,CAAC,OAAO;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,mEAAmE;IACnE,6CAA6C;IAC7C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,UAAU,CAAC;QAChB,GAAG,YAAY;QACf,uBAAuB,EAAE,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM,EAAE,sBAAsB;QAC9B,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,IAAI,UAAU,GAAG;YACxB,QAAQ,EAAE,uBAAuB;YACjC,OAAO,EAAE,0DAA0D,UAAU,OAAO;SACrF;QACD,YAAY,EAAE;YACZ,QAAQ,EAAE,uBAAuB;YACjC,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EACL,4GAA4G;SAC/G;QACD,OAAO,EACL,oMAAoM;KACvM,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,aAAa,CAAC;gBACnB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,oDAAoD;gBAC7D,OAAO,EAAE,+EAA+E;gBACxF,SAAS,EAAE,KAAK;aACjB,CAAC;SACH,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,aAAa,CAAC;gBACnB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,gCAAgC;gBACzC,OAAO,EAAE,yCAAyC;gBAClD,SAAS,EAAE,KAAK;aACjB,CAAC;SACH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO;YACL,KAAK,EAAE,aAAa,CAAC;gBACnB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,4BAA4B;gBACrC,OAAO,EAAE,kCAAkC;gBAC3C,SAAS,EAAE,KAAK;aACjB,CAAC;SACH,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACvG,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC;IAC7C,MAAM,eAAe,GAAG,CAAC,CAAC,eAAe,KAAK,KAAK,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,CAAC,CAAC,IAA+B;QACvC,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC;QACjC,YAAY;QACZ,eAAe;KAChB,CAAC;AACJ,CAAC;AAeD,SAAS,gBAAgB,CAAC,QAAe,EAAE,WAAmB,EAAE,MAAqB;IACnF,sEAAsE;IACtE,0EAA0E;IAC1E,sEAAsE;IACtE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,GAAG,GAAG,wBAAwB,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACnC,MAAM,OAAO,GACX,0CAA0C;QAC1C,0GAA0G;QAC1G,iCAAiC;QACjC,kDAAkD,MAAM,CAAC,GAAG,aAAa;QACzE,iDAAiD,MAAM,CAAC,EAAE,aAAa;QACvE,wDAAwD,MAAM,CAAC,SAAS,aAAa;QACrF,qBAAqB,CAAC;IACxB,IAAI,CAAC;QACH,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,YAAoB;IAChE,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,aAAa,CAAC,aAAa,EAAE,GAAG,YAAY,IAAI,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,qCAAqC,EAAE,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,4DAA4D,YAAY,GAAG,EAAE,CAAC;QAClG,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,iCAAiC,EAAE,CAAC;QACvE,CAAC;QACD,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC;QACrG,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,0BAA0B,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,6CAA6C,YAAY,GAAG,EAAE,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO,CACL,kEAAkE;QAClE,oEAAoE;QACpE,0EAA0E;QAC1E,sEAAsE;QACtE,sEAAsE;QACtE,gCAAgC,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,QAA2B;IAClD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,CACL,iEAAiE;YACjE,oGAAoG;YACpG,0HAA0H,CAC3H,CAAC;IACJ,CAAC;IACD,OAAO,CACL,wQAAwQ;QACxQ,wHAAwH;QACxH,2HAA2H;QAC3H,sHAAsH,CACvH,CAAC;AACJ,CAAC"}
|