@syncular/server-hono 0.0.1-73 → 0.0.1-89

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.
@@ -4,7 +4,7 @@
4
4
  * Provides utilities for validating API keys in relay/proxy routes.
5
5
  */
6
6
  import { sql } from 'kysely';
7
- import { ApiKeyTypeSchema } from './console/schemas';
7
+ import { ApiKeyTypeSchema } from './console/schemas.js';
8
8
  /**
9
9
  * Validates an API key from Authorization header.
10
10
  * Updates last_used_at on successful validation.
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Provides monitoring and operations endpoints for the @syncular dashboard.
5
5
  */
6
- export { createConsoleEventEmitter, createConsoleRoutes, createTokenAuthenticator, } from './routes';
6
+ export { createConsoleEventEmitter, createConsoleRoutes, createTokenAuthenticator, } from './routes.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -20,7 +20,7 @@ import { Hono } from 'hono';
20
20
  import { cors } from 'hono/cors';
21
21
  import { describeRoute, resolver, validator as zValidator } from 'hono-openapi';
22
22
  import { z } from 'zod';
23
- import { ApiKeyTypeSchema, ConsoleApiKeyCreateRequestSchema, ConsoleApiKeyCreateResponseSchema, ConsoleApiKeyRevokeResponseSchema, ConsoleApiKeySchema, ConsoleClearEventsResultSchema, ConsoleClientSchema, ConsoleCommitDetailSchema, ConsoleCommitListItemSchema, ConsoleCompactResultSchema, ConsoleEvictResultSchema, ConsoleHandlerSchema, ConsolePaginatedResponseSchema, ConsolePaginationQuerySchema, ConsolePruneEventsResultSchema, ConsolePrunePreviewSchema, ConsolePruneResultSchema, ConsoleRequestEventSchema, LatencyQuerySchema, LatencyStatsResponseSchema, SyncStatsSchema, TimeseriesQuerySchema, TimeseriesStatsResponseSchema, } from './schemas';
23
+ import { ApiKeyTypeSchema, ConsoleApiKeyCreateRequestSchema, ConsoleApiKeyCreateResponseSchema, ConsoleApiKeyRevokeResponseSchema, ConsoleApiKeySchema, ConsoleClearEventsResultSchema, ConsoleClientSchema, ConsoleCommitDetailSchema, ConsoleCommitListItemSchema, ConsoleCompactResultSchema, ConsoleEvictResultSchema, ConsoleHandlerSchema, ConsolePaginatedResponseSchema, ConsolePaginationQuerySchema, ConsolePruneEventsResultSchema, ConsolePrunePreviewSchema, ConsolePruneResultSchema, ConsoleRequestEventSchema, LatencyQuerySchema, LatencyStatsResponseSchema, SyncStatsSchema, TimeseriesQuerySchema, TimeseriesStatsResponseSchema, } from './schemas.js';
24
24
  /**
25
25
  * Create a simple console event emitter for broadcasting live events.
26
26
  */
@@ -5,8 +5,8 @@
5
5
  * - handlers: array instead of TableRegistry
6
6
  * - Combined sync + console routes in one call
7
7
  */
8
- import { createConsoleEventEmitter, createConsoleRoutes, createTokenAuthenticator, } from './console';
9
- import { createSyncRoutes, getSyncWebSocketConnectionManager, } from './routes';
8
+ import { createConsoleEventEmitter, createConsoleRoutes, createTokenAuthenticator, } from './console/index.js';
9
+ import { createSyncRoutes, getSyncWebSocketConnectionManager, } from './routes.js';
10
10
  /**
11
11
  * Create a simplified sync server with sync and optional console routes.
12
12
  *
package/dist/index.js CHANGED
@@ -5,21 +5,21 @@
5
5
  * Keeps @syncular/server framework-agnostic.
6
6
  */
7
7
  // API Key Auth
8
- export * from './api-key-auth';
8
+ export * from './api-key-auth.js';
9
9
  // Blob routes
10
- export { createBlobRoutes } from './blobs';
10
+ export { createBlobRoutes } from './blobs.js';
11
11
  // Console
12
- export * from './console';
12
+ export * from './console/index.js';
13
13
  // Simplified server factory
14
- export { createSyncServer, } from './create-server';
14
+ export { createSyncServer, } from './create-server.js';
15
15
  // OpenAPI utilities
16
- export * from './openapi';
16
+ export * from './openapi.js';
17
17
  // Proxy
18
- export * from './proxy';
18
+ export * from './proxy/index.js';
19
19
  // Rate limiting
20
- export * from './rate-limit';
20
+ export * from './rate-limit.js';
21
21
  // Route types and factory
22
- export { createSyncRoutes, getSyncRealtimeUnsubscribe, getSyncWebSocketConnectionManager, } from './routes';
22
+ export { createSyncRoutes, getSyncRealtimeUnsubscribe, getSyncWebSocketConnectionManager, } from './routes.js';
23
23
  // WebSocket helpers for realtime sync
24
- export * from './ws';
24
+ export * from './ws.js';
25
25
  //# sourceMappingURL=index.js.map
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * WebSocket endpoint for admin database proxy.
5
5
  */
6
- export * from './connection-manager';
7
- export * from './routes';
6
+ export * from './connection-manager.js';
7
+ export * from './routes.js';
8
8
  //# sourceMappingURL=index.js.map
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { logSyncEvent } from '@syncular/core';
7
7
  import { Hono } from 'hono';
8
- import { ProxyConnectionManager } from './connection-manager';
8
+ import { ProxyConnectionManager } from './connection-manager.js';
9
9
  const proxyConnectionManagerMap = new WeakMap();
10
10
  /**
11
11
  * Create Hono routes for the proxy WebSocket endpoint.
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/dist/routes.js CHANGED
@@ -12,8 +12,8 @@ import { Hono } from 'hono';
12
12
  import { describeRoute, resolver, validator as zValidator } from 'hono-openapi';
13
13
  import { sql, } from 'kysely';
14
14
  import { z } from 'zod';
15
- import { createRateLimiter, DEFAULT_SYNC_RATE_LIMITS, } from './rate-limit';
16
- import { createWebSocketConnection, WebSocketConnectionManager, } from './ws';
15
+ import { createRateLimiter, DEFAULT_SYNC_RATE_LIMITS, } from './rate-limit.js';
16
+ import { createWebSocketConnection, WebSocketConnectionManager, } from './ws.js';
17
17
  /**
18
18
  * WeakMaps for storing Hono-instance-specific data without augmenting the type.
19
19
  */
@@ -61,35 +61,60 @@ export function createSyncRoutes(options) {
61
61
  (typeof crypto !== 'undefined' && 'randomUUID' in crypto
62
62
  ? crypto.randomUUID()
63
63
  : `${Date.now()}-${Math.random().toString(16).slice(2)}`);
64
+ const loggedAsyncFailureKeys = new Set();
65
+ const logAsyncFailureOnce = (key, event) => {
66
+ if (loggedAsyncFailureKeys.has(key))
67
+ return;
68
+ loggedAsyncFailureKeys.add(key);
69
+ logSyncEvent(event);
70
+ };
64
71
  if (wsConnectionManager && realtimeBroadcaster) {
65
72
  const unsubscribe = realtimeBroadcaster.subscribe((event) => {
66
- void handleRealtimeEvent(event).catch(() => { });
73
+ void handleRealtimeEvent(event).catch((error) => {
74
+ logAsyncFailureOnce('sync.realtime.broadcast_delivery_failed', {
75
+ event: 'sync.realtime.broadcast_delivery_failed',
76
+ error: error instanceof Error ? error.message : String(error),
77
+ sourceEventType: event.type,
78
+ });
79
+ });
67
80
  });
68
81
  realtimeUnsubscribeMap.set(routes, unsubscribe);
69
82
  }
70
- // -------------------------------------------------------------------------
71
- // Request event recording (for console inspector)
72
- // -------------------------------------------------------------------------
73
83
  const recordRequestEvent = async (event) => {
74
- try {
75
- const tablesValue = options.dialect.arrayToDb(event.tables ?? []);
76
- await sql `
77
- INSERT INTO sync_request_events (
78
- event_type, actor_id, client_id, status_code, outcome,
79
- duration_ms, commit_seq, operation_count, row_count,
80
- tables, error_message, transport_path
81
- ) VALUES (
82
- ${event.eventType}, ${event.actorId}, ${event.clientId},
83
- ${event.statusCode}, ${event.outcome}, ${event.durationMs},
84
- ${event.commitSeq ?? null}, ${event.operationCount ?? null},
85
- ${event.rowCount ?? null}, ${tablesValue}, ${event.errorMessage ?? null},
86
- ${event.transportPath}
87
- )
88
- `.execute(options.db);
89
- }
90
- catch {
91
- // Silently ignore - event recording should not block sync
92
- }
84
+ const tablesValue = options.dialect.arrayToDb(event.tables ?? []);
85
+ await sql `
86
+ INSERT INTO sync_request_events (
87
+ event_type, actor_id, client_id, status_code, outcome,
88
+ duration_ms, commit_seq, operation_count, row_count,
89
+ tables, error_message, transport_path
90
+ ) VALUES (
91
+ ${event.eventType}, ${event.actorId}, ${event.clientId},
92
+ ${event.statusCode}, ${event.outcome}, ${event.durationMs},
93
+ ${event.commitSeq ?? null}, ${event.operationCount ?? null},
94
+ ${event.rowCount ?? null}, ${tablesValue}, ${event.errorMessage ?? null},
95
+ ${event.transportPath}
96
+ )
97
+ `.execute(options.db);
98
+ };
99
+ const recordRequestEventInBackground = (event) => {
100
+ void recordRequestEvent(event).catch((error) => {
101
+ logAsyncFailureOnce('sync.request_event_record_failed', {
102
+ event: 'sync.request_event_record_failed',
103
+ userId: event.actorId,
104
+ clientId: event.clientId,
105
+ requestEventType: event.eventType,
106
+ error: error instanceof Error ? error.message : String(error),
107
+ });
108
+ });
109
+ };
110
+ const authCache = new WeakMap();
111
+ const getAuth = (c) => {
112
+ const cached = authCache.get(c);
113
+ if (cached)
114
+ return cached;
115
+ const pending = options.authenticate(c);
116
+ authCache.set(c, pending);
117
+ return pending;
93
118
  };
94
119
  // -------------------------------------------------------------------------
95
120
  // Rate limiting (optional)
@@ -104,17 +129,47 @@ export function createSyncRoutes(options) {
104
129
  return createRateLimiter({
105
130
  ...limitConfig,
106
131
  keyGenerator: async (c) => {
107
- const auth = await options.authenticate(c);
132
+ const auth = await getAuth(c);
108
133
  return auth?.actorId ?? null;
109
134
  },
110
135
  });
111
136
  };
112
137
  const pullLimiter = createAuthBasedRateLimiter(pullRateLimit);
113
- if (pullLimiter)
114
- routes.use('/', pullLimiter);
115
138
  const pushLimiter = createAuthBasedRateLimiter(pushRateLimit);
116
- if (pushLimiter)
117
- routes.use('/', pushLimiter);
139
+ const syncRateLimiter = async (c, next) => {
140
+ if (!pullLimiter && !pushLimiter)
141
+ return next();
142
+ let shouldApplyPull = pullLimiter !== null;
143
+ let shouldApplyPush = pushLimiter !== null;
144
+ if (pullLimiter && pushLimiter && c.req.method === 'POST') {
145
+ try {
146
+ const parsed = await c.req.raw.clone().json();
147
+ if (parsed !== null && typeof parsed === 'object') {
148
+ shouldApplyPull = Reflect.get(parsed, 'pull') !== undefined;
149
+ shouldApplyPush = Reflect.get(parsed, 'push') !== undefined;
150
+ }
151
+ }
152
+ catch {
153
+ // Keep default behavior and apply both limiters when payload parsing fails.
154
+ }
155
+ }
156
+ if (pullLimiter && shouldApplyPull && pushLimiter && shouldApplyPush) {
157
+ return pullLimiter(c, async () => {
158
+ const pushResult = await pushLimiter(c, next);
159
+ if (pushResult instanceof Response) {
160
+ c.res = pushResult;
161
+ }
162
+ });
163
+ }
164
+ if (pullLimiter && shouldApplyPull) {
165
+ return pullLimiter(c, next);
166
+ }
167
+ if (pushLimiter && shouldApplyPush) {
168
+ return pushLimiter(c, next);
169
+ }
170
+ return next();
171
+ };
172
+ routes.use('/', syncRateLimiter);
118
173
  }
119
174
  // -------------------------------------------------------------------------
120
175
  // GET /health
@@ -155,7 +210,7 @@ export function createSyncRoutes(options) {
155
210
  },
156
211
  },
157
212
  }), zValidator('json', SyncCombinedRequestSchema), async (c) => {
158
- const auth = await options.authenticate(c);
213
+ const auth = await getAuth(c);
159
214
  if (!auth)
160
215
  return c.json({ error: 'UNAUTHENTICATED' }, 401);
161
216
  const partitionId = auth.partitionId ?? 'default';
@@ -195,7 +250,7 @@ export function createSyncRoutes(options) {
195
250
  status: pushed.response.status,
196
251
  commitSeq: pushed.response.commitSeq,
197
252
  });
198
- recordRequestEvent({
253
+ recordRequestEventInBackground({
199
254
  eventType: 'push',
200
255
  actorId: auth.actorId,
201
256
  clientId,
@@ -227,7 +282,14 @@ export function createSyncRoutes(options) {
227
282
  scopeKeys,
228
283
  sourceInstanceId: instanceId,
229
284
  })
230
- .catch(() => { });
285
+ .catch((error) => {
286
+ logAsyncFailureOnce('sync.realtime.broadcast_publish_failed', {
287
+ event: 'sync.realtime.broadcast_publish_failed',
288
+ userId: auth.actorId,
289
+ clientId,
290
+ error: error instanceof Error ? error.message : String(error),
291
+ });
292
+ });
231
293
  }
232
294
  }
233
295
  }
@@ -287,13 +349,20 @@ export function createSyncRoutes(options) {
287
349
  throw err;
288
350
  }
289
351
  // Fire-and-forget bookkeeping
290
- recordClientCursor(options.db, options.dialect, {
352
+ void recordClientCursor(options.db, options.dialect, {
291
353
  partitionId,
292
354
  clientId,
293
355
  actorId: auth.actorId,
294
356
  cursor: pullResult.clientCursor,
295
357
  effectiveScopes: pullResult.effectiveScopes,
296
- }).catch(() => { });
358
+ }).catch((error) => {
359
+ logAsyncFailureOnce('sync.client_cursor_record_failed', {
360
+ event: 'sync.client_cursor_record_failed',
361
+ userId: auth.actorId,
362
+ clientId,
363
+ error: error instanceof Error ? error.message : String(error),
364
+ });
365
+ });
297
366
  wsConnectionManager?.updateClientScopeKeys(clientId, applyPartitionToScopeKeys(partitionId, scopeValuesToScopeKeys(pullResult.effectiveScopes)));
298
367
  const pullDurationMs = timer();
299
368
  logSyncEvent({
@@ -303,7 +372,7 @@ export function createSyncRoutes(options) {
303
372
  subscriptionCount: pullResult.response.subscriptions.length,
304
373
  clientCursor: pullResult.clientCursor,
305
374
  });
306
- recordRequestEvent({
375
+ recordRequestEventInBackground({
307
376
  eventType: 'pull',
308
377
  actorId: auth.actorId,
309
378
  clientId,
@@ -330,6 +399,11 @@ export function createSyncRoutes(options) {
330
399
  responses: {
331
400
  200: {
332
401
  description: 'Snapshot chunk data (gzip-compressed NDJSON)',
402
+ content: {
403
+ 'application/x-ndjson': {
404
+ schema: resolver(z.string()),
405
+ },
406
+ },
333
407
  },
334
408
  304: {
335
409
  description: 'Not modified (cached)',
@@ -354,7 +428,7 @@ export function createSyncRoutes(options) {
354
428
  },
355
429
  },
356
430
  }), zValidator('param', snapshotChunkParamsSchema), async (c) => {
357
- const auth = await options.authenticate(c);
431
+ const auth = await getAuth(c);
358
432
  if (!auth)
359
433
  return c.json({ error: 'UNAUTHENTICATED' }, 401);
360
434
  const partitionId = auth.partitionId ?? 'default';
@@ -407,7 +481,7 @@ export function createSyncRoutes(options) {
407
481
  // -------------------------------------------------------------------------
408
482
  if (wsConnectionManager && websocketConfig?.enabled) {
409
483
  routes.get('/realtime', async (c) => {
410
- const auth = await options.authenticate(c);
484
+ const auth = await getAuth(c);
411
485
  if (!auth)
412
486
  return c.json({ error: 'UNAUTHENTICATED' }, 401);
413
487
  const partitionId = auth.partitionId ?? 'default';
@@ -639,7 +713,7 @@ export function createSyncRoutes(options) {
639
713
  status: pushed.response.status,
640
714
  commitSeq: pushed.response.commitSeq,
641
715
  });
642
- recordRequestEvent({
716
+ recordRequestEventInBackground({
643
717
  eventType: 'push',
644
718
  actorId,
645
719
  clientId,
@@ -671,7 +745,14 @@ export function createSyncRoutes(options) {
671
745
  scopeKeys,
672
746
  sourceInstanceId: instanceId,
673
747
  })
674
- .catch(() => { });
748
+ .catch((error) => {
749
+ logAsyncFailureOnce('sync.realtime.broadcast_publish_failed', {
750
+ event: 'sync.realtime.broadcast_publish_failed',
751
+ userId: actorId,
752
+ clientId,
753
+ error: error instanceof Error ? error.message : String(error),
754
+ });
755
+ });
675
756
  }
676
757
  }
677
758
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AASxB,OAAO,EAEL,6BAA6B,EAG7B,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAIL,GAAG,GACJ,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EAEzB,0BAA0B,GAC3B,MAAM,MAAM,CAAC;AAEd;;GAEG;AACH,MAAM,sBAAsB,GAAG,IAAI,OAAO,EAAoC,CAAC;AAC/E,MAAM,sBAAsB,GAAG,IAAI,OAAO,EAAoB,CAAC;AAmH/D,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAC9B,OAAoC,EAC9B;IACN,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,MAAM,eAAe,GAAG,IAAI,aAAa,EAAM,CAAC;IAChD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IAClC,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,GAAG,CAAC;IAC9D,MAAM,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,IAAI,GAAG,CAAC;IACtE,MAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,IAAI,IAAI,CAAC;IACzE,MAAM,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,IAAI,EAAE,CAAC;IACrE,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,GAAG,CAAC;IAEhE,4EAA4E;IAC5E,wDAAwD;IACxD,4EAA4E;IAE5E,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;IACzC,IAAI,eAAe,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,eAAe,EAAE,OAAO;QAClD,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB;YAC5B,IAAI,0BAA0B,CAAC;gBAC7B,mBAAmB,EAAE,eAAe,CAAC,mBAAmB,IAAI,MAAM;aACnE,CAAC,CAAC;QACL,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,mBAAmB,EAAE,CAAC;QACxB,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IAED,4EAA4E;IAC5E,iDAAiD;IACjD,4EAA4E;IAE5E,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC;IACjE,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,EAAE,UAAU;QAC3B,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,YAAY,IAAI,MAAM;YACtD,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;YACrB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9D,IAAI,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAC/C,CAAC,KAAwB,EAAE,EAAE,CAAC;YAC5B,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAAA,CACjD,CACF,CAAC;QAEF,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,4EAA4E;IAC5E,kDAAkD;IAClD,4EAA4E;IAE5E,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAajC,EAAE,EAAE,CAAC;QACJ,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,GAAG,CAAA;;;;;;YAMH,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ;YACpD,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,UAAU;YACvD,KAAK,CAAC,SAAS,IAAI,IAAI,KAAK,KAAK,CAAC,cAAc,IAAI,IAAI;YACxD,KAAK,CAAC,QAAQ,IAAI,IAAI,KAAK,WAAW,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI;YACrE,KAAK,CAAC,aAAa;;OAExB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IAAA,CACF,CAAC;IAEF,4EAA4E;IAC5E,2BAA2B;IAC3B,4EAA4E;IAE5E,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;IACzC,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,aAAa,GACjB,eAAe,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAC;QACzD,MAAM,aAAa,GACjB,eAAe,EAAE,IAAI,IAAI,wBAAwB,CAAC,IAAI,CAAC;QAEzD,MAAM,0BAA0B,GAAG,CACjC,WAAyE,EACzE,EAAE,CAAC;YACH,IAAI,WAAW,KAAK,KAAK,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YACvD,OAAO,iBAAiB,CAAC;gBACvB,GAAG,WAAW;gBACd,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC3C,OAAO,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;gBAAA,CAC9B;aACF,CAAC,CAAC;QAAA,CACJ,CAAC;QAEF,MAAM,WAAW,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,WAAW;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAE9C,MAAM,WAAW,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,WAAW;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;IAEH,4EAA4E;IAC5E,mDAAmD;IACnD,4EAA4E;IAE5E,MAAM,CAAC,IAAI,CACT,GAAG,EACH,aAAa,CAAC;QACZ,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,wBAAwB;QACjC,WAAW,EACT,oEAAoE;QACtE,SAAS,EAAE;YACT,GAAG,EAAE;gBACH,WAAW,EAAE,wBAAwB;gBACrC,OAAO,EAAE;oBACP,kBAAkB,EAAE;wBAClB,MAAM,EAAE,QAAQ,CAAC,0BAA0B,CAAC;qBAC7C;iBACF;aACF;YACD,GAAG,EAAE;gBACH,WAAW,EAAE,iBAAiB;gBAC9B,OAAO,EAAE;oBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;iBAC9D;aACF;YACD,GAAG,EAAE;gBACH,WAAW,EAAE,iBAAiB;gBAC9B,OAAO,EAAE;oBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;iBAC9D;aACF;SACF;KACF,CAAC,EACF,UAAU,CAAC,MAAM,EAAE,yBAAyB,CAAC,EAC7C,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAElD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,IAAI,YAEkD,CAAC;QACvD,IAAI,YAAgD,CAAC;QAErD,qBAAqB;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;gBAC1C,OAAO,CAAC,CAAC,IAAI,CACX;oBACE,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,WAAW,oBAAoB,sBAAsB;iBAC/D,EACD,GAAG,CACJ,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAEhC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,eAAe;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW;gBACX,OAAO,EAAE;oBACP,QAAQ;oBACR,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;oBACxC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;oBAChC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;iBACvC;aACF,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC;YAE/B,YAAY,CAAC;gBACX,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,UAAU,EAAE,cAAc;gBAC1B,cAAc,EAAE,OAAO,CAAC,MAAM;gBAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBAC9B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;aACrC,CAAC,CAAC;YAEH,kBAAkB,CAAC;gBACjB,SAAS,EAAE,MAAM;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ;gBACR,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBACnC,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBAC/B,UAAU,EAAE,cAAc;gBAC1B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;gBACpC,cAAc,EAAE,OAAO,CAAC,MAAM;gBAC9B,MAAM,EAAE,MAAM,CAAC,cAAc;aAC9B,CAAC,CAAC;YAEH,mBAAmB;YACnB,IACE,mBAAmB;gBACnB,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI;gBAC3B,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;gBACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,QAAQ,EAC7C,CAAC;gBACD,MAAM,SAAS,GAAG,yBAAyB,CACzC,WAAW,EACX,MAAM,CAAC,SAAS,CACjB,CAAC;gBACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,mBAAmB,CAAC,eAAe,CACjC,SAAS,EACT,MAAM,CAAC,QAAQ,CAAC,SAAS,EACzB;wBACE,gBAAgB,EAAE,CAAC,QAAQ,CAAC;wBAC5B,OAAO,EAAE,MAAM,CAAC,cAAc;qBAC/B,CACF,CAAC;oBAEF,IAAI,mBAAmB,EAAE,CAAC;wBACxB,mBAAmB;6BAChB,OAAO,CAAC;4BACP,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;4BACpC,WAAW;4BACX,SAAS;4BACT,gBAAgB,EAAE,UAAU;yBAC7B,CAAC;6BACD,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;gBAC7D,OAAO,CAAC,CAAC,IAAI,CACX;oBACE,KAAK,EAAE,iBAAiB;oBACxB,OAAO,EAAE,+BAA+B,uBAAuB,GAAG;iBACnE,EACD,GAAG,CACJ,CAAC;YACJ,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC1C,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;gBAClB,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAChC,OAAO,CAAC,CAAC,IAAI,CACX;wBACE,KAAK,EAAE,iBAAiB;wBACxB,OAAO,EAAE,8BAA8B,EAAE,EAAE;qBAC5C,EACD,GAAG,CACJ,CAAC;gBACJ,CAAC;gBACD,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YAED,MAAM,OAAO,GAAG;gBACd,QAAQ;gBACR,YAAY,EAAE,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,EAC5B,CAAC,EACD,mBAAmB,CACpB;gBACD,iBAAiB,EAAE,QAAQ,CACzB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,EACnC,CAAC,EACD,wBAAwB,CACzB;gBACD,gBAAgB,EAAE,QAAQ,CACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,EAC/B,CAAC,EACD,uBAAuB,CACxB;gBACD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI;gBACzC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACnD,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAsC;oBAC/D,MAAM,EAAE,GAAG,CAAC,MAAiC;oBAC7C,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;oBAChC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;iBAC3C,CAAC,CAAC;aACJ,CAAC;YAEF,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAEhC,IAAI,UAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,IAAI,CAAC;oBACtB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM,EAAE,eAAe;oBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,WAAW;oBACX,OAAO;oBACP,YAAY,EAAE,OAAO,CAAC,YAAY;iBACnC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,6BAA6B,EAAE,CAAC;oBACjD,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EACvD,GAAG,CACJ,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,8BAA8B;YAC9B,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;gBAC9C,WAAW;gBACX,QAAQ;gBACR,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,UAAU,CAAC,YAAY;gBAC/B,eAAe,EAAE,UAAU,CAAC,eAAe;aAC5C,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YAEnB,mBAAmB,EAAE,qBAAqB,CACxC,QAAQ,EACR,yBAAyB,CACvB,WAAW,EACX,sBAAsB,CAAC,UAAU,CAAC,eAAe,CAAC,CACnD,CACF,CAAC;YAEF,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC;YAE/B,YAAY,CAAC;gBACX,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,UAAU,EAAE,cAAc;gBAC1B,iBAAiB,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM;gBAC3D,YAAY,EAAE,UAAU,CAAC,YAAY;aACtC,CAAC,CAAC;YAEH,kBAAkB,CAAC;gBACjB,SAAS,EAAE,MAAM;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ;gBACR,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBACnC,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,SAAS;gBAClB,UAAU,EAAE,cAAc;aAC3B,CAAC,CAAC;YAEH,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,CACX;YACE,EAAE,EAAE,IAAa;YACjB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,EACD,GAAG,CACJ,CAAC;IAAA,CACH,CACF,CAAC;IAEF,4EAA4E;IAC5E,gCAAgC;IAChC,4EAA4E;IAE5E,MAAM,CAAC,GAAG,CACR,2BAA2B,EAC3B,aAAa,CAAC;QACZ,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,8CAA8C;QAC3D,SAAS,EAAE;YACT,GAAG,EAAE;gBACH,WAAW,EAAE,8CAA8C;aAC5D;YACD,GAAG,EAAE;gBACH,WAAW,EAAE,uBAAuB;aACrC;YACD,GAAG,EAAE;gBACH,WAAW,EAAE,iBAAiB;gBAC9B,OAAO,EAAE;oBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;iBAC9D;aACF;YACD,GAAG,EAAE;gBACH,WAAW,EAAE,WAAW;gBACxB,OAAO,EAAE;oBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;iBAC9D;aACF;YACD,GAAG,EAAE;gBACH,WAAW,EAAE,WAAW;gBACxB,OAAO,EAAE;oBACP,kBAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;iBAC9D;aACF;SACF;KACF,CAAC,EACF,UAAU,CAAC,OAAO,EAAE,yBAAyB,CAAC,EAC9C,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAElD,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE;YACzD,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,oEAAoE;QACpE,uEAAuE;QACvE,mDAAmD;QAEnD,MAAM,IAAI,GAAG,WAAW,KAAK,CAAC,MAAM,GAAG,CAAC;QACxC,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,WAAW,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI;oBACV,eAAe,EAAE,oBAAoB;oBACrC,IAAI,EAAE,eAAe;iBACtB;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAgB,EAAE;YAC1C,MAAM,EAAE,GAAG;YACX,OAAO,EAAE;gBACP,cAAc,EAAE,qCAAqC;gBACrD,kBAAkB,EAAE,MAAM;gBAC1B,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3C,IAAI,EAAE,IAAI;gBACV,eAAe,EAAE,oBAAoB;gBACrC,IAAI,EAAE,eAAe;gBACrB,iBAAiB,EAAE,KAAK,CAAC,OAAO;gBAChC,qBAAqB,EAAE,KAAK,CAAC,MAAM;gBACnC,uBAAuB,EAAE,KAAK,CAAC,QAAQ;gBACvC,0BAA0B,EAAE,KAAK,CAAC,WAAW;aAC9C;SACF,CAAC,CAAC;IAAA,CACJ,CACF,CAAC;IAEF,4EAA4E;IAC5E,8CAA8C;IAC9C,4EAA4E;IAE5E,IAAI,mBAAmB,IAAI,eAAe,EAAE,OAAO,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;YAElD,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO,CAAC,CAAC,IAAI,CACX;oBACE,KAAK,EAAE,iBAAiB;oBACxB,OAAO,EAAE,kCAAkC;iBAC5C,EACD,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,MAAM,qBAAqB,GAAG,iBAAiB,CAC7C,CAAC,EACD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAC7B,CAAC;YAEF,kEAAkE;YAClE,2FAA2F;YAC3F,IAAI,gBAAgB,GAAa,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CACpC,qBAAqB,CAMtB,CAAC;gBAEF,MAAM,GAAG,GAAG,MAAM,QAAQ;qBACvB,SAAS,EAAE;qBACX,KAAK,CAAC,GAAG,CAAS,kBAAkB,WAAW,EAAE,CAAC;qBAClD,KAAK,CAAC,GAAG,CAAS,eAAe,QAAQ,EAAE,CAAC;qBAC5C,gBAAgB,EAAE,CAAC;gBAEtB,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7C,CAAC;gBAED,MAAM,GAAG,GAAG,GAAG,EAAE,gBAAgB,CAAC;gBAClC,IAAI,MAAM,GAAY,GAAG,CAAC;gBAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC3B,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM,GAAG,IAAI,CAAC;oBAChB,CAAC;gBACH,CAAC;gBAED,gBAAgB,GAAG,yBAAyB,CAC1C,WAAW,EACX,sBAAsB,CAAC,MAAM,CAAC,CAC/B,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;YAED,MAAM,mBAAmB,GAAG,eAAe,CAAC,mBAAmB,IAAI,IAAI,CAAC;YACxE,MAAM,uBAAuB,GAC3B,eAAe,CAAC,uBAAuB,IAAI,CAAC,CAAC;YAE/C,IACE,mBAAmB,GAAG,CAAC;gBACvB,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,mBAAmB,EAChE,CAAC;gBACD,YAAY,CAAC;oBACX,KAAK,EAAE,wBAAwB;oBAC/B,MAAM,EAAE,IAAI,CAAC,OAAO;oBACpB,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAC;gBACH,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,EAAE,GAAG,CAAC,CAAC;YACpE,CAAC;YAED,IACE,uBAAuB,GAAG,CAAC;gBAC3B,mBAAmB,CAAC,kBAAkB,CAAC,QAAQ,CAAC;oBAC9C,uBAAuB,EACzB,CAAC;gBACD,YAAY,CAAC;oBACX,KAAK,EAAE,wBAAwB;oBAC/B,MAAM,EAAE,IAAI,CAAC,OAAO;oBACpB,MAAM,EAAE,gBAAgB;iBACzB,CAAC,CAAC;gBACH,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,EAAE,GAAG,CAAC,CAAC;YACrE,CAAC;YAED,YAAY,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAEvE,IAAI,UAAU,GAAwB,IAAI,CAAC;YAC3C,IAAI,OAAO,GAAwD,IAAI,CAAC;YAExE,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,CAAC;YAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,gBAAgB,CAAC,CAAC,EAAE;gBACzB,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE;oBACf,MAAM,IAAI,GAAG,yBAAyB,CAAC,EAAE,EAAE;wBACzC,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,QAAQ;wBACR,aAAa,EAAE,qBAAqB;qBACrC,CAAC,CAAC;oBACH,OAAO,GAAG,IAAI,CAAC;oBAEf,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;oBAClE,IAAI,CAAC,aAAa,EAAE,CAAC;gBAAA,CACtB;gBACD,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE;oBACjB,UAAU,EAAE,EAAE,CAAC;oBACf,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC;wBACX,KAAK,EAAE,0BAA0B;wBACjC,MAAM,EAAE,IAAI,CAAC,OAAO;qBACrB,CAAC,CAAC;gBAAA,CACJ;gBACD,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE;oBACjB,UAAU,EAAE,EAAE,CAAC;oBACf,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC;wBACX,KAAK,EAAE,0BAA0B;wBACjC,MAAM,EAAE,IAAI,CAAC,OAAO;qBACrB,CAAC,CAAC;gBAAA,CACJ;gBACD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;oBAClB,IAAI,CAAC,OAAO;wBAAE,OAAO;oBACrB,IAAI,CAAC;wBACH,MAAM,GAAG,GACP,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC5B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;4BAAE,OAAO;wBAE5C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BACxB,KAAK,YAAY,CACf,GAAG,EACH,OAAO,EACP,IAAI,CAAC,OAAO,EACZ,WAAW,EACX,QAAQ,CACT,CAAC;4BACF,OAAO;wBACT,CAAC;wBAED,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,QAAQ;4BAAE,OAAO;wBAErD,MAAM,QAAQ,GAAG,6BAA6B,CAC5C,WAAW,EACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrB,CAAC;wBACF,IAAI,CAAC,QAAQ;4BAAE,OAAO;wBAEtB,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;4BACnB,KAAK,MAAM;gCACT,IACE,CAAC,mBAAmB,CAAC,YAAY,CAC/B,QAAQ,EACR,QAAQ,EACR,GAAG,CAAC,QAAQ,CACb,EACD,CAAC;oCACD,YAAY,CAAC;wCACX,KAAK,EAAE,iCAAiC;wCACxC,MAAM,EAAE,IAAI,CAAC,OAAO;wCACpB,MAAM,EAAE,sBAAsB;wCAC9B,QAAQ;qCACT,CAAC,CAAC;oCACH,OAAO;gCACT,CAAC;gCACD,oDAAoD;gCACpD,CAAC;oCACC,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oCAC1D,OAAO,CAAC,YAAY,CAAC;wCACnB,MAAM,EAAE,UAAU;wCAClB,QAAQ;wCACR,OAAO;qCACR,CAAC,CAAC;gCACL,CAAC;gCACD,MAAM;4BACR,KAAK,OAAO;gCACV,mBAAmB,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCACtD,MAAM;4BACR,KAAK,QAAQ;gCACX,IACE,CAAC,mBAAmB,CAAC,sBAAsB,CACzC,QAAQ,EACR,QAAQ,EACR,GAAG,CAAC,QAAQ,IAAI,EAAE,CACnB;oCACD,CAAC,mBAAmB,CAAC,4BAA4B,CAC/C,QAAQ,EACR,QAAQ,CACT,EACD,CAAC;oCACD,YAAY,CAAC;wCACX,KAAK,EAAE,iCAAiC;wCACxC,MAAM,EAAE,IAAI,CAAC,OAAO;wCACpB,MAAM,EAAE,sBAAsB;wCAC9B,QAAQ;qCACT,CAAC,CAAC;gCACL,CAAC;gCACD,MAAM;wBACV,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,4BAA4B;oBAC9B,CAAC;gBAAA,CACF;aACF,CAAC,CAAC;QAAA,CACJ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;IAEd,KAAK,UAAU,mBAAmB,CAAC,KAAwB,EAAiB;QAC1E,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QACpC,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,KAAK,UAAU;YAAE,OAAO;QAE5E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC;QACnD,MAAM,SAAS,GACb,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAC,KAAK,CAAC,SAAS;YACjB,CAAC,CAAC,MAAM,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAEpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACnC,mBAAmB,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAAA,CAC3D;IAED,KAAK,UAAU,YAAY,CACzB,GAA4B,EAC5B,IAAyB,EACzB,OAAe,EACf,WAAmB,EACnB,QAAgB,EACD;QACf,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CACrE,GAAG,CACJ,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,gBAAgB,CAAC;oBACpB,SAAS;oBACT,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE;wBACP,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE;qBAC/D;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,CAAC;oBACpB,SAAS;oBACT,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE;wBACP;4BACE,OAAO,EAAE,CAAC;4BACV,MAAM,EAAE,OAAO;4BACf,KAAK,EAAE,WAAW,oBAAoB,sBAAsB;yBAC7D;qBACF;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAEhC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;gBAC9B,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,eAAe;gBACvB,OAAO;gBACP,WAAW;gBACX,OAAO,EAAE;oBACP,QAAQ;oBACR,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;oBAC1C,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;oBAClC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;iBACzC;aACF,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC;YAE/B,YAAY,CAAC;gBACX,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,cAAc;gBAC1B,cAAc,EAAE,OAAO,CAAC,MAAM;gBAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBAC9B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;aACrC,CAAC,CAAC;YAEH,kBAAkB,CAAC;gBACjB,SAAS,EAAE,MAAM;gBACjB,OAAO;gBACP,QAAQ;gBACR,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBAC/B,UAAU,EAAE,cAAc;gBAC1B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;gBACpC,cAAc,EAAE,OAAO,CAAC,MAAM;gBAC9B,MAAM,EAAE,MAAM,CAAC,cAAc;aAC9B,CAAC,CAAC;YAEH,oCAAoC;YACpC,IACE,mBAAmB;gBACnB,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI;gBAC3B,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS;gBACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,QAAQ,EAC7C,CAAC;gBACD,MAAM,SAAS,GAAG,yBAAyB,CACzC,WAAW,EACX,MAAM,CAAC,SAAS,CACjB,CAAC;gBACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,mBAAmB,CAAC,eAAe,CACjC,SAAS,EACT,MAAM,CAAC,QAAQ,CAAC,SAAS,EACzB;wBACE,gBAAgB,EAAE,CAAC,QAAQ,CAAC;wBAC5B,OAAO,EAAE,MAAM,CAAC,cAAc;qBAC/B,CACF,CAAC;oBAEF,IAAI,mBAAmB,EAAE,CAAC;wBACxB,mBAAmB;6BAChB,OAAO,CAAC;4BACP,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;4BACpC,WAAW;4BACX,SAAS;4BACT,gBAAgB,EAAE,UAAU;yBAC7B,CAAC;6BACD,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC;gBACpB,SAAS;gBACT,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;gBAC9B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;gBACpC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;aACjC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;YAC/D,IAAI,CAAC,gBAAgB,CAAC;gBACpB,SAAS;gBACT,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;aAC3D,CAAC,CAAC;QACL,CAAC;IAAA,CACF;AAAA,CACF;AAED,MAAM,UAAU,iCAAiC,CAC/C,MAAY,EAC4B;IACxC,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAAA,CAC3C;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAY,EACc;IAC1B,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAAA,CAC3C;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAU;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,CAC5C;AAED,SAAS,iBAAiB,CACxB,CAAU,EACV,UAA0B,EACN;IACpB,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC9D,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,QAAQ,CAAC;AAAA,CACjB;AAED,SAAS,sBAAsB,CAAC,MAAe,EAAY;IACzD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAAE,SAAS;gBACpC,IAAI,CAAC,CAAC;oBAAE,SAAS;gBACjB,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAAA,CAC9B;AAED,SAAS,iBAAiB,CAAC,WAAmB,EAAE,QAAgB,EAAU;IACxE,OAAO,GAAG,WAAW,KAAK,QAAQ,EAAE,CAAC;AAAA,CACtC;AAED,SAAS,yBAAyB,CAChC,WAAmB,EACnB,SAA4B,EAClB;IACV,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAAA,CAC7B;AAED,SAAS,6BAA6B,CACpC,WAAmB,EACnB,QAAgB,EACR;IACR,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,WAAW,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7D,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,iBAAiB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAAA,CACjD;AAED,KAAK,UAAU,mBAAmB,CAChC,EAAc,EACd,SAAiB,EACjB,WAAmB,EACA;IACnB,iEAAiE;IACjE,MAAM,UAAU,GAAG,MAAM,GAAG,CAAqB;;WAExC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC;yBACX,SAAS;2BACP,WAAW;GACnC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAE7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GACV,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAEvE,KAAK,MAAM,CAAC,IAAI,yBAAyB,CACvC,WAAW,EACX,sBAAsB,CAAC,MAAM,CAAC,CAC/B,EAAE,CAAC;YACF,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAAA,CAC9B"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/server-hono",
3
- "version": "0.0.1-73",
3
+ "version": "0.0.1-89",
4
4
  "description": "Hono adapter for the Syncular server with OpenAPI support",
5
5
  "license": "MIT",
6
6
  "author": "Benjamin Kniffler",
@@ -0,0 +1,181 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'bun:test';
2
+ import {
3
+ createServerHandler,
4
+ ensureSyncSchema,
5
+ type SyncCoreDb,
6
+ } from '@syncular/server';
7
+ import { Hono } from 'hono';
8
+ import type { Kysely } from 'kysely';
9
+ import { createBunSqliteDb } from '../../../dialect-bun-sqlite/src';
10
+ import { createSqliteServerDialect } from '../../../server-dialect-sqlite/src';
11
+ import { resetRateLimitStore } from '../rate-limit';
12
+ import { createSyncRoutes } from '../routes';
13
+
14
+ interface TasksTable {
15
+ id: string;
16
+ user_id: string;
17
+ title: string;
18
+ server_version: number;
19
+ }
20
+
21
+ interface ServerDb extends SyncCoreDb {
22
+ tasks: TasksTable;
23
+ }
24
+
25
+ interface ClientDb {
26
+ tasks: TasksTable;
27
+ }
28
+
29
+ describe('createSyncRoutes rate limit routing', () => {
30
+ let db: Kysely<ServerDb>;
31
+ const dialect = createSqliteServerDialect();
32
+
33
+ beforeEach(async () => {
34
+ db = createBunSqliteDb<ServerDb>({ path: ':memory:' });
35
+ await ensureSyncSchema(db, dialect);
36
+
37
+ await db.schema
38
+ .createTable('tasks')
39
+ .addColumn('id', 'text', (col) => col.primaryKey())
40
+ .addColumn('user_id', 'text', (col) => col.notNull())
41
+ .addColumn('title', 'text', (col) => col.notNull())
42
+ .addColumn('server_version', 'integer', (col) =>
43
+ col.notNull().defaultTo(0)
44
+ )
45
+ .execute();
46
+ });
47
+
48
+ afterEach(async () => {
49
+ resetRateLimitStore();
50
+ await db.destroy();
51
+ });
52
+
53
+ const tasksHandler = createServerHandler<ServerDb, ClientDb, 'tasks'>({
54
+ table: 'tasks',
55
+ scopes: ['user:{user_id}'],
56
+ resolveScopes: async (ctx) => ({ user_id: [ctx.actorId] }),
57
+ });
58
+
59
+ const pullPayload = {
60
+ limitCommits: 10,
61
+ subscriptions: [
62
+ {
63
+ id: 'sub-1',
64
+ shape: 'tasks',
65
+ scopes: { user_id: 'u1' },
66
+ cursor: -1,
67
+ },
68
+ ],
69
+ };
70
+
71
+ function pushPayload(clientCommitId: string, rowId: string) {
72
+ return {
73
+ clientCommitId,
74
+ schemaVersion: 1,
75
+ operations: [
76
+ {
77
+ table: 'tasks',
78
+ row_id: rowId,
79
+ op: 'upsert' as const,
80
+ base_version: null,
81
+ payload: {
82
+ id: rowId,
83
+ user_id: 'u1',
84
+ title: `Task ${rowId}`,
85
+ server_version: 0,
86
+ },
87
+ },
88
+ ],
89
+ };
90
+ }
91
+
92
+ function createJsonRequest(body: object): Request {
93
+ return new Request('http://localhost/sync', {
94
+ method: 'POST',
95
+ headers: { 'content-type': 'application/json' },
96
+ body: JSON.stringify(body),
97
+ });
98
+ }
99
+
100
+ it('does not consume push quota for pull-only requests', async () => {
101
+ const routes = createSyncRoutes({
102
+ db,
103
+ dialect,
104
+ handlers: [tasksHandler],
105
+ authenticate: async () => ({ actorId: 'u1' }),
106
+ sync: {
107
+ rateLimit: {
108
+ pull: { maxRequests: 1, windowMs: 60_000 },
109
+ push: { maxRequests: 1, windowMs: 60_000 },
110
+ },
111
+ },
112
+ });
113
+
114
+ const app = new Hono();
115
+ app.route('/sync', routes);
116
+
117
+ const pullFirst = await app.request(
118
+ createJsonRequest({
119
+ clientId: 'client-1',
120
+ pull: pullPayload,
121
+ })
122
+ );
123
+ const pushFirst = await app.request(
124
+ createJsonRequest({
125
+ clientId: 'client-1',
126
+ push: pushPayload('commit-1', 't1'),
127
+ })
128
+ );
129
+ const pullSecond = await app.request(
130
+ createJsonRequest({
131
+ clientId: 'client-1',
132
+ pull: pullPayload,
133
+ })
134
+ );
135
+ const pushSecond = await app.request(
136
+ createJsonRequest({
137
+ clientId: 'client-1',
138
+ push: pushPayload('commit-2', 't2'),
139
+ })
140
+ );
141
+
142
+ expect(pullFirst.status).toBe(200);
143
+ expect(pushFirst.status).toBe(200);
144
+ expect(pullSecond.status).toBe(429);
145
+ expect(pushSecond.status).toBe(429);
146
+ });
147
+
148
+ it('authenticates once per combined sync request with rate limiting enabled', async () => {
149
+ let authCalls = 0;
150
+
151
+ const routes = createSyncRoutes({
152
+ db,
153
+ dialect,
154
+ handlers: [tasksHandler],
155
+ authenticate: async () => {
156
+ authCalls += 1;
157
+ return { actorId: 'u1' };
158
+ },
159
+ sync: {
160
+ rateLimit: {
161
+ pull: { maxRequests: 10, windowMs: 60_000 },
162
+ push: { maxRequests: 10, windowMs: 60_000 },
163
+ },
164
+ },
165
+ });
166
+
167
+ const app = new Hono();
168
+ app.route('/sync', routes);
169
+
170
+ const response = await app.request(
171
+ createJsonRequest({
172
+ clientId: 'client-1',
173
+ push: pushPayload('commit-combined-1', 't-combined-1'),
174
+ pull: pullPayload,
175
+ })
176
+ );
177
+
178
+ expect(response.status).toBe(200);
179
+ expect(authCalls).toBe(1);
180
+ });
181
+ });
package/src/routes.ts CHANGED
@@ -34,7 +34,7 @@ import {
34
34
  recordClientCursor,
35
35
  TableRegistry,
36
36
  } from '@syncular/server';
37
- import type { Context } from 'hono';
37
+ import type { Context, MiddlewareHandler } from 'hono';
38
38
  import { Hono } from 'hono';
39
39
 
40
40
  import type { UpgradeWebSocket } from 'hono/ws';
@@ -231,11 +231,30 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
231
231
  (typeof crypto !== 'undefined' && 'randomUUID' in crypto
232
232
  ? crypto.randomUUID()
233
233
  : `${Date.now()}-${Math.random().toString(16).slice(2)}`);
234
+ const loggedAsyncFailureKeys = new Set<string>();
235
+ const logAsyncFailureOnce = (
236
+ key: string,
237
+ event: {
238
+ event: string;
239
+ error: string;
240
+ [key: string]: unknown;
241
+ }
242
+ ) => {
243
+ if (loggedAsyncFailureKeys.has(key)) return;
244
+ loggedAsyncFailureKeys.add(key);
245
+ logSyncEvent(event);
246
+ };
234
247
 
235
248
  if (wsConnectionManager && realtimeBroadcaster) {
236
249
  const unsubscribe = realtimeBroadcaster.subscribe(
237
250
  (event: SyncRealtimeEvent) => {
238
- void handleRealtimeEvent(event).catch(() => {});
251
+ void handleRealtimeEvent(event).catch((error) => {
252
+ logAsyncFailureOnce('sync.realtime.broadcast_delivery_failed', {
253
+ event: 'sync.realtime.broadcast_delivery_failed',
254
+ error: error instanceof Error ? error.message : String(error),
255
+ sourceEventType: event.type,
256
+ });
257
+ });
239
258
  }
240
259
  );
241
260
 
@@ -246,7 +265,7 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
246
265
  // Request event recording (for console inspector)
247
266
  // -------------------------------------------------------------------------
248
267
 
249
- const recordRequestEvent = async (event: {
268
+ type RequestEvent = {
250
269
  eventType: 'push' | 'pull';
251
270
  actorId: string;
252
271
  clientId: string;
@@ -259,25 +278,44 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
259
278
  rowCount?: number | null;
260
279
  tables?: string[];
261
280
  errorMessage?: string | null;
262
- }) => {
263
- try {
264
- const tablesValue = options.dialect.arrayToDb(event.tables ?? []);
265
- await sql`
266
- INSERT INTO sync_request_events (
267
- event_type, actor_id, client_id, status_code, outcome,
268
- duration_ms, commit_seq, operation_count, row_count,
269
- tables, error_message, transport_path
270
- ) VALUES (
271
- ${event.eventType}, ${event.actorId}, ${event.clientId},
272
- ${event.statusCode}, ${event.outcome}, ${event.durationMs},
273
- ${event.commitSeq ?? null}, ${event.operationCount ?? null},
274
- ${event.rowCount ?? null}, ${tablesValue}, ${event.errorMessage ?? null},
275
- ${event.transportPath}
276
- )
277
- `.execute(options.db);
278
- } catch {
279
- // Silently ignore - event recording should not block sync
280
- }
281
+ };
282
+
283
+ const recordRequestEvent = async (event: RequestEvent) => {
284
+ const tablesValue = options.dialect.arrayToDb(event.tables ?? []);
285
+ await sql`
286
+ INSERT INTO sync_request_events (
287
+ event_type, actor_id, client_id, status_code, outcome,
288
+ duration_ms, commit_seq, operation_count, row_count,
289
+ tables, error_message, transport_path
290
+ ) VALUES (
291
+ ${event.eventType}, ${event.actorId}, ${event.clientId},
292
+ ${event.statusCode}, ${event.outcome}, ${event.durationMs},
293
+ ${event.commitSeq ?? null}, ${event.operationCount ?? null},
294
+ ${event.rowCount ?? null}, ${tablesValue}, ${event.errorMessage ?? null},
295
+ ${event.transportPath}
296
+ )
297
+ `.execute(options.db);
298
+ };
299
+
300
+ const recordRequestEventInBackground = (event: RequestEvent): void => {
301
+ void recordRequestEvent(event).catch((error) => {
302
+ logAsyncFailureOnce('sync.request_event_record_failed', {
303
+ event: 'sync.request_event_record_failed',
304
+ userId: event.actorId,
305
+ clientId: event.clientId,
306
+ requestEventType: event.eventType,
307
+ error: error instanceof Error ? error.message : String(error),
308
+ });
309
+ });
310
+ };
311
+
312
+ const authCache = new WeakMap<Context, Promise<SyncAuthResult | null>>();
313
+ const getAuth = (c: Context): Promise<SyncAuthResult | null> => {
314
+ const cached = authCache.get(c);
315
+ if (cached) return cached;
316
+ const pending = options.authenticate(c);
317
+ authCache.set(c, pending);
318
+ return pending;
281
319
  };
282
320
 
283
321
  // -------------------------------------------------------------------------
@@ -298,17 +336,52 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
298
336
  return createRateLimiter({
299
337
  ...limitConfig,
300
338
  keyGenerator: async (c) => {
301
- const auth = await options.authenticate(c);
339
+ const auth = await getAuth(c);
302
340
  return auth?.actorId ?? null;
303
341
  },
304
342
  });
305
343
  };
306
344
 
307
345
  const pullLimiter = createAuthBasedRateLimiter(pullRateLimit);
308
- if (pullLimiter) routes.use('/', pullLimiter);
309
-
310
346
  const pushLimiter = createAuthBasedRateLimiter(pushRateLimit);
311
- if (pushLimiter) routes.use('/', pushLimiter);
347
+
348
+ const syncRateLimiter: MiddlewareHandler = async (c, next) => {
349
+ if (!pullLimiter && !pushLimiter) return next();
350
+
351
+ let shouldApplyPull = pullLimiter !== null;
352
+ let shouldApplyPush = pushLimiter !== null;
353
+
354
+ if (pullLimiter && pushLimiter && c.req.method === 'POST') {
355
+ try {
356
+ const parsed = await c.req.raw.clone().json();
357
+ if (parsed !== null && typeof parsed === 'object') {
358
+ shouldApplyPull = Reflect.get(parsed, 'pull') !== undefined;
359
+ shouldApplyPush = Reflect.get(parsed, 'push') !== undefined;
360
+ }
361
+ } catch {
362
+ // Keep default behavior and apply both limiters when payload parsing fails.
363
+ }
364
+ }
365
+
366
+ if (pullLimiter && shouldApplyPull && pushLimiter && shouldApplyPush) {
367
+ return pullLimiter(c, async () => {
368
+ const pushResult = await pushLimiter(c, next);
369
+ if (pushResult instanceof Response) {
370
+ c.res = pushResult;
371
+ }
372
+ });
373
+ }
374
+ if (pullLimiter && shouldApplyPull) {
375
+ return pullLimiter(c, next);
376
+ }
377
+ if (pushLimiter && shouldApplyPush) {
378
+ return pushLimiter(c, next);
379
+ }
380
+
381
+ return next();
382
+ };
383
+
384
+ routes.use('/', syncRateLimiter);
312
385
  }
313
386
 
314
387
  // -------------------------------------------------------------------------
@@ -358,7 +431,7 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
358
431
  }),
359
432
  zValidator('json', SyncCombinedRequestSchema),
360
433
  async (c) => {
361
- const auth = await options.authenticate(c);
434
+ const auth = await getAuth(c);
362
435
  if (!auth) return c.json({ error: 'UNAUTHENTICATED' }, 401);
363
436
  const partitionId = auth.partitionId ?? 'default';
364
437
 
@@ -410,7 +483,7 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
410
483
  commitSeq: pushed.response.commitSeq,
411
484
  });
412
485
 
413
- recordRequestEvent({
486
+ recordRequestEventInBackground({
414
487
  eventType: 'push',
415
488
  actorId: auth.actorId,
416
489
  clientId,
@@ -453,7 +526,18 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
453
526
  scopeKeys,
454
527
  sourceInstanceId: instanceId,
455
528
  })
456
- .catch(() => {});
529
+ .catch((error) => {
530
+ logAsyncFailureOnce(
531
+ 'sync.realtime.broadcast_publish_failed',
532
+ {
533
+ event: 'sync.realtime.broadcast_publish_failed',
534
+ userId: auth.actorId,
535
+ clientId,
536
+ error:
537
+ error instanceof Error ? error.message : String(error),
538
+ }
539
+ );
540
+ });
457
541
  }
458
542
  }
459
543
  }
@@ -540,13 +624,20 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
540
624
  }
541
625
 
542
626
  // Fire-and-forget bookkeeping
543
- recordClientCursor(options.db, options.dialect, {
627
+ void recordClientCursor(options.db, options.dialect, {
544
628
  partitionId,
545
629
  clientId,
546
630
  actorId: auth.actorId,
547
631
  cursor: pullResult.clientCursor,
548
632
  effectiveScopes: pullResult.effectiveScopes,
549
- }).catch(() => {});
633
+ }).catch((error) => {
634
+ logAsyncFailureOnce('sync.client_cursor_record_failed', {
635
+ event: 'sync.client_cursor_record_failed',
636
+ userId: auth.actorId,
637
+ clientId,
638
+ error: error instanceof Error ? error.message : String(error),
639
+ });
640
+ });
550
641
 
551
642
  wsConnectionManager?.updateClientScopeKeys(
552
643
  clientId,
@@ -566,7 +657,7 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
566
657
  clientCursor: pullResult.clientCursor,
567
658
  });
568
659
 
569
- recordRequestEvent({
660
+ recordRequestEventInBackground({
570
661
  eventType: 'pull',
571
662
  actorId: auth.actorId,
572
663
  clientId,
@@ -603,6 +694,11 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
603
694
  responses: {
604
695
  200: {
605
696
  description: 'Snapshot chunk data (gzip-compressed NDJSON)',
697
+ content: {
698
+ 'application/x-ndjson': {
699
+ schema: resolver(z.string()),
700
+ },
701
+ },
606
702
  },
607
703
  304: {
608
704
  description: 'Not modified (cached)',
@@ -629,7 +725,7 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
629
725
  }),
630
726
  zValidator('param', snapshotChunkParamsSchema),
631
727
  async (c) => {
632
- const auth = await options.authenticate(c);
728
+ const auth = await getAuth(c);
633
729
  if (!auth) return c.json({ error: 'UNAUTHENTICATED' }, 401);
634
730
  const partitionId = auth.partitionId ?? 'default';
635
731
 
@@ -689,7 +785,7 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
689
785
 
690
786
  if (wsConnectionManager && websocketConfig?.enabled) {
691
787
  routes.get('/realtime', async (c) => {
692
- const auth = await options.authenticate(c);
788
+ const auth = await getAuth(c);
693
789
  if (!auth) return c.json({ error: 'UNAUTHENTICATED' }, 401);
694
790
  const partitionId = auth.partitionId ?? 'default';
695
791
 
@@ -993,7 +1089,7 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
993
1089
  commitSeq: pushed.response.commitSeq,
994
1090
  });
995
1091
 
996
- recordRequestEvent({
1092
+ recordRequestEventInBackground({
997
1093
  eventType: 'push',
998
1094
  actorId,
999
1095
  clientId,
@@ -1036,7 +1132,14 @@ export function createSyncRoutes<DB extends SyncCoreDb = SyncCoreDb>(
1036
1132
  scopeKeys,
1037
1133
  sourceInstanceId: instanceId,
1038
1134
  })
1039
- .catch(() => {});
1135
+ .catch((error) => {
1136
+ logAsyncFailureOnce('sync.realtime.broadcast_publish_failed', {
1137
+ event: 'sync.realtime.broadcast_publish_failed',
1138
+ userId: actorId,
1139
+ clientId,
1140
+ error: error instanceof Error ? error.message : String(error),
1141
+ });
1142
+ });
1040
1143
  }
1041
1144
  }
1042
1145
  }