@plurnk/plurnk-agui 3.1.0 → 4.0.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.
Files changed (74) hide show
  1. package/.env.defaults +17 -8
  2. package/README.md +33 -13
  3. package/SPEC.md +589 -268
  4. package/dist/AguiPlus.d.ts +24 -29
  5. package/dist/AguiPlus.d.ts.map +1 -1
  6. package/dist/AguiPlus.js +25 -36
  7. package/dist/AguiPlus.js.map +1 -1
  8. package/dist/AguiSurface.d.ts +1 -2
  9. package/dist/AguiSurface.d.ts.map +1 -1
  10. package/dist/AguiSurface.js +23 -16
  11. package/dist/AguiSurface.js.map +1 -1
  12. package/dist/AuthorizationDocuments.d.ts +33 -0
  13. package/dist/AuthorizationDocuments.d.ts.map +1 -0
  14. package/dist/AuthorizationDocuments.js +84 -0
  15. package/dist/AuthorizationDocuments.js.map +1 -0
  16. package/dist/BuiltinActions.d.ts +11 -5
  17. package/dist/BuiltinActions.d.ts.map +1 -1
  18. package/dist/BuiltinActions.js +73 -125
  19. package/dist/BuiltinActions.js.map +1 -1
  20. package/dist/EventRouter.d.ts +11 -3
  21. package/dist/EventRouter.d.ts.map +1 -1
  22. package/dist/EventRouter.js +17 -32
  23. package/dist/EventRouter.js.map +1 -1
  24. package/dist/MessageAddress.d.ts +7 -5
  25. package/dist/MessageAddress.d.ts.map +1 -1
  26. package/dist/MessageAddress.js +14 -12
  27. package/dist/MessageAddress.js.map +1 -1
  28. package/dist/Module.d.ts +5 -4
  29. package/dist/Module.d.ts.map +1 -1
  30. package/dist/Module.js +221 -82
  31. package/dist/Module.js.map +1 -1
  32. package/dist/OAuthServer.d.ts +30 -0
  33. package/dist/OAuthServer.d.ts.map +1 -0
  34. package/dist/OAuthServer.js +607 -0
  35. package/dist/OAuthServer.js.map +1 -0
  36. package/dist/Portal.d.ts +39 -9
  37. package/dist/Portal.d.ts.map +1 -1
  38. package/dist/Portal.js +414 -141
  39. package/dist/Portal.js.map +1 -1
  40. package/dist/ProposalHitl.d.ts +17 -4
  41. package/dist/ProposalHitl.d.ts.map +1 -1
  42. package/dist/ProposalHitl.js +30 -43
  43. package/dist/ProposalHitl.js.map +1 -1
  44. package/dist/RunHandler.d.ts +18 -8
  45. package/dist/RunHandler.d.ts.map +1 -1
  46. package/dist/RunHandler.js +214 -96
  47. package/dist/RunHandler.js.map +1 -1
  48. package/dist/ThreadAddress.d.ts +8 -0
  49. package/dist/ThreadAddress.d.ts.map +1 -0
  50. package/dist/ThreadAddress.js +18 -0
  51. package/dist/ThreadAddress.js.map +1 -0
  52. package/dist/Translator.d.ts +52 -2
  53. package/dist/Translator.d.ts.map +1 -1
  54. package/dist/Translator.js +390 -117
  55. package/dist/Translator.js.map +1 -1
  56. package/dist/client.d.ts +2 -0
  57. package/dist/client.d.ts.map +1 -0
  58. package/dist/client.js +2 -0
  59. package/dist/client.js.map +1 -0
  60. package/dist/config.d.ts +22 -2
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +65 -13
  63. package/dist/config.js.map +1 -1
  64. package/dist/index.d.ts +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +2 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/run-events.d.ts +1 -0
  69. package/dist/run-events.d.ts.map +1 -1
  70. package/dist/run-events.js +4 -2
  71. package/dist/run-events.js.map +1 -1
  72. package/dist/types.d.ts +4 -22
  73. package/dist/types.d.ts.map +1 -1
  74. package/package.json +13 -9
package/dist/Module.js CHANGED
@@ -4,107 +4,135 @@
4
4
  //
5
5
  // This is the single external client interface:
6
6
  // POST /agui — a Run; POST /agui/connect — an observer that also waits while idle.
7
- // A worker streams SSE. HITL is terminate-resume: a
8
- // stopped-world emits a request_approval/request_user_input TOOL_CALL and finishes
9
- // with an AG-UI interrupt outcome (the loop stays paused in-engine); the next AG-UI Run's
10
- // standard resume entries resolve the durable proposal and continue the exact loop.
7
+ // A worker streams SSE. HITL is terminate-resume: a stopped-world presents the call it
8
+ // gates (the operation's own, or a client interaction's) and finishes with an AG-UI
9
+ // interrupt outcome (the loop stays paused in-engine); the next AG-UI Run's standard
10
+ // resume entries resolve the durable gate and continue the exact loop.
11
11
  // Reads ride STATE_SNAPSHOT on RUN_STARTED; there are no side-channel action
12
12
  // or proposal-resolution endpoints.
13
- // An AG-UI threadId names one conversation worker inside the explicitly forwarded
14
- // workspace ({§agui-thread-binding}); no prefix or inferred workspace is minted.
15
- var _a;
13
+ // A thread resolves to a model worker through {§agui-thread-binding}; core retains
14
+ // opaque external references, while this adapter interprets qualified addresses.
16
15
  import Portal, {} from "./Portal.js";
17
- import { aliveChildren, derivationActivity, descendantsState, statusState, actionResult } from "./AguiPlus.js";
16
+ import { aliveChildren, spendState, statusState, actionRunResult } from "./AguiPlus.js";
18
17
  import { EventType } from "./types.js";
19
18
  import { aguiRouteTemplate, observed } from "./observe.js";
20
- import { Problems, Validator, selectWorkerLoop } from "@plurnk/plurnk-contracts";
19
+ import { Problems, Validator, requestOrigin, selectWorkerLoop } from "@plurnk/plurnk-contracts";
21
20
  import { AGUI_BUILTIN_ACTIONS, AGUI_NOTIFICATIONS } from "./AguiSurface.js";
22
21
  import { resolveModuleOptions } from "./config.js";
23
22
  import { HttpProblemError, actionFailure } from "./action-results.js";
24
23
  import BuiltinActions, {} from "./BuiltinActions.js";
25
- import { httpProblem, runErrorEvents, serviceStoppingProblem } from "./run-events.js";
24
+ import { credentialRevokedProblem, httpProblem, runErrorEvents, serviceStoppingProblem } from "./run-events.js";
25
+ import OAuthServer from "./OAuthServer.js";
26
26
  import RunHandler, {} from "./RunHandler.js";
27
+ import ThreadAddress from "./ThreadAddress.js";
27
28
  import { MessageScheme } from "@plurnk/plurnk-schemes";
28
29
  const writeHttpProblem = (res, problem) => {
29
30
  res.writeHead(problem.status, { "content-type": "application/problem+json" });
30
31
  res.end(JSON.stringify(problem));
31
32
  };
32
- class Module {
33
- // {§module-http-mounts} — the client protocol owns only its own prefix.
34
- mounts = Object.freeze(["/agui"]);
33
+ // {§agui-action-binding} The builtin actions addressed to the thread's worker: those that set its durable
34
+ // policy create it, the rest require it, and the readers that take an explicit `workerId` require it only
35
+ // without one.
36
+ const WORKER_CREATING_ACTIONS = new Set(["worker.model.set", "worker.child.set", "worker.effort.set"]);
37
+ const WORKER_ACTIONS = new Set(["loop.inject", "loop.cancel", "run.fork", "worker.model.get", "worker.effort.get"]);
38
+ const WORKER_READING_ACTIONS = new Set(["log.read", "entry.read", "workspace.prompts", "workspace.rollback"]);
39
+ export default class Module {
40
+ // {§module-http-mounts} — the client protocol owns its own prefix and, when it authenticates, the
41
+ // authorization server's ({§agui-oauth-endpoints}).
42
+ mounts;
35
43
  #seam;
44
+ #listener;
36
45
  #opts;
37
46
  #portal;
38
- #threadEnvelopes = new Map();
47
+ #oauth = null;
48
+ #offRevoked = null;
49
+ #workspaceEnvelopes = new Map();
39
50
  #threadWorkers = new Map();
40
51
  #workspaceAcquisitions = new Map();
41
52
  #actions = new Map();
42
53
  #activated = false;
43
54
  #stopped = false;
44
- #builtins = new BuiltinActions({ seam: () => this.#seam, capabilities: this.#capabilities.bind(this), envelope: this.#envelope.bind(this), requireWorkspace: _a.#requireWorkspace });
45
- #runs = new RunHandler({ seam: () => this.#seam, opts: () => this.#opts, portal: () => this.#portal, requiresWorkspace: this.#requiresWorkspace.bind(this), controlRun: this.#controlRun.bind(this), envelope: this.#envelope.bind(this), conversationWorker: this.#conversationWorker.bind(this), workerStatus: this.#workerStatus.bind(this), action: this.#action.bind(this) });
55
+ #builtins = new BuiltinActions({ seam: () => this.#seam, capabilities: this.#capabilities.bind(this), namedWorkspace: this.#namedWorkspace.bind(this), threadWorker: this.#threadWorker.bind(this), requireWorkspace: Module.#requireWorkspace });
56
+ #runs = new RunHandler({ seam: () => this.#seam, opts: () => this.#opts, portal: () => this.#portal, stopping: () => this.#stopped, requiresWorkspace: this.#requiresWorkspace.bind(this), controlRun: this.#controlRun.bind(this), envelope: this.#envelope.bind(this), conversation: this.#conversation.bind(this), boundWorker: this.#boundWorker.bind(this), actionBinding: this.#actionBinding.bind(this), workerStatus: this.#workerStatus.bind(this), action: this.#action.bind(this) });
46
57
  constructor(opts) {
47
58
  this.#opts = resolveModuleOptions(opts);
59
+ this.mounts = Object.freeze(this.#opts.authenticates
60
+ ? ["/agui", "/oauth", "/.well-known/oauth-authorization-server", "/.well-known/oauth-protected-resource"]
61
+ : ["/agui"]);
62
+ }
63
+ // {§agui-oauth-endpoints} — the issuer: the configured public origin, else the origin the request
64
+ // reached this daemon at, else, with no request in hand, the listener's own ({§http-request-origin}).
65
+ // The host binds its listener before any module sets up ({§http-host}), so the face published at
66
+ // setup answers from publication.
67
+ #issuer(req = { headers: {} }) {
68
+ return this.#opts.issuer.length > 0 ? this.#opts.issuer : requestOrigin(req, this.#listener());
48
69
  }
49
70
  // {§agui-configuration} — the module reads its settings from the assembled environment;
50
71
  // explicit options override them.
51
72
  static create(opts = {}) {
52
- return new _a(opts);
73
+ return new Module(opts);
53
74
  }
54
75
  #registerActions() {
55
76
  for (const [name, contract] of Object.entries(AGUI_BUILTIN_ACTIONS)) {
56
77
  this.#actions.set(name, {
57
78
  ...contract,
58
- execute: (params, input, env, conversationWorkerId) => this.#builtins.executeBuiltin(name, params, input, env, conversationWorkerId),
79
+ execute: (params, input, env, boundWorkerId, principal, onLoop) => this.#builtins.executeBuiltin(name, params, input, env, boundWorkerId, principal, onLoop),
59
80
  });
60
81
  }
61
82
  for (const descriptor of this.#seam.listModuleActions()) {
62
83
  const { name, scope, inputSchema, outputSchema } = descriptor;
63
84
  if (this.#actions.has(name))
64
85
  throw new Error(`AG-UI action '${name}' is registered more than once`);
65
- if (scope !== "worldless" && scope !== "workspace" && scope !== "worker") {
86
+ if (scope !== "daemon" && scope !== "workspace" && scope !== "worker") {
66
87
  throw new Error(`module action '${name}' has invalid scope '${String(scope)}'`);
67
88
  }
68
89
  this.#actions.set(name, {
69
90
  scope,
70
91
  inputSchema,
71
92
  outputSchema,
72
- execute: async (params, _input, env, conversationWorkerId) => {
73
- if (scope === "worldless") {
93
+ execute: async (params, _input, env, boundWorkerId) => {
94
+ if (scope === "daemon") {
74
95
  return {
75
96
  ok: true,
76
97
  result: await this.#seam.invokeModuleAction(name, params, { scope }),
77
98
  };
78
99
  }
79
- const { workspaceId } = _a.#requireWorkspace(name, env);
100
+ const { workspaceId } = Module.#requireWorkspace(name, env);
80
101
  if (scope === "workspace") {
81
102
  return {
82
103
  ok: true,
83
104
  result: await this.#seam.invokeModuleAction(name, params, { scope, workspaceId }),
84
105
  };
85
106
  }
86
- const workerId = conversationWorkerId ?? await this.#seam.ensureModelWorker(workspaceId);
107
+ if (boundWorkerId === undefined)
108
+ throw new Error(`worker action '${name}' reached execution without its worker`);
87
109
  return {
88
110
  ok: true,
89
- result: await this.#seam.invokeModuleAction(name, params, { scope, workspaceId, workerId }),
111
+ result: await this.#seam.invokeModuleAction(name, params, { scope, workspaceId, workerId: boundWorkerId }),
90
112
  };
91
113
  },
92
114
  });
93
115
  }
94
116
  }
95
- #requiresWorkspace(kind) {
96
- return this.#actions.get(kind)?.scope !== "worldless";
117
+ // {§agui-action-binding} An action the module does not register, or whose input its schema refuses, binds
118
+ // nothing and creates nothing: like a daemon one, it is answered on the control path.
119
+ #requiresWorkspace({ kind, params }) {
120
+ const action = this.#actions.get(kind);
121
+ return action !== undefined && action.scope !== "daemon"
122
+ && Validator.validateJsonSchemaInstance(action.inputSchema, params).valid;
97
123
  }
98
124
  static #requireWorkspace(kind, env) {
99
125
  if (env === null)
100
126
  throw new Error(`action '${kind}' operates within a workspace, but none is bound`);
101
127
  return env;
102
128
  }
103
- static #threadKey(workspace, threadId) {
104
- return JSON.stringify([workspace, threadId]);
105
- }
106
129
  async setup(seam) {
107
130
  await seam.registerScheme("agui", new MessageScheme("agui"));
131
+ this.#listener = () => seam.httpAddress();
132
+ // {§agui-oauth} — under PLURNK_AUTH=1 the face says so to every mounted resource before any
133
+ // module starts ({§module-phases}); the daemon refuses to run authenticating without one.
134
+ if (this.#opts.authenticates)
135
+ seam.credentials.publish({ issuer: (req) => this.#issuer(req) });
108
136
  }
109
137
  // {§agui-listener-admission} — the host admits traffic after every module has started.
110
138
  async start(seam) {
@@ -114,9 +142,20 @@ class Module {
114
142
  throw new Error("plurnk-agui: module already activated");
115
143
  seam.registerHttpRoute("/agui", (req, res) => this.#route(req, res));
116
144
  this.#seam = seam;
145
+ this.#listener = () => seam.httpAddress();
117
146
  this.#registerActions();
118
147
  this.#portal = new Portal(seam);
119
148
  this.#portal.start();
149
+ if (this.#opts.authenticates) {
150
+ // {§agui-oauth} — the authority's issuing face mounts beside the resource it protects.
151
+ this.#oauth = new OAuthServer({ credentials: seam.credentials, opts: this.#opts, issuer: (req) => this.#issuer(req) });
152
+ for (const prefix of this.mounts) {
153
+ if (prefix !== "/agui")
154
+ seam.registerHttpRoute(prefix, (req, res) => this.#oauthRoute(req, res));
155
+ }
156
+ // {§agui-oauth-revocation} — a revoked family's open Runs end; their loops continue.
157
+ this.#offRevoked = seam.credentials.onRevoked((family) => this.#portal.failFamily(family, runErrorEvents(credentialRevokedProblem())));
158
+ }
120
159
  this.#activated = true;
121
160
  }
122
161
  stop() {
@@ -127,8 +166,28 @@ class Module {
127
166
  if (!this.#activated)
128
167
  return;
129
168
  this.#activated = false;
169
+ this.#offRevoked?.();
130
170
  this.#portal.stop();
131
171
  }
172
+ async #oauthRoute(req, res) {
173
+ if (this.#stopped) {
174
+ writeHttpProblem(res, serviceStoppingProblem());
175
+ return;
176
+ }
177
+ if (this.#opts.allowOrigin.length > 0) {
178
+ res.setHeader("access-control-allow-origin", this.#opts.allowOrigin);
179
+ res.setHeader("access-control-allow-headers", "content-type, authorization");
180
+ }
181
+ if (req.method === "OPTIONS") {
182
+ res.writeHead(204).end();
183
+ return;
184
+ }
185
+ if (this.#oauth === null || !(await this.#oauth.handle(req, res))) {
186
+ writeHttpProblem(res, httpProblem("route-not-found", 404, "The requested HTTP route does not exist.", {
187
+ method: req.method ?? null, path: req.url ?? null, stage: "routing", retryable: false,
188
+ }));
189
+ }
190
+ }
132
191
  async #route(req, res) {
133
192
  if (this.#stopped) {
134
193
  writeHttpProblem(res, serviceStoppingProblem());
@@ -148,20 +207,22 @@ class Module {
148
207
  res.writeHead(204).end();
149
208
  return;
150
209
  }
151
- // The perimeter ({§agui-http-authorization}): bearer check before any body read.
152
- const token = this.#opts.token ?? "";
153
- if (token.length > 0 && req.headers.authorization !== `Bearer ${token}`) {
154
- writeHttpProblem(res, httpProblem("bearer-token-required", 401, "The request did not provide the required bearer token.", {
155
- stage: "authorization",
156
- recovery: "Provide the configured bearer token.",
157
- retryable: false,
158
- }));
159
- return;
210
+ // The perimeter ({§agui-http-authorization}): bearer admission before any body read.
211
+ let principal = "anonymous";
212
+ let family = null;
213
+ if (this.#oauth !== null) {
214
+ const admission = this.#oauth.admit(req, "agui");
215
+ if (!admission.ok) {
216
+ res.setHeader("www-authenticate", admission.challenge);
217
+ writeHttpProblem(res, admission.problem);
218
+ return;
219
+ }
220
+ ({ principal, family } = admission);
160
221
  }
161
222
  if (req.method === "POST" && req.url === "/agui")
162
- return await this.#runs.run(req, res);
223
+ return await this.#runs.run(req, res, false, principal, family);
163
224
  if (req.method === "POST" && req.url === "/agui/connect")
164
- return await this.#runs.run(req, res, true);
225
+ return await this.#runs.run(req, res, true, principal, family);
165
226
  writeHttpProblem(res, httpProblem("route-not-found", 404, "The requested HTTP route does not exist.", {
166
227
  method: req.method ?? null,
167
228
  path: req.url ?? null,
@@ -191,18 +252,21 @@ class Module {
191
252
  res.end();
192
253
  }
193
254
  }
194
- // The name is the identity, verbatim. The workspace is the world
195
- // ({§agui-thread-binding}) — selected by name via
196
- // `forwardedProps.plurnk.workspace`; attach it if it exists, create it with EXACTLY that
197
- // name if it doesn't. No prefixes, no forged names, no dual lookup. The workspace is
198
- // REQUIRED: a worker has no existence without a world, so its absence is a contract
199
- // violation the client must fix — never a workspace forged from the threadId.
200
- // The threadId is the CONVERSATION over that world — resolved to a worker by
201
- // #conversationWorker ({§agui-thread-binding}: the three doors are ensureModelWorker, forkWorker,
202
- // createConversationWorker; a name resolves among model-origin workers only, so a client
203
- // connection's worker or the runtime actor is never a conversation).
255
+ // {§agui-thread-binding} Opaque references, qualified IDs, and explicit workspace selection.
204
256
  async #envelope(threadId, forwarded, options = {}) {
257
+ const qualified = ThreadAddress.parse(threadId);
258
+ if (qualified !== null)
259
+ return { env: await this.#seam.attachWorkspace(qualified), reattached: true };
205
260
  const workspace = forwarded?.workspace;
261
+ if (workspace === undefined) {
262
+ const reference = { namespace: "agui", reference: threadId };
263
+ const binding = options.worker === true
264
+ ? await this.#seam.ensureWorkerReference(reference)
265
+ : await this.#seam.readWorkerReference(reference);
266
+ if (binding === null)
267
+ throw new HttpProblemError(httpProblem("thread-not-found", 404, "The thread has no conversation.", { threadId, stage: "request-validation", retryable: false }));
268
+ return { env: await this.#seam.attachWorkspace(binding), reattached: true };
269
+ }
206
270
  if (typeof workspace !== "string" || workspace.length === 0) {
207
271
  throw new HttpProblemError(httpProblem("workspace-required", 400, "forwardedProps.plurnk.workspace must name a workspace.", {
208
272
  stage: "request-validation",
@@ -210,8 +274,11 @@ class Module {
210
274
  retryable: false,
211
275
  }));
212
276
  }
213
- const key = _a.#threadKey(workspace, threadId);
214
- const cached = this.#threadEnvelopes.get(key);
277
+ return await this.#namedWorkspace(workspace, forwarded, options);
278
+ }
279
+ // {§agui-thread-binding} Workspace labels are selected literally, never parsed as thread addresses.
280
+ async #namedWorkspace(workspace, forwarded, options = {}) {
281
+ const cached = await this.#currentEnvelope(workspace);
215
282
  if (cached !== undefined)
216
283
  return { env: cached, reattached: true };
217
284
  const previous = this.#workspaceAcquisitions.get(workspace);
@@ -219,11 +286,11 @@ class Module {
219
286
  this.#workspaceAcquisitions.set(workspace, acquisition.promise);
220
287
  try {
221
288
  await previous;
222
- const acquired = this.#threadEnvelopes.get(key);
289
+ const acquired = await this.#currentEnvelope(workspace);
223
290
  if (acquired !== undefined)
224
291
  return { env: acquired, reattached: true };
225
292
  const result = await this.#openWorkspace(workspace, forwarded, options);
226
- this.#threadEnvelopes.set(key, result.env);
293
+ this.#workspaceEnvelopes.set(workspace, result.env);
227
294
  return result;
228
295
  }
229
296
  finally {
@@ -232,6 +299,17 @@ class Module {
232
299
  this.#workspaceAcquisitions.delete(workspace);
233
300
  }
234
301
  }
302
+ // {§agui-thread-binding} A rename retires name selection; stable thread addresses do not use this cache.
303
+ async #currentEnvelope(workspace) {
304
+ const cached = this.#workspaceEnvelopes.get(workspace);
305
+ if (cached === undefined)
306
+ return undefined;
307
+ const current = (await this.#seam.listWorkspaces()).find(({ id }) => id === cached.workspaceId);
308
+ if (current?.name === workspace)
309
+ return cached;
310
+ this.#workspaceEnvelopes.delete(workspace);
311
+ return undefined;
312
+ }
235
313
  async #openWorkspace(workspace, forwarded, options) {
236
314
  const known = (await this.#seam.listWorkspaces()).find((s) => s.name === workspace);
237
315
  let env;
@@ -241,13 +319,12 @@ class Module {
241
319
  reattached = true;
242
320
  }
243
321
  else if (options.create === false) {
244
- // {§agui-thread-binding} — only a conversation Run may bring a world into being. An
245
- // action addresses a world that exists; a name that does not is the client's error,
246
- // never a workspace minted on its behalf.
247
- throw new HttpProblemError(httpProblem("workspace-not-found", 404, `No workspace named ${JSON.stringify(workspace)} exists; an action never creates one.`, {
322
+ // {§agui-action-binding} — a Run that attaches only addresses a workspace that exists; a name that
323
+ // does not is the client's error, never a workspace minted on its behalf.
324
+ throw new HttpProblemError(httpProblem("workspace-not-found", 404, `No workspace named ${JSON.stringify(workspace)} exists.`, {
248
325
  stage: "request-validation",
249
326
  workspace,
250
- recovery: "Name the existing workspace in forwardedProps.plurnk.workspace, or create it with workspace.create or a conversation Run.",
327
+ recovery: "Name the existing workspace in forwardedProps.plurnk.workspace, or create it with workspace.create or a message Run.",
251
328
  retryable: false,
252
329
  }));
253
330
  }
@@ -268,18 +345,37 @@ class Module {
268
345
  }
269
346
  return { env, reattached };
270
347
  }
271
- // Resolve the thread's conversation worker within its world. Cached per
272
- // workspace + threadId; worker names are immutable so the binding cannot rot. Durable
273
- // capability changes use workspace.capabilities.set; approval ownership is durable in Core.
274
- async #conversationWorker(threadId, env) {
275
- const key = _a.#threadKey(env.workspaceName, threadId);
348
+ // {§agui-thread-binding} {§agui-action-binding} — the threadId names its worker by its immutable name,
349
+ // never compared with the workspace's; only an act addressed to the worker creates it, and every other
350
+ // binding requires it. Cached per workspace identity and threadId: worker names are immutable, so a
351
+ // binding never rots. Durable capability changes use workspace.capabilities.set; approval ownership is
352
+ // durable in Core.
353
+ async #boundWorker(threadId, env, binding, forwarded) {
354
+ const qualified = ThreadAddress.parse(threadId);
355
+ if (qualified === null && forwarded?.workspace === undefined) {
356
+ const reference = await this.#seam.readWorkerReference({ namespace: "agui", reference: threadId });
357
+ if (reference === null || reference.workspaceId !== env.workspaceId)
358
+ throw new Error("Thread reference is absent from its resolved workspace.");
359
+ return reference.workerId;
360
+ }
361
+ const workerName = qualified?.workerName ?? threadId;
362
+ const key = JSON.stringify([env.workspaceId, workerName]);
276
363
  const cached = this.#threadWorkers.get(key);
277
364
  if (cached !== undefined)
278
- return cached;
279
- const pending = (async () => threadId === env.workspaceName
280
- ? await this.#seam.ensureModelWorker(env.workspaceId)
281
- : (await this.#seam.listWorkers(env.workspaceId)).find((r) => r.name === threadId && r.origin === "model")?.id
282
- ?? (await this.#seam.createConversationWorker({ workspaceId: env.workspaceId, name: threadId })).workerId)();
365
+ return await cached;
366
+ if (binding === "required") {
367
+ const id = await this.#modelWorker(workerName, env.workspaceId);
368
+ if (id === undefined) {
369
+ throw new HttpProblemError(httpProblem("worker-not-found", 404, `No model worker named ${JSON.stringify(workerName)} exists in workspace ${JSON.stringify(env.workspaceName)}.`, {
370
+ stage: "request-validation", workspace: env.workspaceName, worker: threadId,
371
+ recovery: "Name an existing model worker, or create one by sending it a message.", retryable: false,
372
+ }));
373
+ }
374
+ this.#threadWorkers.set(key, Promise.resolve(id));
375
+ return id;
376
+ }
377
+ const pending = (async () => await this.#modelWorker(workerName, env.workspaceId)
378
+ ?? (await this.#seam.createWorker({ workspaceId: env.workspaceId, name: workerName })).workerId)();
283
379
  this.#threadWorkers.set(key, pending);
284
380
  try {
285
381
  return await pending;
@@ -289,6 +385,52 @@ class Module {
289
385
  throw cause;
290
386
  }
291
387
  }
388
+ // {§agui-thread-binding} The model worker the thread resolves to, when it exists; reading creates nothing. It is
389
+ // also the worker a person's client operation acts for ({§actor-boundary-client-operations}).
390
+ async #threadWorker(threadId, workspaceId, forwarded) {
391
+ const qualified = ThreadAddress.parse(threadId);
392
+ if (qualified !== null && qualified.workspaceId !== workspaceId)
393
+ return undefined;
394
+ if (qualified === null && forwarded?.workspace === undefined) {
395
+ const reference = await this.#seam.readWorkerReference({ namespace: "agui", reference: threadId });
396
+ return reference?.workspaceId === workspaceId ? reference.workerId : undefined;
397
+ }
398
+ return this.#modelWorker(qualified?.workerName ?? threadId, workspaceId);
399
+ }
400
+ async #modelWorker(name, workspaceId) {
401
+ const worker = await this.#seam.readWorker({ workspaceId, identity: { name } });
402
+ return worker?.origin === "model" ? worker.id : undefined;
403
+ }
404
+ // {§agui-run-input} Resolve retained identity without creating a conversation or claiming its owner.
405
+ async #conversation(threadId, forwarded) {
406
+ const qualified = ThreadAddress.parse(threadId);
407
+ if (qualified !== null) {
408
+ const workerId = await this.#threadWorker(threadId, qualified.workspaceId, forwarded);
409
+ return workerId === undefined ? null : { workspaceId: qualified.workspaceId, workerId };
410
+ }
411
+ const workspaceName = forwarded?.workspace;
412
+ if (workspaceName === undefined)
413
+ return this.#seam.readWorkerReference({ namespace: "agui", reference: threadId });
414
+ if (typeof workspaceName !== "string")
415
+ return null;
416
+ const workspace = (await this.#seam.listWorkspaces()).find(({ name }) => name === workspaceName);
417
+ if (workspace === undefined)
418
+ return null;
419
+ const workerId = await this.#threadWorker(threadId, workspace.id, forwarded);
420
+ return workerId === undefined ? null : { workspaceId: workspace.id, workerId };
421
+ }
422
+ // {§agui-action-binding} — what an action binds of the thread's worker. Reached only for a registered
423
+ // action whose input its schema admits: any other is answered on the control path.
424
+ #actionBinding({ kind, params }) {
425
+ const action = this.#actions.get(kind);
426
+ if (WORKER_CREATING_ACTIONS.has(kind))
427
+ return "create";
428
+ if (WORKER_READING_ACTIONS.has(kind))
429
+ return typeof params.workerId === "number" ? "attach" : "required";
430
+ if (WORKER_ACTIONS.has(kind))
431
+ return "required";
432
+ return action.scope === "worker" ? "required" : "none";
433
+ }
292
434
  async #workerStatus(workspaceId, workerId) {
293
435
  const [{ model }, loops, children] = await Promise.all([
294
436
  this.#seam.readWorkerModel({ workspaceId, workerId }),
@@ -296,12 +438,12 @@ class Module {
296
438
  this.#seam.listWorkers(workspaceId, { parentWorkerId: workerId }),
297
439
  ]);
298
440
  const loop = selectWorkerLoop(loops);
299
- const descendants = await this.#seam.descendantAccounting({ workspaceId, workerId, loopId: loop?.id ?? null });
300
- return statusState(model, loop, derivationActivity(this.#seam.workspaceDerivationStatus(workspaceId)), aliveChildren(children), descendantsState(descendants), this.#seam.workspacePreparationStatus(workspaceId));
441
+ const spend = await this.#seam.workerAccounting({ workspaceId, workerId });
442
+ return statusState(model, loop, spendState(spend), aliveChildren(children));
301
443
  }
302
- // A control-plane AG-UI Run: no world bound. Open the SSE, execute the worldless verb, answer on
444
+ // A control-plane AG-UI Run: no workspace bound. Open the SSE, execute the daemon verb, answer on
303
445
  // our own stream. No Portal thread, no model worker, and no ephemeral workspace.
304
- async #controlRun(action, input, res) {
446
+ async #controlRun(action, input, res, principal) {
305
447
  res.writeHead(200, { "content-type": "text/event-stream", "cache-control": "no-cache", "connection": "keep-alive" });
306
448
  const emit = (e) => { res.write(`data: ${JSON.stringify(e)}\n\n`); };
307
449
  emit({ type: EventType.RUN_STARTED, threadId: input.threadId, runId: input.runId });
@@ -310,7 +452,7 @@ class Module {
310
452
  emit({ type: EventType.CUSTOM, name: "plurnk.notice", value: notice });
311
453
  }
312
454
  }
313
- const outcome = await this.#action(action, input, null)
455
+ const outcome = await this.#action(action, input, null, undefined, principal, undefined)
314
456
  .catch((err) => {
315
457
  console.error(`AG-UI action '${action.kind}' failed:`, err);
316
458
  const problem = Problems.fromError(err);
@@ -318,8 +460,7 @@ class Module {
318
460
  ? actionFailure("action-failed", "The action failed unexpectedly.", 500)
319
461
  : { ok: false, problem };
320
462
  });
321
- emit(actionResult(action.kind, outcome));
322
- emit({ type: EventType.RUN_FINISHED, threadId: input.threadId, runId: input.runId, outcome: { type: "success" } });
463
+ emit({ type: EventType.RUN_FINISHED, threadId: input.threadId, runId: input.runId, outcome: { type: "success" }, result: actionRunResult(action.kind, outcome) });
323
464
  res.end();
324
465
  }
325
466
  // Discovery is a projection of the executable registry, not a second inventory.
@@ -340,7 +481,7 @@ class Module {
340
481
  display,
341
482
  });
342
483
  }
343
- async #action(a, input, env, conversationWorkerId) {
484
+ async #action(a, input, env, boundWorkerId, principal, onLoop) {
344
485
  const action = this.#actions.get(a.kind);
345
486
  if (action === undefined) {
346
487
  return actionFailure("unknown-action", `Action '${a.kind}' is not registered.`, 404, {
@@ -359,9 +500,9 @@ class Module {
359
500
  });
360
501
  }
361
502
  try {
362
- if (action.scope !== "worldless")
363
- _a.#requireWorkspace(a.kind, env);
364
- const outcome = await action.execute(a.params, input, env, conversationWorkerId);
503
+ if (action.scope !== "daemon")
504
+ Module.#requireWorkspace(a.kind, env);
505
+ const outcome = await action.execute(a.params, input, env, boundWorkerId, principal, onLoop);
365
506
  if (!outcome.ok)
366
507
  return outcome;
367
508
  const projected = Validator.validateJsonSchemaInstance(action.outputSchema, outcome.result);
@@ -379,6 +520,4 @@ class Module {
379
520
  }
380
521
  }
381
522
  }
382
- _a = Module;
383
- export default Module;
384
523
  //# sourceMappingURL=Module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Module.js","sourceRoot":"","sources":["../src/Module.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,wFAAwF;AACxF,kBAAkB;AAClB,EAAE;AACF,gDAAgD;AAChD,qFAAqF;AACrF,sDAAsD;AACtD,qFAAqF;AACrF,4FAA4F;AAC5F,sFAAsF;AACtF,+EAA+E;AAC/E,sCAAsC;AACtC,kFAAkF;AAClF,iFAAiF;;AAGjF,OAAO,MAAM,EAAE,EAAmB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAgE,MAAM,eAAe,CAAC;AAC7K,OAAO,EAAE,SAAS,EAAsC,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAsF,MAAM,0BAA0B,CAAC;AACrK,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAA2B,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAkD,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,cAAc,EAAE,EAA2B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,UAAU,EAAE,EAAgB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA4BvD,MAAM,gBAAgB,GAAG,CAAC,GAAmB,EAAE,OAAuB,EAAQ,EAAE;IAC5E,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC9E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AAaF,MAAqB,MAAM;IACvB,wEAAwE;IAC/D,MAAM,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,KAAK,CAAY;IACR,KAAK,CAAwB;IACtC,OAAO,CAAU;IACjB,gBAAgB,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrD,cAAc,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,sBAAsB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC/C,UAAU,GAAG,KAAK,CAAC;IACnB,QAAQ,GAAG,KAAK,CAAC;IACR,SAAS,GAAG,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACzL,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5X,YAAoB,IAAmB;QACnC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,wFAAwF;IACxF,kCAAkC;IAClC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAkB,EAAE;QAClC,OAAO,IAAI,EAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACZ,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,GAAG,QAAQ;gBACX,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,EAAE,CAClD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAoB,CAAC;aACpF,CAAC,CAAC;QACP,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACtD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;YAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,gCAAgC,CAAC,CAAC;YACpG,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,wBAAwB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK;gBACL,WAAW;gBACX,YAAY;gBACZ,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,EAAE;oBACzD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;wBACxB,OAAO;4BACH,EAAE,EAAE,IAAI;4BACR,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;yBACvE,CAAC;oBACN,CAAC;oBACD,MAAM,EAAE,WAAW,EAAE,GAAG,EAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC5D,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;wBACxB,OAAO;4BACH,EAAE,EAAE,IAAI;4BACR,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;yBACpF,CAAC;oBACN,CAAC;oBACD,MAAM,QAAQ,GAAG,oBAAoB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACzF,OAAO;wBACH,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;qBAC9F,CAAC;gBACN,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,WAAW,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAY,EAAE,GAA0B;QAC7D,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,kDAAkD,CAAC,CAAC;QACrG,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,SAAiB,EAAE,QAAgB;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAA4B;QACpC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,uFAAuF;IACvF,KAAK,CAAC,KAAK,CAAC,IAAc;QACtB,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC9E,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI;QACA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAoB,EAAE,GAAmB;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,gBAAgB,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,OAAO,QAAQ,CAAE,+EAA+E;QAC5F,WAAW,EACX,EAAE,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EACjD,GAAkB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CACpD,CAAC;IACN,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAoB,EAAE,GAAmB;QACzD,IAAI,CAAC;YACD,gGAAgG;YAChG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACrE,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACnE,iFAAiF;YACjF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,UAAU,KAAK,EAAE,EAAE,CAAC;gBACtE,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAC7B,uBAAuB,EACvB,GAAG,EACH,wDAAwD,EACxD;oBACI,KAAK,EAAE,eAAe;oBACtB,QAAQ,EAAE,sCAAsC;oBAChD,SAAS,EAAE,KAAK;iBACnB,CACJ,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO;gBAAE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxF,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,eAAe;gBAAE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACtG,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,0CAA0C,EAAE;gBAClG,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;gBAC1B,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;gBACrB,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,KAAK;aACnB,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,IAAI,WAAW,CACvC,gBAAgB,EAChB,GAAG,EACH,wCAAwC,EACxC;gBACI,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACnB,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC/B,OAAO;YACX,CAAC;YACD,kEAAkE;YAClE,0EAA0E;YAC1E,yEAAyE;YACzE,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,GAAG,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,kDAAkD;IAClD,yFAAyF;IACzF,qFAAqF;IACrF,oFAAoF;IACpF,8EAA8E;IAC9E,6EAA6E;IAC7E,kGAAkG;IAClG,yFAAyF;IACzF,qEAAqE;IACrE,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,SAAmC,EAAE,OAAO,GAAkC,EAAE;QAC9G,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;QACvC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,oBAAoB,EACpB,GAAG,EACH,wDAAwD,EACxD;gBACI,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,qCAAqC;gBAC/C,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;QACD,MAAM,GAAG,GAAG,EAAM,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QAClD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC;YACD,MAAM,QAAQ,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC;QAClB,CAAC;gBAAS,CAAC;YACP,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,OAAO;gBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1H,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,SAA8C,EAAE,OAAsC;QAC1H,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACpF,IAAI,GAAmB,CAAC;QACxB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAClC,oFAAoF;YACpF,oFAAoF;YACpF,0CAA0C;YAC1C,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,qBAAqB,EACrB,GAAG,EACH,sBAAsB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,uCAAuC,EACtF;gBACI,KAAK,EAAE,oBAAoB;gBAC3B,SAAS;gBACT,QAAQ,EAAE,2HAA2H;gBACrI,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;YAC7B,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACnC,IAAI,EAAE,SAAS;gBACf,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;oBAClC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAA4B,EAAE;oBACpD,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;oBAClC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAsD,EAAE;oBAC9E,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;oBAC/B,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAA2B,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;aACZ,CAAC,CAAC;QACP,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,wEAAwE;IACxE,sFAAsF;IACtF,4FAA4F;IAC5F,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,GAAmB;QAC3D,MAAM,GAAG,GAAG,EAAM,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC,aAAa;YACvD,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;YACrD,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,EAAE,EAAE;mBACvG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YAAC,OAAO,MAAM,OAAO,CAAC;QAAC,CAAC;QAC7B,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,QAAgB;QACrD,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;SACpE,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC/G,OAAO,WAAW,CACd,KAAK,EACL,IAAI,EACJ,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,EACrE,aAAa,CAAC,QAAQ,CAAC,EACvB,gBAAgB,CAAC,WAAW,CAAC,EAC7B,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,CACrD,CAAC;IACN,CAAC;IAED,iGAAiG;IACjG,iFAAiF;IACjF,KAAK,CAAC,WAAW,CAAC,MAAqB,EAAE,KAAoB,EAAE,GAAmB;QAC9E,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;QACrH,MAAM,IAAI,GAAG,CAAC,CAAY,EAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBACrD,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;aAClD,KAAK,CAAC,CAAC,GAAY,EAAiB,EAAE;YACnC,OAAO,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,OAAO,KAAK,IAAI;gBACnB,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,iCAAiC,EAAE,GAAG,CAAC;gBACxE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACnH,GAAG,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,aAAa;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAC1E,IAAI;YACJ;gBACI,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;aACpC;SACJ,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,SAAS,CAAC,+BAA+B,CACrD,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,CACnD,CAAC;QACF,OAAO,SAAS,CAAC,mBAAmB,CAAC;YACjC,aAAa,EAAE,CAAC;YAChB,OAAO;YACP,aAAa,EAAE,kBAAkB;YACjC,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAgB,EAAE,KAAoB,EAAE,GAA0B,EAAE,oBAA6B;QAC3G,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,aAAa,CAChB,gBAAgB,EAChB,WAAW,CAAC,CAAC,IAAI,sBAAsB,EACvC,GAAG,EACH;gBACI,eAAe,EAAE,CAAC,CAAC,IAAI;gBACvB,QAAQ,EAAE,uCAAuC;aACpD,CACJ,CAAC;QACN,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,0BAA0B,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM;iBAC1B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;iBAClH,GAAG,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,gBAAgB,KAAK,KAAK,EAAE,CAAC;iBACrE,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,aAAa,CAChB,2BAA2B,EAC3B,WAAW,CAAC,CAAC,IAAI,0BAA0B,OAAO,EAAE,EACpD,GAAG,EACH;gBACI,MAAM,EAAE,QAAQ,CAAC,MAAM;aAC1B,CACJ,CAAC;QACN,CAAC;QACD,IAAI,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;gBAAE,EAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;YACjF,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,OAAO,CAAC;YAChC,MAAM,SAAS,GAAG,SAAS,CAAC,0BAA0B,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5F,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACX,iBAAiB,CAAC,CAAC,IAAI,oDAAoD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAChH,CAAC;YACN,CAAC;YACD,OAAO,OAAO,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO,aAAa,CAAC,eAAe,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAClF,CAAC;IACL,CAAC;CAEJ"}
1
+ {"version":3,"file":"Module.js","sourceRoot":"","sources":["../src/Module.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,wFAAwF;AACxF,kBAAkB;AAClB,EAAE;AACF,gDAAgD;AAChD,qFAAqF;AACrF,yFAAyF;AACzF,sFAAsF;AACtF,uFAAuF;AACvF,yEAAyE;AACzE,+EAA+E;AAC/E,sCAAsC;AACtC,mFAAmF;AACnF,iFAAiF;AAGjF,OAAO,MAAM,EAAE,EAAmB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAgE,MAAM,eAAe,CAAC;AACtJ,OAAO,EAAE,SAAS,EAAsC,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAqF,MAAM,0BAA0B,CAAC;AAEnL,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAA2B,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAkD,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,cAAc,EAAE,EAAuD,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChH,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,UAAU,EAAE,EAAoC,MAAM,iBAAiB,CAAC;AAC/E,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAgCvD,MAAM,gBAAgB,GAAG,CAAC,GAAmB,EAAE,OAAuB,EAAQ,EAAE;IAC5E,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC9E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AAmBF,0GAA0G;AAC1G,0GAA0G;AAC1G,eAAe;AACf,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC5H,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzI,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAEnI,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,kGAAkG;IAClG,oDAAoD;IAC3C,MAAM,CAAoB;IACnC,KAAK,CAAY;IACjB,SAAS,CAAgC;IAChC,KAAK,CAAwB;IACtC,OAAO,CAAU;IACjB,MAAM,GAAuB,IAAI,CAAC;IAClC,WAAW,GAAwB,IAAI,CAAC;IACxC,mBAAmB,GAAG,IAAI,GAAG,EAA0B,CAAC;IACxD,cAAc,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,sBAAsB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC/C,UAAU,GAAG,KAAK,CAAC;IACnB,QAAQ,GAAG,KAAK,CAAC;IACR,SAAS,GAAG,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClP,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEze,YAAoB,IAAmB;QACnC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;YAChD,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,yCAAyC,EAAE,uCAAuC,CAAC;YACzG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,kGAAkG;IAClG,sGAAsG;IACtG,iGAAiG;IACjG,kCAAkC;IAClC,OAAO,CAAC,GAAG,GAAmB,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,wFAAwF;IACxF,kCAAkC;IAClC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAkB,EAAE;QAClC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACZ,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,GAAG,QAAQ;gBACX,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAC9D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;aAChG,CAAC,CAAC;QACP,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACtD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;YAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,gCAAgC,CAAC,CAAC;YACpG,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,wBAAwB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK;gBACL,WAAW;gBACX,YAAY;gBACZ,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE;oBAClD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACrB,OAAO;4BACH,EAAE,EAAE,IAAI;4BACR,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;yBACvE,CAAC;oBACN,CAAC;oBACD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC5D,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;wBACxB,OAAO;4BACH,EAAE,EAAE,IAAI;4BACR,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;yBACpF,CAAC;oBACN,CAAC;oBACD,IAAI,aAAa,KAAK,SAAS;wBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,wCAAwC,CAAC,CAAC;oBACjH,OAAO;wBACH,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;qBAC7G,CAAC;gBACN,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,0GAA0G;IAC1G,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAiB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ;eACjD,SAAS,CAAC,0BAA0B,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAY,EAAE,GAA0B;QAC7D,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,kDAAkD,CAAC,CAAC;QACrG,OAAO,GAAG,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAmB;QAC3B,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,4FAA4F;QAC5F,0FAA0F;QAC1F,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,uFAAuF;IACvF,KAAK,CAAC,KAAK,CAAC,IAAc;QACtB,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC9E,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,uFAAuF;YACvF,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvH,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAI,MAAM,KAAK,OAAO;oBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACrG,CAAC;YACD,qFAAqF;YACrF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CACrD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI;QACA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAoB,EAAE,GAAmB;QACvD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,gBAAgB,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACrE,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YAChE,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,0CAA0C,EAAE;gBAClG,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK;aACxF,CAAC,CAAC,CAAC;QACR,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAoB,EAAE,GAAmB;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,gBAAgB,CAAC,GAAG,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,OAAO,QAAQ,CAAE,+EAA+E;QAC5F,WAAW,EACX,EAAE,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EACjD,GAAkB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CACpD,CAAC;IACN,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAoB,EAAE,GAAmB;QACzD,IAAI,CAAC;YACD,gGAAgG;YAChG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACrE,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACnE,qFAAqF;YACrF,IAAI,SAAS,GAAG,WAAW,CAAC;YAC5B,IAAI,MAAM,GAAkB,IAAI,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACjD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;oBAChB,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;oBACvD,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;oBACzC,OAAO;gBACX,CAAC;gBACD,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO;gBAAE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAClH,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,eAAe;gBAAE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACzH,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,0CAA0C,EAAE;gBAClG,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;gBAC1B,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;gBACrB,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,KAAK;aACnB,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,IAAI,WAAW,CACvC,gBAAgB,EAChB,GAAG,EACH,wCAAwC,EACxC;gBACI,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACnB,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC/B,OAAO;YACX,CAAC;YACD,kEAAkE;YAClE,0EAA0E;YAC1E,yEAAyE;YACzE,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,GAAG,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,SAAmC,EAAE,OAAO,GAA6D,EAAE;QACzI,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACtG,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;QACvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI;gBACnC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBACnD,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,OAAO,KAAK,IAAI;gBAAE,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,EAChF,iCAAiC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrG,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,oBAAoB,EACpB,GAAG,EACH,wDAAwD,EACxD;gBACI,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,qCAAqC;gBAC/C,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,oGAAoG;IACpG,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,SAA6C,EAAE,OAAO,GAAkC,EAAE;QAC/H,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QAClD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC;YACD,MAAM,QAAQ,CAAC;YACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC;QAClB,CAAC;gBAAS,CAAC;YACP,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,OAAO;gBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1H,CAAC;IACL,CAAC;IAED,yGAAyG;IACzG,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;QAChG,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QAC/C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,SAAwD,EAAE,OAAsC;QACpI,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACpF,IAAI,GAAmB,CAAC;QACxB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAClC,mGAAmG;YACnG,0EAA0E;YAC1E,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAClC,qBAAqB,EACrB,GAAG,EACH,sBAAsB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EACzD;gBACI,KAAK,EAAE,oBAAoB;gBAC3B,SAAS;gBACT,QAAQ,EAAE,sHAAsH;gBAChI,SAAS,EAAE,KAAK;aACnB,CACJ,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;YAC7B,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACnC,IAAI,EAAE,SAAS;gBACf,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;oBAClC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAA4B,EAAE;oBACpD,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;oBAClC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAsD,EAAE;oBAC9E,CAAC,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;oBAC/B,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAA2B,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;aACZ,CAAC,CAAC;QACP,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,uGAAuG;IACvG,uGAAuG;IACvG,oGAAoG;IACpG,uGAAuG;IACvG,mBAAmB;IACnB,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,GAAmB,EAAE,OAA8B,EAAE,SAAmC;QACzH,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnG,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAChJ,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;QACD,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,IAAI,QAAQ,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,MAAM,CAAC;QAC9C,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YAChE,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACnB,MAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,EAC1D,yBAAyB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE;oBAC7G,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ;oBAC3E,QAAQ,EAAE,uEAAuE,EAAE,SAAS,EAAE,KAAK;iBACtG,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC;eAC1E,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YAAC,OAAO,MAAM,OAAO,CAAC;QAAC,CAAC;QAC7B,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,iHAAiH;IACjH,8FAA8F;IAC9F,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,WAAmB,EAAE,SAAmC;QAC1F,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,KAAK,WAAW;YAAE,OAAO,SAAS,CAAC;QAClF,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnG,OAAO,SAAS,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,IAAI,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,WAAmB;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAChF,OAAO,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAED,qGAAqG;IACrG,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,SAAmC;QACrE,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACtF,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC5F,CAAC;QACD,MAAM,aAAa,GAAG,SAAS,EAAE,SAAS,CAAC;QAC3C,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnH,IAAI,OAAO,aAAa,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACjG,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC7E,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC;IACnF,CAAC;IAED,sGAAsG;IACtG,mFAAmF;IACnF,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAiB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACxC,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;QACvD,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QACzG,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,UAAU,CAAC;QAChD,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,QAAgB;QACrD,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;SACpE,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3E,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,kGAAkG;IAClG,iFAAiF;IACjF,KAAK,CAAC,WAAW,CAAC,MAAqB,EAAE,KAAoB,EAAE,GAAmB,EAAE,SAAiB;QACjG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;QACrH,MAAM,IAAI,GAAG,CAAC,CAAY,EAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBACrD,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;aACnF,KAAK,CAAC,CAAC,GAAY,EAAiB,EAAE;YACnC,OAAO,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,OAAO,KAAK,IAAI;gBACnB,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,iCAAiC,EAAE,GAAG,CAAC;gBACxE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAClK,GAAG,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,aAAa;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YAC1E,IAAI;YACJ;gBACI,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;aACpC;SACJ,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,SAAS,CAAC,+BAA+B,CACrD,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,CACnD,CAAC;QACF,OAAO,SAAS,CAAC,mBAAmB,CAAC;YACjC,aAAa,EAAE,CAAC;YAChB,OAAO;YACP,aAAa,EAAE,kBAAkB;YACjC,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAgB,EAAE,KAAoB,EAAE,GAA0B,EAAE,aAAiC,EAAE,SAAiB,EAAE,MAAyC;QAC7K,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,aAAa,CAChB,gBAAgB,EAChB,WAAW,CAAC,CAAC,IAAI,sBAAsB,EACvC,GAAG,EACH;gBACI,eAAe,EAAE,CAAC,CAAC,IAAI;gBACvB,QAAQ,EAAE,uCAAuC;aACpD,CACJ,CAAC;QACN,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,0BAA0B,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM;iBAC1B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;iBAClH,GAAG,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,gBAAgB,KAAK,KAAK,EAAE,CAAC;iBACrE,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,aAAa,CAChB,2BAA2B,EAC3B,WAAW,CAAC,CAAC,IAAI,0BAA0B,OAAO,EAAE,EACpD,GAAG,EACH;gBACI,MAAM,EAAE,QAAQ,CAAC,MAAM;aAC1B,CACJ,CAAC;QACN,CAAC;QACD,IAAI,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ;gBAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC7F,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO,OAAO,CAAC;YAChC,MAAM,SAAS,GAAG,SAAS,CAAC,0BAA0B,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5F,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACX,iBAAiB,CAAC,CAAC,IAAI,oDAAoD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAChH,CAAC;YACN,CAAC;YACD,OAAO,OAAO,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO,aAAa,CAAC,eAAe,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAClF,CAAC;IACL,CAAC;CAEJ"}
@@ -0,0 +1,30 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { CredentialAuthority, ProblemDetails } from "@plurnk/plurnk-contracts";
3
+ import { type ResolvedModuleOptions } from "./config.ts";
4
+ export type Admission = {
5
+ readonly ok: true;
6
+ readonly principal: string;
7
+ readonly family: string | null;
8
+ } | {
9
+ readonly ok: false;
10
+ readonly problem: ProblemDetails;
11
+ readonly challenge: string;
12
+ };
13
+ export default class OAuthServer {
14
+ #private;
15
+ constructor({ credentials, opts, issuer, now }: {
16
+ readonly credentials: CredentialAuthority;
17
+ readonly opts: ResolvedModuleOptions;
18
+ readonly issuer: (req: Pick<IncomingMessage, "headers">) => string;
19
+ readonly now?: () => number;
20
+ });
21
+ resource(req: Pick<IncomingMessage, "headers">): string;
22
+ /** {§agui-oauth-endpoints} RFC 8414 */
23
+ metadata(req: Pick<IncomingMessage, "headers">): Record<string, unknown>;
24
+ /** {§agui-oauth-endpoints} RFC 9728 */
25
+ resourceMetadata(req: Pick<IncomingMessage, "headers">): Record<string, unknown>;
26
+ admit(req: IncomingMessage, scope: string): Admission;
27
+ /** Routes one request under `/oauth` or a well-known document; answers true when it was one of ours. */
28
+ handle(req: IncomingMessage, res: ServerResponse): Promise<boolean>;
29
+ }
30
+ //# sourceMappingURL=OAuthServer.d.ts.map