@peerbit/stream 1.0.8 → 1.0.10

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.
package/README.md CHANGED
@@ -1,2 +1,2 @@
1
1
  # Direct stream
2
- Data streaming protocol that aggregates "hellos" and goodbye" from peers to build a route map, which is used with path-finding algorithms to find shorted path to send data from A to B.
2
+ Data streaming protocol that aggregates "hellos" and goodbye" from peers to build a route map, which is used with path-finding algorithms to find the shortest path to send data from A to B.
@@ -1,23 +1,23 @@
1
- import { EventEmitter } from "@libp2p/interfaces/events";
1
+ import { EventEmitter } from "@libp2p/interface/events";
2
2
  import Queue from "p-queue";
3
- import type { PeerId } from "@libp2p/interface-peer-id";
4
- import type { Connection } from "@libp2p/interface-connection";
3
+ import type { PeerId } from "@libp2p/interface/peer-id";
4
+ import type { Connection } from "@libp2p/interface/connection";
5
5
  import type { Pushable } from "it-pushable";
6
- import type { Stream } from "@libp2p/interface-connection";
6
+ import type { Stream } from "@libp2p/interface/connection";
7
7
  import { Uint8ArrayList } from "uint8arraylist";
8
8
  import { Routes } from "./routes.js";
9
9
  import { PeerMap } from "./peer-map.js";
10
- import type { IncomingStreamData, Registrar } from "@libp2p/interface-registrar";
11
- import { ConnectionManager } from "@libp2p/interface-connection-manager";
12
- import { PeerStore } from "@libp2p/interface-peer-store";
10
+ import type { IncomingStreamData, Registrar } from "@libp2p/interface-internal/registrar";
11
+ import type { AddressManager } from "@libp2p/interface-internal/address-manager";
12
+ import type { ConnectionManager } from "@libp2p/interface-internal/connection-manager";
13
+ import { PeerStore } from "@libp2p/interface/peer-store";
13
14
  import { waitFor } from "@peerbit/time";
14
15
  import { PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
15
16
  export type SignaturePolicy = "StictSign" | "StrictNoSign";
16
- import type { AddressManager } from "@libp2p/interface-address-manager";
17
17
  import { logger } from "./logger.js";
18
18
  import { Cache } from "@peerbit/cache";
19
19
  export { logger };
20
- import type { Libp2pEvents } from "@libp2p/interface-libp2p";
20
+ import type { Libp2pEvents } from "@libp2p/interface";
21
21
  import { PeerEvents, Message as Message, Goodbye, Hello, DataMessage, PingPong, WaitForPeer } from "@peerbit/stream-interface";
22
22
  export interface PeerStreamsInit {
23
23
  peerId: PeerId;
@@ -91,7 +91,7 @@ export declare class PeerStreams extends EventEmitter<PeerStreamEvents> {
91
91
  /**
92
92
  * Closes the open connection to peer
93
93
  */
94
- close(): void;
94
+ close(): Promise<void>;
95
95
  }
96
96
  export interface MessageEvents {
97
97
  message: CustomEvent<Message>;
@@ -113,7 +113,8 @@ export type DirectStreamOptions = {
113
113
  pingInterval?: number;
114
114
  connectionManager?: ConnectionManagerOptions;
115
115
  };
116
- export interface DirectStreamComponents {
116
+ import { Components } from "libp2p/components";
117
+ export interface DirectStreamComponents extends Components {
117
118
  peerId: PeerId;
118
119
  addressManager: AddressManager;
119
120
  registrar: Registrar;
@@ -200,7 +201,7 @@ export declare abstract class DirectStream<Events extends {
200
201
  /**
201
202
  * Notifies the router that a peer has been disconnected
202
203
  */
203
- protected _removePeer(publicKey: PublicSignKey): PeerStreams | undefined;
204
+ protected _removePeer(publicKey: PublicSignKey): Promise<PeerStreams | undefined>;
204
205
  /**
205
206
  * Responsible for processing each RPC message received by other peers.
206
207
  */
package/lib/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { EventEmitter, CustomEvent } from "@libp2p/interfaces/events";
1
+ import { EventEmitter, CustomEvent } from "@libp2p/interface/events";
2
2
  import { pipe } from "it-pipe";
3
3
  import Queue from "p-queue";
4
4
  import { pushable } from "it-pushable";
@@ -8,12 +8,11 @@ import * as lp from "it-length-prefixed";
8
8
  import { Routes } from "./routes.js";
9
9
  import { multiaddr } from "@multiformats/multiaddr";
10
10
  import { delay, TimeoutError, waitFor } from "@peerbit/time";
11
- import { getKeypairFromPeerId, getPublicKeyFromPeerId, PublicSignKey, } from "@peerbit/crypto";
11
+ import { getKeypairFromPeerId, getPublicKeyFromPeerId, PublicSignKey } from "@peerbit/crypto";
12
12
  import { logger } from "./logger.js";
13
13
  import { Cache } from "@peerbit/cache";
14
- import { createTopology } from "./topology.js";
15
14
  export { logger };
16
- import { Message as Message, Goodbye, Hello, DataMessage, Ping, PingPong, Pong, getMsgId, } from "@peerbit/stream-interface";
15
+ import { Message as Message, Goodbye, Hello, DataMessage, Ping, PingPong, Pong, getMsgId } from "@peerbit/stream-interface";
17
16
  const isWebsocketConnection = (c) => c.remoteAddr.protoNames().find((x) => x === "ws" || x === "wss");
18
17
  /**
19
18
  * Thin wrapper around a peer's inbound / outbound pubsub streams
@@ -138,7 +137,7 @@ export class PeerStreams extends EventEmitter {
138
137
  returnOnAbort: true,
139
138
  onReturnError: (err) => {
140
139
  logger.error("Inbound stream error", err?.message);
141
- },
140
+ }
142
141
  });
143
142
  this.dispatchEvent(new CustomEvent("stream:inbound"));
144
143
  return this.inboundStream;
@@ -154,13 +153,14 @@ export class PeerStreams extends EventEmitter {
154
153
  this.outboundStream = pushable({
155
154
  objectMode: true,
156
155
  onEnd: () => {
157
- stream.close();
158
- if (this._rawOutboundStream === stream) {
159
- this.dispatchEvent(new CustomEvent("close"));
160
- this._rawOutboundStream = undefined;
161
- this.outboundStream = undefined;
162
- }
163
- },
156
+ return stream.close().then(() => {
157
+ if (this._rawOutboundStream === stream) {
158
+ this.dispatchEvent(new CustomEvent("close"));
159
+ this._rawOutboundStream = undefined;
160
+ this.outboundStream = undefined;
161
+ }
162
+ });
163
+ }
164
164
  });
165
165
  pipe(this.outboundStream, (source) => lp.encode(source), this._rawOutboundStream).catch((err) => {
166
166
  logger.error(err);
@@ -176,20 +176,20 @@ export class PeerStreams extends EventEmitter {
176
176
  /**
177
177
  * Closes the open connection to peer
178
178
  */
179
- close() {
179
+ async close() {
180
180
  if (this.closed) {
181
181
  return;
182
182
  }
183
183
  this.closed = true;
184
184
  // End the outbound stream
185
185
  if (this.outboundStream != null) {
186
- this.outboundStream.return();
187
- this._rawOutboundStream?.close();
186
+ await this.outboundStream.return();
187
+ await this._rawOutboundStream?.close();
188
188
  }
189
189
  // End the inbound stream
190
190
  if (this.inboundStream != null) {
191
191
  this.inboundAbortController.abort();
192
- this._rawInboundStream?.close();
192
+ await this._rawInboundStream?.close();
193
193
  }
194
194
  this.pingJob?.abort();
195
195
  this.pingLatency = undefined;
@@ -242,7 +242,7 @@ export class DirectStream extends EventEmitter {
242
242
  constructor(components, multicodecs, options) {
243
243
  super();
244
244
  this.components = components;
245
- const { canRelayMessage = false, emitSelf = false, messageProcessingConcurrency = 10, pingInterval = 10 * 1000, maxInboundStreams, maxOutboundStreams, signaturePolicy = "StictSign", connectionManager = { autoDial: true }, } = options || {};
245
+ const { canRelayMessage = false, emitSelf = false, messageProcessingConcurrency = 10, pingInterval = 10 * 1000, maxInboundStreams, maxOutboundStreams, signaturePolicy = "StictSign", connectionManager = { autoDial: true } } = options || {};
246
246
  const signKey = getKeypairFromPeerId(components.peerId);
247
247
  this.sign = signKey.sign.bind(signKey);
248
248
  this.peerId = components.peerId;
@@ -272,7 +272,7 @@ export class DirectStream extends EventEmitter {
272
272
  this.connectionManagerOptions = connectionManager;
273
273
  this.recentDials = new Cache({
274
274
  ttl: connectionManager.retryDelay || 60 * 1000,
275
- max: 1e3,
275
+ max: 1e3
276
276
  });
277
277
  }
278
278
  async start() {
@@ -280,18 +280,17 @@ export class DirectStream extends EventEmitter {
280
280
  return;
281
281
  }
282
282
  logger.debug("starting");
283
- this.topology = createTopology({
284
- onConnect: this.onPeerConnected.bind(this),
285
- onDisconnect: this.onPeerDisconnected.bind(this),
286
- });
287
283
  // register protocol with topology
288
284
  // Topology callbacks called on connection manager changes
289
- this._registrarTopologyIds = await Promise.all(this.multicodecs.map((multicodec) => this.components.registrar.register(multicodec, this.topology)));
285
+ this._registrarTopologyIds = await Promise.all(this.multicodecs.map((multicodec) => this.components.registrar.register(multicodec, {
286
+ onConnect: this.onPeerConnected.bind(this),
287
+ onDisconnect: this.onPeerDisconnected.bind(this)
288
+ })));
290
289
  // Incoming streams
291
290
  // Called after a peer dials us
292
291
  await Promise.all(this.multicodecs.map((multicodec) => this.components.registrar.handle(multicodec, this._onIncomingStream, {
293
292
  maxInboundStreams: this.maxInboundStreams,
294
- maxOutboundStreams: this.maxOutboundStreams,
293
+ maxOutboundStreams: this.maxOutboundStreams
295
294
  })));
296
295
  this.started = true;
297
296
  // All existing connections are like new ones for us. To deduplication on remotes so we only resuse one connection for this protocol (we could be connected with many connections)
@@ -357,7 +356,7 @@ export class DirectStream extends EventEmitter {
357
356
  await Promise.all(this.multicodecs.map((x) => this.components.registrar.unhandle(x)));
358
357
  logger.debug("stopping");
359
358
  for (const peerStreams of this.peers.values()) {
360
- peerStreams.close();
359
+ await peerStreams.close();
361
360
  }
362
361
  // unregister protocol and handlers
363
362
  if (this._registrarTopologyIds != null) {
@@ -386,12 +385,12 @@ export class DirectStream extends EventEmitter {
386
385
  }
387
386
  const { stream, connection } = data;
388
387
  const peerId = connection.remotePeer;
389
- if (stream.stat.protocol == null) {
388
+ if (stream.protocol == null) {
390
389
  stream.abort(new Error("Stream was not multiplexed"));
391
390
  return;
392
391
  }
393
392
  const publicKey = getPublicKeyFromPeerId(peerId);
394
- const peer = this.addPeer(peerId, publicKey, stream.stat.protocol, connection.id);
393
+ const peer = this.addPeer(peerId, publicKey, stream.protocol, connection.id);
395
394
  const inboundStream = peer.attachInboundStream(stream);
396
395
  this.processMessages(peerId, inboundStream, peer).catch((err) => {
397
396
  logger.error(err);
@@ -401,16 +400,16 @@ export class DirectStream extends EventEmitter {
401
400
  * Registrar notifies an established connection with protocol
402
401
  */
403
402
  async onPeerConnected(peerId, conn, fromExisting) {
404
- if (!this.isStarted() || conn.stat.status !== "OPEN") {
403
+ if (!this.isStarted() || conn.status !== "open") {
405
404
  return;
406
405
  }
407
406
  try {
408
407
  const peerKey = getPublicKeyFromPeerId(peerId);
409
408
  const peerKeyHash = peerKey.hashcode();
410
409
  for (const existingStreams of conn.streams) {
411
- if (existingStreams.stat.protocol &&
412
- this.multicodecs.includes(existingStreams.stat.protocol) &&
413
- existingStreams.stat.direction === "outbound") {
410
+ if (existingStreams.protocol &&
411
+ this.multicodecs.includes(existingStreams.protocol) &&
412
+ existingStreams.direction === "outbound") {
414
413
  return;
415
414
  }
416
415
  }
@@ -426,12 +425,14 @@ export class DirectStream extends EventEmitter {
426
425
  return;
427
426
  }
428
427
  try {
429
- stream = await conn.newStream(this.multicodecs);
430
- if (stream.stat.protocol == null) {
428
+ stream = await conn.newStream(this.multicodecs, {
429
+ runOnTransientConnection: true
430
+ });
431
+ if (stream.protocol == null) {
431
432
  stream.abort(new Error("Stream was not multiplexed"));
432
433
  return;
433
434
  }
434
- peer = this.addPeer(peerId, peerKey, stream.stat.protocol, conn.id); // TODO types
435
+ peer = this.addPeer(peerId, peerKey, stream.protocol, conn.id); // TODO types
435
436
  await peer.attachOutboundStream(stream);
436
437
  // TODO do we want to do this?
437
438
  /* if (!peer.inboundStream) {
@@ -454,7 +455,7 @@ export class DirectStream extends EventEmitter {
454
455
  await delay(100);
455
456
  continue; // Retry
456
457
  }
457
- if (conn.stat.status !== "OPEN" ||
458
+ if (conn.status !== "open" ||
458
459
  error?.message === "Muxer already closed" ||
459
460
  error.code === "ERR_STREAM_RESET") {
460
461
  return; // fail silenty
@@ -480,7 +481,7 @@ export class DirectStream extends EventEmitter {
480
481
  promises.push(this.publishMessage(this.components.peerId, await new Hello({
481
482
  multiaddrs: this.components.addressManager
482
483
  .getAddresses()
483
- .map((x) => x.toString()),
484
+ .map((x) => x.toString())
484
485
  }).sign(this.sign), [peer]));
485
486
  // Send my goodbye early if I disconnect for some reason, (so my peer can say goodbye for me)
486
487
  // TODO add custom condition fn for doing below
@@ -560,7 +561,7 @@ export class DirectStream extends EventEmitter {
560
561
  return;
561
562
  }
562
563
  if (!this.publicKey.equals(peerKey)) {
563
- this._removePeer(peerKey);
564
+ await this._removePeer(peerKey);
564
565
  this.removeRouteConnection(this.publicKey, peerKey);
565
566
  // Notify network
566
567
  const earlyGoodBye = this.earlyGoodbyes.get(peerKeyHash);
@@ -611,25 +612,25 @@ export class DirectStream extends EventEmitter {
611
612
  peerId,
612
613
  publicKey,
613
614
  protocol,
614
- connId,
615
+ connId
615
616
  });
616
617
  this.peers.set(publicKeyHash, peerStreams);
617
618
  peerStreams.addEventListener("close", () => this._removePeer(publicKey), {
618
- once: true,
619
+ once: true
619
620
  });
620
621
  return peerStreams;
621
622
  }
622
623
  /**
623
624
  * Notifies the router that a peer has been disconnected
624
625
  */
625
- _removePeer(publicKey) {
626
+ async _removePeer(publicKey) {
626
627
  const hash = publicKey.hashcode();
627
628
  const peerStreams = this.peers.get(hash);
628
629
  if (peerStreams == null) {
629
630
  return;
630
631
  }
631
632
  // close peer streams
632
- peerStreams.close();
633
+ await peerStreams.close();
633
634
  // delete peer streams
634
635
  logger.debug("delete peer" + publicKey.toString());
635
636
  this.peers.delete(hash);
@@ -717,7 +718,7 @@ export class DirectStream extends EventEmitter {
717
718
  // Ensure the message is valid before processing it
718
719
  const message = Message.from(msg);
719
720
  this.dispatchEvent(new CustomEvent("message", {
720
- detail: message,
721
+ detail: message
721
722
  }));
722
723
  if (message instanceof DataMessage) {
723
724
  await this.onDataMessage(from, peerStream, message);
@@ -748,7 +749,7 @@ export class DirectStream extends EventEmitter {
748
749
  return false;
749
750
  }
750
751
  this.dispatchEvent(new CustomEvent("data", {
751
- detail: message,
752
+ detail: message
752
753
  }));
753
754
  }
754
755
  if (isForMe && message.to.length === 1) {
@@ -879,7 +880,7 @@ export class DirectStream extends EventEmitter {
879
880
  abort: () => {
880
881
  clearTimeout(timeout);
881
882
  resolve(undefined);
882
- },
883
+ }
883
884
  };
884
885
  this.publishMessage(this.components.peerId, ping, [stream]).catch((err) => {
885
886
  clearTimeout(timeout);
@@ -919,7 +920,7 @@ export class DirectStream extends EventEmitter {
919
920
  }
920
921
  const message = new DataMessage({
921
922
  data: data instanceof Uint8ArrayList ? data.subarray() : data,
922
- to: toHashes,
923
+ to: toHashes
923
924
  });
924
925
  if (this.signaturePolicy === "StictSign") {
925
926
  await message.sign(this.sign);
@@ -936,7 +937,7 @@ export class DirectStream extends EventEmitter {
936
937
  const message = await this.createMessage(data, options);
937
938
  if (this.emitSelf) {
938
939
  super.dispatchEvent(new CustomEvent("data", {
939
- detail: message,
940
+ detail: message
940
941
  }));
941
942
  }
942
943
  // send to all the other peers
@@ -952,7 +953,7 @@ export class DirectStream extends EventEmitter {
952
953
  multiaddrs: this.components.addressManager
953
954
  .getAddresses()
954
955
  .map((x) => x.toString()),
955
- data,
956
+ data
956
957
  }).sign(this.sign.bind(this)));
957
958
  }
958
959
  async relayMessage(from, message, to) {
@@ -993,7 +994,7 @@ export class DirectStream extends EventEmitter {
993
994
  const fromMe = from.equals(this.components.peerId);
994
995
  const block = !fromMe ? fromKey : undefined;
995
996
  const path = this.routes.getPath(this.publicKeyHash, to, {
996
- block, // prevent send message backwards
997
+ block // prevent send message backwards
997
998
  });
998
999
  if (path && path.length > 0) {
999
1000
  const fanout = fanoutMap.get(path[1]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,MAAM,SAAS,CAAC;AAI5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AASpD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAEN,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,GAEb,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,OAAO,EAEN,OAAO,IAAI,OAAO,EAClB,OAAO,EACP,KAAK,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,QAAQ,GAER,MAAM,2BAA2B,CAAC;AAQnC,MAAM,qBAAqB,GAAG,CAAC,CAAa,EAAE,EAAE,CAC/C,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AAOlE;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,YAA8B;IACvD,OAAO,GAAG,CAAC,CAAC;IACH,MAAM,CAAS;IACf,SAAS,CAAgB;IACzB,QAAQ,CAAS;IACjC;;OAEG;IACI,cAAc,CAA4B;IACjD;;OAEG;IACI,aAAa,CAAiC;IACrD;;OAEG;IACI,kBAAkB,CAAU;IACnC;;OAEG;IACI,iBAAiB,CAAU;IAClC;;OAEG;IACc,sBAAsB,CAAkB;IAEjD,MAAM,CAAU;IAEjB,OAAO,CAA6C;IACpD,WAAW,CAAqB;IAEhC,MAAM,CAAS;IACtB,YAAY,IAAqB;QAChC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACb,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACb,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAiC;QACtC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAChC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvE;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CACvB,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAkC;QACpD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrB,sFAAsF;YACtF,MAAM,eAAe,GAAG,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;gBACpD,MAAM,OAAO,GAAG,GAAG,EAAE;oBACpB,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;oBACtD,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,EAAE,EAAE,CAAC;gBACN,CAAC,CAAC;gBACF,MAAM,MAAM,GAAG,CAAC,GAAU,EAAE,EAAE;oBAC7B,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;oBACtD,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,EAAE,CAAC,GAAG,CAAC,CAAC;gBACT,CAAC,CAAC;gBACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;gBAChC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,gFAAgF;gBAC9F,MAAM,YAAY,GAAG,GAAG,EAAE;oBACzB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBAChD,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC9B,CAAC,CAAC;gBACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAE7C,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACrB,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;gBACF,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,UAAU,EAAE;oBACpB,OAAO,EAAE,CAAC;iBACV;YACF,CAAC,CAAC,CAAC;YAEH,MAAM,eAAe;iBACnB,IAAI,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,CAAC,KAAK,CACX,4BAA4B;oBAC3B,IAAI,CAAC,MAAM;oBACX,IAAI;oBACJ,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC,CACtC,CAAC;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAClB;IACF,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAAc;QACjC,yCAAyC;QACzC,yBAAyB;QACzB,8DAA8D;QAC9D,6CAA6C;QAC7C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,eAAe,CACnC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CACvC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAC/C,EACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAClC;YACC,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;SACD,CACD,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACxC,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAiB;YAC9C,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,GAAG,EAAE;gBACX,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,kBAAkB,KAAK,MAAM,EAAE;oBACvC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;oBACpC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;iBAChC;YACF,CAAC;SACD,CAAC,CAAC;QAEH,IAAI,CACH,IAAI,CAAC,cAAc,EACnB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7B,IAAI,CAAC,kBAAkB,CACvB,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEvD,IAAI,WAAW,IAAI,IAAI,EAAE;YACxB,gDAAgD;YAChD,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;SACP;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,0BAA0B;QAC1B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC;SACjC;QACD,yBAAyB;QACzB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;SAChC;QAED,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,8CAA8C;QAC9C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IAChC,CAAC;CACD;AAkCD,MAAM,OAAgB,YAGrB,SAAQ,YAAoB;IA6ClB;IA1CH,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,SAAS,CAAgB;IACzB,aAAa,CAAS;IACtB,IAAI,CAAmD;IAEvD,OAAO,CAAU;IAExB;;OAEG;IACI,KAAK,CAAuB;IAC5B,sBAAsB,CAA6B;IACnD,iBAAiB,CAA6B;IAC9C,MAAM,CAAS;IACtB;;OAEG;IACI,eAAe,CAAU;IAChC;;OAEG;IAEI,eAAe,CAAkB;IACjC,QAAQ,CAAU;IAClB,KAAK,CAAQ;IACb,WAAW,CAAW;IACtB,SAAS,CAAQ;IACjB,aAAa,CAAuB;IACpC,QAAQ,CAAkC,CAAC,wGAAwG;IACnJ,aAAa,CAAwB;IACpC,qBAAqB,CAAuB;IACnC,iBAAiB,CAAU;IAC3B,kBAAkB,CAAU;IACrC,QAAQ,CAAM;IACd,cAAc,CAAM;IACpB,OAAO,CAAM;IACb,YAAY,CAAS;IACrB,wBAAwB,CAA2B;IACnD,WAAW,CAAgB;IAEnC,YACU,UAAkC,EAC3C,WAAqB,EACrB,OAA6B;QAE7B,KAAK,EAAE,CAAC;QAJC,eAAU,GAAV,UAAU,CAAwB;QAK3C,MAAM,EACL,eAAe,GAAG,KAAK,EACvB,QAAQ,GAAG,KAAK,EAChB,4BAA4B,GAAG,EAAE,EACjC,YAAY,GAAG,EAAE,GAAG,IAAI,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAAG,WAAW,EAC7B,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GACtC,GAAG,OAAO,IAAI,EAAE,CAAC;QAElB,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,wBAAwB,GAAG,iBAAiB,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC;YAC5B,GAAG,EAAE,iBAAiB,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI;YAC9C,GAAG,EAAE,GAAG;SACR,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACP;QAED,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEzB,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;SAChD,CAAC,CAAC;QAEH,kCAAkC;QAClC,0DAA0D;QAC1D,IAAI,CAAC,qBAAqB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAC7D,CACD,CAAC;QAEF,mBAAmB;QACnB,+BAA+B;QAC/B,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACpE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC3C,CAAC,CACF,CACD,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,kLAAkL;QAClL,MAAM,iBAAiB,GAA8B,IAAI,GAAG,EAAE,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACvE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;YAC/B,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,EAAE;gBACT,GAAG,GAAG,EAAE,CAAC;gBACT,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;aACvD;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACf;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,iBAAiB,EAAE;YAC7C,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;YACvE,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;gBACpB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;oBAC9B,kDAAkD;oBAClD,IAAI,GAAG,CAAC,CAAC,CAAC,qCAAqC;oBAC/C,MAAM;iBACN;aACD;YAED,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACxD;QAED,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YAC1B,kEAAkE;YAClE,MAAM,IAAI,CAAC,cAAc,CAAC;YAC1B,MAAM,QAAQ,GAAmB,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3B,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC3B,IAAI,CAAC,YAAY,YAAY,EAAE;wBAC9B,SAAS;qBACT;yBAAM;wBACN,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBAChB;gBACF,CAAC,CAAC,CACF,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,uFAAuF;YACpH,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;iBACzC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBAClB,OAAO;iBACP;gBACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,OAAO,EAAE,CAAC;IACX,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,OAAO;SACP;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,cAAc,CAAC;QAE1B,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAClE,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;YAC9C,WAAW,CAAC,KAAK,EAAE,CAAC;SACpB;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,EAAE;YACvC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CACxC,CAAC;SACF;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;OAEG;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAwB;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACtB,OAAO;SACP;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;QACrC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACtD,OAAO;SACP;QAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CACxB,MAAM,EACN,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,QAAQ,EACpB,UAAU,CAAC,EAAE,CACb,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAC3B,MAAc,EACd,IAAgB,EAChB,YAAsB;QAEtB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACrD,OAAO;SACP;QACD,IAAI;YACH,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEvC,KAAK,MAAM,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC3C,IACC,eAAe,CAAC,IAAI,CAAC,QAAQ;oBAC7B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACxD,eAAe,CAAC,IAAI,CAAC,SAAS,KAAK,UAAU,EAC5C;oBACD,OAAO;iBACP;aACD;YAED,0EAA0E;YAC1E,+GAA+G;YAC/G,kFAAkF;YAElF,IAAI,MAAM,GAAW,SAAgB,CAAC,CAAC,aAAa;YACpD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,IAAI,GAAgB,SAAgB,CAAC;YACzC,OAAO,KAAK,IAAI,CAAC,EAAE;gBAClB,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBAClB,OAAO;iBACP;gBAED,IAAI;oBACH,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAChD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACjC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;wBACtD,OAAO;qBACP;oBACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;oBACnF,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;oBAExC,8BAA8B;oBAC9B;;;;;;;;;;;;;wBAaI;iBACJ;gBAAC,OAAO,KAAU,EAAE;oBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE;wBAC9C,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;wBACjB,SAAS,CAAC,QAAQ;qBAClB;oBAED,IACC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM;wBAC3B,KAAK,EAAE,OAAO,KAAK,sBAAsB;wBACzC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAChC;wBACD,OAAO,CAAC,eAAe;qBACvB;oBAED,MAAM,KAAK,CAAC;iBACZ;gBACD,MAAM;aACN;YACD,IAAI,CAAC,MAAM,EAAE;gBACZ,OAAO;aACP;YAED,IAAI,YAAY,EAAE;gBACjB,OAAO,CAAC,uHAAuH;aAC/H;YAED,4CAA4C;YAC5C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAmB,EAAE,CAAC;YAEpC,2BAA2B,CAAC;gBAC3B,IAAI,CAAC,kBAAkB,CACtB,IAAI,CAAC,SAAS,EACd,OAAO,EACP,MAAM,CAAC,gBAAgB,CACvB,CAAC;gBAEF,uBAAuB;gBACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE/B,YAAY;gBACZ,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAClB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,MAAM,IAAI,KAAK,CAAC;oBACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;yBACxC,YAAY,EAAE;yBACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;iBAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAClB,CAAC,IAAI,CAAC,CACN,CACD,CAAC;gBACF,6FAA6F;gBAC7F,+CAA+C;gBAC/C,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAClB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,MAAM,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAClD,CAAC,IAAI,CAAC,CACN,CACD,CAAC;gBAEF,oBAAoB;gBACpB,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAC7C,IAAI,MAAM,KAAK,WAAW,EAAE;wBAC3B,4DAA4D;wBAC5D,SAAS;qBACT;oBAED,KAAK,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;wBACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;4BAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;yBACnB;wBACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;4BACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE;gCAC5C,sEAAsE;gCACtE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gCACnB,SAAS,KAAK,CAAC;6BACf;yBACD;wBAED,QAAQ,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;qBACF;iBACD;aACD;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7C,OAAO,QAAQ,CAAC;SAChB;QAAC,OAAO,GAAQ,EAAE;YAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAClB;IACF,CAAC;IAEO,kBAAkB,CACzB,IAAmB,EACnB,EAAiB,EACjB,OAAe;QAEf,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3E,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;gBAC1C,IAAI,CAAC,eAAe,CAAC,GAAI,CAAC,CAAC;aAC3B;SACD;IACF,CAAC;IAED,qBAAqB,CAAC,IAAmB,EAAE,EAAiB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;SAC3B;aAAM;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrE,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;gBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;gBACtD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;oBAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAI,CAAC,CAAC;iBAC7B;aACD;SACD;IACF,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,IAAiB;QACnE,8DAA8D;QAC9D,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB;aACnD,iBAAiB,EAAE;aACnB,GAAG,CAAC,MAAM,CAAC,CAAC;QACd,IACC,IAAI,EAAE,EAAE;YACR,WAAW;YACX,WAAW,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB;iBAChC,iBAAiB,EAAE;iBACnB,GAAG,CAAC,MAAM,CAAC;gBACZ,EAAE,IAAI,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CACvB,CAAC,kEAAkE,EACpE;YACD,OAAO;SACP;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAEpD,iBAAiB;YACjB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,YAAY,EAAE;gBACjB,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC3B,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAChE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;aACvC;YACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SACjD;QAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,SAAwB;QAC9C,mBAAmB;QACnB,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CACxD,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,SAAwB;QAChD,mBAAmB;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEhD,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CACN,MAAc,EACd,SAAwB,EACxB,QAAgB,EAChB,MAAc;QAEd,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAE/C,6CAA6C;QAC7C,IAAI,QAAQ,IAAI,IAAI,EAAE;YACrB,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;YACtB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,OAAO,QAAQ,CAAC;SAChB;QAED,iCAAiC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;QAErC,MAAM,WAAW,GAAgB,IAAI,WAAW,CAAC;YAChD,MAAM;YACN,SAAS;YACT,QAAQ;YACR,MAAM;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC3C,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YACxE,IAAI,EAAE,IAAI;SACV,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACpB,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,SAAwB;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,WAAW,IAAI,IAAI,EAAE;YACxB,OAAO;SACP;QAED,qBAAqB;QACrB,WAAW,CAAC,KAAK,EAAE,CAAC;QAEpB,sBAAsB;QACtB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,kBAAkB;IAElB;;OAEG;IACH,KAAK,CAAC,eAAe,CACpB,MAAc,EACd,MAAqC,EACrC,WAAwB;QAExB,IAAI;YACH,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACnC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE;oBAChC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACnC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;wBAC9B,+BAA+B;wBAE/B;;;;;;;;;;;;;;;;;;+BAkBI;wBAEJ,SAAS;qBACT;oBAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACxD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAChB,CAAC;iBACF;YACF,CAAC,CAAC,CAAC;SACH;QAAC,OAAO,GAAQ,EAAE;YAClB,MAAM,CAAC,KAAK,CACX,sCAAsC;gBACrC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC7B,IAAI;gBACJ,GAAG,EAAE,OAAO,CACb,CAAC;YACF,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC5C;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACf,IAAY,EACZ,WAAwB,EACxB,OAAuB;QAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SACb;QAED,4DAA4D;QAE5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,yCAAyC;YACzC,MAAM,IAAI,CAAC,KAAK;iBACd,GAAG,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI;oBACH,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;iBACtD;gBAAC,OAAO,GAAQ,EAAE;oBAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAClB;YACF,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CACnB,IAAY,EACZ,UAAuB,EACvB,GAAmB;QAEnB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,OAAO;SACP;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1D,OAAO;SACP;QAED,mDAAmD;QACnD,MAAM,OAAO,GAAwB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,SAAS,EAAE;YAC1B,MAAM,EAAE,OAAO;SACf,CAAC,CACF,CAAC;QAEF,IAAI,OAAO,YAAY,WAAW,EAAE;YACnC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SACpD;aAAM,IAAI,OAAO,YAAY,KAAK,EAAE;YACpC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SAC9C;aAAM,IAAI,OAAO,YAAY,OAAO,EAAE;YACtC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SAChD;aAAM,IAAI,OAAO,YAAY,QAAQ,EAAE;YACvC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SAC7C;aAAM;YACN,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAC/B;IACF,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,IAAY,EACZ,UAAuB,EACvB,OAAoB;QAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;YACzC,MAAM,OAAO,GACZ,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAI,QAAQ,IAAI,OAAO,EAAE;gBACxB,IACC,IAAI,CAAC,eAAe,KAAK,WAAW;oBACpC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,KAAK,WAAW,CAAC,CAAC,EAC5D;oBACD,0GAA0G;oBAC1G,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;oBACpE,OAAO,KAAK,CAAC;iBACb;gBAED,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,MAAM,EAAE;oBACvB,MAAM,EAAE,OAAO;iBACf,CAAC,CACF,CAAC;aACF;YACD,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvC,qEAAqE;gBACrE,OAAO,IAAI,CAAC;aACZ;SACD;QAED,UAAU;QACV,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,UAAuB,EAAE,OAAc;QAClE,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,CAAC,GACN,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM;gBACxC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1C,MAAM,CAAC,IAAI,CACV,uDAAuD,CAAC,eAAe,CAAC,gBACvE,CAAC,IAAI,CACN,EAAE,CACF,CAAC;YACF,OAAO,KAAK,CAAC;SACb;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACb;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1D,IAAI,CAAC,kBAAkB,CACtB,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,EAClC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EACtC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CACpC,CAAC;SACF;QAED,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CACrC,UAAU,CAAC,WAAW,IAAI,UAAU,CACpC,CAAC,CAAC,2CAA2C;QAE9C,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iGAAiG;QAEhI,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAClC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAEnD,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE;YAClB,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;gBAC1D,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;aACvC;SACD;aAAM;YACN,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;SACvC;QAED,UAAU;QACV,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,UAAuB,EAAE,OAAgB;QACtE,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;SACb;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACb;QAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,KAAK,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SAC7C;aAAM;YACN,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC;;;;;;;cAOE;YAEF,qDAAqD;YACrD,IAAI,CAAC,qBAAqB,CACzB,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,EAClC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CACpD,CAAC;YAEF,MAAM,YAAY,GAAkB,EAAE,CAAC;YACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;gBACzC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;oBAC/B,SAAS;iBACT;gBACD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC1B;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iGAAiG;YAEhI,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE;gBACX,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;gBACpE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;aACjC;YAED,UAAU;YACV,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,UAAuB,EAAE,OAAiB;QACpE,IAAI,OAAO,YAAY,IAAI,EAAE;YAC5B,oBAAoB;YACpB,MAAM,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAC3B,CAAC,UAAU,CAAC,CACZ,CAAC;SACF;aAAM,IAAI,OAAO,YAAY,IAAI,EAAE;YACnC,+DAA+D;YAC/D,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;SAC9B;aAAM;YACN,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAC/B;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAmB;QAC7B,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,MAAM,CAAC,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC5C,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,MAAM,QAAQ,GAAG,GAAG,EAAE;gBACrB,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;gBACxB,YAAY,CAAC,OAAO,CAAC,CAAC;gBAEtB,0EAA0E;gBAC1E,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC5B,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACnE,OAAO,CAAC,SAAS,CAAC,CAAC;YACpB,CAAC,CAAC;YACF,MAAM,CAAC,OAAO,GAAG;gBAChB,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE,GAAG,EAAE;oBACX,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,CAAC,SAAS,CAAC,CAAC;gBACpB,CAAC;aACD,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAChE,CAAC,GAAG,EAAE,EAAE;gBACP,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACb,CAAC,CACD,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,IAAiC,EACjC,OAAoE;QAEpE,0CAA0C;QAC1C,IAAI,QAAkB,CAAC;QACvB,IAAI,OAAO,EAAE,EAAE,EAAE;YAChB,IAAI,OAAO,CAAC,EAAE,YAAY,GAAG,EAAE;gBAC9B,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aACtC;iBAAM;gBACN,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE;gBAC5B,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACZ,EAAE,YAAY,aAAa;wBAC1B,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;wBACf,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ;4BACxB,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;aAC1C;SACD;aAAM;YACN,QAAQ,GAAG,EAAE,CAAC;SACd;QACD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;YAC/B,IAAI,EAAE,IAAI,YAAY,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;YAC7D,EAAE,EAAE,QAAQ;SACZ,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,eAAe,KAAK,WAAW,EAAE;YACzC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC9B;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,OAAO,CACZ,IAAiC,EACjC,OAAoE;QAEpE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAC/B;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,KAAK,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,MAAM,EAAE;gBACvB,MAAM,EAAE,OAAO;aACf,CAAC,CACF,CAAC;SACF;QAED,8BAA8B;QAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC,EAAE,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAiB;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClB,OAAO;SACP;QAED,8BAA8B;QAC9B,MAAM,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,MAAM,IAAI,KAAK,CAAC;YACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;iBACxC,YAAY,EAAE;iBACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI;SACJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC7B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CACxB,IAAY,EACZ,OAAgB,EAChB,EAAyC;QAEzC,IAAI,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;SACpD;aAAM;YACN,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;SACnE;IACF,CAAC;IACM,KAAK,CAAC,cAAc,CAC1B,IAAY,EACZ,OAAgB,EAChB,EAAyC,EACzC,OAAiB;QAEjB,IAAI,OAAO,YAAY,WAAW,IAAI,CAAC,EAAE,EAAE;YAC1C,2DAA2D;YAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;YAE9C,iBAAiB;YACjB,IAAI,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,MAAM,eAAe,GAAa,EAAE,CAAC;gBACrC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE;oBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB;yBACpC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACrB,EAAE,QAAQ,EAAE,CAAC;oBACd,IAAI,EAAE,KAAK,IAAI,CAAC,aAAa,IAAI,OAAO,KAAK,EAAE,EAAE;wBAChD,SAAS,CAAC,gCAAgC;qBAC1C;oBAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxC,IAAI,YAAY,EAAE;wBACjB,qDAAqD;wBACrD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACjC,IAAI,CAAC,MAAM,EAAE;4BACZ,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACxB;6BAAM;4BACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;yBAChB;wBACD,SAAS;qBACT;yBAAM;wBACN,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;wBACnD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;wBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE;4BACxD,KAAK,EAAE,iCAAiC;yBACxC,CAAC,CAAC;wBAEH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;4BACtC,IAAI,CAAC,MAAM,EAAE;gCACZ,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gCAC7B,IACC,IAAI,CAAC,wBAAwB,CAAC,QAAQ;oCACtC,IAAI,CAAC,MAAM,IAAI,CAAC,EACf;oCACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;wCACjD,MAAM,CAAC,KAAK,CACX,uCAAuC,GAAG,CAAC,CAAC,OAAO,CACnD,CAAC;oCACH,CAAC,CAAC,CAAC;iCACH;gCACD,SAAS;6BACT;iCAAM;gCACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAChB,SAAS;6BACT;yBACD;6BAAM;4BACN,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;yBACzB;qBACD;oBAED,gDAAgD;oBAChD,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClB,MAAM;iBACN;gBAED,cAAc;gBACd,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;oBACjC,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE;wBACvB,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,SAAS,EAAE;4BAClD,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC;4BAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;4BAC9B,IAAI,CAAC,QAAQ,EAAE;gCACd,2DAA2D;gCAC3D,IAAI,CAAC,OAAO,EAAE;oCACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;iCAC1C;gCACD,QAAQ,GAAG,IAAI,CAAC;6BAChB;4BAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;4BACzC,MAAM,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;yBAClC;wBACD,OAAO,CAAC,2EAA2E;qBACnF;oBACD,OAAO;iBACP;gBAED,+CAA+C;aAC/C;SACD;QAED,qEAAqE;QACrE,MAAM,KAAK,GAAyC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;QACrE,IACC,KAAK,IAAI,IAAI;YACb,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;YAC5C,CAAC,KAAK,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EACzC;YACD,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACxC,OAAO;SACP;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;YACpC,MAAM,EAAE,GAAG,MAAqB,CAAC;YACjC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC3B,SAAS;aACT;YAED,IAAI,CAAC,QAAQ,EAAE;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,OAAO,EAAE;oBACb,2DAA2D;oBAC3D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACD;YACD,MAAM,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC9D;IACF,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAc;QACxC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,OAAO;SACP;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC3B,OAAO,CAAC,4DAA4D;SACpE;QAED,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI;gBACH,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CACrD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;oBACF,OAAO;iBACP;aACD;YAAC,OAAO,KAAK,EAAE;gBACf,+BAA+B;aAC/B;SACD;QAED,kEAAkE;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAsB,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC3C,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;wBACxB,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;4BACxB,OAAO,CAAC,CAAC;yBACT;wBACD,OAAO,CAAC,CAAC,CAAC;qBACV;oBACD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;wBACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;4BACvB,OAAO,CAAC,CAAC;yBACT;wBACD,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;4BACxB,OAAO,CAAC,CAAC;yBACT;wBACD,OAAO,CAAC,CAAC,CAAC;qBACV;oBACD,OAAO,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC;gBAEH,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;oBACnC,MAAM,cAAc,GAAG,SAAS,CAC/B,IAAI,GAAG,0BAA0B,GAAG,QAAQ,CAAC,QAAQ,EAAE,CACvD,CAAC;oBACF,IAAI;wBACH,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CACrD,cAAc,CACd,CAAC;wBACF,OAAO;qBACP;oBAAC,OAAO,KAAU,EAAE;wBACpB,MAAM,CAAC,KAAK,CACX,iCAAiC;4BAChC,cAAc,CAAC,QAAQ,EAAE;4BACzB,IAAI;4BACJ,KAAK,EAAE,OAAO,CACf,CAAC;qBACF;iBACD;aACD;SACD;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAA4B;QACzC,MAAM,IAAI,GAAG,CACZ,IAAI,YAAY,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CACnE,CAAC,QAAQ,EAAE,CAAC;QACb,IAAI;YACH,MAAM,OAAO,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC1B,OAAO,KAAK,CAAC;iBACb;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;oBACnD,OAAO,KAAK,CAAC;iBACb;gBAED,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CACd,YAAY;gBACX,IAAI;gBACJ,qCAAqC;gBACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBACpB,iBAAiB;gBACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAC9C,CAAC;SACF;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACrC,IAAI;YACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;SAC5D;QAAC,OAAO,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CACd,YAAY;gBACX,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,wBAAwB;gBACxB,MAAM,CAAC,UAAU;gBACjB,aAAa;gBACb,MAAM,CAAC,UAAU,CAClB,CAAC;SACF;IACF,CAAC;CACD;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAChC,GAAG,IAGA,EACF,EAAE;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACZ,SAAS;aACT;YACD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACtC;KACD;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/stream",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "A building block for direct streaming protocols",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -50,22 +50,21 @@
50
50
  "dao.xyz"
51
51
  ],
52
52
  "devDependencies": {
53
- "@peerbit/libp2p-test-utils": "1.0.2",
53
+ "@peerbit/libp2p-test-utils": "1.0.4",
54
54
  "@types/yallist": "^4.0.1",
55
55
  "graphology-types": "^0.24.7"
56
56
  },
57
57
  "dependencies": {
58
58
  "@dao-xyz/borsh": "^5.1.5",
59
- "@libp2p/topology": "^4.0.1",
60
- "@peerbit/cache": "1.0.2",
61
- "@peerbit/crypto": "1.0.5",
62
- "@peerbit/stream-interface": "^1.0.6",
59
+ "@peerbit/cache": "1.1.0",
60
+ "@peerbit/crypto": "1.0.6",
61
+ "@peerbit/stream-interface": "^1.0.7",
63
62
  "abstract-level": "^1.0.3",
64
63
  "graphology": "0.25.1",
65
64
  "graphology-shortest-path": "2.0.2",
66
- "libp2p": "^0.45.9",
65
+ "libp2p": "^0.46.6",
67
66
  "memory-level": "^1.0.0",
68
67
  "yallist": "^4.0.0"
69
68
  },
70
- "gitHead": "464e807d679e24b897b7811ac99d6f85fbd756f9"
69
+ "gitHead": "0cfa376bc90c31e1063ddaf5435c828b490e0228"
71
70
  }
package/src/index.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { EventEmitter, CustomEvent } from "@libp2p/interfaces/events";
1
+ import { EventEmitter, CustomEvent } from "@libp2p/interface/events";
2
2
  import { pipe } from "it-pipe";
3
3
  import Queue from "p-queue";
4
- import type { PeerId } from "@libp2p/interface-peer-id";
5
- import type { Connection } from "@libp2p/interface-connection";
4
+ import type { PeerId } from "@libp2p/interface/peer-id";
5
+ import type { Connection } from "@libp2p/interface/connection";
6
6
  import type { Pushable } from "it-pushable";
7
7
  import { pushable } from "it-pushable";
8
- import type { Stream } from "@libp2p/interface-connection";
8
+ import type { Stream } from "@libp2p/interface/connection";
9
9
  import { Uint8ArrayList } from "uint8arraylist";
10
10
  import { abortableSource } from "abortable-iterator";
11
11
  import * as lp from "it-length-prefixed";
@@ -14,10 +14,12 @@ import { multiaddr } from "@multiformats/multiaddr";
14
14
  import { PeerMap } from "./peer-map.js";
15
15
  import type {
16
16
  IncomingStreamData,
17
- Registrar,
18
- } from "@libp2p/interface-registrar";
19
- import { ConnectionManager } from "@libp2p/interface-connection-manager";
20
- import { PeerStore } from "@libp2p/interface-peer-store";
17
+ Registrar
18
+ } from "@libp2p/interface-internal/registrar";
19
+ import type { AddressManager } from "@libp2p/interface-internal/address-manager";
20
+ import type { ConnectionManager } from "@libp2p/interface-internal/connection-manager";
21
+
22
+ import { PeerStore } from "@libp2p/interface/peer-store";
21
23
 
22
24
  import { delay, TimeoutError, waitFor } from "@peerbit/time";
23
25
  import {
@@ -25,17 +27,14 @@ import {
25
27
  getKeypairFromPeerId,
26
28
  getPublicKeyFromPeerId,
27
29
  PublicSignKey,
28
- SignatureWithKey,
30
+ SignatureWithKey
29
31
  } from "@peerbit/crypto";
30
32
 
31
33
  export type SignaturePolicy = "StictSign" | "StrictNoSign";
32
- import type { AddressManager } from "@libp2p/interface-address-manager";
33
-
34
34
  import { logger } from "./logger.js";
35
35
  import { Cache } from "@peerbit/cache";
36
- import { createTopology } from "./topology.js";
37
36
  export { logger };
38
- import type { Libp2pEvents } from "@libp2p/interface-libp2p";
37
+ import type { Libp2pEvents } from "@libp2p/interface";
39
38
  import {
40
39
  PeerEvents,
41
40
  Message as Message,
@@ -46,7 +45,7 @@ import {
46
45
  PingPong,
47
46
  Pong,
48
47
  getMsgId,
49
- WaitForPeer,
48
+ WaitForPeer
50
49
  } from "@peerbit/stream-interface";
51
50
  export interface PeerStreamsInit {
52
51
  peerId: PeerId;
@@ -205,7 +204,7 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
205
204
  returnOnAbort: true,
206
205
  onReturnError: (err) => {
207
206
  logger.error("Inbound stream error", err?.message);
208
- },
207
+ }
209
208
  }
210
209
  );
211
210
 
@@ -220,19 +219,21 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
220
219
  async attachOutboundStream(stream: Stream) {
221
220
  // If an outbound stream already exists, gently close it
222
221
  const _prevStream = this.outboundStream;
222
+
223
223
  this._rawOutboundStream = stream;
224
224
  this.pingJob?.abort();
225
225
 
226
226
  this.outboundStream = pushable<Uint8ArrayList>({
227
227
  objectMode: true,
228
228
  onEnd: () => {
229
- stream.close();
230
- if (this._rawOutboundStream === stream) {
231
- this.dispatchEvent(new CustomEvent("close"));
232
- this._rawOutboundStream = undefined;
233
- this.outboundStream = undefined;
234
- }
235
- },
229
+ return stream.close().then(() => {
230
+ if (this._rawOutboundStream === stream) {
231
+ this.dispatchEvent(new CustomEvent("close"));
232
+ this._rawOutboundStream = undefined;
233
+ this.outboundStream = undefined;
234
+ }
235
+ });
236
+ }
236
237
  });
237
238
 
238
239
  pipe(
@@ -256,7 +257,7 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
256
257
  /**
257
258
  * Closes the open connection to peer
258
259
  */
259
- close() {
260
+ async close() {
260
261
  if (this.closed) {
261
262
  return;
262
263
  }
@@ -265,13 +266,13 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
265
266
 
266
267
  // End the outbound stream
267
268
  if (this.outboundStream != null) {
268
- this.outboundStream.return();
269
- this._rawOutboundStream?.close();
269
+ await this.outboundStream.return();
270
+ await this._rawOutboundStream?.close();
270
271
  }
271
272
  // End the inbound stream
272
273
  if (this.inboundStream != null) {
273
274
  this.inboundAbortController.abort();
274
- this._rawInboundStream?.close();
275
+ await this._rawInboundStream?.close();
275
276
  }
276
277
 
277
278
  this.pingJob?.abort();
@@ -308,7 +309,9 @@ export type DirectStreamOptions = {
308
309
  connectionManager?: ConnectionManagerOptions;
309
310
  };
310
311
 
311
- export interface DirectStreamComponents {
312
+ import { Components } from "libp2p/components";
313
+
314
+ export interface DirectStreamComponents extends Components {
312
315
  peerId: PeerId;
313
316
  addressManager: AddressManager;
314
317
  registrar: Registrar;
@@ -378,7 +381,7 @@ export abstract class DirectStream<
378
381
  maxInboundStreams,
379
382
  maxOutboundStreams,
380
383
  signaturePolicy = "StictSign",
381
- connectionManager = { autoDial: true },
384
+ connectionManager = { autoDial: true }
382
385
  } = options || {};
383
386
 
384
387
  const signKey = getKeypairFromPeerId(components.peerId);
@@ -410,7 +413,7 @@ export abstract class DirectStream<
410
413
  this.connectionManagerOptions = connectionManager;
411
414
  this.recentDials = new Cache({
412
415
  ttl: connectionManager.retryDelay || 60 * 1000,
413
- max: 1e3,
416
+ max: 1e3
414
417
  });
415
418
  }
416
419
 
@@ -421,16 +424,14 @@ export abstract class DirectStream<
421
424
 
422
425
  logger.debug("starting");
423
426
 
424
- this.topology = createTopology({
425
- onConnect: this.onPeerConnected.bind(this),
426
- onDisconnect: this.onPeerDisconnected.bind(this),
427
- });
428
-
429
427
  // register protocol with topology
430
428
  // Topology callbacks called on connection manager changes
431
429
  this._registrarTopologyIds = await Promise.all(
432
430
  this.multicodecs.map((multicodec) =>
433
- this.components.registrar.register(multicodec, this.topology)
431
+ this.components.registrar.register(multicodec, {
432
+ onConnect: this.onPeerConnected.bind(this),
433
+ onDisconnect: this.onPeerDisconnected.bind(this)
434
+ })
434
435
  )
435
436
  );
436
437
 
@@ -440,7 +441,7 @@ export abstract class DirectStream<
440
441
  this.multicodecs.map((multicodec) =>
441
442
  this.components.registrar.handle(multicodec, this._onIncomingStream, {
442
443
  maxInboundStreams: this.maxInboundStreams,
443
- maxOutboundStreams: this.maxOutboundStreams,
444
+ maxOutboundStreams: this.maxOutboundStreams
444
445
  })
445
446
  )
446
447
  );
@@ -520,7 +521,7 @@ export abstract class DirectStream<
520
521
 
521
522
  logger.debug("stopping");
522
523
  for (const peerStreams of this.peers.values()) {
523
- peerStreams.close();
524
+ await peerStreams.close();
524
525
  }
525
526
 
526
527
  // unregister protocol and handlers
@@ -557,7 +558,7 @@ export abstract class DirectStream<
557
558
 
558
559
  const { stream, connection } = data;
559
560
  const peerId = connection.remotePeer;
560
- if (stream.stat.protocol == null) {
561
+ if (stream.protocol == null) {
561
562
  stream.abort(new Error("Stream was not multiplexed"));
562
563
  return;
563
564
  }
@@ -566,7 +567,7 @@ export abstract class DirectStream<
566
567
  const peer = this.addPeer(
567
568
  peerId,
568
569
  publicKey,
569
- stream.stat.protocol,
570
+ stream.protocol,
570
571
  connection.id
571
572
  );
572
573
  const inboundStream = peer.attachInboundStream(stream);
@@ -583,7 +584,7 @@ export abstract class DirectStream<
583
584
  conn: Connection,
584
585
  fromExisting?: boolean
585
586
  ) {
586
- if (!this.isStarted() || conn.stat.status !== "OPEN") {
587
+ if (!this.isStarted() || conn.status !== "open") {
587
588
  return;
588
589
  }
589
590
  try {
@@ -592,9 +593,9 @@ export abstract class DirectStream<
592
593
 
593
594
  for (const existingStreams of conn.streams) {
594
595
  if (
595
- existingStreams.stat.protocol &&
596
- this.multicodecs.includes(existingStreams.stat.protocol) &&
597
- existingStreams.stat.direction === "outbound"
596
+ existingStreams.protocol &&
597
+ this.multicodecs.includes(existingStreams.protocol) &&
598
+ existingStreams.direction === "outbound"
598
599
  ) {
599
600
  return;
600
601
  }
@@ -614,12 +615,14 @@ export abstract class DirectStream<
614
615
  }
615
616
 
616
617
  try {
617
- stream = await conn.newStream(this.multicodecs);
618
- if (stream.stat.protocol == null) {
618
+ stream = await conn.newStream(this.multicodecs, {
619
+ runOnTransientConnection: true
620
+ });
621
+ if (stream.protocol == null) {
619
622
  stream.abort(new Error("Stream was not multiplexed"));
620
623
  return;
621
624
  }
622
- peer = this.addPeer(peerId, peerKey, stream.stat.protocol!, conn.id); // TODO types
625
+ peer = this.addPeer(peerId, peerKey, stream.protocol!, conn.id); // TODO types
623
626
  await peer.attachOutboundStream(stream);
624
627
 
625
628
  // TODO do we want to do this?
@@ -644,7 +647,7 @@ export abstract class DirectStream<
644
647
  }
645
648
 
646
649
  if (
647
- conn.stat.status !== "OPEN" ||
650
+ conn.status !== "open" ||
648
651
  error?.message === "Muxer already closed" ||
649
652
  error.code === "ERR_STREAM_RESET"
650
653
  ) {
@@ -684,7 +687,7 @@ export abstract class DirectStream<
684
687
  await new Hello({
685
688
  multiaddrs: this.components.addressManager
686
689
  .getAddresses()
687
- .map((x) => x.toString()),
690
+ .map((x) => x.toString())
688
691
  }).sign(this.sign),
689
692
  [peer]
690
693
  )
@@ -788,7 +791,7 @@ export abstract class DirectStream<
788
791
  }
789
792
 
790
793
  if (!this.publicKey.equals(peerKey)) {
791
- this._removePeer(peerKey);
794
+ await this._removePeer(peerKey);
792
795
  this.removeRouteConnection(this.publicKey, peerKey);
793
796
 
794
797
  // Notify network
@@ -857,12 +860,12 @@ export abstract class DirectStream<
857
860
  peerId,
858
861
  publicKey,
859
862
  protocol,
860
- connId,
863
+ connId
861
864
  });
862
865
 
863
866
  this.peers.set(publicKeyHash, peerStreams);
864
867
  peerStreams.addEventListener("close", () => this._removePeer(publicKey), {
865
- once: true,
868
+ once: true
866
869
  });
867
870
  return peerStreams;
868
871
  }
@@ -870,7 +873,7 @@ export abstract class DirectStream<
870
873
  /**
871
874
  * Notifies the router that a peer has been disconnected
872
875
  */
873
- protected _removePeer(publicKey: PublicSignKey) {
876
+ protected async _removePeer(publicKey: PublicSignKey) {
874
877
  const hash = publicKey.hashcode();
875
878
  const peerStreams = this.peers.get(hash);
876
879
 
@@ -879,7 +882,7 @@ export abstract class DirectStream<
879
882
  }
880
883
 
881
884
  // close peer streams
882
- peerStreams.close();
885
+ await peerStreams.close();
883
886
 
884
887
  // delete peer streams
885
888
  logger.debug("delete peer" + publicKey.toString());
@@ -996,7 +999,7 @@ export abstract class DirectStream<
996
999
 
997
1000
  this.dispatchEvent(
998
1001
  new CustomEvent("message", {
999
- detail: message,
1002
+ detail: message
1000
1003
  })
1001
1004
  );
1002
1005
 
@@ -1035,7 +1038,7 @@ export abstract class DirectStream<
1035
1038
 
1036
1039
  this.dispatchEvent(
1037
1040
  new CustomEvent("data", {
1038
- detail: message,
1041
+ detail: message
1039
1042
  })
1040
1043
  );
1041
1044
  }
@@ -1201,7 +1204,7 @@ export abstract class DirectStream<
1201
1204
  abort: () => {
1202
1205
  clearTimeout(timeout);
1203
1206
  resolve(undefined);
1204
- },
1207
+ }
1205
1208
  };
1206
1209
  this.publishMessage(this.components.peerId, ping, [stream]).catch(
1207
1210
  (err) => {
@@ -1247,7 +1250,7 @@ export abstract class DirectStream<
1247
1250
  }
1248
1251
  const message = new DataMessage({
1249
1252
  data: data instanceof Uint8ArrayList ? data.subarray() : data,
1250
- to: toHashes,
1253
+ to: toHashes
1251
1254
  });
1252
1255
  if (this.signaturePolicy === "StictSign") {
1253
1256
  await message.sign(this.sign);
@@ -1270,7 +1273,7 @@ export abstract class DirectStream<
1270
1273
  if (this.emitSelf) {
1271
1274
  super.dispatchEvent(
1272
1275
  new CustomEvent("data", {
1273
- detail: message,
1276
+ detail: message
1274
1277
  })
1275
1278
  );
1276
1279
  }
@@ -1292,7 +1295,7 @@ export abstract class DirectStream<
1292
1295
  multiaddrs: this.components.addressManager
1293
1296
  .getAddresses()
1294
1297
  .map((x) => x.toString()),
1295
- data,
1298
+ data
1296
1299
  }).sign(this.sign.bind(this))
1297
1300
  );
1298
1301
  }
@@ -1343,7 +1346,7 @@ export abstract class DirectStream<
1343
1346
  const fromMe = from.equals(this.components.peerId);
1344
1347
  const block = !fromMe ? fromKey : undefined;
1345
1348
  const path = this.routes.getPath(this.publicKeyHash, to, {
1346
- block, // prevent send message backwards
1349
+ block // prevent send message backwards
1347
1350
  });
1348
1351
 
1349
1352
  if (path && path.length > 0) {
@@ -1,24 +0,0 @@
1
- import { topologySymbol as symbol } from "@libp2p/interface-registrar";
2
- import type { PeerId } from "@libp2p/interface-peer-id";
3
- import type { Topology, TopologyInit, onConnectHandler, onDisconnectHandler, Registrar } from "@libp2p/interface-registrar";
4
- import type { Connection } from "@libp2p/interface-connection";
5
- export declare class TopologyImpl implements Topology {
6
- min: number;
7
- max: number;
8
- /**
9
- * Set of peers that support the protocol
10
- */
11
- peers: Set<string>;
12
- onConnect: onConnectHandler;
13
- onDisconnect: onDisconnectHandler;
14
- protected registrar: Registrar | undefined;
15
- constructor(init: TopologyInit);
16
- get [Symbol.toStringTag](): string;
17
- get [symbol](): boolean;
18
- setRegistrar(registrar: Registrar): Promise<void>;
19
- /**
20
- * Notify about peer disconnected event
21
- */
22
- disconnect(peerId: PeerId, conn: Connection): void;
23
- }
24
- export declare function createTopology(init: TopologyInit): Topology;
@@ -1,39 +0,0 @@
1
- import { topologySymbol as symbol } from "@libp2p/interface-registrar";
2
- const noop = () => undefined;
3
- export class TopologyImpl {
4
- min;
5
- max;
6
- /**
7
- * Set of peers that support the protocol
8
- */
9
- peers;
10
- onConnect;
11
- onDisconnect;
12
- registrar;
13
- constructor(init) {
14
- this.min = init.min ?? 0;
15
- this.max = init.max ?? Infinity;
16
- this.peers = new Set();
17
- this.onConnect = init.onConnect ?? noop;
18
- this.onDisconnect = init.onDisconnect ?? noop;
19
- }
20
- get [Symbol.toStringTag]() {
21
- return symbol.toString();
22
- }
23
- get [symbol]() {
24
- return true;
25
- }
26
- async setRegistrar(registrar) {
27
- this.registrar = registrar;
28
- }
29
- /**
30
- * Notify about peer disconnected event
31
- */
32
- disconnect(peerId, conn) {
33
- this.onDisconnect(peerId, conn);
34
- }
35
- }
36
- export function createTopology(init) {
37
- return new TopologyImpl(init);
38
- }
39
- //# sourceMappingURL=topology.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAWvE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;AAE7B,MAAM,OAAO,YAAY;IACjB,GAAG,CAAS;IACZ,GAAG,CAAS;IAEnB;;OAEG;IACI,KAAK,CAAc;IACnB,SAAS,CAAmB;IAC5B,YAAY,CAAsB;IAE/B,SAAS,CAAwB;IAE3C,YAAY,IAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACvB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,MAAM,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAoB;QACtC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc,EAAE,IAAgB;QAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;CACD;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB;IAChD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
package/src/topology.ts DELETED
@@ -1,58 +0,0 @@
1
- import { topologySymbol as symbol } from "@libp2p/interface-registrar";
2
- import type { PeerId } from "@libp2p/interface-peer-id";
3
- import type {
4
- Topology,
5
- TopologyInit,
6
- onConnectHandler,
7
- onDisconnectHandler,
8
- Registrar,
9
- } from "@libp2p/interface-registrar";
10
- import type { Connection, Stream } from "@libp2p/interface-connection";
11
-
12
- const noop = () => undefined;
13
-
14
- export class TopologyImpl implements Topology {
15
- public min: number;
16
- public max: number;
17
-
18
- /**
19
- * Set of peers that support the protocol
20
- */
21
- public peers: Set<string>;
22
- public onConnect: onConnectHandler;
23
- public onDisconnect: onDisconnectHandler;
24
-
25
- protected registrar: Registrar | undefined;
26
-
27
- constructor(init: TopologyInit) {
28
- this.min = init.min ?? 0;
29
- this.max = init.max ?? Infinity;
30
- this.peers = new Set();
31
-
32
- this.onConnect = init.onConnect ?? noop;
33
- this.onDisconnect = init.onDisconnect ?? noop;
34
- }
35
-
36
- get [Symbol.toStringTag]() {
37
- return symbol.toString();
38
- }
39
-
40
- get [symbol]() {
41
- return true;
42
- }
43
-
44
- async setRegistrar(registrar: Registrar) {
45
- this.registrar = registrar;
46
- }
47
-
48
- /**
49
- * Notify about peer disconnected event
50
- */
51
- disconnect(peerId: PeerId, conn: Connection) {
52
- this.onDisconnect(peerId, conn);
53
- }
54
- }
55
-
56
- export function createTopology(init: TopologyInit): Topology {
57
- return new TopologyImpl(init);
58
- }