@pairlobby/server-core 0.32.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +1 -1
  2. package/dist/admission.d.ts +11 -0
  3. package/dist/admission.d.ts.map +1 -1
  4. package/dist/admission.js +18 -12
  5. package/dist/admission.js.map +1 -1
  6. package/dist/auto-close-store.d.ts +10 -8
  7. package/dist/auto-close-store.d.ts.map +1 -1
  8. package/dist/auto-close-store.js +35 -22
  9. package/dist/auto-close-store.js.map +1 -1
  10. package/dist/changes.d.ts +25 -11
  11. package/dist/changes.d.ts.map +1 -1
  12. package/dist/changes.js +81 -22
  13. package/dist/changes.js.map +1 -1
  14. package/dist/commit.d.ts +12 -0
  15. package/dist/commit.d.ts.map +1 -0
  16. package/dist/commit.js +33 -0
  17. package/dist/commit.js.map +1 -0
  18. package/dist/export.d.ts +12 -0
  19. package/dist/export.d.ts.map +1 -0
  20. package/dist/export.js +72 -0
  21. package/dist/export.js.map +1 -0
  22. package/dist/index.d.ts +4 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +4 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/paging.d.ts +12 -0
  27. package/dist/paging.d.ts.map +1 -0
  28. package/dist/paging.js +32 -0
  29. package/dist/paging.js.map +1 -0
  30. package/dist/ports.d.ts +12 -5
  31. package/dist/ports.d.ts.map +1 -1
  32. package/dist/ports.js +12 -9
  33. package/dist/ports.js.map +1 -1
  34. package/dist/relay.d.ts +14 -4
  35. package/dist/relay.d.ts.map +1 -1
  36. package/dist/relay.js +79 -39
  37. package/dist/relay.js.map +1 -1
  38. package/dist/service.d.ts +53 -3
  39. package/dist/service.d.ts.map +1 -1
  40. package/dist/service.js +459 -207
  41. package/dist/service.js.map +1 -1
  42. package/dist/settings.d.ts +33 -0
  43. package/dist/settings.d.ts.map +1 -0
  44. package/dist/settings.js +66 -0
  45. package/dist/settings.js.map +1 -0
  46. package/dist/store.d.ts +32 -13
  47. package/dist/store.d.ts.map +1 -1
  48. package/dist/turns.d.ts +1 -0
  49. package/dist/turns.d.ts.map +1 -1
  50. package/dist/turns.js +150 -117
  51. package/dist/turns.js.map +1 -1
  52. package/package.json +4 -3
  53. package/dist/request-backfill.d.ts +0 -3
  54. package/dist/request-backfill.d.ts.map +0 -1
  55. package/dist/request-backfill.js +0 -34
  56. package/dist/request-backfill.js.map +0 -1
package/dist/relay.js CHANGED
@@ -5,7 +5,7 @@
5
5
  //! otherwise it names the room. `inRoom` then runs it inside that room. A platform with
6
6
  //! one process calls `handle`, which does both; one with an object per room, such as a
7
7
  //! Worker in front of Durable Objects, calls `edge` in front and `inRoom` in the object.
8
- import { INVITE_PROBE_LENGTH, CreateInviteRequest, CreateRoomRequest, PROTOCOL_VERSION, PROTOCOL_VERSION_HEADER, FileId, MAX_EVENT_WAIT_MS, ProtocolError, ReadEventsQuery, ReceiptRequest, RedeemInviteRequest, JoinAsGuestRequest, LocalJoinRequest, RoomId, hashCredential, newId, normalizeInviteCode, SetLocalJoinRequest, SetRoomTypeRequest, SetVisibilityRequest, MemberDefaultVisibility, RenameRoomRequest, RenameSelfRequest, SendEventRequest, SetAccessRequest, SetInviteRoleRequest, SetAutoCloseRequest, SetLockedRequest, SetMutedRequest, SetPermissionsRequest, SetRoleRequest, TurnClaimRequest, TurnTokenRequest, TurnModeRequest, TurnActionRequest, ResolveRequestRequest, ProviderWaitRequest, SetExpiryRequest, ControlRequest, ListingPresenceRequest, ShareListingRequest, toListingView } from '@pairlobby/protocol';
8
+ import { INVITE_PROBE_LENGTH, CreateInviteRequest, CreateRoomRequest, PROTOCOL_VERSION, PROTOCOL_VERSION_HEADER, FileId, FILE_SIZE_HEADER, MAX_EVENT_WAIT_MS, ProtocolError, ReadEventsQuery, ReceiptRequest, RedeemInviteRequest, JoinAsGuestRequest, LocalJoinRequest, RoomId, hashCredential, newId, normalizeInviteCode, SetLocalJoinRequest, SetRoomTypeRequest, SetVisibilityRequest, MemberDefaultVisibility, RenameRoomRequest, RenameSelfRequest, SendEventRequest, SetAccessRequest, SetInviteRoleRequest, SetAutoCloseRequest, SetLockedRequest, SetMutedRequest, SetPermissionsRequest, SetRoleRequest, TurnClaimRequest, TurnTokenRequest, TurnModeRequest, TurnActionRequest, ResolveRequestRequest, ProviderWaitRequest, SetExpiryRequest, ControlRequest, ListingPresenceRequest, ListingId, ShareListingRequest, toListingView } from '@pairlobby/protocol';
9
9
  import { directExecutor } from './ports.js';
10
10
  /**
11
11
  * Internal claim from `edge` to `inRoom`: the member whose personal token came with a room
@@ -27,19 +27,28 @@ export function createRelay(options) {
27
27
  return await edgeRoute(claiming(request, null), context, options, inviteRoom, peerIsLocal);
28
28
  }
29
29
  catch (error) {
30
- return failure(error);
30
+ return failure(error, options);
31
31
  }
32
32
  }
33
33
  async function inRoom(request, roomId, context = {}) {
34
34
  const write = !['GET', 'HEAD'].includes(request.method.toUpperCase());
35
- return executor.run(roomId, write, async () => {
36
- try {
37
- return await roomRoute(request, roomId, context, options);
35
+ try {
36
+ if (request.method === 'POST' && new URL(request.url).pathname.endsWith('/files')) {
37
+ // Uploads enter the executor for reservation, each chunk and finalization, never while waiting on network bytes.
38
+ return await roomRoute(request, roomId, context, { ...options, executor });
38
39
  }
39
- catch (error) {
40
- return failure(error);
40
+ if (request.method === 'GET' && new URL(request.url).pathname.endsWith('/events') && options.changes) {
41
+ const query = ReadEventsQuery.parse(Object.fromEntries(new URL(request.url).searchParams));
42
+ if (query.wait > 0) {
43
+ return await readWaiting(options.service, options.changes, executor, request, roomId, bearer(request), query);
44
+ }
41
45
  }
42
- });
46
+ return await executor.run(roomId, write, () => roomRoute(request, roomId, context, options));
47
+ }
48
+ catch (error) {
49
+ // Exceptions leave the executor before they become HTTP responses, so a transactional executor can roll back.
50
+ return failure(error, options);
51
+ }
43
52
  }
44
53
  async function tick(kind) {
45
54
  if (kind === 'directory-sweep') {
@@ -52,10 +61,10 @@ export function createRelay(options) {
52
61
  await executor.run(null, true, async () => {
53
62
  try {
54
63
  const result = await service.closeDueRooms();
55
- scheduler?.plan(result.more ? Date.now() : result.nextAt);
64
+ await scheduler?.plan(result.more ? Date.now() : result.nextAt);
56
65
  }
57
66
  catch {
58
- scheduler?.plan(Date.now() + 60_000);
67
+ await scheduler?.plan(Date.now() + 60_000);
59
68
  }
60
69
  });
61
70
  }
@@ -79,22 +88,26 @@ export function createRelay(options) {
79
88
  if (routed instanceof Response) {
80
89
  return routed;
81
90
  }
82
- const response = inRoom(routed.request, routed.roomId, context);
91
+ const response = await inRoom(routed.request, routed.roomId, context);
83
92
  // Every write may change an auto-close deadline, so the wake-up is planned again after it.
84
93
  if (options.scheduler && !['GET', 'HEAD'].includes(request.method.toUpperCase())) {
85
- void tick('auto-close');
94
+ await tick('auto-close');
86
95
  }
87
96
  return response;
88
97
  }
89
98
  };
90
99
  }
91
- function failure(error) {
100
+ function failure(error, options) {
92
101
  if (error instanceof ProtocolError) {
93
102
  return errorResponse(error.code, error.message, error.httpStatus, error.details);
94
103
  }
95
- if (isSchemaError(error)) {
104
+ if (isSchemaError(error) || error instanceof SyntaxError) {
96
105
  return errorResponse('invalid_request', 'the request body did not match the protocol schema', 400);
97
106
  }
107
+ const extension = options.extensionError?.(error);
108
+ if (extension) {
109
+ return extension;
110
+ }
98
111
  return errorResponse('server_unavailable', 'the server could not complete this request', 503);
99
112
  }
100
113
  async function edgeRoute(request, context, options, inviteRoom, peerIsLocal) {
@@ -211,10 +224,9 @@ async function directoryEdge(request, context, segments, method, options) {
211
224
  }
212
225
  /** Listings the caller sees: a room they cannot see, or a listing that no longer stands, is left out as if it did not exist. */
213
226
  async function visibleListings(listings, handle, service) {
214
- const visible = await Promise.all(listings.map((listing) => service.listingVisible(listing, handle)));
215
- return listings.filter((_, index) => visible[index]);
227
+ return service.visibleListings(listings, handle);
216
228
  }
217
- /** Listings read for a directory without an owner: the newest this many. */
229
+ /** Maximum candidates in one directory page, including candidates the caller cannot see. */
218
230
  const DIRECTORY_PAGE = 500;
219
231
  /** `GET /v1/directory[?owner=]`: the shared agents the caller sees, one owner's or everyone's. */
220
232
  async function directoryRead(request, context, directory, options) {
@@ -223,12 +235,19 @@ async function directoryRead(request, context, directory, options) {
223
235
  return errorResponse('unauthorized', DIRECTORY_NEEDS_MEMBER, 403);
224
236
  }
225
237
  await options.admission.beforeDirectory(request, context, member);
226
- const owner = new URL(request.url).searchParams.get('owner')?.trim().replace(/^@/, '').toLowerCase();
227
- const all = owner ? await directory.ownerListings(owner) : await directory.listings('', DIRECTORY_PAGE);
238
+ const query = new URL(request.url).searchParams;
239
+ const owner = query.get('owner')?.trim().replace(/^@/, '').toLowerCase();
240
+ const after = query.has('after') ? ListingId.parse(query.get('after')) : '';
241
+ const limit = Number(query.get('limit') ?? DIRECTORY_PAGE);
242
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > DIRECTORY_PAGE) {
243
+ throw new ProtocolError('invalid_request', `directory limit must be between 1 and ${DIRECTORY_PAGE}`);
244
+ }
245
+ const candidates = owner ? await directory.ownerListings(owner, after, limit + 1) : await directory.listings(after, limit + 1);
246
+ const all = candidates.slice(0, limit);
228
247
  const now = Date.now();
229
248
  const listings = await Promise.all((await visibleListings(all, member.handle, options.service)).map(async (listing) => toListingView(listing, { now, lastMessageAt: await directory.lastMessageAt(listing.roomId, listing.participantId), ownerName: options.memberByHandle?.(listing.owner)?.name })));
230
249
  const knownHandle = owner && options.memberByHandle ? { knownHandle: options.memberByHandle(owner) !== null || all.length > 0 } : {};
231
- return json({ listings, ...knownHandle });
250
+ return json({ listings, ...knownHandle, next: candidates.length > limit ? all.at(-1).listingId : null });
232
251
  }
233
252
  /** `GET` and `PUT /v1/directory/defaults`: the caller's own default visibility for their rooms, `everyone` until set. */
234
253
  async function memberDefaults(request, method, directory, member) {
@@ -361,7 +380,7 @@ async function routeLocal(request, context, options, peerIsLocal) {
361
380
  export function describe(options) {
362
381
  const profile = options.service.relayProfile();
363
382
  const features = [
364
- ...(profile.files ? ['files'] : []),
383
+ ...(profile.files ? ['files', 'stream-files'] : []),
365
384
  // Joining by name needs rooms to list and a way to tell who may: the connection, or a personal token.
366
385
  ...(options.localRooms && ((options.peerIsLocal && (!options.behindProxy || options.proxyIsAccessGate)) || options.admission?.memberTokens) ? ['local-join'] : []),
367
386
  ...(options.inviteProbe ? ['invite-probe'] : []),
@@ -370,7 +389,7 @@ export function describe(options) {
370
389
  ...(options.admission?.memberTokens ? ['member-tokens'] : []),
371
390
  ...(options.directory && options.admission?.memberTokens ? ['directory'] : []),
372
391
  ...(profile.receiptMode !== 'events' ? ['receipt-watermark'] : []),
373
- 'room-types',
392
+ 'room-types', 'room-sync', 'stream-export',
374
393
  ...(options.directory && options.admission?.memberTokens ? ['room-visibility', 'directory-contact'] : []),
375
394
  ...(options.features ?? [])
376
395
  ];
@@ -396,14 +415,20 @@ export function describeRelay({ limits, features, transport, receiptMode, info }
396
415
  * answered as soon as anything is newer than `after`, at the deadline, or on any other change
397
416
  * to the room, so the client rereads whatever else it watches.
398
417
  */
399
- async function readWaiting(service, changes, roomId, credential, query) {
400
- const waiting = changes.wait(roomId, Math.min(query.wait, MAX_EVENT_WAIT_MS));
418
+ async function readWaiting(service, changes, executor, request, roomId, credential, query) {
419
+ const waiting = await changes.wait(roomId, Math.min(query.wait, MAX_EVENT_WAIT_MS), request.signal);
420
+ if (!waiting) {
421
+ throw new ProtocolError('rate_limited', 'the relay cannot hold another read right now; retry shortly', { retryAfterMs: 1000 });
422
+ }
423
+ const read = () => executor.run(roomId, false, () => service.read(roomId, credential, query.after, query.limit, query.receiptsAfter, query.stateAfter === undefined ? undefined : { stateAfter: query.stateAfter, snapshotAfter: query.snapshotAfter }));
401
424
  try {
402
- const page = await service.read(roomId, credential, query.after, query.limit, query.receiptsAfter);
403
- if (page.events.length > 0 || (page.receipts?.length ?? 0) > 0 || !waiting || !(await waiting.changed)) {
425
+ const page = await read();
426
+ if (page.events.length > 0 || (page.receipts?.length ?? 0) > 0 || (query.stateAfter !== undefined && page.stateRevision !== query.stateAfter)) {
404
427
  return json(page);
405
428
  }
406
- return json(await service.read(roomId, credential, query.after, query.limit, query.receiptsAfter));
429
+ await waiting.changed;
430
+ // A deadline also reconciles a missed notification. No transaction or room queue is held while waiting.
431
+ return json(await read());
407
432
  }
408
433
  finally {
409
434
  waiting?.cancel();
@@ -411,7 +436,7 @@ async function readWaiting(service, changes, roomId, credential, query) {
411
436
  }
412
437
  /** Everything inside one room. Admission already happened in `edge`. */
413
438
  async function roomRoute(request, roomId, context, options) {
414
- const { service, admission, changes } = options;
439
+ const { service, admission } = options;
415
440
  const url = new URL(request.url);
416
441
  const segments = url.pathname.split('/').filter(Boolean);
417
442
  const method = request.method.toUpperCase();
@@ -419,9 +444,12 @@ async function roomRoute(request, roomId, context, options) {
419
444
  return listingInRoom(request, roomId, segments, method, options.directory, service);
420
445
  }
421
446
  if (segments[1] === 'rooms' && segments.length === 2 && method === 'POST') {
422
- const input = CreateRoomRequest.parse(await request.json());
447
+ const body = await request.json();
448
+ const input = CreateRoomRequest.parse(body);
423
449
  const member = claimedMember(request);
424
- const created = await service.createRoom({ ...input, roomId, ...(member ? { owner: member, member } : {}) });
450
+ const initial = { ...input, roomId, ...(member ? { owner: member, member } : {}) };
451
+ const prepared = options.prepareCreate ? await options.prepareCreate({ input: initial, body: body, request }) : initial;
452
+ const created = await service.createRoom({ ...prepared, roomId });
425
453
  return json({ room: created.snapshot, participantId: created.participantId, invite: created.invite }, 201);
426
454
  }
427
455
  if (segments[1] === 'invites' && segments[2] === 'redeem' && method === 'POST') {
@@ -450,6 +478,9 @@ async function roomRoute(request, roomId, context, options) {
450
478
  const result = await service.joinAsGuest(roomId, input);
451
479
  return json({ roomId: result.roomId, participantId: result.participantId, role: result.role, room: result.snapshot });
452
480
  }
481
+ if (method === 'GET' && segments.length === 4 && segments[3] === 'connect' && options.connections) {
482
+ return options.connections.connect(roomId, request, (participantId) => service.connectedSnapshot(roomId, participantId));
483
+ }
453
484
  const credential = bearer(request);
454
485
  if (segments.length === 3 && method === 'GET') {
455
486
  return json(await service.snapshot(roomId, credential));
@@ -459,6 +490,15 @@ async function roomRoute(request, roomId, context, options) {
459
490
  return new Response(null, { status: 204, headers: JSON_HEADERS });
460
491
  }
461
492
  switch (`${method} ${segments[3]}`) {
493
+ case 'POST connect-ticket': {
494
+ if (!options.connections) {
495
+ throw new ProtocolError('unsupported_capability', 'this relay does not offer sockets');
496
+ }
497
+ const connection = await service.connection(roomId, credential);
498
+ const expiresAt = Date.now() + connection.snapshot.policy.connectTicketLifetimeMs;
499
+ const ticket = await options.connections.ticket(roomId, connection.participantId, expiresAt, request);
500
+ return json({ ticket, expiresAt });
501
+ }
462
502
  case 'GET turns':
463
503
  return json(await service.turns.status(roomId, credential));
464
504
  case 'POST turns': {
@@ -525,23 +565,23 @@ async function roomRoute(request, roomId, context, options) {
525
565
  if (!name.trim() || name.length > 1024) {
526
566
  return errorResponse('invalid_request', 'name the file with ?name=', 400);
527
567
  }
528
- const bytes = new Uint8Array(await request.arrayBuffer());
529
- return json({ file: await service.uploadFile(roomId, credential, { name, mediaType: request.headers.get('content-type') ?? '', bytes }) }, 201);
568
+ const declared = request.headers.get(FILE_SIZE_HEADER) ?? request.headers.get('content-length');
569
+ if (!request.body || !declared || !/^\d+$/.test(declared)) {
570
+ return errorResponse('invalid_request', `declare the file's byte length with Content-Length or ${FILE_SIZE_HEADER}`, 400);
571
+ }
572
+ return json({ file: await service.uploadFileStream(roomId, credential, { name, mediaType: request.headers.get('content-type') ?? '', size: Number(declared), body: request.body, signal: request.signal }, (action) => (options.executor ?? directExecutor()).run(roomId, true, action)) }, 201);
530
573
  }
531
574
  case 'GET files': {
532
575
  if (!segments[4]) {
533
576
  return json(await service.listFiles(roomId, credential));
534
577
  }
535
- const { file, bytes } = await service.downloadFile(roomId, credential, FileId.parse(segments[4]));
578
+ const { file, body } = await service.downloadFileStream(roomId, credential, FileId.parse(segments[4]));
536
579
  // Always a download, never something a browser would render or run: the name and type came from another participant.
537
- return new Response(bytes, { status: 200, headers: { 'content-type': 'application/octet-stream', 'content-disposition': `attachment; filename*=UTF-8''${encodeURIComponent(file.name)}`, 'content-length': String(bytes.byteLength), 'x-content-type-options': 'nosniff', 'cache-control': 'private, no-store', 'pairlobby-file-sha256': file.sha256, [PROTOCOL_VERSION_HEADER]: String(PROTOCOL_VERSION) } });
580
+ return new Response(body, { status: 200, headers: { 'content-type': 'application/octet-stream', 'content-disposition': `attachment; filename*=UTF-8''${encodeURIComponent(file.name)}`, 'content-length': String(file.size), 'x-content-type-options': 'nosniff', 'cache-control': 'private, no-store', 'pairlobby-file-sha256': file.sha256, [PROTOCOL_VERSION_HEADER]: String(PROTOCOL_VERSION) } });
538
581
  }
539
582
  case 'GET events': {
540
583
  const query = ReadEventsQuery.parse(Object.fromEntries(new URL(request.url).searchParams));
541
- if (changes && query.wait > 0) {
542
- return readWaiting(service, changes, roomId, credential, query);
543
- }
544
- return json(await service.read(roomId, credential, query.after, query.limit, query.receiptsAfter));
584
+ return json(await service.read(roomId, credential, query.after, query.limit, query.receiptsAfter, query.stateAfter === undefined ? undefined : { stateAfter: query.stateAfter, snapshotAfter: query.snapshotAfter }));
545
585
  }
546
586
  case 'POST receipts':
547
587
  return json(await service.receipt(roomId, credential, ReceiptRequest.parse(await request.json()).throughSeq));
@@ -622,7 +662,7 @@ async function roomRoute(request, roomId, context, options) {
622
662
  case 'POST leave':
623
663
  return json({ event: await service.leave(roomId, credential) });
624
664
  case 'GET export':
625
- return json(await service.export(roomId, credential));
665
+ return service.exportStream(roomId, credential, url.searchParams.get('format') === 'ndjson' ? 'ndjson' : 'json');
626
666
  case 'DELETE participants': {
627
667
  const participantId = segments[4];
628
668
  if (!participantId) {
package/dist/relay.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,0FAA0F;AAC1F,GAAG;AACH,uFAAuF;AACvF,wFAAwF;AACxF,uFAAuF;AACvF,yFAAyF;AAEzF,OAAO,EACH,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,EACN,cAAc,EACd,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,SAAS,EACT,mBAAmB,EACnB,aAAa,EAChB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AA6F1C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAElD,mGAAmG;AACnG,MAAM,CAAC,MAAM,sBAAsB,GAAG,uGAAuG,CAAC;AAE9I,0CAA0C;AAC1C,MAAM,UAAU,GAAG,GAAG,CAAC;AA2DvB,MAAM,YAAY,GAAG,EAAC,cAAc,EAAE,iCAAiC,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAC,CAAC;AAE9H,MAAM,UAAU,WAAW,CAAC,OAAqB;IAC7C,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,OAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEtM,KAAK,UAAU,IAAI,CAAC,OAAgB,EAAE,UAA0B,EAAE;QAC9D,IAAI,CAAC;YACD,OAAO,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC/F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,OAAgB,EAAE,MAAc,EAAE,UAA0B,EAAE;QAChF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChF,iHAAiH;gBACjH,OAAO,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnG,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC3F,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACjB,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;gBAClH,CAAC;YACL,CAAC;YACD,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,8GAA8G;YAC9G,OAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,IAAsC;QACtD,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO;QACX,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;YACtC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC7C,MAAM,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpE,CAAC;YAAC,MAAM,CAAC;gBACL,MAAM,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,uFAAuF;IACvF,KAAK,UAAU,cAAc,CAAC,SAAyB;QACnD,KAAK,IAAI,KAAK,GAAG,EAAE,EAAE,IAAqB,EAAE,CAAC,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,SAAS,EAAE,CAAC;YAC1I,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBACzB,uGAAuG;gBACvG,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7G,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI;QACJ,MAAM;QACN,IAAI;QACJ,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;gBAC7B,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtE,2FAA2F;YAC3F,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC/E,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,OAAqB;IAClD,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACvD,OAAO,aAAa,CAAC,iBAAiB,EAAE,oDAAoD,EAAE,GAAG,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,aAAa,CAAC,oBAAoB,EAAE,4CAA4C,EAAE,GAAG,CAAC,CAAC;AAClG,CAAC;AAKD,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,OAAuB,EAAE,OAAqB,EAAE,UAA4B,EAAE,WAAsB;IAC3I,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,MAAM,CAAC,aAAa,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,mBAAmB,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,6BAA6B,EAAE,CAAC;QAClF,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAC,GAAG,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAC,EAAC,CAAC,CAAC;IAChJ,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAClG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACvE,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IACD,qFAAqF;IACrF,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACxE,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;QACjF,OAAO,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAC,CAAC;IACvE,CAAC;IACD,uFAAuF;IACvF,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7E,MAAM,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC;QACpI,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;QAClE,OAAO,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAC,CAAC,EAAE,MAAM,CAAC,EAAC,CAAC;IACnI,CAAC;IACD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,OAAO,EAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,OAAgB,EAAE,OAAuB,EAAE,QAAkB,EAAE,MAAc,EAAE,OAAqB;IAC7H,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACvC,IAAI,SAAS,IAAI,SAAS,EAAE,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACpF,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,SAAS,IAAI,SAAS,EAAE,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9F,OAAO,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9F,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,aAAa,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,EAAC,MAAM,EAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAC,CAAC,EAAE,MAAM,CAAC,EAAC,CAAC;IACnH,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,iHAAiH;IACjH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7G,OAAO,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,aAAa,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,qEAAqE;IACrE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3E,OAAO,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC1E,OAAO,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAC,CAAC;IACxE,CAAC;IACD,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AACjE,CAAC;AAED,gIAAgI;AAChI,KAAK,UAAU,eAAe,CAAC,QAAyB,EAAE,MAAc,EAAE,OAAoB;IAC1F,OAAO,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,4FAA4F;AAC5F,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,kGAAkG;AAClG,KAAK,UAAU,aAAa,CAAC,OAAgB,EAAE,OAAuB,EAAE,SAAyB,EAAE,OAAqB;IACpH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,aAAa,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,OAAO,CAAC,SAAU,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;QACtE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,yCAAyC,cAAc,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/H,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;IACtS,MAAM,WAAW,GAAG,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnI,OAAO,IAAI,CAAC,EAAC,QAAQ,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC;AAC5G,CAAC;AAED,yHAAyH;AACzH,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,MAAc,EAAE,SAAyB,EAAE,MAA0B;IACjH,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,aAAa,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,EAAC,UAAU,EAAE,CAAC,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,EAAC,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,EAAC,UAAU,EAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,OAAgB,EAAE,MAAc,EAAE,QAAkB,EAAE,MAAc,EAAE,SAAyB,EAAE,OAAoB;IAC9I,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,wGAAwG;IACxG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,EAAE,CAAC;QACpF,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACxC,OAAO,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,EAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAC,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACnE,MAAM,OAAO,GAAkB;YAC3B,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC;YAClD,MAAM;YACN,aAAa;YACb,KAAK,EAAE,MAAM;YACb,SAAS;YACT,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI;YAC5C,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI;YACxC,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE;YACpC,SAAS,EAAE,EAAE;SAChB,CAAC;QACF,MAAM,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,EAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,EAAC,CAAC,EAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC;QAC9F,OAAO,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChF,IAAI,OAAO,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;QAClD,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,4CAA4C,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAkB,EAAC,GAAG,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC;QAClS,MAAM,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,EAAC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;IACnJ,CAAC;IACD,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AACjE,CAAC;AAED,mHAAmH;AACnH,SAAS,QAAQ,CAAC,OAAgB,EAAE,MAA0B;IAC1D,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QAClE,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9B,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC;AAC3C,CAAC;AAED,2EAA2E;AAC3E,SAAS,aAAa,CAAC,OAAgB;IACnC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC;AAC3D,CAAC;AAED,MAAM,SAAS,GAAG,2GAA2G,CAAC;AAC9H,MAAM,aAAa,GAAG,0EAA0E,CAAC;AAEjG;;;;GAIG;AACH,KAAK,UAAU,UAAU,CAAC,OAAgB,EAAE,OAAuB,EAAE,OAAqB,EAAE,WAAsB;IAC9G,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IACvI,MAAM,IAAI,GAAG,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;IAC3I,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5C,OAAO,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACT,gFAAgF;QAChF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAW,CAAC,SAAS,EAAE,MAAM,CAAC,EAAC,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACxC,OAAO,aAAa,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAC,CAAC;AACnF,CAAC;AAED,8GAA8G;AAC9G,MAAM,UAAU,QAAQ,CAAC,OAAqB;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG;QACb,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,sGAAsG;QACtG,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClK,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,YAAY,EAAE,WAAW,EAAE,eAAe;QAC1C,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;KAC9B,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnF,OAAO,aAAa,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;AAC/L,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAwB;IACjG,OAAO;QACH,QAAQ,EAAE,gBAAgB;QAC1B,GAAG,IAAI;QACP,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;QACvD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1H,MAAM;QACN,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CAAC,OAAoB,EAAE,OAA2B,EAAE,QAAsB,EAAE,OAAgB,EAAE,MAAc,EAAE,UAAkB,EAAE,KAAsB;IAC9K,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpG,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,6DAA6D,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAC,CAAC,CAAC,CAAC;IACvP,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5I,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,OAAO,CAAC,OAAO,CAAC;QACtB,wGAAwG;QACxG,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;YAAS,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,KAAK,UAAU,SAAS,CAAC,OAAgB,EAAE,MAAc,EAAE,OAAuB,EAAE,OAAqB;IACrG,MAAM,EAAC,OAAO,EAAE,SAAS,EAAC,GAAG,OAAO,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAE5C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACnD,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,GAAoB,EAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAA+B,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACjJ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,EAAC,GAAG,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,EAAE,GAAG,CAAC,CAAC;IAC7G,CAAC;IAED,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,EAAC,GAAG,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC,CAAC;QACxH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACpE,MAAM,SAAS,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAC,GAAG,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC,CAAC;IACxH,CAAC;IAED,qFAAqF;IACrF,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC,CAAC;IACxH,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAChG,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC;IACpE,CAAC;IAED,QAAQ,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjC,KAAK,qBAAqB,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,mCAAmC,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC;YAClF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACtG,OAAO,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,WAAW;YACZ,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QAChE,KAAK,YAAY,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACjG,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAClD,OAAO,aAAa,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7G,CAAC;QACD,KAAK,aAAa;YACd,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;QAC1D,KAAK,cAAc,CAAC,CAAC,CAAC;YAClB,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5G,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACnB,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAClI,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3C,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBACjH,OAAO,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAChI,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBACxC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9G,OAAO,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9D,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAC,GAAG,KAAK,CAAC;gBAC9C,MAAM,YAAY,GAAiB,EAAC,GAAG,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC;gBACrG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;gBAChF,OAAO,IAAI,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAClI,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,aAAa,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YAClB,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtK,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;gBACrC,OAAO,aAAa,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,GAAG,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAChG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxD,OAAO,aAAa,CAAC,iBAAiB,EAAE,yDAAyD,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9H,CAAC;YACD,OAAO,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAC,EAAE,GAAG,CAAC,CAAC;QACjS,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrG,qHAAqH;YACrH,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAC,cAAc,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,gCAAgC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,wBAAwB,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAC,EAAC,CAAC,CAAC;QACvY,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAC,CAAC,CAAC,CAAC;QACxN,CAAC;QACD,KAAK,eAAe;YAChB,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAClH,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChB,OAAO,aAAa,CAAC,iBAAiB,EAAE,6CAA6C,EAAE,GAAG,CAAC,CAAC;gBAChG,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC,EAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,CAAC;YACnJ,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACjG,OAAO,IAAI,CAAC,EAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAC,CAAC,CAAC;QACnI,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,MAAM,EAAC,IAAI,EAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAC,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,MAAM,EAAC,MAAM,EAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAC,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAClD,MAAM,EAAC,IAAI,EAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1D,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;gBACzD,MAAM,EAAC,WAAW,EAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxE,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YACxG,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAClD,OAAO,aAAa,CAAC,iBAAiB,EAAE,+BAA+B,EAAE,GAAG,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,EAAC,KAAK,EAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,EAAC,CAAC,CAAC;QAC1F,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACtB,MAAM,EAAC,WAAW,EAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,MAAM,EAAC,UAAU,EAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAC,CAAC,CAAC;QACtF,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACvB,MAAM,EAAC,SAAS,EAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAC,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACf,MAAM,EAAC,IAAI,EAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAC,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,MAAM,EAAC,UAAU,EAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAC,CAAC,CAAC;QACtF,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACrB,MAAM,EAAC,SAAS,EAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAC,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACtB,MAAM,EAAC,UAAU,EAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAC,CAAC,CAAC;QACtF,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,MAAM,EAAC,SAAS,EAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAC,CAAC,CAAC;QACjF,CAAC;QACD,KAAK,YAAY;YACb,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,EAAC,CAAC,CAAC;QAClE,KAAK,YAAY;YACb,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,EAAC,CAAC,CAAC;QAClE,KAAK,YAAY;YACb,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrH,KAAK,qBAAqB,CAAC,CAAC,CAAC;YACzB,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,OAAO,aAAa,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAC,CAAC,CAAC;QAClF,CAAC;QACD;YACI,OAAO,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;AACL,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC9D,OAAO,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,8BAA8B,EAAE,uCAAuC,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7L,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB,EAAE,OAAqB;IACzD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,OAAO,aAAa,CAAC,cAAc,EAAE,sCAAsC,EAAE,GAAG,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,IAAI,YAAY,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5H,OAAO,aAAa,CAAC,cAAc,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IAC5C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,IAAI,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG;IACrC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,aAAa,CAAC,IAAe,EAAE,OAAe,EAAE,MAAc,EAAE,UAAmC,EAAE;IAC1G,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAC,EAAC,CAAC,EAAE,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAC,CAAC,CAAC;AAC/G,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAyB,CAAC,IAAI,KAAK,UAAU,CAAC;AACzG,CAAC"}
package/dist/service.d.ts CHANGED
@@ -2,6 +2,7 @@ import { DEFAULT_ROOM_POLICY } from '@pairlobby/protocol';
2
2
  import type { AdapterCapabilities, Attachment, AutoClosePolicy, ContactResponse, ListingRecord, DefaultVisibility, FileRecord, MessageRequest, RequestPage, ExportResponse, ListFilesResponse, ParticipantKind, PermissionChange, RenameSelfRequest, NameSource, ParticipantRole, ReadEventsResponse, ReceiptMode, ReceiptResponse, ReceiptUpdate, RelayLimits, RoomRecord, RoomEvent, RoomInvitationChange, RoomPolicy, RoomType, RoomVisibility, RoomSnapshot, ResolveRequestRequest, SendEventRequest } from '@pairlobby/protocol';
3
3
  import { TurnCoordinator } from './turns.js';
4
4
  import type { RoomStore } from './store.js';
5
+ import type { ExportFormat } from './export.js';
5
6
  type InviteDirectory = {
6
7
  reserve(code: string, roomId: string, expiresAt: number | null): Promise<boolean>;
7
8
  };
@@ -14,6 +15,16 @@ type SentEventResult = {
14
15
  event: RoomEvent;
15
16
  deduplicated: boolean;
16
17
  };
18
+ export type SyncReadOptions = {
19
+ stateAfter: number;
20
+ snapshotAfter?: number | undefined;
21
+ };
22
+ export type RoomConnection = {
23
+ snapshot: RoomSnapshot;
24
+ participantId: string;
25
+ };
26
+ /** Membership authorization for a transport attachment that was authenticated when issued. */
27
+ export declare function assertConnectedParticipant(snapshot: RoomSnapshot, participantId: string): void;
17
28
  export type RequestResolutionResult = {
18
29
  event: RoomEvent;
19
30
  request: MessageRequest;
@@ -92,6 +103,18 @@ export type FileDownload = {
92
103
  file: FileRecord;
93
104
  bytes: Uint8Array;
94
105
  };
106
+ export type FileStreamUpload = {
107
+ name: string;
108
+ mediaType: string;
109
+ size: number;
110
+ body: ReadableStream<Uint8Array>;
111
+ signal?: AbortSignal;
112
+ };
113
+ export type FileStreamDownload = {
114
+ file: FileRecord;
115
+ body: ReadableStream<Uint8Array>;
116
+ };
117
+ export type RoomOperation = <T>(action: () => Promise<T>) => Promise<T>;
95
118
  export type Clock = () => number;
96
119
  export type RelayProfile = {
97
120
  files: boolean;
@@ -135,6 +158,8 @@ export declare class RoomService {
135
158
  constructor(store: RoomStore, now?: Clock, directory?: InviteDirectory | undefined, roomPolicy?: RoomPolicy, options?: RoomServiceOptions);
136
159
  private ctx;
137
160
  private view;
161
+ /** Reading events or requests needs one credential, not every past member and handover. */
162
+ private reader;
138
163
  /** What the room looks like, plus what this relay can do that depends on its store rather than on the room. */
139
164
  private snapshotOf;
140
165
  /** Whether rooms here keep files, and the limits a new room gets: what `GET /v1/server` reports. */
@@ -145,14 +170,20 @@ export declare class RoomService {
145
170
  * that message is sent; an upload nobody sends is removed after an hour.
146
171
  */
147
172
  uploadFile(roomId: string, credential: string, upload: FileUpload): Promise<Attachment>;
173
+ private uploadPermission;
174
+ private uploadRecord;
175
+ /** Reserve quota, stream bounded chunks, and make the upload visible only after validation and fresh authorization. */
176
+ uploadFileStream(roomId: string, credential: string, upload: FileStreamUpload, run?: RoomOperation): Promise<Attachment>;
148
177
  /** Every file a message in this room carries, and how much of its storage they take. Anyone who can read the room can list and fetch them. */
149
178
  listFiles(roomId: string, credential: string): Promise<ListFilesResponse>;
150
179
  private roomFiles;
151
180
  downloadFile(roomId: string, credential: string, fileId: string): Promise<FileDownload>;
181
+ downloadFileStream(roomId: string, credential: string, fileId: string): Promise<FileStreamDownload>;
152
182
  /** Replaces what the client said about each file with the relay's own record of it. */
153
183
  private attachments;
154
184
  createRoom(input: CreateRoomInput): Promise<CreatedRoom>;
155
185
  mintInvite(roomId: string, credential: string, role: ParticipantRole, reusable?: boolean, expiresAt?: number | null, defaultName?: string): Promise<MintedInvite>;
186
+ private mintInviteAttempt;
156
187
  /** A code no invite has, claimed in the directory when there is one. */
157
188
  private allocateCode;
158
189
  /**
@@ -163,6 +194,7 @@ export declare class RoomService {
163
194
  contactInvite(roomId: string, listing: ListingRecord, handle: string): Promise<ContactResponse>;
164
195
  /** Whether a member reaches this listing: it still stands, and they see its room. */
165
196
  listingVisible(listing: ListingRecord, handle: string): Promise<boolean>;
197
+ visibleListings(listings: ListingRecord[], handle: string): Promise<ListingRecord[]>;
166
198
  /**
167
199
  * Redemption binds the invite to one attempt before membership exists, so a
168
200
  * crash between the two steps leaves a resumable reservation rather than an
@@ -171,19 +203,20 @@ export declare class RoomService {
171
203
  /** The room an invite's digest belongs to, for routing before the room checks the code; null when no invite has it. */
172
204
  inviteRoom(digest: string): Promise<string | null>;
173
205
  redeemInvite(input: RedeemInput): Promise<RedeemResult>;
206
+ private redeemInviteAttempt;
174
207
  send(roomId: string, credential: string, request: SendEventRequest): Promise<SentEventResult>;
208
+ private sendAttempt;
175
209
  acknowledgeMessage(roomId: string, credential: string, eventId: string): Promise<MessageRequest | null>;
176
210
  /**
177
211
  * `POST /v1/rooms/:id/receipts`: this participant has received every event up to `throughSeq`.
178
212
  * Moves their watermark and marks their requests up to there received, with no event.
179
213
  */
180
214
  receipt(roomId: string, credential: string, throughSeq: number): Promise<ReceiptResponse>;
215
+ private receiptAttempt;
181
216
  /** A plain receipt with no event: the request it answers when it is addressed to this participant, else their watermark. */
182
217
  private plainReceipt;
183
218
  /** Writes the moved watermark and the requests it marks received, in one write without an event. */
184
219
  private moveWatermark;
185
- /** This participant's requests whose message is at or before `throughSeq` and not yet received, marked received at `now`. */
186
- private receivedThrough;
187
220
  /** The transcript seq of a request's message; 0 when that message is no longer retained, which puts it behind any watermark. */
188
221
  private messageSeqOf;
189
222
  private publicRequest;
@@ -220,6 +253,8 @@ export declare class RoomService {
220
253
  recordInvitation(roomId: string, credential: string, change: RoomInvitationChange): Promise<RoomEvent>;
221
254
  /** Guest entry. Knowing the room id is the entire claim, so the room must allow it. */
222
255
  joinAsGuest(roomId: string, input: GuestJoinInput): Promise<RedeemResult>;
256
+ /** A trusted account layer has already authorized this identity and role; ordinary room admission and retry rules still apply. */
257
+ joinAuthorized(roomId: string, input: GuestJoinInput, role: ParticipantRole): Promise<RedeemResult>;
223
258
  /**
224
259
  * Member entry by name from the relay's local network or tailnet. Only call this
225
260
  * once the transport has established where the request came from; the room
@@ -236,12 +271,20 @@ export declare class RoomService {
236
271
  */
237
272
  closeDueRooms(limit?: number): Promise<AutoCloseSweep>;
238
273
  close(roomId: string, credential: string): Promise<RoomEvent>;
239
- read(roomId: string, credential: string, after: number, limit: number, receiptsAfter?: number): Promise<ReadEventsResponse>;
274
+ read(roomId: string, credential: string, after: number, limit: number, receiptsAfter?: number, sync?: SyncReadOptions): Promise<ReadEventsResponse>;
275
+ private readAttempt;
240
276
  /** Older group events kept the all flag only in their canonical idempotency request. */
241
277
  private restoreAudience;
242
278
  snapshot(roomId: string, credential: string): Promise<RoomSnapshot>;
279
+ connection(roomId: string, credential: string): Promise<RoomConnection>;
280
+ /** Only a transport's authenticated ticket/socket attachment may supply this participant identity. */
281
+ connectedSnapshot(roomId: string, participantId: string): Promise<RoomSnapshot>;
282
+ /** Trusted transport projection, loaded once for a broadcast; each attachment still needs participant authorization. */
283
+ connectionAudience(roomId: string): Promise<RoomSnapshot>;
243
284
  /** Returns the history the caller's room still retains, and says so when retention already dropped some. */
244
285
  export(roomId: string, credential: string): Promise<ExportResponse>;
286
+ exportStream(roomId: string, credential: string, format?: ExportFormat): Promise<Response>;
287
+ private exportSource;
245
288
  /**
246
289
  * The agent a listing shares: the caller's own participant, an agent still in this open room.
247
290
  * `member` is who shares it; an agent that joined as another member is theirs to share.
@@ -249,9 +292,16 @@ export declare class RoomService {
249
292
  listingSubject(roomId: string, credential: string, member: string): Promise<ListingSubject>;
250
293
  /** Whether a listing of this participant still stands: the room open and unexpired, the agent still in it. */
251
294
  listable(roomId: string, participantId: string): Promise<boolean>;
295
+ private listableParticipant;
252
296
  /** Makes the room inaccessible immediately; physical cleanup may lag. */
253
297
  delete(roomId: string, credential: string): Promise<void>;
254
298
  private applyOne;
255
299
  }
300
+ export type StreamDigest = {
301
+ size: number;
302
+ sha256: string;
303
+ };
304
+ /** Portable incremental verification for storage adapters, without retaining the binary body. */
305
+ export declare function sha256Stream(body: ReadableStream<Uint8Array>): Promise<StreamDigest>;
256
306
  export { DEFAULT_ROOM_POLICY };
257
307
  //# sourceMappingURL=service.d.ts.map