@peerbit/document 7.1.2 → 7.1.3-0b8baa8

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.
@@ -24,6 +24,7 @@ import { concat, fromString } from "uint8arrays";
24
24
  import { copySerialization } from "./borsh.js";
25
25
  import { MAX_BATCH_SIZE } from "./constants.js";
26
26
  import { isPutOperation } from "./operation.js";
27
+ import { ResumableIterators } from "./resumable-iterator.js";
27
28
  const logger = loggerFn({ module: "document-index" });
28
29
  const introduceEntries = async (responses, type, sync, options) => {
29
30
  const results = [];
@@ -129,6 +130,7 @@ let DocumentIndex = class DocumentIndex extends Program {
129
130
  indexBy;
130
131
  indexByResolver;
131
132
  index;
133
+ _resumableIterators;
132
134
  // Transformation, indexer
133
135
  /* fields: IndexableFields<T, I>; */
134
136
  _valueEncoding;
@@ -196,10 +198,11 @@ let DocumentIndex = class DocumentIndex extends Program {
196
198
  schema: this.wrappedIndexedType,
197
199
  nested: {
198
200
  match: (obj) => obj instanceof this.dbType,
199
- query: async (obj, query) => obj.index.search(query),
201
+ iterate: async (obj, query) => obj.index.search(query),
200
202
  },
201
203
  /* maxBatchSize: MAX_BATCH_SIZE */
202
204
  })) || new HashmapIndex();
205
+ this._resumableIterators = new ResumableIterators(this.index);
203
206
  await this._query.open({
204
207
  topic: sha256Base64Sync(concat([this._log.log.id, fromString("/document")])),
205
208
  responseHandler: async (query, ctx) => {
@@ -208,12 +211,12 @@ let DocumentIndex = class DocumentIndex extends Program {
208
211
  return;
209
212
  }
210
213
  if (properties.canSearch &&
211
- (query instanceof indexerTypes.SearchRequest ||
212
- query instanceof indexerTypes.CollectNextRequest) &&
214
+ (query instanceof types.SearchRequest ||
215
+ query instanceof types.CollectNextRequest) &&
213
216
  !(await properties.canSearch(query, ctx.from))) {
214
217
  return new types.NoAccess();
215
218
  }
216
- if (query instanceof indexerTypes.CloseIteratorRequest) {
219
+ if (query instanceof types.CloseIteratorRequest) {
217
220
  this.processCloseIteratorRequest(query, ctx.from);
218
221
  }
219
222
  else {
@@ -228,15 +231,15 @@ let DocumentIndex = class DocumentIndex extends Program {
228
231
  }
229
232
  },
230
233
  responseType: types.AbstractSearchResult,
231
- queryType: indexerTypes.AbstractSearchRequest,
234
+ queryType: types.AbstractSearchRequest,
232
235
  });
233
236
  }
234
- getPending(cursorId) {
237
+ async getPending(cursorId) {
235
238
  const queue = this._resultQueue.get(cursorId);
236
239
  if (queue) {
237
240
  return queue.queue.length + queue.keptInIndex;
238
241
  }
239
- return this.index.getPending(cursorId);
242
+ return this._resumableIterators.getPending(cursorId);
240
243
  }
241
244
  async close(from) {
242
245
  const closed = await super.close(from);
@@ -284,14 +287,14 @@ let DocumentIndex = class DocumentIndex extends Program {
284
287
  else {
285
288
  this._resolverCache.del(key.primitive);
286
289
  }
287
- return this.index.del(new indexerTypes.DeleteRequest({
290
+ return this.index.del({
288
291
  query: [indexerTypes.getMatcher(this.indexBy, key.key)],
289
- }));
292
+ });
290
293
  }
291
294
  async getDetailed(key, options) {
292
295
  let results;
293
296
  if (key instanceof Uint8Array) {
294
- results = await this.queryDetailed(new indexerTypes.SearchRequest({
297
+ results = await this.queryDetailed(new types.SearchRequest({
295
298
  query: [
296
299
  new indexerTypes.ByteMatchQuery({ key: this.indexBy, value: key }),
297
300
  ],
@@ -301,7 +304,7 @@ let DocumentIndex = class DocumentIndex extends Program {
301
304
  const indexableKey = indexerTypes.toIdeable(key);
302
305
  if (typeof indexableKey === "number" ||
303
306
  typeof indexableKey === "bigint") {
304
- results = await this.queryDetailed(new indexerTypes.SearchRequest({
307
+ results = await this.queryDetailed(new types.SearchRequest({
305
308
  query: [
306
309
  new indexerTypes.IntegerCompare({
307
310
  key: this.indexBy,
@@ -312,7 +315,7 @@ let DocumentIndex = class DocumentIndex extends Program {
312
315
  }), options);
313
316
  }
314
317
  else if (typeof indexableKey === "string") {
315
- results = await this.queryDetailed(new indexerTypes.SearchRequest({
318
+ results = await this.queryDetailed(new types.SearchRequest({
316
319
  query: [
317
320
  new indexerTypes.StringMatch({
318
321
  key: this.indexBy,
@@ -322,7 +325,7 @@ let DocumentIndex = class DocumentIndex extends Program {
322
325
  }), options);
323
326
  }
324
327
  else if (indexableKey instanceof Uint8Array) {
325
- results = await this.queryDetailed(new indexerTypes.SearchRequest({
328
+ results = await this.queryDetailed(new types.SearchRequest({
326
329
  query: [
327
330
  new indexerTypes.ByteMatchQuery({
328
331
  key: this.indexBy,
@@ -373,14 +376,14 @@ let DocumentIndex = class DocumentIndex extends Program {
373
376
  throw new Error("Different from in queued results");
374
377
  }
375
378
  let indexedResult = undefined;
376
- if (query instanceof indexerTypes.SearchRequest) {
377
- indexedResult = await this.index.query(query);
379
+ if (query instanceof types.SearchRequest) {
380
+ indexedResult = await this._resumableIterators.iterateAndFetch(query);
378
381
  }
379
- else if (query instanceof indexerTypes.CollectNextRequest) {
382
+ else if (query instanceof types.CollectNextRequest) {
380
383
  indexedResult =
381
384
  prevQueued?.keptInIndex === 0
382
- ? { kept: 0, results: [] }
383
- : await this.index.next(query);
385
+ ? []
386
+ : await this._resumableIterators.next(query);
384
387
  }
385
388
  else {
386
389
  throw new Error("Unsupported");
@@ -388,12 +391,13 @@ let DocumentIndex = class DocumentIndex extends Program {
388
391
  const filteredResults = [];
389
392
  let resultSize = 0;
390
393
  let toIterate = prevQueued
391
- ? [...prevQueued.queue, ...indexedResult.results]
392
- : indexedResult.results;
394
+ ? [...prevQueued.queue, ...indexedResult]
395
+ : indexedResult;
393
396
  if (prevQueued) {
394
397
  this._resultQueue.delete(query.idString);
395
398
  prevQueued = undefined;
396
399
  }
400
+ let kept = (await this._resumableIterators.getPending(query.idString)) ?? 0;
397
401
  if (!isLocal) {
398
402
  prevQueued = {
399
403
  from,
@@ -401,7 +405,7 @@ let DocumentIndex = class DocumentIndex extends Program {
401
405
  timeout: setTimeout(() => {
402
406
  this._resultQueue.delete(query.idString);
403
407
  }, 6e4),
404
- keptInIndex: indexedResult.kept,
408
+ keptInIndex: kept,
405
409
  };
406
410
  this._resultQueue.set(query.idString, prevQueued);
407
411
  }
@@ -427,7 +431,7 @@ let DocumentIndex = class DocumentIndex extends Program {
427
431
  }
428
432
  const results = new types.Results({
429
433
  results: filteredResults,
430
- kept: BigInt(indexedResult.kept + (prevQueued?.queue.length || 0)),
434
+ kept: BigInt(kept + (prevQueued?.queue.length || 0)),
431
435
  });
432
436
  if (!isLocal && results.kept === 0n) {
433
437
  this.clearResultsQueue(query);
@@ -448,7 +452,7 @@ let DocumentIndex = class DocumentIndex extends Program {
448
452
  return;
449
453
  }
450
454
  this.clearResultsQueue(query);
451
- return this.index.close(query);
455
+ return this._resumableIterators.close(query);
452
456
  }
453
457
  /**
454
458
  * Query and retrieve results with most details
@@ -502,7 +506,7 @@ let DocumentIndex = class DocumentIndex extends Program {
502
506
  }
503
507
  };
504
508
  try {
505
- if (queryRequest instanceof indexerTypes.CloseIteratorRequest) {
509
+ if (queryRequest instanceof types.CloseIteratorRequest) {
506
510
  // don't wait for responses
507
511
  await this._query.request(queryRequest, { mode: remote.mode });
508
512
  }
@@ -559,8 +563,7 @@ let DocumentIndex = class DocumentIndex extends Program {
559
563
  const iterator = this.iterate(queryRequest, options);
560
564
  // So that this call will not do any remote requests
561
565
  const allResults = [];
562
- while (iterator.done() === false &&
563
- queryRequest.fetch > allResults.length) {
566
+ while (iterator.done() !== true && queryRequest.fetch > allResults.length) {
564
567
  // We might need to pull .next multiple time due to data message size limitations
565
568
  for (const result of await iterator.next(queryRequest.fetch - allResults.length)) {
566
569
  allResults.push(result);
@@ -664,7 +667,7 @@ let DocumentIndex = class DocumentIndex extends Program {
664
667
  }
665
668
  // TODO buffer more than deleted?
666
669
  // TODO batch to multiple 'to's
667
- const collectRequest = new indexerTypes.CollectNextRequest({
670
+ const collectRequest = new types.CollectNextRequest({
668
671
  id: queryRequest.id,
669
672
  amount: n - buffer.buffer.length,
670
673
  });
@@ -796,7 +799,7 @@ let DocumentIndex = class DocumentIndex extends Program {
796
799
  };
797
800
  const close = async () => {
798
801
  controller.abort(new AbortError("Iterator closed"));
799
- const closeRequest = new indexerTypes.CloseIteratorRequest({
802
+ const closeRequest = new types.CloseIteratorRequest({
800
803
  id: queryRequest.id,
801
804
  });
802
805
  const promises = [];
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAqB,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAEN,aAAa,EACb,gBAAgB,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAC;AACrD,OAAO,KAAK,YAAY,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAiB,KAAK,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACN,qBAAqB,EACrB,GAAG,EAGH,QAAQ,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAA0B,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAkB,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhE,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAqCtD,MAAM,gBAAgB,GAAG,KAAK,EAC7B,SAAuD,EACvD,IAAqB,EACrB,IAAiD,EACjD,OAAoC,EACO,EAAE;IAC7C,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;YAChD,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,IAAI,OAAO,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACxE,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,EAAE,UAAU;gBAClB,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB;YACjF,OAAO,CAAC,IAAI,CAAC,QAAyC,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,YAAY,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CACb,SAAc,EACd,OAA4D,EAC3D,EAAE;IACH,MAAM,MAAM,GAAkC,IAAI,GAAG,EAAE,CAAC;IACxD,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS;QACV,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAkBvB,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAE5B,OAAO,CAAS;IAGhB,QAAQ,CAAS;IAGjB,IAAI,CAAS;IAGb,GAAG,CAAS;IAGZ,IAAI,CAAS,CAAC,2FAA2F;IAEzG,YAAY,UAMX;QACA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,SAAS;QACR,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;SACb,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AApCA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;iDACP;AAGhB;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;kDACN;AAGjB;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;8CACb;AAGb;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;6CACd;AAGZ;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;8CACV;AAdD,gBAAgB;IAD5B,OAAO,CAAC,CAAC,CAAC;;GACE,gBAAgB,CAsC5B;;AAkBD,MAAM,yBAAyB,GAAG,CACjC,OAA+B,EACU,EAAE;IAC3C,OAAQ,OAAuC,CAAC,SAAS,IAAI,IAAI,CAAC;AACnE,CAAC,CAAC;AAmBK,IAAM,aAAa,GAAnB,MAAM,aAIX,SAAQ,OAA6B;IAEtC,MAAM,CAGJ;IAEF,mCAAmC;IACnC,YAAY,CAAkB;IAE9B,oBAAoB;IACpB,WAAW,CAAoB;IAE/B,4CAA4C;IAC5C,kBAAkB,CAAoB;IAEtC,4CAA4C;IAC5C,MAAM,CAAwC;IAC9C,yBAAyB,CAAU;IAEnC,YAAY;IACJ,OAAO,CAAW;IAClB,eAAe,CAAoC;IAC3D,KAAK,CAA8C;IAEnD,0BAA0B;IAC1B,oCAAoC;IAE5B,cAAc,CAAc;IAE5B,KAAK,CAA8C;IAEnD,IAAI,CAA0B;IAE9B,qBAAqB,CAAoC;IACzD,cAAc,CAAW;IACzB,gBAAgB,CAAU;IAE1B,YAAY,CAQlB;IAEF,YAAY,UAKX;QACA,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAEK,AAAN,KAAK,CAAC,IAAI,CAAC,UAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC;QAE3B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,yBAAyB;YAC7B,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI;gBAC3B,UAAU,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,CAAC,YAAY,CAAC;QAExD,IACM,uBAAuB,GAD7B,MACM,uBAAuB;YAE5B,SAAS,CAAmB;YAE5B,YAAY,KAAQ,EAAE,OAAyB;gBAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YAC1B,CAAC;SACD,CAAA;QANA;YADC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;sCACvB,gBAAgB;kEAAC;QAFvB,uBAAuB;YAD5B,OAAO,CAAC,CAAC,CAAC;qDAKqB,gBAAgB;WAJ1C,uBAAuB,CAQ5B;QAED,wEAAwE;QACxE,iBAAiB,CAChB,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,UAAU,CAAC,YAAY,CAAE,EACxD,uBAAuB,CACvB,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,uBAGE,CAAC;QAE7B,mFAAmF;QACnF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,YAAY,OAAO,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;QAE7B,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,gBAAgB;YAClC,CAAC,CAAC,yBAAyB,CAAC,gBAAgB,CAAC;gBAC5C,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;gBAC5D,CAAC,CAAC,gBAAgB,CAAC,IAAI;oBACtB,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAK,CAAC,GAAG,EAAE,OAAO,CAAC;oBAC5D,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAe;YAC5B,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAe,CAAC,CAAC,aAAa;QAE1C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,CAAC,GAAQ,EAAE,EAAE,CACnC,YAAY,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,sCAAsC;QAEpF,IAAI,CAAC,KAAK;YACT,CAAC,MAAM,CACN,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAC5B,gBAAgB,CACf,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACzD,CACD,CACD,CAAC,IAAI,CAAC;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,kBAAkB;gBAC/B,MAAM,EAAE;oBACP,KAAK,EAAE,CAAC,GAAQ,EAAoC,EAAE,CACrD,GAAG,YAAY,IAAI,CAAC,MAAM;oBAC3B,KAAK,EAAE,KAAK,EAAE,GAA8B,EAAE,KAAK,EAAE,EAAE,CACtD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;iBACxB;gBACD,kCAAkC;aAClC,CAAC,CAAC,IAAI,IAAI,YAAY,EAA2B,CAAC;QAEpD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,gBAAgB,CACtB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CACnD;YACD,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACrC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;oBAC5C,OAAO;gBACR,CAAC;gBAED,IACC,UAAU,CAAC,SAAS;oBACpB,CAAC,KAAK,YAAY,YAAY,CAAC,aAAa;wBAC3C,KAAK,YAAY,YAAY,CAAC,kBAAkB,CAAC;oBAClD,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAC3B,KAEkC,EAClC,GAAG,CAAC,IAAI,CACR,CAAC,EACD,CAAC;oBACF,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC7B,CAAC;gBAED,IAAI,KAAK,YAAY,YAAY,CAAC,oBAAoB,EAAE,CAAC;oBACxD,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACP,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CACtC,KAGkC,EAClC,GAAG,CAAC,IAAI,EACR,KAAK,EACL;wBACC,OAAO,EAAE,UAAU,CAAC,OAAO;qBAC3B,CACD,CAAC;oBAEF,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;wBACxB,2GAA2G;wBAC3G,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;qBAClB,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YACD,YAAY,EAAE,KAAK,CAAC,oBAAoB;YACxC,SAAS,EAAE,YAAY,CAAC,qBAAqB;SAC7C,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,QAAgB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAc;QACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAc;QACxB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,GAAG,CACf,GAA8C,EAC9C,OAA4B;QAE5B,OAAO,CACN,MAAM,IAAI,CAAC,WAAW,CACrB,GAAG,YAAY,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAChE,OAAO,CACP,CACD,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAQ,EAAE,KAAuB,EAAE,EAAsB;QACzE,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC;QAC9B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;YACpC,OAAO,EACN,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;gBACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ;YACpC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ;YAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG;YACnB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;SAC9B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,kBAAkB,CACtD,YAAiB,EACjB,OAAO,CACP,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC;IAEM,GAAG,CAAC,GAAuB;QACjC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CACpB,IAAI,YAAY,CAAC,aAAa,CAAC;YAC9B,KAAK,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;SACvD,CAAC,CACF,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CACvB,GAAkD,EAClD,OAA4B;QAE5B,IAAI,OAAuC,CAAC;QAC5C,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC/B,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,IAAI,YAAY,CAAC,aAAa,CAAC;gBAC9B,KAAK,EAAE;oBACN,IAAI,YAAY,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;iBAClE;aACD,CAAC,EACF,OAAO,CACP,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAEjD,IACC,OAAO,YAAY,KAAK,QAAQ;gBAChC,OAAO,YAAY,KAAK,QAAQ,EAC/B,CAAC;gBACF,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,IAAI,YAAY,CAAC,aAAa,CAAC;oBAC9B,KAAK,EAAE;wBACN,IAAI,YAAY,CAAC,cAAc,CAAC;4BAC/B,GAAG,EAAE,IAAI,CAAC,OAAO;4BACjB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK;4BACnC,KAAK,EAAE,YAAY;yBACnB,CAAC;qBACF;iBACD,CAAC,EACF,OAAO,CACP,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBAC7C,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,IAAI,YAAY,CAAC,aAAa,CAAC;oBAC9B,KAAK,EAAE;wBACN,IAAI,YAAY,CAAC,WAAW,CAAC;4BAC5B,GAAG,EAAE,IAAI,CAAC,OAAO;4BACjB,KAAK,EAAE,YAAY;yBACnB,CAAC;qBACF;iBACD,CAAC,EACF,OAAO,CACP,CAAC;YACH,CAAC;iBAAM,IAAI,YAAY,YAAY,UAAU,EAAE,CAAC;gBAC/C,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CACjC,IAAI,YAAY,CAAC,aAAa,CAAC;oBAC9B,KAAK,EAAE;wBACN,IAAI,YAAY,CAAC,cAAc,CAAC;4BAC/B,GAAG,EAAE,IAAI,CAAC,OAAO;4BACjB,KAAK,EAAE,YAAY;yBACnB,CAAC;qBACF;iBACD,CAAC,EACF,OAAO,CACP,CAAC;YACH,CAAC;QACF,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,eAAe,CAC5B,KAA0D;QAE1D,MAAM,MAAM,GACX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC;YAC3C,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACpC,uFAAuF;YACvF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAC1C,KAAK,CAAC,KAAK,CACX,CAAC;YACF,OAAO,GAAG,CAAC,SAAS,CAAC;YACrB,OAAO,EAAE,KAAK,EAAE,GAAQ,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,CAAC,oGAAoG;YACtH,8EAA8E;QAC/E,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,OAAO;gBACN,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;gBACpD,wCAAwC;aACxC,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CACd,+CAA+C;YAC9C,YAAY,EAAE,WAAW,EAAE,IAAI,IAAI,OAAO,YAAY,CACvD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CACjB,KAAmE,EACnE,IAAmB,EACnB,OAAgB,EAChB,OAEC;QAED,+EAA+E;QAE/E,IAAI,UAAU,GAAG,OAAO;YACvB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,aAAa,GAEF,SAAS,CAAC;QACzB,IAAI,KAAK,YAAY,YAAY,CAAC,aAAa,EAAE,CAAC;YACjD,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,KAAK,YAAY,YAAY,CAAC,kBAAkB,EAAE,CAAC;YAC7D,aAAa;gBACZ,UAAU,EAAE,WAAW,KAAK,CAAC;oBAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;oBAC1B,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,eAAe,GAAgC,EAAE,CAAC;QACxD,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,SAAS,GAAG,UAAU;YACzB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;QAEzB,IAAI,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzC,UAAU,GAAG,SAAS,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,UAAU,GAAG;gBACZ,IAAI;gBACJ,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE;oBACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC1C,CAAC,EAAE,GAAG,CAAC;gBACP,WAAW,EAAE,aAAa,CAAC,IAAI;aAC/B,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,UAAU,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC1C,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;oBACjC,UAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/B,SAAS;gBACV,CAAC;YACF,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACjD,IACC,CAAC,KAAK;gBACN,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAChE,CAAC;gBACF,SAAS;YACV,CAAC;YAED,eAAe,CAAC,IAAI,CACnB,IAAI,KAAK,CAAC,gBAAgB,CAAC;gBAC1B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE;gBAC3C,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC9B,OAAO,EAAE,MAAM,CAAC,KAAK;aACrB,CAAC,CACF,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,KAAK,CAAC,OAAO,CAAC;YACnD,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;SAClE,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,iBAAiB,CAChB,KAGoC;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,KAAK,EAAE,CAAC;YACX,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;IACD,KAAK,CAAC,2BAA2B,CAChC,KAAwC,EACxC,SAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO;QACR,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CACzB,YAAwC,EACxC,OAAoC;QAEpC,MAAM,KAAK,GAAG,OAAO,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,IAAI,MAAM,GAEK,SAAS,CAAC;QACzB,IAAI,OAAO,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;gBACrB,MAAM,GAAG,EAAE,CAAC;YACb,CAAC;iBAAM,CAAC;gBACP,MAAM,GAAG,SAAS,CAAC;YACpB,CAAC;QACF,CAAC;aAAM,CAAC;YACP,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YACvC,mEAAmE;YACnE,2JAA2J;YAC3J,+GAA+G;YAC/G,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACd,iEAAiE,CACjE,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAuB,EAAE,CAAC;QAE1C,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CACtC,YAAY,EACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAC5B,IAAI,CACJ,CAAC;YACF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAE,UAAU;oBAClB,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACF,CAAC;QAED,IAAI,QAAQ,GAAuB,EAAE,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAChD,MAAM,CAAC,MAAM,IAAK,SAAiB,EACnC;gBACC,OAAO,EAAE,MAAM,CAAC,MAAM;gBACtB,KAAK,EAAE,MAAM,CAAC,KAAK;aACnB,CACD,CAAC;YAEF,IAAI,gBAAgB,EAAE,CAAC;gBACtB,MAAM,WAAW,GAAe,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM,eAAe,GAAG,KAAK,EAC5B,OAAqD,EACpD,EAAE;oBACH,KAAK,MAAM,CAAC,IAAI,MAAM,gBAAgB,CACrC,OAAO,EACP,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,KAAK,EACV,OAAO,CACP,EAAE,CAAC;wBACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3B,CAAC;gBACF,CAAC,CAAC;gBACF,IAAI,CAAC;oBACJ,IAAI,YAAY,YAAY,YAAY,CAAC,oBAAoB,EAAE,CAAC;wBAC/D,2BAA2B;wBAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjE,CAAC;yBAAM,CAAC;wBACP,MAAM,QAAQ,CACb,IAAI,CAAC,MAAM,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,MAAM,CACN,CAAC;oBACH,CAAC;gBACF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;wBAC5C,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;wBACzD,IAAI,MAAM,EAAE,cAAc,EAAE,CAAC;4BAC5B,MAAM,KAAK,CAAC;wBACb,CAAC;oBACF,CAAC;yBAAM,CAAC;wBACP,MAAM,KAAK,CAAC;oBACb,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,8EAA8E;gBAC9E;;;;yBAIM;gBACN;;qBAEK;YACN,CAAC;QACF,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC;gBACP,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;oBACxB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACP,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAClB,YAAwC,EACxC,OAA6B;QAE7B,2EAA2E;QAC3E,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,UAAU,CAAC;QAEtD,mEAAmE;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAErD,oDAAoD;QACpD,MAAM,UAAU,GAAQ,EAAE,CAAC;QAC3B,OACC,QAAQ,CAAC,IAAI,EAAE,KAAK,KAAK;YACzB,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,EACrC,CAAC;YACF,iFAAiF;YACjF,KAAK,MAAM,MAAM,IAAI,MAAM,QAAQ,CAAC,IAAI,CACvC,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CACtC,EAAE,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;QAED,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,0CAA0C;QAC1C,OAAO,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACI,OAAO,CACb,YAAwC,EACxC,OAA4B;QAE5B,IAAI,YAAY,GAA6B,SAAS,CAAC;QACvD,MAAM,aAAa,GAMf,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEpD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,yCAAyC;QACzC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,MAAM,WAAW,GAAG,GAKhB,EAAE;YACL,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,KAAK,EAAE,CAAS,EAAoB,EAAE;YACxD,IAAI,GAAG,IAAI,CAAC,CAAC,sBAAsB;YACnC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;gBACtC,GAAG,OAAO;gBACV,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;oBACpC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACX,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;wBACtC,OAAO;oBACR,CAAC;oBACD,IAAI,QAAQ,YAAY,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACxC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;wBACjC,OAAO;oBACR,CAAC;yBAAM,IAAI,QAAQ,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;wBAC9C,MAAM,OAAO,GAAG,QAA4B,CAAC;wBAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACzD,OAAO;wBACR,CAAC;wBAED,IAAI,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;4BACvB,IAAI,GAAG,KAAK,CAAC,CAAC,4BAA4B;wBAC3C,CAAC;wBACD,MAAM,MAAM,GAAwB,EAAE,CAAC;wBAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;4BACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAClC,CAAC,SAAS,CAAC;4BACZ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAC3B,SAAS;4BACV,CAAC;4BACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;4BACtB,MAAM,CAAC,IAAI,CAAC;gCACX,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,IAAI;gCACJ,OAAO,EACN,MAAM,CAAC,OAAO;oCACd,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;6BACvD,CAAC,CAAC;wBACJ,CAAC;wBAED,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;4BAClC,MAAM;4BACN,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;yBAC3B,CAAC,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACP,MAAM,IAAI,KAAK,CACd,2BAA2B,GAAG,QAAQ,EAAE,WAAW,EAAE,IAAI,CACzD,CAAC;oBACH,CAAC;gBACF,CAAC;aACD,CAAC,CAAC;YAEH,IAAI,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;YACxC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;gBACnB,OAAO;YACR,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,WAAW,EAAE,CAAC;YACzB,CAAC;YAED,MAAM,YAAY,CAAC;YAEnB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,KAAK,GAAG,IAAI,CAAC;gBACb,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC7B,OAAO,YAAY,CAAC;YACrB,CAAC;YAED,MAAM,QAAQ,GAAmB,EAAE,CAAC;YACpC,IAAI,WAAW,GAAG,CAAC,CAAC;YAEpB,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC5C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAClD,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB;wBAC/C,CAAC;wBACD,SAAS;oBACV,CAAC;oBAED,iCAAiC;oBACjC,+BAA+B;oBAC/B,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC;wBAC1D,EAAE,EAAE,YAAY,CAAC,EAAE;wBACnB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;qBAChC,CAAC,CAAC;oBACH,iBAAiB;oBACjB,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;wBACtD,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,YAAY,CAChB,cAAc,EACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAC5B,IAAI,CACJ;6BACC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;4BACvB,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BAEpC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gCAClC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oCAClD,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB;gCAC/C,CAAC;4BACF,CAAC;iCAAM,CAAC;gCACP,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gCAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;oCACjB,OAAO;gCACR,CAAC;gCACD,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gCAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oCACtC,IACC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yCACnD,SAAS,CACX,EACA,CAAC;wCACF,SAAS;oCACV,CAAC;oCACD,OAAO,CAAC,GAAG,CACV,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yCACnD,SAAS,CACX,CAAC;oCACF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;wCACtB,KAAK,EAAE,MAAM,CAAC,KAAK;wCACnB,OAAO,EAAE,MAAM,CAAC,OAAO;wCACvB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS;wCAClC,OAAO,EACN,MAAM,CAAC,OAAO;4CACd,CAAC,MAAM,IAAI,CAAC,WAAW,CACtB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CACd,CAAC;qCACH,CAAC,CAAC;gCACJ,CAAC;4BACF,CAAC;wBACF,CAAC,CAAC;6BACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CACX,8CAA8C,GAAG,CAAC,EAAE,OAAO,CAC3D,CAAC;4BACF,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC5B,CAAC,CAAC,CACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACP,iBAAiB;wBACjB,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,MAAM;6BACT,OAAO,CAAC,cAAc,EAAE;4BACxB,GAAG,OAAO;4BACV,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,QAAQ,EAAE,CAAC;4BACX,IAAI,EAAE,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;yBACvD,CAAC;6BACD,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAClB,gBAAgB,CACf,QAAQ,EACR,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,KAAK,EACV,OAAO,CACP;6BACC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;4BACnB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gCAC1B,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gCAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oCACpB,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;oCAC9C,OAAO;gCACR,CAAC;gCAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oCAC5C,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wCAClD,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB;oCAC/C,CAAC;gCACF,CAAC;qCAAM,CAAC;oCACP,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oCAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;wCACjB,OAAO;oCACR,CAAC;oCACD,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oCACjD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;wCAChD,IACC,OAAO,CAAC,GAAG,CACV,YAAY,CAAC,IAAI,CAChB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAClC,CAAC,SAAS,CACX,EACA,CAAC;4CACF,SAAS;wCACV,CAAC;wCACD,OAAO,CAAC,GAAG,CACV,YAAY,CAAC,IAAI,CAChB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAClC,CAAC,SAAS,CACX,CAAC;wCACF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;4CACtB,KAAK,EAAE,MAAM,CAAC,KAAK;4CACnB,OAAO,EAAE,MAAM,CAAC,OAAO;4CACvB,IAAI,EAAE,QAAQ,CAAC,IAAK;4CACpB,OAAO,EAAE,IAAI,CAAC,WAAW,CACxB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,CACd;yCACD,CAAC,CAAC;oCACJ,CAAC;gCACF,CAAC;4BACF,CAAC,CAAC,CAAC;wBACJ,CAAC,CAAC;6BACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;4BACZ,MAAM,CAAC,KAAK,CACX,yCAAyC;gCACxC,IAAI;gCACJ,IAAI;gCACJ,CAAC,EAAE,OAAO,CACX,CAAC;4BACF,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC5B,CAAC,CAAC,CACH,CACF,CAAC;oBACH,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,WAAW,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;gBACnD,CAAC;YACF,CAAC;YACD,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACtD,OAAO,WAAW,KAAK,CAAC,CAAC,CAAC,gDAAgD;YAC3E,CAAC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;YACX,CAAC;YAED,8CAA8C;YAC9C,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;YAEzC,sDAAsD;YACtD,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC5C,YAAY,CAAC,kBAAkB,CAC9B,CAAC,CAAC,OAAO,EACT,CAAC,CAAC,OAAO,EACT,YAAY,CAAC,IAAI,CACjB,CACD,CAAC;YAEF,MAAM,kBAAkB,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEnC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACtD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACV,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBAC/C,SAAS;gBACV,CAAC;gBACD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;oBACd,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC;YAED,IAAI,GAAG,UAAU,IAAI,CAAC,kBAAkB,CAAC;YAEzC,OAAO,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EACzB,IAAI,CAAC,eAAe,CACpB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;YACxB,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAEpD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,oBAAoB,CAAC;gBAC1D,EAAE,EAAE,YAAY,CAAC,EAAE;aACnB,CAAC,CAAC;YACH,MAAM,QAAQ,GAAmB,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACvB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC3B,SAAS;gBACV,CAAC;gBACD,iBAAiB;gBACjB,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACtD,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,2BAA2B,CAC/B,YAAY,EACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC5B,CACD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACP,eAAe;oBACf,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;wBAC9B,GAAG,OAAO;wBACV,IAAI,EAAE,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;qBACvD,CAAC,CACF,CAAC;gBACH,CAAC;YACF,CAAC;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,OAAO;YACN,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;SAChB,CAAC;IACH,CAAC;CACD,CAAA;AAz+BA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;8BACb,GAAG;6CAGT;AATU,aAAa;IADzB,OAAO,CAAC,iBAAiB,CAAC;;GACd,aAAa,CA++BzB"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,76 +1,76 @@
1
1
  {
2
- "name": "@peerbit/document",
3
- "version": "7.1.2",
4
- "description": "Document store implementation",
5
- "type": "module",
6
- "sideEffects": false,
7
- "types": "./dist/src/index.d.ts",
8
- "typesVersions": {
9
- "*": {
10
- "*": [
11
- "*",
12
- "dist/*",
13
- "dist/src/*",
14
- "dist/src/*/index"
15
- ],
16
- "src/*": [
17
- "*",
18
- "dist/*",
19
- "dist/src/*",
20
- "dist/src/*/index"
21
- ]
22
- }
23
- },
24
- "files": [
25
- "src",
26
- "dist",
27
- "!dist/e2e",
28
- "!dist/test",
29
- "!**/*.tsbuildinfo"
30
- ],
31
- "exports": {
32
- ".": {
33
- "types": "./dist/src/index.d.ts",
34
- "import": "./dist/src/index.js"
35
- }
36
- },
37
- "eslintConfig": {
38
- "extends": "peerbit",
39
- "parserOptions": {
40
- "project": true,
41
- "sourceType": "module"
42
- },
43
- "ignorePatterns": [
44
- "!.aegir.js",
45
- "test/ts-use",
46
- "*.d.ts"
47
- ]
48
- },
49
- "publishConfig": {
50
- "access": "public"
51
- },
52
- "scripts": {
53
- "clean": "aegir clean",
54
- "build": "aegir build --no-bundle",
55
- "test": "aegir test --target node",
56
- "lint": "aegir lint"
57
- },
58
- "author": "dao.xyz",
59
- "license": "MIT",
60
- "dependencies": {
61
- "@dao-xyz/borsh": "^5.2.3",
62
- "@peerbit/program": "5.0.2",
63
- "@peerbit/rpc": "5.0.9",
64
- "@peerbit/shared-log": "9.1.2",
65
- "@peerbit/indexer-interface": "^1.0.3",
66
- "@peerbit/indexer-simple": "^1.0.4",
67
- "@peerbit/indexer-sqlite3": "^1.0.7",
68
- "@peerbit/document-interface": "^1.0.4"
69
- },
70
- "devDependencies": {
71
- "@peerbit/test-utils": "2.0.43",
72
- "@peerbit/time": "2.0.7",
73
- "@types/pidusage": "^2.0.5",
74
- "pidusage": "^3.0.2"
75
- }
2
+ "name": "@peerbit/document",
3
+ "version": "7.1.3-0b8baa8",
4
+ "description": "Document store implementation",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "types": "./dist/src/index.d.ts",
8
+ "typesVersions": {
9
+ "*": {
10
+ "*": [
11
+ "*",
12
+ "dist/*",
13
+ "dist/src/*",
14
+ "dist/src/*/index"
15
+ ],
16
+ "src/*": [
17
+ "*",
18
+ "dist/*",
19
+ "dist/src/*",
20
+ "dist/src/*/index"
21
+ ]
22
+ }
23
+ },
24
+ "files": [
25
+ "src",
26
+ "dist",
27
+ "!dist/e2e",
28
+ "!dist/test",
29
+ "!**/*.tsbuildinfo"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/src/index.d.ts",
34
+ "import": "./dist/src/index.js"
35
+ }
36
+ },
37
+ "eslintConfig": {
38
+ "extends": "peerbit",
39
+ "parserOptions": {
40
+ "project": true,
41
+ "sourceType": "module"
42
+ },
43
+ "ignorePatterns": [
44
+ "!.aegir.js",
45
+ "test/ts-use",
46
+ "*.d.ts"
47
+ ]
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "scripts": {
53
+ "clean": "aegir clean",
54
+ "build": "aegir build --no-bundle",
55
+ "test": "aegir test --target node",
56
+ "lint": "aegir lint"
57
+ },
58
+ "author": "dao.xyz",
59
+ "license": "MIT",
60
+ "dependencies": {
61
+ "@dao-xyz/borsh": "^5.2.3",
62
+ "@peerbit/program": "5.0.3-0b8baa8",
63
+ "@peerbit/rpc": "5.0.10-0b8baa8",
64
+ "@peerbit/shared-log": "9.2.0-0b8baa8",
65
+ "@peerbit/indexer-interface": "1.1.0-0b8baa8",
66
+ "@peerbit/indexer-simple": "1.1.0-0b8baa8",
67
+ "@peerbit/indexer-sqlite3": "1.1.0-0b8baa8",
68
+ "@peerbit/document-interface": "1.0.5-0b8baa8"
69
+ },
70
+ "devDependencies": {
71
+ "@peerbit/test-utils": "2.1.0-0b8baa8",
72
+ "@peerbit/time": "2.0.7-0b8baa8",
73
+ "@types/pidusage": "^2.0.5",
74
+ "pidusage": "^3.0.2"
75
+ }
76
76
  }
package/src/domain.ts ADDED
@@ -0,0 +1,55 @@
1
+ import { Entry, type ShallowEntry } from "@peerbit/log";
2
+ import {
3
+ type EntryReplicated,
4
+ type ReplicationDomain,
5
+ } from "@peerbit/shared-log";
6
+ import {
7
+ type Documents,
8
+ type Operation,
9
+ isPutOperation,
10
+ } from "../src/index.js";
11
+
12
+ type RangeArgs = { from: number; to: number };
13
+ export type CustomDomain = ReplicationDomain<RangeArgs, Operation>;
14
+
15
+ export const createDocumentDomain = <T extends object>(
16
+ db: Documents<T, any, CustomDomain>,
17
+ options: {
18
+ fromValue: (value: T) => number;
19
+ fromMissing?: (
20
+ entry: EntryReplicated | ShallowEntry | Entry<Operation>,
21
+ ) => number;
22
+ },
23
+ ): CustomDomain => {
24
+ const fromValue = options.fromValue;
25
+ const fromMissing = options.fromMissing || (() => 0xffffffff);
26
+ return {
27
+ type: "custom",
28
+ fromArgs(args, log) {
29
+ if (!args) {
30
+ return { offset: log.node.identity.publicKey };
31
+ }
32
+ return {
33
+ offset: args.from,
34
+ length: args.to - args.from,
35
+ };
36
+ },
37
+ fromEntry: async (entry) => {
38
+ const item = await (
39
+ entry instanceof Entry ? entry : await db.log.log.get(entry.hash)
40
+ )?.getPayloadValue();
41
+ if (!item) {
42
+ // eslint-disable-next-line no-console
43
+ console.error("Item not found");
44
+ return fromMissing(entry);
45
+ }
46
+
47
+ if (isPutOperation(item)) {
48
+ const document = db.index.valueEncoding.decoder(item.data);
49
+ return fromValue(document);
50
+ }
51
+
52
+ return fromMissing(entry);
53
+ },
54
+ };
55
+ };
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "@peerbit/indexer-interface";
2
+ export * from "@peerbit/document-interface";
2
3
  export * from "./program.js";
3
4
  export type {
4
5
  CanRead,
package/src/program.ts CHANGED
@@ -5,7 +5,6 @@ import {
5
5
  serialize,
6
6
  variant,
7
7
  } from "@dao-xyz/borsh";
8
- import { CustomEvent } from "@libp2p/interface";
9
8
  import { AccessError } from "@peerbit/crypto";
10
9
  import * as documentsTypes from "@peerbit/document-interface";
11
10
  import * as indexerTypes from "@peerbit/indexer-interface";
@@ -0,0 +1,58 @@
1
+ import { Cache } from "@peerbit/cache";
2
+ import {
3
+ type CloseIteratorRequest,
4
+ type CollectNextRequest,
5
+ SearchRequest,
6
+ } from "@peerbit/document-interface";
7
+ import type * as indexerTypes from "@peerbit/indexer-interface";
8
+
9
+ export class ResumableIterators<T extends Record<string, any>> {
10
+ constructor(
11
+ readonly index: indexerTypes.Index<T>,
12
+ readonly queues = new Cache<{
13
+ iterator: indexerTypes.IndexIterator<T, undefined>;
14
+ }>({ max: 1e4 }),
15
+ ) {
16
+ // TODO choose upper limit better
17
+ }
18
+
19
+ iterateAndFetch(request: SearchRequest) {
20
+ const iterator = this.index.iterate(request);
21
+ const cachedIterator = {
22
+ iterator,
23
+ };
24
+ this.queues.add(request.idString, cachedIterator);
25
+ return this.next(request, cachedIterator);
26
+ }
27
+
28
+ async next(
29
+ request: SearchRequest | CollectNextRequest,
30
+ iterator = this.queues.get(request.idString),
31
+ ) {
32
+ if (!iterator) {
33
+ throw new Error(
34
+ "Missing iterator for request with id: " + request.idString,
35
+ );
36
+ }
37
+
38
+ const next = await iterator.iterator.next(
39
+ request instanceof SearchRequest ? request.fetch : request.amount,
40
+ );
41
+ if (iterator.iterator.done() === true) {
42
+ this.clear(request.idString);
43
+ }
44
+ return next;
45
+ }
46
+
47
+ async close(close: CloseIteratorRequest) {
48
+ this.clear(close.idString);
49
+ }
50
+
51
+ private clear(id: string) {
52
+ this.queues.del(id);
53
+ }
54
+
55
+ getPending(id: string) {
56
+ return this.queues.get(id)?.iterator.pending();
57
+ }
58
+ }