@jmfederico/pi-web 1.202610.4 → 1.202610.5

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.
Files changed (106) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/client/assets/classic-CyM97Akm.css +54 -0
  3. package/dist/client/assets/graphite-DquaqFXU.css +54 -0
  4. package/dist/client/assets/index-DPS1kTH7.js +4389 -0
  5. package/dist/client/assets/paper-CB1oLuRr.css +54 -0
  6. package/dist/client/assets/pi-web-dark-D_KtbM95.css +54 -0
  7. package/dist/client/assets/pi-web-light-DSNLMIBI.css +54 -0
  8. package/dist/client/index.html +2 -2
  9. package/dist/config.js +56 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/pi-packages/captains-log/dist/browser/index.js +13 -17
  12. package/dist/pi-packages/captains-log/dist/browser/panel.js +7 -11
  13. package/dist/pi-packages/relays/pi-web-plugin.js +21 -1
  14. package/dist/pi-packages/relays/relaysPanelElement.js +36 -32
  15. package/dist/pi-packages/workflows/browser/pi-web-plugin.js +35 -27
  16. package/dist/pi-packages/workflows/browser/worktreeDialog.js +156 -0
  17. package/dist/pi-packages/workflows/package.json +1 -0
  18. package/dist/pi-packages/workflows/prompts/worktree.md +11 -2
  19. package/dist/pi-packages/workflows/server-plugin.js +579 -0
  20. package/dist/pi-packages/workflows/vite.config.mjs +17 -0
  21. package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +22 -0
  22. package/dist/pi-web-plugins/code-highlight/package.json +13 -0
  23. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +119 -162
  24. package/dist/pi-web-plugins/git/browser/git-panel.js +61 -46
  25. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +25 -3
  26. package/dist/pi-web-plugins/git/git-backend.js +13 -1
  27. package/dist/pi-web-plugins/git/server-plugin.js +8 -1
  28. package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +8 -3
  29. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +50 -29
  30. package/dist/pi-web-plugins/updates/pi-web-plugin.js +11 -11
  31. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +21 -1
  32. package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +35 -19
  33. package/dist/piWebUpdate.js +32 -9
  34. package/dist/piWebUpdate.js.map +1 -1
  35. package/dist/plugin-api.d.ts +174 -45
  36. package/dist/server/browserMessageProjection.js +1 -1
  37. package/dist/server/browserMessageProjection.js.map +1 -1
  38. package/dist/server/configRoutes.js +7 -1
  39. package/dist/server/configRoutes.js.map +1 -1
  40. package/dist/server/machines/machineProxyRoutes.js +3 -2
  41. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  42. package/dist/server/piWebPluginService.js +7 -1
  43. package/dist/server/piWebPluginService.js.map +1 -1
  44. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +1 -1
  45. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -1
  46. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +31 -38
  47. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -1
  48. package/dist/server/plugins/pluginBackendProxyRoutes.js +38 -45
  49. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
  50. package/dist/server/plugins/pluginBackendRegistry.js +58 -34
  51. package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
  52. package/dist/server/plugins/serverPluginCatalogCapability.js +106 -0
  53. package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -0
  54. package/dist/server/plugins/serverPluginRuntime.js +21 -8
  55. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  56. package/dist/server/sessiond/pluginBackendChannelRoutes.js +24 -14
  57. package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
  58. package/dist/server/sessiond/pluginBackendRoutes.js +51 -47
  59. package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
  60. package/dist/server/sessiond/pluginCatalogRoutes.js +37 -0
  61. package/dist/server/sessiond/pluginCatalogRoutes.js.map +1 -0
  62. package/dist/server/sessiond/sessionProxyRoutes.js +17 -0
  63. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  64. package/dist/server/sessiond/sessionServiceDependencies.js +1 -0
  65. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
  66. package/dist/server/sessiond.js +24 -4
  67. package/dist/server/sessiond.js.map +1 -1
  68. package/dist/server/sessions/authRoutes.js +1 -0
  69. package/dist/server/sessions/authRoutes.js.map +1 -1
  70. package/dist/server/sessions/authService.js +13 -0
  71. package/dist/server/sessions/authService.js.map +1 -1
  72. package/dist/server/sessions/builtinExtensionFactories.js +15 -1
  73. package/dist/server/sessions/builtinExtensionFactories.js.map +1 -1
  74. package/dist/server/sessions/companionBackend.js +286 -0
  75. package/dist/server/sessions/companionBackend.js.map +1 -0
  76. package/dist/server/sessions/mcpAuthFlowService.js +237 -0
  77. package/dist/server/sessions/mcpAuthFlowService.js.map +1 -0
  78. package/dist/server/sessions/mcpAuthRoutes.js +76 -0
  79. package/dist/server/sessions/mcpAuthRoutes.js.map +1 -0
  80. package/dist/server/sessions/messageHistoryTarget.js +18 -1
  81. package/dist/server/sessions/messageHistoryTarget.js.map +1 -1
  82. package/dist/server/sessions/piSessionEventConnections.js +5 -2
  83. package/dist/server/sessions/piSessionEventConnections.js.map +1 -1
  84. package/dist/server/sessions/piSessionService.js +279 -22
  85. package/dist/server/sessions/piSessionService.js.map +1 -1
  86. package/dist/server/sessions/sessionCommandService.js +3 -17
  87. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  88. package/dist/server/sessions/sessionNameGenerator.js +4 -4
  89. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  90. package/dist/server-plugin-api.d.ts +65 -15
  91. package/dist/server-plugin-api.js +25 -0
  92. package/dist/server-plugin-api.js.map +1 -1
  93. package/dist/shared/apiTypes.js.map +1 -1
  94. package/dist/shared/federatedRoutes.js +17 -5
  95. package/dist/shared/federatedRoutes.js.map +1 -1
  96. package/dist/shared/pluginApiTypes.d.ts +53 -0
  97. package/dist/shared/pluginBackendProtocol.js +56 -1
  98. package/dist/shared/pluginBackendProtocol.js.map +1 -1
  99. package/dist/shared/pluginCatalogTypes.d.ts +49 -0
  100. package/dist/shared/pluginCatalogTypes.js +156 -0
  101. package/dist/shared/pluginCatalogTypes.js.map +1 -0
  102. package/docs/config.md +68 -2
  103. package/docs/plugins.md +382 -20
  104. package/examples/session-bridge-plugin/src/browser/index.ts +1 -1
  105. package/package.json +7 -12
  106. package/dist/client/assets/index-BAl5IbYx.js +0 -4429
@@ -0,0 +1,76 @@
1
+ import { normalizeRequestCwd } from "../workingDirectory.js";
2
+ export function registerMcpAuthRoutes(app, sessions, prefix = "") {
3
+ app.get(`${prefix}/sessions/:sessionId/mcp/auth/servers`, async (request, reply) => {
4
+ try {
5
+ const query = record(request.query);
6
+ onlyKeys(query, ["cwd"]);
7
+ const cwd = string(query, "cwd");
8
+ if (!cwd)
9
+ throw new Error("cwd must not be empty");
10
+ return await sessions.mcpAuthServers({ id: request.params.sessionId, cwd: normalizeRequestCwd(cwd) });
11
+ }
12
+ catch (error) {
13
+ return reply.code(400).send({ error: message(error) });
14
+ }
15
+ });
16
+ app.post(`${prefix}/sessions/:sessionId/mcp/auth`, async (request, reply) => {
17
+ try {
18
+ const body = record(request.body);
19
+ onlyKeys(body, ["cwd", "mode", "serverName"]);
20
+ const cwd = string(body, "cwd");
21
+ if (!cwd)
22
+ throw new Error("cwd must not be empty");
23
+ const mode = body["mode"];
24
+ if (mode !== "login" && mode !== "logout")
25
+ throw new Error("mode must be login or logout");
26
+ const serverName = body["serverName"] === undefined ? undefined : string(body, "serverName");
27
+ return await sessions.startMcpAuth({ id: request.params.sessionId, cwd: normalizeRequestCwd(cwd) }, mode, serverName);
28
+ }
29
+ catch (error) {
30
+ return reply.code(400).send({ error: message(error) });
31
+ }
32
+ });
33
+ app.get(`${prefix}/auth/mcp/:flowId`, (request, reply) => {
34
+ try {
35
+ return sessions.mcpAuthFlows.get(request.params.flowId);
36
+ }
37
+ catch (error) {
38
+ return reply.code(404).send({ error: message(error) });
39
+ }
40
+ });
41
+ app.post(`${prefix}/auth/mcp/:flowId/respond`, (request, reply) => {
42
+ try {
43
+ const body = record(request.body);
44
+ onlyKeys(body, ["requestId", "value"]);
45
+ return sessions.mcpAuthFlows.respond(request.params.flowId, string(body, "requestId"), string(body, "value"));
46
+ }
47
+ catch (error) {
48
+ return reply.code(400).send({ error: message(error) });
49
+ }
50
+ });
51
+ app.post(`${prefix}/auth/mcp/:flowId/cancel`, (request, reply) => {
52
+ try {
53
+ return sessions.mcpAuthFlows.cancel(request.params.flowId);
54
+ }
55
+ catch (error) {
56
+ return reply.code(400).send({ error: message(error) });
57
+ }
58
+ });
59
+ }
60
+ function record(value) {
61
+ if (typeof value !== "object" || value === null || Array.isArray(value))
62
+ throw new Error("Expected a request object");
63
+ return Object.fromEntries(Object.entries(value));
64
+ }
65
+ function string(body, key) {
66
+ const value = body[key];
67
+ if (typeof value !== "string" || value.length > 32 * 1024)
68
+ throw new Error(`${key} must be a string of at most 32768 characters`);
69
+ return value;
70
+ }
71
+ function onlyKeys(body, keys) {
72
+ if (Object.keys(body).some((key) => !keys.includes(key)))
73
+ throw new Error("Unexpected MCP authentication field");
74
+ }
75
+ function message(error) { return error instanceof Error ? error.message : String(error); }
76
+ //# sourceMappingURL=mcpAuthRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpAuthRoutes.js","sourceRoot":"","sources":["../../../src/server/sessions/mcpAuthRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Resolve a message shortcut against the current root-to-leaf branch. Non-user
3
3
  * checkpoints retain the intervening history up to, but not including, the next
4
- * distinct user/assistant checkpoint. Pi still owns the actual tree mutation.
4
+ * distinct user/assistant checkpoint, or through a question but not its answer.
5
+ * Pi still owns the actual tree mutation.
5
6
  * Exact-entry tree operations do not use this resolver.
6
7
  */
7
8
  export function messageHistoryTargetId(branch, entryId) {
@@ -9,6 +10,10 @@ export function messageHistoryTargetId(branch, entryId) {
9
10
  if (index < 0)
10
11
  throw new Error("This message is no longer available on the active session branch.");
11
12
  const entry = branch[index];
13
+ // A question is answered from its durable tool result, without retaining any
14
+ // earlier answer (custom messages are otherwise part of a checkpoint's tail).
15
+ if (isQuestionResult(entry))
16
+ return entryId;
12
17
  // Pi restores a selected user message to the editor by positioning before it.
13
18
  if (isRecord(entry) && entry["type"] === "message" && isRecord(entry["message"])
14
19
  && entry["message"]["role"] === "user")
@@ -19,9 +24,21 @@ export function messageHistoryTargetId(branch, entryId) {
19
24
  if (!isRecord(next) || typeof next["id"] !== "string" || isConversationCheckpoint(next))
20
25
  break;
21
26
  targetId = next["id"];
27
+ // The agent message that produced a question retains the request, not any
28
+ // later answer, just like selecting the question itself.
29
+ if (isQuestionResult(next))
30
+ break;
22
31
  }
23
32
  return targetId;
24
33
  }
34
+ function isQuestionResult(entry) {
35
+ if (!isRecord(entry) || entry["type"] !== "message" || !isRecord(entry["message"]))
36
+ return false;
37
+ const message = entry["message"];
38
+ const details = message["details"];
39
+ return message["role"] === "toolResult" && message["toolName"] === "ask_user" && message["isError"] === false
40
+ && isRecord(details) && isRecord(details["ask"]);
41
+ }
25
42
  /**
26
43
  * Boundaries are intrinsic conversation checkpoints, not transient plugin
27
44
  * availability (busy/archived/disabled buttons must not change the cutoff).
@@ -1 +1 @@
1
- {"version":3,"file":"messageHistoryTarget.js","sourceRoot":"","sources":["../../../src/server/sessions/messageHistoryTarget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA0B,EAAE,OAAe;IAChF,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;IACtF,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IAEpG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,8EAA8E;IAC9E,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;WAC3E,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC;IAEzD,IAAI,QAAQ,GAAG,OAAO,CAAC;IACvB,KAAK,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC;YAAE,MAAM;QAC/F,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAA8B;IAC9D,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,KAAK,EAAE,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,IAAI,IAAI,CAAC;IACpD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,MAAM;YAAE,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5F,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"messageHistoryTarget.js","sourceRoot":"","sources":["../../../src/server/sessions/messageHistoryTarget.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  /** Buses belong to concrete native sessions, never to a cwd or a reusable id. */
2
2
  export class PiSessionEventConnections {
3
- constructor() {
3
+ constructor(bindBackend) {
4
+ this.bindBackend = bindBackend;
4
5
  this.sessions = new WeakMap();
5
6
  }
6
7
  register(session, bus) {
7
8
  this.close(session);
8
- this.sessions.set(session, { bus, connections: new Set() });
9
+ const detachBackend = this.bindBackend?.(bus);
10
+ this.sessions.set(session, { bus, connections: new Set(), ...(detachBackend === undefined ? {} : { detachBackend }) });
9
11
  }
10
12
  connect(session, lifetime) {
11
13
  lifetime.throwIfAborted();
@@ -57,6 +59,7 @@ export class PiSessionEventConnections {
57
59
  const hosted = this.sessions.get(session);
58
60
  if (hosted === undefined)
59
61
  return;
62
+ hosted.detachBackend?.();
60
63
  for (const connection of hosted.connections)
61
64
  connection.close();
62
65
  this.sessions.delete(session);
@@ -1 +1 @@
1
- {"version":3,"file":"piSessionEventConnections.js","sourceRoot":"","sources":["../../../src/server/sessions/piSessionEventConnections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"piSessionEventConnections.js","sourceRoot":"","sources":["../../../src/server/sessions/piSessionEventConnections.ts"],"names":[],"mappings":"AAKA,iFAAiF;AACjF,MAAM,OAAO,yBAAyB;IAGpC,YAA6B,WAA2C;QAA3C,gBAAW,GAAX,WAAW,CAAgC;QAFvD,aAAQ,GAAG,IAAI,OAAO,EAAyG,CAAC;IAEtE,CAAC;IAE5E,QAAQ,CAAC,OAAe,EAAE,GAAa;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IACzH,CAAC;IAED,OAAO,CAAC,OAAe,EAAE,QAAqB;QAC5C,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAc,CAAC;QAC5C,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACtC,KAAK,MAAM,WAAW,IAAI,aAAa;gBAAE,WAAW,EAAE,CAAC;YACvD,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACtC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC7C,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC;QACF,MAAM,aAAa,GAAG,CAAC,OAAe,EAAQ,EAAE;YAC9C,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAClH,CAAC,CAAC;QACF,MAAM,UAAU,GAAiC,MAAM,CAAC,MAAM,CAAC;YAC7D,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,EAAE,EAAE,CAAC,OAAe,EAAE,OAAgD,EAAgB,EAAE;gBACtF,aAAa,CAAC,OAAO,CAAC,CAAC;gBACvB,IAAI,OAAO,OAAO,KAAK,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBAC1F,2EAA2E;gBAC3E,2EAA2E;gBAC3E,kEAAkE;gBAClE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;wBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;gBACH,MAAM,WAAW,GAAG,GAAS,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjF,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC/B,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,IAAI,EAAE,CAAC,OAAe,EAAE,IAAa,EAAQ,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3G,KAAK;SACN,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;QACzB,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW;YAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACF"}