@polpo-ai/core 0.18.6 → 0.18.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.
@@ -0,0 +1,517 @@
1
+ export const RUNTIME_HOOK_CONTRACT_VERSION = 1;
2
+ export const DEFAULT_RUNTIME_HOOK_TIMEOUT_MS = 5_000;
3
+ export const DEFAULT_RUNTIME_HOOK_MAX_PAYLOAD_BYTES = 256 * 1024;
4
+ export const DEFAULT_RUNTIME_HOOK_MAX_DEPTH = 2;
5
+ export const RUNTIME_HOOK_EVENT_NAMES = [
6
+ "session:start", "session:resume", "session:end", "input:before", "turn:stop", "turn:error",
7
+ "model:before", "model:after", "model:error", "tool:before", "approval:request", "approval:denied",
8
+ "tool:after", "tool:error", "tool:batch:after", "agent:spawn", "agent:end",
9
+ "context:compact:before", "context:compact:after", "model:switch:before", "model:switch:after",
10
+ "loop:start", "step:before", "loop:transition", "step:after", "loop:stop", "loop:end",
11
+ "sandbox:start", "sandbox:cwd_changed", "sandbox:file_changed", "sandbox:end", "run:start", "run:end",
12
+ ];
13
+ export const RUNTIME_HOOK_HANDLER_TYPES = [
14
+ "command", "http", "tool", "mcp_tool", "prompt", "agent",
15
+ ];
16
+ export const RUNTIME_HOOK_SURFACE_NAMES = [
17
+ "chat", "loop", "channel", "task", "schedule", "runtime",
18
+ ];
19
+ export const RUNTIME_HOOK_SCOPE_NAMES = [
20
+ "platform", "organization", "project", "environment", "agent", "skill", "loop", "step",
21
+ ];
22
+ export const PORTABLE_RUNTIME_HOOK_CAPABILITIES = Object.freeze({
23
+ contractVersion: RUNTIME_HOOK_CONTRACT_VERSION,
24
+ events: RUNTIME_HOOK_EVENT_NAMES,
25
+ handlerTypes: RUNTIME_HOOK_HANDLER_TYPES,
26
+ surfaces: RUNTIME_HOOK_SURFACE_NAMES,
27
+ scopes: RUNTIME_HOOK_SCOPE_NAMES,
28
+ durableReplay: true,
29
+ fileEvents: "tool_attributed",
30
+ });
31
+ const SCOPE_ORDER = {
32
+ platform: 0,
33
+ organization: 1,
34
+ project: 2,
35
+ environment: 3,
36
+ agent: 4,
37
+ skill: 5,
38
+ loop: 6,
39
+ step: 7,
40
+ };
41
+ const SENSITIVE_KEY = /(?:authorization|cookie|secret|password|token|api[_-]?key|credential|private[_-]?key)/i;
42
+ export class RuntimeHookValidationError extends Error {
43
+ name = "RuntimeHookValidationError";
44
+ }
45
+ export class RuntimeHookBlockedError extends Error {
46
+ hookId;
47
+ code;
48
+ name = "RuntimeHookBlockedError";
49
+ constructor(message, hookId, code = "runtime_hook_blocked") {
50
+ super(message);
51
+ this.hookId = hookId;
52
+ this.code = code;
53
+ }
54
+ }
55
+ export class RuntimeHookEngine {
56
+ definitions;
57
+ host;
58
+ now;
59
+ maxPayloadBytes;
60
+ maxDepth;
61
+ constructor(options) {
62
+ this.host = options.host;
63
+ this.now = options.now ?? (() => new Date());
64
+ this.maxPayloadBytes = options.maxPayloadBytes ?? DEFAULT_RUNTIME_HOOK_MAX_PAYLOAD_BYTES;
65
+ this.maxDepth = options.maxDepth ?? DEFAULT_RUNTIME_HOOK_MAX_DEPTH;
66
+ this.definitions = options.definitions.map((definition, index) => validateRuntimeHookDefinition(definition, index));
67
+ }
68
+ async dispatch(input) {
69
+ const envelope = createRuntimeHookEnvelope(input, this.now, this.maxPayloadBytes);
70
+ const matching = this.definitions
71
+ .map((definition, declarationOrder) => ({ definition, declarationOrder }))
72
+ .filter(({ definition }) => definition.enabled !== false && definition.event === envelope.event)
73
+ .filter(({ definition }) => matchesRuntimeHook(definition.matcher, envelope))
74
+ .filter(({ definition }) => envelope.origin.kind !== "hook" || definition.allowRecursive === true)
75
+ .filter(() => envelope.origin.depth <= this.maxDepth)
76
+ .sort((a, b) => {
77
+ const scope = SCOPE_ORDER[a.definition.scope ?? "project"] - SCOPE_ORDER[b.definition.scope ?? "project"];
78
+ if (scope !== 0)
79
+ return scope;
80
+ const priority = (a.definition.priority ?? 0) - (b.definition.priority ?? 0);
81
+ return priority !== 0 ? priority : a.declarationOrder - b.declarationOrder;
82
+ });
83
+ const controlling = matching.filter(({ definition }) => (definition.mode ?? "control") === "control");
84
+ const observing = matching.filter(({ definition }) => definition.mode === "observe");
85
+ const executions = [];
86
+ let decision = { action: "allow" };
87
+ for (const { definition } of controlling) {
88
+ const result = await this.execute(definition, envelope);
89
+ executions.push(result.execution);
90
+ if (!result.replayed)
91
+ await this.host.trace?.(result.execution, result.decision, envelope);
92
+ if (result.decision)
93
+ decision = composeRuntimeHookDecision(decision, result.decision);
94
+ if (["deny", "ask", "defer", "stop"].includes(decision.action))
95
+ break;
96
+ }
97
+ const observed = await Promise.all(observing.map(async ({ definition }) => {
98
+ const result = await this.execute(definition, envelope, true);
99
+ if (!result.replayed)
100
+ await this.host.trace?.(result.execution, undefined, envelope);
101
+ return result.execution;
102
+ }));
103
+ executions.push(...observed);
104
+ return { envelope, decision, executions };
105
+ }
106
+ async execute(hook, envelope, observeOnly = false) {
107
+ const startedAt = this.now().toISOString();
108
+ const controller = new AbortController();
109
+ const timeoutMs = hook.handler.timeoutMs ?? DEFAULT_RUNTIME_HOOK_TIMEOUT_MS;
110
+ const timeout = setTimeout(() => controller.abort(new Error("Runtime hook timed out")), timeoutMs);
111
+ const idempotencyKey = runtimeHookIdempotencyKey(envelope.eventId, hook.id);
112
+ const request = {
113
+ hook,
114
+ envelope,
115
+ idempotencyKey,
116
+ signal: controller.signal,
117
+ };
118
+ try {
119
+ const replay = await this.host.findCompleted?.(request);
120
+ if (replay) {
121
+ assertReplayMatches(replay, request);
122
+ const decision = observeOnly
123
+ ? undefined
124
+ : normalizeRuntimeHookDecision(replay.decision);
125
+ return {
126
+ execution: { ...replay.execution, replayed: true },
127
+ ...(decision ? { decision } : {}),
128
+ replayed: true,
129
+ };
130
+ }
131
+ const result = await Promise.race([
132
+ this.host.execute(request),
133
+ new Promise((_, reject) => {
134
+ controller.signal.addEventListener("abort", () => reject(controller.signal.reason), { once: true });
135
+ }),
136
+ ]);
137
+ const decision = observeOnly ? undefined : normalizeRuntimeHookDecision(result?.decision);
138
+ const completedAt = this.now().toISOString();
139
+ return {
140
+ ...(decision ? { decision } : {}),
141
+ execution: {
142
+ idempotencyKey,
143
+ eventId: envelope.eventId,
144
+ hookId: hook.id,
145
+ handlerType: hook.handler.type,
146
+ event: envelope.event,
147
+ scope: hook.scope ?? "project",
148
+ mode: hook.mode ?? "control",
149
+ priority: hook.priority ?? 0,
150
+ attempt: 1,
151
+ timeoutMs,
152
+ onFailure: hook.onFailure ?? "continue",
153
+ startedAt,
154
+ completedAt,
155
+ durationMs: durationBetween(startedAt, completedAt),
156
+ outcome: observeOnly
157
+ ? "observed"
158
+ : decision?.action === "deny"
159
+ ? "denied"
160
+ : decision?.action === "modify"
161
+ ? "modified"
162
+ : decision?.action === "stop"
163
+ ? "stopped"
164
+ : "allowed",
165
+ ...(decision ? { decision: decision.action } : {}),
166
+ },
167
+ };
168
+ }
169
+ catch (error) {
170
+ const timedOut = controller.signal.aborted;
171
+ const message = safeError(error);
172
+ const completedAt = this.now().toISOString();
173
+ const execution = {
174
+ idempotencyKey,
175
+ eventId: envelope.eventId,
176
+ hookId: hook.id,
177
+ handlerType: hook.handler.type,
178
+ event: envelope.event,
179
+ scope: hook.scope ?? "project",
180
+ mode: hook.mode ?? "control",
181
+ priority: hook.priority ?? 0,
182
+ attempt: 1,
183
+ timeoutMs,
184
+ onFailure: hook.onFailure ?? "continue",
185
+ startedAt,
186
+ completedAt,
187
+ durationMs: durationBetween(startedAt, completedAt),
188
+ outcome: timedOut ? "timed_out" : "failed",
189
+ error: message,
190
+ };
191
+ if (!observeOnly && (hook.onFailure ?? "continue") === "block") {
192
+ return {
193
+ execution,
194
+ decision: { action: "deny", reason: message, code: timedOut ? "runtime_hook_timeout" : "runtime_hook_failed" },
195
+ };
196
+ }
197
+ return { execution };
198
+ }
199
+ finally {
200
+ clearTimeout(timeout);
201
+ }
202
+ }
203
+ }
204
+ function assertReplayMatches(replay, request) {
205
+ const execution = replay.execution;
206
+ if (execution.idempotencyKey !== request.idempotencyKey
207
+ || execution.eventId !== request.envelope.eventId
208
+ || execution.event !== request.envelope.event
209
+ || execution.hookId !== request.hook.id
210
+ || execution.handlerType !== request.hook.handler.type) {
211
+ throw new RuntimeHookValidationError("Runtime hook replay identity does not match the current execution");
212
+ }
213
+ }
214
+ function durationBetween(startedAt, completedAt) {
215
+ return Math.max(0, Date.parse(completedAt) - Date.parse(startedAt));
216
+ }
217
+ export function createRuntimeHookEnvelope(input, now = () => new Date(), maxPayloadBytes = DEFAULT_RUNTIME_HOOK_MAX_PAYLOAD_BYTES) {
218
+ const occurredAt = input.occurredAt ?? now().toISOString();
219
+ if (Number.isNaN(Date.parse(occurredAt)))
220
+ throw new RuntimeHookValidationError("occurredAt must be an ISO timestamp");
221
+ const data = sanitizeRuntimeHookValue(input.data ?? {}, maxPayloadBytes);
222
+ const identity = sanitizeRuntimeHookValue(input.identity ?? {}, 32 * 1024);
223
+ const eventId = input.eventId ?? createEventId(input.event, identity, data);
224
+ return Object.freeze({
225
+ version: RUNTIME_HOOK_CONTRACT_VERSION,
226
+ event: input.event,
227
+ eventId,
228
+ occurredAt,
229
+ surface: input.surface,
230
+ identity: Object.freeze(identity),
231
+ data: Object.freeze(data),
232
+ origin: Object.freeze(input.origin ?? { kind: "runtime", depth: 0 }),
233
+ });
234
+ }
235
+ export function validateRuntimeHookPack(input) {
236
+ if (!isRecord(input) || input.version !== RUNTIME_HOOK_CONTRACT_VERSION) {
237
+ throw new RuntimeHookValidationError(`Runtime hook pack version must be ${RUNTIME_HOOK_CONTRACT_VERSION}`);
238
+ }
239
+ if (typeof input.name !== "string" || !input.name.trim() || input.name.length > 128) {
240
+ throw new RuntimeHookValidationError("Runtime hook pack name must contain 1-128 characters");
241
+ }
242
+ if (!Array.isArray(input.hooks))
243
+ throw new RuntimeHookValidationError("Runtime hook pack hooks must be an array");
244
+ return {
245
+ version: RUNTIME_HOOK_CONTRACT_VERSION,
246
+ name: input.name,
247
+ hooks: input.hooks.map((hook, index) => validateRuntimeHookDefinition(hook, index)),
248
+ };
249
+ }
250
+ export function validateRuntimeHookDefinition(input, index = 0) {
251
+ if (!isRecord(input))
252
+ throw new RuntimeHookValidationError(`Hook ${index} must be an object`);
253
+ if (typeof input.id !== "string" || !input.id.trim() || input.id.length > 128) {
254
+ throw new RuntimeHookValidationError(`Hook ${index} id must contain 1-128 characters`);
255
+ }
256
+ if (typeof input.event !== "string" || !RUNTIME_HOOK_EVENTS.has(input.event)) {
257
+ throw new RuntimeHookValidationError(`Hook ${input.id} has an unsupported event`);
258
+ }
259
+ if (!isRecord(input.handler)
260
+ || typeof input.handler.type !== "string"
261
+ || !HANDLER_TYPES.has(input.handler.type)) {
262
+ throw new RuntimeHookValidationError(`Hook ${input.id} has an unsupported handler`);
263
+ }
264
+ validateRuntimeHookHandler(input.id, input.handler);
265
+ if (input.scope !== undefined && !RUNTIME_HOOK_SCOPES.has(input.scope)) {
266
+ throw new RuntimeHookValidationError(`Hook ${input.id} has an unsupported scope`);
267
+ }
268
+ if (input.priority !== undefined && (!Number.isInteger(input.priority) || Math.abs(Number(input.priority)) > 1_000_000)) {
269
+ throw new RuntimeHookValidationError(`Hook ${input.id} priority must be an integer between -1000000 and 1000000`);
270
+ }
271
+ if (input.enabled !== undefined && typeof input.enabled !== "boolean") {
272
+ throw new RuntimeHookValidationError(`Hook ${input.id} enabled must be a boolean`);
273
+ }
274
+ if (input.allowRecursive !== undefined && typeof input.allowRecursive !== "boolean") {
275
+ throw new RuntimeHookValidationError(`Hook ${input.id} allowRecursive must be a boolean`);
276
+ }
277
+ if (input.matcher !== undefined)
278
+ validateRuntimeHookMatcher(input.id, input.matcher);
279
+ if (input.mode !== undefined && input.mode !== "control" && input.mode !== "observe") {
280
+ throw new RuntimeHookValidationError(`Hook ${input.id} mode must be control or observe`);
281
+ }
282
+ if (input.onFailure !== undefined && input.onFailure !== "continue" && input.onFailure !== "block") {
283
+ throw new RuntimeHookValidationError(`Hook ${input.id} onFailure must be continue or block`);
284
+ }
285
+ const timeoutMs = input.handler.timeoutMs;
286
+ if (timeoutMs !== undefined && (!Number.isInteger(timeoutMs) || Number(timeoutMs) < 1 || Number(timeoutMs) > 300_000)) {
287
+ throw new RuntimeHookValidationError(`Hook ${input.id} timeoutMs must be between 1 and 300000`);
288
+ }
289
+ return structuredClone(input);
290
+ }
291
+ function validateRuntimeHookHandler(hookId, handler) {
292
+ const requireString = (field) => {
293
+ const value = handler[field];
294
+ if (typeof value !== "string" || !value.trim()) {
295
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.${field} must be a non-empty string`);
296
+ }
297
+ return value;
298
+ };
299
+ const optionalStringArray = (field) => {
300
+ const value = handler[field];
301
+ if (value !== undefined && (!Array.isArray(value) || value.some((item) => typeof item !== "string"))) {
302
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.${field} must be an array of strings`);
303
+ }
304
+ };
305
+ switch (handler.type) {
306
+ case "command":
307
+ requireString("command");
308
+ optionalStringArray("args");
309
+ if (handler.cwd !== undefined && typeof handler.cwd !== "string") {
310
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.cwd must be a string`);
311
+ }
312
+ if (handler.env !== undefined && (!isRecord(handler.env) || Object.values(handler.env).some((value) => typeof value !== "string"))) {
313
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.env must contain string values`);
314
+ }
315
+ if (isRecord(handler.env) && Object.keys(handler.env).some((key) => SENSITIVE_KEY.test(key))) {
316
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.env must not contain inline credentials`);
317
+ }
318
+ break;
319
+ case "http": {
320
+ const rawUrl = requireString("url");
321
+ let url;
322
+ try {
323
+ url = new URL(rawUrl);
324
+ }
325
+ catch {
326
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.url is invalid`);
327
+ }
328
+ if (url.protocol !== "https:" || url.username || url.password) {
329
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.url must use HTTPS without embedded credentials`);
330
+ }
331
+ if (handler.connection !== undefined && typeof handler.connection !== "string") {
332
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.connection must be a string`);
333
+ }
334
+ if (handler.headers !== undefined && (!isRecord(handler.headers) || Object.values(handler.headers).some((value) => typeof value !== "string"))) {
335
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.headers must contain string values`);
336
+ }
337
+ if (isRecord(handler.headers) && Object.keys(handler.headers).some((key) => SENSITIVE_KEY.test(key))) {
338
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.headers must not contain inline credentials; use handler.connection`);
339
+ }
340
+ break;
341
+ }
342
+ case "tool":
343
+ requireString("tool");
344
+ if (handler.input !== undefined && !isRecord(handler.input)) {
345
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.input must be an object`);
346
+ }
347
+ break;
348
+ case "mcp_tool":
349
+ requireString("connection");
350
+ requireString("tool");
351
+ if (handler.input !== undefined && !isRecord(handler.input)) {
352
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.input must be an object`);
353
+ }
354
+ break;
355
+ case "prompt":
356
+ requireString("prompt");
357
+ if (handler.model !== undefined && typeof handler.model !== "string") {
358
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.model must be a string`);
359
+ }
360
+ if (handler.maxOutputTokens !== undefined && (!Number.isInteger(handler.maxOutputTokens) || Number(handler.maxOutputTokens) < 1 || Number(handler.maxOutputTokens) > 32_768)) {
361
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.maxOutputTokens must be between 1 and 32768`);
362
+ }
363
+ break;
364
+ case "agent":
365
+ requireString("agent");
366
+ requireString("prompt");
367
+ optionalStringArray("allowedTools");
368
+ if (handler.maxTurns !== undefined && (!Number.isInteger(handler.maxTurns) || Number(handler.maxTurns) < 1 || Number(handler.maxTurns) > 20)) {
369
+ throw new RuntimeHookValidationError(`Hook ${hookId} handler.maxTurns must be between 1 and 20`);
370
+ }
371
+ break;
372
+ }
373
+ }
374
+ function validateRuntimeHookMatcher(hookId, value) {
375
+ if (!isRecord(value))
376
+ throw new RuntimeHookValidationError(`Hook ${hookId} matcher must be an object`);
377
+ for (const field of ["agents", "loops", "steps", "tools"]) {
378
+ const patterns = value[field];
379
+ if (patterns !== undefined && (!Array.isArray(patterns) || patterns.some((pattern) => typeof pattern !== "string" || pattern.length > 256))) {
380
+ throw new RuntimeHookValidationError(`Hook ${hookId} matcher.${field} must be an array of strings`);
381
+ }
382
+ }
383
+ const surfaces = value.surfaces;
384
+ if (surfaces !== undefined && (!Array.isArray(surfaces) || surfaces.some((surface) => !RUNTIME_HOOK_SURFACES.has(surface)))) {
385
+ throw new RuntimeHookValidationError(`Hook ${hookId} matcher.surfaces contains an unsupported surface`);
386
+ }
387
+ }
388
+ export function composeRuntimeHookDecision(current, next) {
389
+ const precedence = {
390
+ allow: 0,
391
+ modify: 1,
392
+ defer: 2,
393
+ ask: 3,
394
+ stop: 4,
395
+ deny: 5,
396
+ };
397
+ if (current.action === "modify" && next.action === "modify") {
398
+ return { ...next, data: { ...current.data, ...next.data } };
399
+ }
400
+ return precedence[next.action] >= precedence[current.action] ? next : current;
401
+ }
402
+ export function runtimeHookIdempotencyKey(eventId, hookId) {
403
+ return stableHash(`${eventId}\u0000${hookId}`);
404
+ }
405
+ export function matchesRuntimeHook(matcher, envelope) {
406
+ if (!matcher)
407
+ return true;
408
+ if (matcher.surfaces && !matcher.surfaces.includes(envelope.surface))
409
+ return false;
410
+ if (matcher.agents && !matchesAny(matcher.agents, envelope.identity.agent))
411
+ return false;
412
+ if (matcher.loops && !matchesAny(matcher.loops, envelope.identity.loop))
413
+ return false;
414
+ if (matcher.steps && !matchesAny(matcher.steps, envelope.identity.step))
415
+ return false;
416
+ if (matcher.tools && !matchesAny(matcher.tools, typeof envelope.data.tool === "string" ? envelope.data.tool : undefined))
417
+ return false;
418
+ return true;
419
+ }
420
+ /** Normalize file mutations produced by the portable workspace tool contract. */
421
+ export function runtimeHookFileChangeForTool(tool, input, result) {
422
+ if (result.startsWith("Error:"))
423
+ return undefined;
424
+ const action = tool === "write_file"
425
+ ? "created"
426
+ : tool === "edit_file"
427
+ ? "modified"
428
+ : undefined;
429
+ const path = typeof input.path === "string" ? input.path.trim() : "";
430
+ if (!action || !path)
431
+ return undefined;
432
+ const slash = path.lastIndexOf("/");
433
+ return {
434
+ action,
435
+ path,
436
+ directory: slash >= 0 ? path.slice(0, slash) || "/" : ".",
437
+ sourceTool: tool,
438
+ };
439
+ }
440
+ function normalizeRuntimeHookDecision(decision) {
441
+ if (!decision)
442
+ return undefined;
443
+ if (!["allow", "deny", "ask", "defer", "modify", "stop"].includes(decision.action)) {
444
+ throw new RuntimeHookValidationError("Hook returned an unsupported decision");
445
+ }
446
+ return sanitizeRuntimeHookValue(decision, 64 * 1024);
447
+ }
448
+ function sanitizeRuntimeHookValue(value, maxBytes) {
449
+ const ancestors = new WeakSet();
450
+ const visit = (candidate, key) => {
451
+ if (key && SENSITIVE_KEY.test(key))
452
+ return "[REDACTED]";
453
+ if (candidate === null || typeof candidate === "string" || typeof candidate === "boolean")
454
+ return candidate;
455
+ if (typeof candidate === "number") {
456
+ if (!Number.isFinite(candidate))
457
+ throw new RuntimeHookValidationError("Runtime hook data contains a non-finite number");
458
+ return candidate;
459
+ }
460
+ if (typeof candidate !== "object")
461
+ return String(candidate);
462
+ if (ancestors.has(candidate))
463
+ throw new RuntimeHookValidationError("Runtime hook data contains a circular reference");
464
+ ancestors.add(candidate);
465
+ const output = Array.isArray(candidate)
466
+ ? candidate.map((item) => visit(item))
467
+ : Object.fromEntries(Object.entries(candidate).map(([name, item]) => [name, visit(item, name)]));
468
+ ancestors.delete(candidate);
469
+ return output;
470
+ };
471
+ const result = visit(value);
472
+ const bytes = new TextEncoder().encode(JSON.stringify(result)).byteLength;
473
+ if (bytes > maxBytes)
474
+ throw new RuntimeHookValidationError(`Runtime hook payload exceeds ${maxBytes} bytes`);
475
+ return result;
476
+ }
477
+ function matchesAny(patterns, value) {
478
+ if (value === undefined)
479
+ return false;
480
+ return patterns.some((pattern) => globMatch(pattern, value));
481
+ }
482
+ function globMatch(pattern, value) {
483
+ const expression = pattern
484
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
485
+ .replace(/\*/g, ".*")
486
+ .replace(/\?/g, ".");
487
+ return new RegExp(`^${expression}$`, "u").test(value);
488
+ }
489
+ function createEventId(event, identity, data) {
490
+ return stableHash(JSON.stringify([event, identity, data]));
491
+ }
492
+ function safeError(error) {
493
+ const message = error instanceof Error ? error.message : String(error);
494
+ return message.slice(0, 1_000).replace(SENSITIVE_KEY, "[REDACTED]");
495
+ }
496
+ function isRecord(value) {
497
+ return value !== null && typeof value === "object" && !Array.isArray(value);
498
+ }
499
+ /** Portable deterministic hash; identity only, never used as a secret. */
500
+ function stableHash(value) {
501
+ let a = 0x811c9dc5;
502
+ let b = 0x9e3779b9;
503
+ for (let index = 0; index < value.length; index++) {
504
+ const code = value.charCodeAt(index);
505
+ a ^= code;
506
+ a = Math.imul(a, 0x01000193);
507
+ b ^= code + Math.imul(index + 1, 0x45d9f3b);
508
+ b = Math.imul(b, 0x27d4eb2d);
509
+ }
510
+ const hex = (part) => (part >>> 0).toString(16).padStart(8, "0");
511
+ return `${hex(a)}${hex(b)}${hex(a ^ b)}${hex(Math.imul(a, b))}`;
512
+ }
513
+ const HANDLER_TYPES = new Set(RUNTIME_HOOK_HANDLER_TYPES);
514
+ const RUNTIME_HOOK_EVENTS = new Set(RUNTIME_HOOK_EVENT_NAMES);
515
+ const RUNTIME_HOOK_SCOPES = new Set(Object.keys(SCOPE_ORDER));
516
+ const RUNTIME_HOOK_SURFACES = new Set(RUNTIME_HOOK_SURFACE_NAMES);
517
+ //# sourceMappingURL=runtime-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-hooks.js","sourceRoot":"","sources":["../src/runtime-hooks.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAU,CAAC;AACxD,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,sCAAsC,GAAG,GAAG,GAAG,IAAI,CAAC;AACjE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAuDhD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY;IAC3F,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB;IAClG,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW;IAC1E,wBAAwB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,oBAAoB;IAC9F,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU;IACrF,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS;CACnD,CAAC;AAErD,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO;CACA,CAAC;AAE3D,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;CACR,CAAC;AAEnD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;CACxC,CAAC;AAYjD,MAAM,CAAC,MAAM,kCAAkC,GAA4B,MAAM,CAAC,MAAM,CAAC;IACvF,eAAe,EAAE,6BAA6B;IAC9C,MAAM,EAAE,wBAAwB;IAChC,YAAY,EAAE,0BAA0B;IACxC,QAAQ,EAAE,0BAA0B;IACpC,MAAM,EAAE,wBAAwB;IAChC,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,iBAAiB;CAC9B,CAAC,CAAC;AA2NH,MAAM,WAAW,GAAqC;IACpD,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,aAAa,GAAG,wFAAwF,CAAC;AAE/G,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACjC,IAAI,GAAG,4BAA4B,CAAC;CACvD;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAI9B;IACA;IAJA,IAAI,GAAG,yBAAyB,CAAC;IACnD,YACE,OAAe,EACC,MAAc,EACd,OAAO,sBAAsB;QAE7C,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAyB;IAG/C,CAAC;CACF;AAED,MAAM,OAAO,iBAAiB;IACX,WAAW,CAA0B;IACrC,IAAI,CAAkB;IACtB,GAAG,CAAa;IAChB,eAAe,CAAS;IACxB,QAAQ,CAAS;IAElC,YAAY,OAAiC;QAC3C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,sCAAsC,CAAC;QACzF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,8BAA8B,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAC/D,6BAA6B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAA+B;QAC5C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,GAAG,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACzE,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,IAAI,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC;aAC/F,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aAC5E,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,cAAc,KAAK,IAAI,CAAC;aACjG,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC;aACpD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;YAC1G,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAC7E,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;QAC7E,CAAC,CAAC,CAAC;QACL,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC;QACtG,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACrF,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,IAAI,QAAQ,GAAwB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAExD,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,WAAW,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3F,IAAI,MAAM,CAAC,QAAQ;gBAAE,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtF,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,MAAM;QACxE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACrF,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC,CAAC,CAAC,CAAC;QACJ,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAA2B,EAC3B,QAA6B,EAC7B,WAAW,GAAG,KAAK;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,+BAA+B,CAAC;QAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACnG,MAAM,cAAc,GAAG,yBAAyB,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAgC;YAC3C,IAAI;YACJ,QAAQ;YACR,cAAc;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE,CAAC;gBACX,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACrC,MAAM,QAAQ,GAAG,WAAW;oBAC1B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAClD,OAAO;oBACL,SAAS,EAAE,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;oBAClD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,QAAQ,EAAE,IAAI;iBACf,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC1B,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAC/B,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtG,CAAC,CAAC;aACH,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO;gBACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,SAAS,EAAE;oBACT,cAAc;oBACd,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBAC9B,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;oBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;oBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAC5B,OAAO,EAAE,CAAC;oBACV,SAAS;oBACT,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,UAAU;oBACvC,SAAS;oBACT,WAAW;oBACX,UAAU,EAAE,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC;oBACnD,OAAO,EAAE,WAAW;wBAClB,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM;4BAC3B,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,QAAQ;gCAC7B,CAAC,CAAC,UAAU;gCACZ,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM;oCAC3B,CAAC,CAAC,SAAS;oCACX,CAAC,CAAC,SAAS;oBACnB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAyB;gBACtC,cAAc;gBACd,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBAC9B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;gBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;gBAC5B,OAAO,EAAE,CAAC;gBACV,SAAS;gBACT,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,UAAU;gBACvC,SAAS;gBACT,WAAW;gBACX,UAAU,EAAE,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC;gBACnD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBAC1C,KAAK,EAAE,OAAO;aACf,CAAC;YACF,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC/D,OAAO;oBACL,SAAS;oBACT,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,EAAE;iBAC/G,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AAED,SAAS,mBAAmB,CAC1B,MAAyB,EACzB,OAAoC;IAEpC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,IACE,SAAS,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc;WAChD,SAAS,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO;WAC9C,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK;WAC1C,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE;WACpC,SAAS,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EACtD,CAAC;QACD,MAAM,IAAI,0BAA0B,CAAC,mEAAmE,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB,EAAE,WAAmB;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAA+B,EAC/B,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAClC,eAAe,GAAG,sCAAsC;IAExD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAAE,MAAM,IAAI,0BAA0B,CAAC,qCAAqC,CAAC,CAAC;IACtH,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,eAAe,CAAoC,CAAC;IAC5G,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAwB,CAAC;IAClG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,6BAA6B;QACtC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO;QACP,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,SAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC9E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,6BAA6B,EAAE,CAAC;QACxE,MAAM,IAAI,0BAA0B,CAAC,qCAAqC,6BAA6B,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACpF,MAAM,IAAI,0BAA0B,CAAC,sDAAsD,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,0BAA0B,CAAC,0CAA0C,CAAC,CAAC;IAClH,OAAO;QACL,OAAO,EAAE,6BAA6B;QACtC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACpF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IACrE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,oBAAoB,CAAC,CAAC;IAC9F,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC9E,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,mCAAmC,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,KAA6B,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACpF,CAAC;IACD,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;WACrB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;WACtC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAkC,CAAC,EACvE,CAAC;QACD,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,6BAA6B,CAAC,CAAC;IACtF,CAAC;IACD,0BAA0B,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAyB,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;QACxH,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,2DAA2D,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACtE,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACpF,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,mCAAmC,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,0BAA0B,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrF,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,kCAAkC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACnG,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,sCAAsC,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,SAAS,GAAI,KAAK,CAAC,OAAmC,CAAC,SAAS,CAAC;IACvE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;QACtH,MAAM,IAAI,0BAA0B,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAqC,CAAC;AACpE,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAc,EAAE,OAAgC;IAClF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,YAAY,KAAK,6BAA6B,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAQ,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrG,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,YAAY,KAAK,8BAA8B,CAAC,CAAC;QACtG,CAAC;IACH,CAAC,CAAC;IACF,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACjE,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,+BAA+B,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC;gBACnI,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,yCAAyC,CAAC,CAAC;YAChG,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7F,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,kDAAkD,CAAC,CAAC;YACzG,CAAC;YACD,MAAM;QACR,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,GAAQ,CAAC;YACb,IAAI,CAAC;gBAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,yBAAyB,CAAC,CAAC;YAAC,CAAC;YACvH,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC9D,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,0DAA0D,CAAC,CAAC;YACjH,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC/E,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,sCAAsC,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC/I,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,6CAA6C,CAAC,CAAC;YACpG,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrG,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,8EAA8E,CAAC,CAAC;YACrI,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,MAAM;YACT,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,kCAAkC,CAAC,CAAC;YACzF,CAAC;YACD,MAAM;QACR,KAAK,UAAU;YACb,aAAa,CAAC,YAAY,CAAC,CAAC;YAC5B,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,kCAAkC,CAAC,CAAC;YACzF,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrE,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,iCAAiC,CAAC,CAAC;YACxF,CAAC;YACD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;gBAC7K,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,sDAAsD,CAAC,CAAC;YAC7G,CAAC;YACD,MAAM;QACR,KAAK,OAAO;YACV,aAAa,CAAC,OAAO,CAAC,CAAC;YACvB,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,mBAAmB,CAAC,cAAc,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC7I,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,4CAA4C,CAAC,CAAC;YACnG,CAAC;YACD,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAc,EAAE,KAAc;IAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,4BAA4B,CAAC,CAAC;IACvG,KAAK,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5I,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,YAAY,KAAK,8BAA8B,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;QAClJ,MAAM,IAAI,0BAA0B,CAAC,QAAQ,MAAM,mDAAmD,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAA4B,EAC5B,IAAyB;IAEzB,MAAM,UAAU,GAAkD;QAChE,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,CAAC;KACR,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,MAAc;IACvE,OAAO,UAAU,CAAC,GAAG,OAAO,SAAS,MAAM,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAuC,EAAE,QAA6B;IACvG,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzF,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACvI,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,KAAwC,EACxC,MAAc;IAEd,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,KAAK,YAAY;QAClC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,KAAK,WAAW;YACpB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO;QACL,MAAM;QACN,IAAI;QACJ,SAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG;QACzD,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAyC;IAC7E,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,0BAA0B,CAAC,uCAAuC,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,wBAAwB,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAmC,CAAC;AACzF,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc,EAAE,QAAgB;IAChE,MAAM,SAAS,GAAG,IAAI,OAAO,EAAU,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,SAAkB,EAAE,GAAY,EAAmB,EAAE;QAClE,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACxD,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5G,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,0BAA0B,CAAC,gDAAgD,CAAC,CAAC;YACxH,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,0BAA0B,CAAC,iDAAiD,CAAC,CAAC;QACtH,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,MAAM,MAAM,GAAoB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAoC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9H,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAC1E,IAAI,KAAK,GAAG,QAAQ;QAAE,MAAM,IAAI,0BAA0B,CAAC,gCAAgC,QAAQ,QAAQ,CAAC,CAAC;IAC7G,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,QAA2B,EAAE,KAAyB;IACxE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,KAAa;IAC/C,MAAM,UAAU,GAAG,OAAO;SACvB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACpC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CACpB,KAA2B,EAC3B,QAA6B,EAC7B,IAAqC;IAErC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,0EAA0E;AAC1E,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,IAAI,IAAI,CAAC;QACV,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC7B,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAA6B,0BAA0B,CAAC,CAAC;AACtF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAuB,wBAAwB,CAAC,CAAC;AACpF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAmB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAuB,CAAC,CAAC;AACtG,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAqB,0BAA0B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-hooks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-hooks.test.d.ts","sourceRoot":"","sources":["../src/runtime-hooks.test.ts"],"names":[],"mappings":""}