libp2p 0.42.2-45fc415b → 0.42.2-593deefe

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/index.min.js +29 -29
  2. package/dist/src/circuit/client.d.ts +81 -0
  3. package/dist/src/circuit/client.d.ts.map +1 -0
  4. package/dist/src/circuit/client.js +285 -0
  5. package/dist/src/circuit/client.js.map +1 -0
  6. package/dist/src/circuit/constants.d.ts +7 -8
  7. package/dist/src/circuit/constants.d.ts.map +1 -1
  8. package/dist/src/circuit/constants.js +11 -8
  9. package/dist/src/circuit/constants.js.map +1 -1
  10. package/dist/src/circuit/hop.d.ts +23 -0
  11. package/dist/src/circuit/hop.d.ts.map +1 -0
  12. package/dist/src/circuit/hop.js +167 -0
  13. package/dist/src/circuit/hop.js.map +1 -0
  14. package/dist/src/circuit/index.d.ts +47 -47
  15. package/dist/src/circuit/index.d.ts.map +1 -1
  16. package/dist/src/circuit/index.js +1 -68
  17. package/dist/src/circuit/index.js.map +1 -1
  18. package/dist/src/circuit/interfaces.d.ts +27 -0
  19. package/dist/src/circuit/interfaces.d.ts.map +1 -0
  20. package/dist/src/circuit/interfaces.js +2 -0
  21. package/dist/src/circuit/interfaces.js.map +1 -0
  22. package/dist/src/circuit/multicodec.d.ts +2 -1
  23. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  24. package/dist/src/circuit/multicodec.js +2 -1
  25. package/dist/src/circuit/multicodec.js.map +1 -1
  26. package/dist/src/circuit/pb/index.d.ts +83 -43
  27. package/dist/src/circuit/pb/index.d.ts.map +1 -1
  28. package/dist/src/circuit/pb/index.js +363 -127
  29. package/dist/src/circuit/pb/index.js.map +1 -1
  30. package/dist/src/circuit/relay.d.ts +34 -0
  31. package/dist/src/circuit/relay.d.ts.map +1 -0
  32. package/dist/src/circuit/relay.js +61 -0
  33. package/dist/src/circuit/relay.js.map +1 -0
  34. package/dist/src/circuit/reservation-store.d.ts +42 -0
  35. package/dist/src/circuit/reservation-store.d.ts.map +1 -0
  36. package/dist/src/circuit/reservation-store.js +59 -0
  37. package/dist/src/circuit/reservation-store.js.map +1 -0
  38. package/dist/src/circuit/reservation-voucher.d.ts +18 -0
  39. package/dist/src/circuit/reservation-voucher.d.ts.map +1 -0
  40. package/dist/src/circuit/reservation-voucher.js +33 -0
  41. package/dist/src/circuit/reservation-voucher.js.map +1 -0
  42. package/dist/src/circuit/stop.d.ts +19 -0
  43. package/dist/src/circuit/stop.d.ts.map +1 -0
  44. package/dist/src/circuit/stop.js +67 -0
  45. package/dist/src/circuit/stop.js.map +1 -0
  46. package/dist/src/circuit/transport.d.ts +24 -9
  47. package/dist/src/circuit/transport.d.ts.map +1 -1
  48. package/dist/src/circuit/transport.js +133 -118
  49. package/dist/src/circuit/transport.js.map +1 -1
  50. package/dist/src/circuit/utils.d.ts +5 -0
  51. package/dist/src/circuit/utils.d.ts.map +1 -1
  52. package/dist/src/circuit/utils.js +114 -0
  53. package/dist/src/circuit/utils.js.map +1 -1
  54. package/dist/src/config.d.ts.map +1 -1
  55. package/dist/src/config.js +2 -3
  56. package/dist/src/config.js.map +1 -1
  57. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -1
  58. package/dist/src/connection-manager/dialer/dial-request.js +7 -0
  59. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -1
  60. package/dist/src/errors.d.ts +2 -1
  61. package/dist/src/errors.d.ts.map +1 -1
  62. package/dist/src/errors.js +1 -0
  63. package/dist/src/errors.js.map +1 -1
  64. package/dist/src/fetch/pb/proto.d.ts +3 -3
  65. package/dist/src/fetch/pb/proto.d.ts.map +1 -1
  66. package/dist/src/fetch/pb/proto.js +4 -3
  67. package/dist/src/fetch/pb/proto.js.map +1 -1
  68. package/dist/src/identify/pb/message.d.ts +2 -2
  69. package/dist/src/identify/pb/message.d.ts.map +1 -1
  70. package/dist/src/identify/pb/message.js +1 -0
  71. package/dist/src/identify/pb/message.js.map +1 -1
  72. package/dist/src/insecure/pb/proto.d.ts +3 -3
  73. package/dist/src/insecure/pb/proto.d.ts.map +1 -1
  74. package/dist/src/insecure/pb/proto.js +4 -5
  75. package/dist/src/insecure/pb/proto.js.map +1 -1
  76. package/dist/src/libp2p.d.ts +2 -0
  77. package/dist/src/libp2p.d.ts.map +1 -1
  78. package/dist/src/libp2p.js +10 -3
  79. package/dist/src/libp2p.js.map +1 -1
  80. package/dist/src/transport-manager.d.ts.map +1 -1
  81. package/dist/src/transport-manager.js +2 -3
  82. package/dist/src/transport-manager.js.map +1 -1
  83. package/dist/src/upgrader.d.ts.map +1 -1
  84. package/dist/src/upgrader.js.map +1 -1
  85. package/package.json +12 -11
  86. package/src/circuit/client.ts +381 -0
  87. package/src/circuit/constants.ts +14 -8
  88. package/src/circuit/hop.ts +210 -0
  89. package/src/circuit/index.ts +49 -111
  90. package/src/circuit/interfaces.ts +28 -0
  91. package/src/circuit/multicodec.ts +2 -1
  92. package/src/circuit/pb/index.proto +57 -32
  93. package/src/circuit/pb/index.ts +448 -138
  94. package/src/circuit/relay.ts +87 -0
  95. package/src/circuit/reservation-store.ts +106 -0
  96. package/src/circuit/reservation-voucher.ts +51 -0
  97. package/src/circuit/stop.ts +92 -0
  98. package/src/circuit/transport.ts +166 -131
  99. package/src/circuit/utils.ts +145 -0
  100. package/src/config.ts +2 -3
  101. package/src/connection-manager/dialer/dial-request.ts +7 -0
  102. package/src/errors.ts +2 -1
  103. package/src/fetch/pb/proto.ts +8 -7
  104. package/src/identify/pb/message.ts +3 -2
  105. package/src/insecure/pb/proto.ts +8 -9
  106. package/src/libp2p.ts +12 -3
  107. package/src/transport-manager.ts +2 -3
  108. package/src/upgrader.ts +4 -4
  109. package/src/version.ts +1 -1
  110. package/dist/src/circuit/auto-relay.d.ts +0 -46
  111. package/dist/src/circuit/auto-relay.d.ts.map +0 -1
  112. package/dist/src/circuit/auto-relay.js +0 -220
  113. package/dist/src/circuit/auto-relay.js.map +0 -1
  114. package/dist/src/circuit/circuit/hop.d.ts +0 -42
  115. package/dist/src/circuit/circuit/hop.d.ts.map +0 -1
  116. package/dist/src/circuit/circuit/hop.js +0 -142
  117. package/dist/src/circuit/circuit/hop.js.map +0 -1
  118. package/dist/src/circuit/circuit/stop.d.ts +0 -24
  119. package/dist/src/circuit/circuit/stop.d.ts.map +0 -1
  120. package/dist/src/circuit/circuit/stop.js +0 -51
  121. package/dist/src/circuit/circuit/stop.js.map +0 -1
  122. package/dist/src/circuit/circuit/stream-handler.d.ts +0 -40
  123. package/dist/src/circuit/circuit/stream-handler.d.ts.map +0 -1
  124. package/dist/src/circuit/circuit/stream-handler.js +0 -59
  125. package/dist/src/circuit/circuit/stream-handler.js.map +0 -1
  126. package/dist/src/circuit/circuit/utils.d.ts +0 -7
  127. package/dist/src/circuit/circuit/utils.d.ts.map +0 -1
  128. package/dist/src/circuit/circuit/utils.js +0 -43
  129. package/dist/src/circuit/circuit/utils.js.map +0 -1
  130. package/src/circuit/IMPLEMENTATION_NOTES.md +0 -128
  131. package/src/circuit/README.md +0 -111
  132. package/src/circuit/auto-relay.ts +0 -292
  133. package/src/circuit/circuit/hop.ts +0 -220
  134. package/src/circuit/circuit/stop.ts +0 -83
  135. package/src/circuit/circuit/stream-handler.ts +0 -87
  136. package/src/circuit/circuit/utils.ts +0 -44
@@ -0,0 +1,61 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import { codes } from '../errors.js';
3
+ import { setDelayedInterval, clearDelayedInterval
4
+ // @ts-expect-error set-delayed-interval does not export types
5
+ } from 'set-delayed-interval';
6
+ import { namespaceToCid } from './utils.js';
7
+ import { RELAY_RENDEZVOUS_NS } from './constants.js';
8
+ const log = logger('libp2p:circuit:relay');
9
+ export class Relay {
10
+ /**
11
+ * Creates an instance of Relay
12
+ */
13
+ constructor(components, init) {
14
+ this.components = components;
15
+ this.started = false;
16
+ this.init = init;
17
+ this._advertiseService = this._advertiseService.bind(this);
18
+ }
19
+ isStarted() {
20
+ return this.started;
21
+ }
22
+ /**
23
+ * Start Relay service
24
+ */
25
+ async start() {
26
+ // Advertise service if HOP enabled and advertising enabled
27
+ if (this.init.hop.enabled === true && this.init.advertise.enabled === true) {
28
+ this.timeout = setDelayedInterval(this._advertiseService, this.init.advertise.ttl, this.init.advertise.bootDelay);
29
+ }
30
+ this.started = true;
31
+ }
32
+ /**
33
+ * Stop Relay service
34
+ */
35
+ async stop() {
36
+ try {
37
+ clearDelayedInterval(this.timeout);
38
+ }
39
+ catch (err) { }
40
+ this.started = false;
41
+ }
42
+ /**
43
+ * Advertise hop relay service in the network.
44
+ */
45
+ async _advertiseService() {
46
+ try {
47
+ const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS);
48
+ await this.components.contentRouting.provide(cid);
49
+ }
50
+ catch (err) {
51
+ if (err.code === codes.ERR_NO_ROUTERS_AVAILABLE) {
52
+ log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err);
53
+ await this.stop();
54
+ }
55
+ else {
56
+ log.error('could not advertise service: ', err);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ //# sourceMappingURL=relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../src/circuit/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EACL,kBAAkB,EAClB,oBAAoB;AACpB,8DAA8D;EAC/D,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AAMvB,MAAM,GAAG,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAS1C,MAAM,OAAO,KAAK;IAMhB;;OAEG;IACH,YAAa,UAAsB,EAAE,IAAe;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,2DAA2D;QAC3D,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,EAAE;YAC1E,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAC/B,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAC/E,CAAA;SACF;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI;YACF,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACnC;QAAC,OAAO,GAAG,EAAE,GAAG;QAEjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAAC,CAAA;YACrD,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;SAClD;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,wBAAwB,EAAE;gBAC/C,GAAG,CAAC,KAAK,CAAC,2FAA2F,EAAE,GAAG,CAAC,CAAA;gBAC3G,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;aAClB;iBAAM;gBACL,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;aAChD;SACF;IACH,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ import { Limit } from './pb/index.js';
2
+ import type { ReservationStore as IReservationStore, ReservationStatus, Reservation } from './interfaces.js';
3
+ import type { Multiaddr } from '@multiformats/multiaddr';
4
+ import type { PeerId } from '@libp2p/interface-peer-id';
5
+ import type { Startable } from '@libp2p/interfaces/startable';
6
+ import type { RecursivePartial } from '@libp2p/interfaces';
7
+ export interface ReservationStoreInit {
8
+ maxReservations: number;
9
+ reservationClearInterval: number;
10
+ applyDefaultLimit: boolean;
11
+ /**
12
+ * reservation ttl, default: 2 hours
13
+ */
14
+ reservationTtl: number;
15
+ /**
16
+ * The maximum time a relayed connection can be open for
17
+ */
18
+ defaultDurationLimit?: number;
19
+ /**
20
+ * The maximum amount of data allowed to be transferred over a relayed connection
21
+ */
22
+ defaultDataLimit?: bigint;
23
+ }
24
+ export type ReservationStoreOptions = RecursivePartial<ReservationStoreInit>;
25
+ export declare class ReservationStore implements IReservationStore, Startable {
26
+ private readonly reservations;
27
+ private _started;
28
+ private interval;
29
+ private readonly init;
30
+ constructor(options?: ReservationStoreOptions);
31
+ isStarted(): boolean;
32
+ start(): void;
33
+ stop(): void;
34
+ reserve(peer: PeerId, addr: Multiaddr, limit?: Limit): {
35
+ status: ReservationStatus;
36
+ expire?: number;
37
+ };
38
+ removeReservation(peer: PeerId): void;
39
+ hasReservation(dst: PeerId): boolean;
40
+ get(peer: PeerId): Reservation | undefined;
41
+ }
42
+ //# sourceMappingURL=reservation-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/circuit/reservation-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG1D,MAAM,WAAW,oBAAoB;IAInC,eAAe,EAAE,MAAM,CAAA;IAIvB,wBAAwB,EAAE,MAAM,CAAA;IAIhC,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAE5E,qBAAa,gBAAiB,YAAW,iBAAiB,EAAE,SAAS;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;gBAE9B,OAAO,CAAC,EAAE,uBAAuB;IAW9C,SAAS;IAIT,KAAK;IAkBL,IAAI;IAIJ,OAAO,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAatG,iBAAiB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,cAAc,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAIrC,GAAG,CAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAG5C"}
@@ -0,0 +1,59 @@
1
+ import { Status } from './pb/index.js';
2
+ import { PeerMap } from '@libp2p/peer-collections';
3
+ import { DEFAULT_DATA_LIMIT, DEFAULT_DURATION_LIMIT } from './constants.js';
4
+ export class ReservationStore {
5
+ constructor(options) {
6
+ this.reservations = new PeerMap();
7
+ this._started = false;
8
+ this.init = {
9
+ maxReservations: options?.maxReservations ?? 15,
10
+ reservationClearInterval: options?.reservationClearInterval ?? 300 * 1000,
11
+ applyDefaultLimit: options?.applyDefaultLimit !== false,
12
+ reservationTtl: options?.reservationTtl ?? 2 * 60 * 60 * 1000,
13
+ defaultDurationLimit: options?.defaultDurationLimit ?? DEFAULT_DURATION_LIMIT,
14
+ defaultDataLimit: options?.defaultDataLimit ?? DEFAULT_DATA_LIMIT
15
+ };
16
+ }
17
+ isStarted() {
18
+ return this._started;
19
+ }
20
+ start() {
21
+ if (this._started) {
22
+ return;
23
+ }
24
+ this._started = true;
25
+ this.interval = setInterval(() => {
26
+ const now = (new Date()).getTime();
27
+ this.reservations.forEach((r, k) => {
28
+ if (r.expire.getTime() < now) {
29
+ this.reservations.delete(k);
30
+ }
31
+ });
32
+ }, this.init.reservationClearInterval);
33
+ }
34
+ stop() {
35
+ clearInterval(this.interval);
36
+ }
37
+ reserve(peer, addr, limit) {
38
+ if (this.reservations.size >= this.init.maxReservations && !this.reservations.has(peer)) {
39
+ return { status: Status.RESERVATION_REFUSED };
40
+ }
41
+ const expire = new Date(Date.now() + this.init.reservationTtl);
42
+ let checkedLimit;
43
+ if (this.init.applyDefaultLimit) {
44
+ checkedLimit = limit ?? { data: this.init.defaultDataLimit, duration: this.init.defaultDurationLimit };
45
+ }
46
+ this.reservations.set(peer, { addr, expire, limit: checkedLimit });
47
+ return { status: Status.OK, expire: expire.getTime() };
48
+ }
49
+ removeReservation(peer) {
50
+ this.reservations.delete(peer);
51
+ }
52
+ hasReservation(dst) {
53
+ return this.reservations.has(dst);
54
+ }
55
+ get(peer) {
56
+ return this.reservations.get(peer);
57
+ }
58
+ }
59
+ //# sourceMappingURL=reservation-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservation-store.js","sourceRoot":"","sources":["../../../src/circuit/reservation-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,eAAe,CAAA;AAK7C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AA+B3E,MAAM,OAAO,gBAAgB;IAM3B,YAAa,OAAiC;QAL7B,iBAAY,GAAG,IAAI,OAAO,EAAe,CAAA;QAClD,aAAQ,GAAG,KAAK,CAAC;QAKvB,IAAI,CAAC,IAAI,GAAG;YACV,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,EAAE;YAC/C,wBAAwB,EAAE,OAAO,EAAE,wBAAwB,IAAI,GAAG,GAAG,IAAI;YACzE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,KAAK,KAAK;YACvD,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YAC7D,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,IAAI,sBAAsB;YAC7E,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,kBAAkB;SAClE,CAAA;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAM;SACP;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,WAAW,CACzB,GAAG,EAAE;YACH,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;YAClC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE;oBAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;iBAC5B;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CACnC,CAAA;IACH,CAAC;IAED,IAAI;QACF,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO,CAAE,IAAY,EAAE,IAAe,EAAE,KAAa;QACnD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACvF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAA;SAC9C;QACD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC9D,IAAI,YAA+B,CAAA;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC/B,YAAY,GAAG,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAA;SACvG;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;QAClE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAA;IACxD,CAAC;IAED,iBAAiB,CAAE,IAAY;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,cAAc,CAAE,GAAW;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,GAAG,CAAE,IAAY;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import type { PeerId } from '@libp2p/interface-peer-id';
2
+ import type { Record } from '@libp2p/interface-record';
3
+ export interface ReservationVoucherOptions {
4
+ relay: PeerId;
5
+ peer: PeerId;
6
+ expiration: number;
7
+ }
8
+ export declare class ReservationVoucherRecord implements Record {
9
+ readonly domain = "libp2p-relay-rsvp";
10
+ readonly codec: Uint8Array;
11
+ private readonly relay;
12
+ private readonly peer;
13
+ private readonly expiration;
14
+ constructor({ relay, peer, expiration }: ReservationVoucherOptions);
15
+ marshal(): Uint8Array;
16
+ equals(other: Record): boolean;
17
+ }
18
+ //# sourceMappingURL=reservation-voucher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservation-voucher.d.ts","sourceRoot":"","sources":["../../../src/circuit/reservation-voucher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAGtD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,wBAAyB,YAAW,MAAM;IACrD,SAAgB,MAAM,uBAAsB;IAC5C,SAAgB,KAAK,aAA+B;IAEpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEtB,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,yBAAyB;IAMnE,OAAO;IAQP,MAAM,CAAE,KAAK,EAAE,MAAM;CAkBtB"}
@@ -0,0 +1,33 @@
1
+ import { ReservationVoucher } from './pb/index.js';
2
+ export class ReservationVoucherRecord {
3
+ constructor({ relay, peer, expiration }) {
4
+ this.domain = 'libp2p-relay-rsvp';
5
+ this.codec = new Uint8Array([0x03, 0x02]);
6
+ this.relay = relay;
7
+ this.peer = peer;
8
+ this.expiration = expiration;
9
+ }
10
+ marshal() {
11
+ return ReservationVoucher.encode({
12
+ relay: this.relay.toBytes(),
13
+ peer: this.peer.toBytes(),
14
+ expiration: BigInt(this.expiration)
15
+ });
16
+ }
17
+ equals(other) {
18
+ if (!(other instanceof ReservationVoucherRecord)) {
19
+ return false;
20
+ }
21
+ if (!this.peer.equals(other.peer)) {
22
+ return false;
23
+ }
24
+ if (!this.relay.equals(other.relay)) {
25
+ return false;
26
+ }
27
+ if (this.expiration !== other.expiration) {
28
+ return false;
29
+ }
30
+ return true;
31
+ }
32
+ }
33
+ //# sourceMappingURL=reservation-voucher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reservation-voucher.js","sourceRoot":"","sources":["../../../src/circuit/reservation-voucher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAQlD,MAAM,OAAO,wBAAwB;IAQnC,YAAa,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAA6B;QAPnD,WAAM,GAAG,mBAAmB,CAAA;QAC5B,UAAK,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAOlD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,OAAO;QACL,OAAO,kBAAkB,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACzB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SACpC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAE,KAAa;QACnB,IAAI,CAAC,CAAC,KAAK,YAAY,wBAAwB,CAAC,EAAE;YAChD,OAAO,KAAK,CAAA;SACb;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACjC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACnC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE;YACxC,OAAO,KAAK,CAAA;SACb;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { StopMessage } from './pb/index.js';
2
+ import type { Connection, Stream } from '@libp2p/interface-connection';
3
+ import { ProtobufStream } from 'it-pb-stream';
4
+ export interface HandleStopOptions {
5
+ connection: Connection;
6
+ request: StopMessage;
7
+ pbstr: ProtobufStream<Stream>;
8
+ }
9
+ export declare function handleStop({ connection, request, pbstr }: HandleStopOptions): Promise<Stream | undefined>;
10
+ export interface StopOptions {
11
+ connection: Connection;
12
+ request: StopMessage;
13
+ }
14
+ /**
15
+ * Creates a STOP request
16
+ *
17
+ */
18
+ export declare function stop({ connection, request }: StopOptions): Promise<Stream | undefined>;
19
+ //# sourceMappingURL=stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/circuit/stop.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,WAAW,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAKtE,OAAO,EAAY,cAAc,EAAE,MAAM,cAAc,CAAA;AAIvD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;CAC9B;AAaD,wBAAsB,UAAU,CAAE,EAChC,UAAU,EACV,OAAO,EACP,KAAK,EACN,EAAE,iBAAiB,+BAoBnB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAE,EAC1B,UAAU,EACV,OAAO,EACR,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyB3C"}
@@ -0,0 +1,67 @@
1
+ import { Status, StopMessage } from './pb/index.js';
2
+ import { logger } from '@libp2p/logger';
3
+ import { RELAY_V2_STOP_CODEC } from './multicodec.js';
4
+ import { multiaddr } from '@multiformats/multiaddr';
5
+ import { pbStream } from 'it-pb-stream';
6
+ const log = logger('libp2p:circuit:v2:stop');
7
+ const isValidStop = (request) => {
8
+ if (request.peer == null) {
9
+ return false;
10
+ }
11
+ try {
12
+ request.peer.addrs.forEach(multiaddr);
13
+ }
14
+ catch (_err) {
15
+ return false;
16
+ }
17
+ return true;
18
+ };
19
+ export async function handleStop({ connection, request, pbstr }) {
20
+ const stopstr = pbstr.pb(StopMessage);
21
+ log('new circuit relay v2 stop stream from %s', connection.remotePeer);
22
+ // Validate the STOP request has the required input
23
+ if (request.type !== StopMessage.Type.CONNECT) {
24
+ log.error('invalid stop connect request via peer %s', connection.remotePeer);
25
+ stopstr.write({ type: StopMessage.Type.STATUS, status: Status.UNEXPECTED_MESSAGE });
26
+ return;
27
+ }
28
+ if (!isValidStop(request)) {
29
+ log.error('invalid stop connect request via peer %s', connection.remotePeer);
30
+ stopstr.write({ type: StopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE });
31
+ return;
32
+ }
33
+ // TODO: go-libp2p marks connection transient if there is limit field present in request.
34
+ // Cannot find any reference to transient connections in js-libp2p
35
+ stopstr.write({ type: StopMessage.Type.STATUS, status: Status.OK });
36
+ return pbstr.unwrap();
37
+ }
38
+ /**
39
+ * Creates a STOP request
40
+ *
41
+ */
42
+ export async function stop({ connection, request }) {
43
+ const stream = await connection.newStream([RELAY_V2_STOP_CODEC]);
44
+ log('starting circuit relay v2 stop request to %s', connection.remotePeer);
45
+ const pbstr = pbStream(stream);
46
+ const stopstr = pbstr.pb(StopMessage);
47
+ stopstr.write(request);
48
+ let response;
49
+ try {
50
+ response = await stopstr.read();
51
+ }
52
+ catch (err) {
53
+ log.error('error parsing stop message response from %s', connection.remotePeer);
54
+ }
55
+ if (response == null) {
56
+ log.error('could not read response from %s', connection.remotePeer);
57
+ stream.close();
58
+ return;
59
+ }
60
+ if (response.status === Status.OK) {
61
+ log('stop request to %s was successful', connection.remotePeer);
62
+ return pbstr.unwrap();
63
+ }
64
+ log('stop request failed with code %d', response.status);
65
+ stream.close();
66
+ }
67
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/circuit/stop.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
- import type { Multiaddr } from '@multiformats/multiaddr';
2
- import { symbol, Upgrader } from '@libp2p/interface-transport';
1
+ import { symbol, TransportManager, Upgrader } from '@libp2p/interface-transport';
3
2
  import type { AbortOptions } from '@libp2p/interfaces';
4
3
  import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar';
5
4
  import type { Listener, Transport, CreateListenerOptions } from '@libp2p/interface-transport';
6
- import type { Connection } from '@libp2p/interface-connection';
5
+ import type { Connection, Stream } from '@libp2p/interface-connection';
7
6
  import type { RelayConfig } from './index.js';
8
- import type { Startable } from '@libp2p/interfaces/startable';
9
- import type { ConnectionManager } from '@libp2p/interface-connection-manager';
10
7
  import type { PeerId } from '@libp2p/interface-peer-id';
8
+ import type { Multiaddr } from '@multiformats/multiaddr';
11
9
  import type { PeerStore } from '@libp2p/interface-peer-store';
10
+ import type { Startable } from '@libp2p/interfaces/dist/src/startable';
11
+ import type { ConnectionManager } from '@libp2p/interface-connection-manager';
12
12
  import type { AddressManager } from '@libp2p/interface-address-manager';
13
+ export interface CircuitOptions {
14
+ limit?: number;
15
+ }
13
16
  export interface CircuitComponents {
14
17
  peerId: PeerId;
15
18
  peerStore: PeerStore;
@@ -17,25 +20,36 @@ export interface CircuitComponents {
17
20
  connectionManager: ConnectionManager;
18
21
  upgrader: Upgrader;
19
22
  addressManager: AddressManager;
23
+ transportManager: TransportManager;
24
+ }
25
+ interface ConnectOptions {
26
+ stream: Stream;
27
+ connection: Connection;
28
+ destinationPeer: PeerId;
29
+ destinationAddr: Multiaddr;
30
+ relayAddr: Multiaddr;
31
+ ma: Multiaddr;
32
+ disconnectOnFailure: boolean;
20
33
  }
21
34
  export declare class Circuit implements Transport, Startable {
22
35
  private handler?;
23
36
  private readonly components;
37
+ private readonly reservationStore;
24
38
  private readonly _init;
25
39
  private _started;
26
- constructor(components: CircuitComponents, init: RelayConfig);
40
+ constructor(components: CircuitComponents, options: RelayConfig);
27
41
  isStarted(): boolean;
28
42
  start(): Promise<void>;
29
43
  stop(): Promise<void>;
30
- hopEnabled(): boolean;
31
- hopActive(): boolean;
32
44
  get [symbol](): true;
33
45
  get [Symbol.toStringTag](): string;
34
- _onProtocol(data: IncomingStreamData): Promise<void>;
46
+ onHop({ connection, stream }: IncomingStreamData): Promise<void>;
47
+ onStop({ connection, stream }: IncomingStreamData): Promise<void>;
35
48
  /**
36
49
  * Dial a peer over a relay
37
50
  */
38
51
  dial(ma: Multiaddr, options?: AbortOptions): Promise<Connection>;
52
+ connectV2({ stream, connection, destinationPeer, destinationAddr, relayAddr, ma, disconnectOnFailure }: ConnectOptions): Promise<Connection>;
39
53
  /**
40
54
  * Create a listener
41
55
  */
@@ -48,4 +62,5 @@ export declare class Circuit implements Transport, Startable {
48
62
  */
49
63
  filter(multiaddrs: Multiaddr[]): Multiaddr[];
50
64
  }
65
+ export {};
51
66
  //# sourceMappingURL=transport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/circuit/transport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAUxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,qBAAqB,EAAqB,MAAM,6BAA6B,CAAA;AAChH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAIvE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,QAAQ,EAAE,QAAQ,CAAA;IAClB,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,qBAAa,OAAQ,YAAW,SAAS,EAAE,SAAS;IAClD,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAS;gBAEZ,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW;IAM7D,SAAS;IAIH,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAiBvB,IAAI;IAIV,UAAU;IAIV,SAAS;IAIT,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAEK,WAAW,CAAE,IAAI,EAAE,kBAAkB;IA6F3C;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IA4D3E;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAUzD;;;;;OAKG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAO9C"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/circuit/transport.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,qBAAqB,EAAqB,MAAM,6BAA6B,CAAA;AAChH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAA;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAMvE,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,QAAQ,EAAE,QAAQ,CAAA;IAClB,cAAc,EAAE,cAAc,CAAA;IAC9B,gBAAgB,EAAE,gBAAgB,CAAA;CACnC;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,eAAe,EAAE,SAAS,CAAA;IAC1B,SAAS,EAAE,SAAS,CAAA;IACpB,EAAE,EAAE,SAAS,CAAA;IACb,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED,qBAAa,OAAQ,YAAW,SAAS,EAAE,SAAS;IAClD,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAS;gBAEZ,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW;IAUhE,SAAS;IAIH,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAiCvB,IAAI;IAQV,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAEK,KAAK,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB;IA2CjD,MAAM,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB;IA6BxD;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6CrE,SAAS,CACb,EACE,MAAM,EAAE,UAAU,EAAE,eAAe,EACnC,eAAe,EAAE,SAAS,EAAE,EAAE,EAC9B,mBAAmB,EACpB,EAAE,cAAc;IAqCnB;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAUzD;;;;;OAKG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAO9C"}