transport-io 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -8
- package/dist/client.d.ts +5 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -4
- package/dist/client.js.map +1 -1
- package/dist/contract.d.ts +111 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +20 -0
- package/dist/contract.js.map +1 -1
- package/dist/framer.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/origin.d.ts +1 -1
- package/dist/origin.js +1 -1
- package/dist/server.d.ts +33 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +41 -1
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +34 -14
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +97 -39
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,14 +8,17 @@
|
|
|
8
8
|
Real-time apps over WebTransport. Socket.IO's shape, on a transport with multiple streams
|
|
9
9
|
and datagrams, without Socket.IO's mistakes.
|
|
10
10
|
|
|
11
|
-
Framing, length prefixes, buffer accumulation
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
Framing, length prefixes, buffer accumulation and stream lifecycle are handled for you. An
|
|
12
|
+
event declares `reliable` or `unreliable` in the contract, so "this message may be dropped"
|
|
13
|
+
is visible in the type system. The reliable lane is carried on QUIC streams, the unreliable
|
|
14
|
+
lane on QUIC datagrams.
|
|
15
|
+
|
|
16
|
+
A request answers with a value or with a sequence. `call()` awaits one result. `stream()`
|
|
17
|
+
returns an async iterable, and leaving the loop resets the QUIC stream so the server
|
|
18
|
+
generator's `finally` runs.
|
|
15
19
|
|
|
16
20
|
**Read [KNOWN-ISSUES.md](https://github.com/transport-io/transport-io/blob/main/KNOWN-ISSUES.md)
|
|
17
|
-
before you start.** It
|
|
18
|
-
measured defect. Full documentation is in the
|
|
21
|
+
before you start.** It lists what this library will not do, and the one measured defect. Full documentation is in the
|
|
19
22
|
[repository README](https://github.com/transport-io/transport-io#readme). The short version:
|
|
20
23
|
|
|
21
24
|
- **WebTransport only.** No WebSocket fallback, deliberately - a fallback would silently
|
|
@@ -23,8 +26,10 @@ measured defect. Full documentation is in the
|
|
|
23
26
|
- **Chrome and Firefox.** Safari cannot talk to a quiche-backed server and is unsupported.
|
|
24
27
|
- **The server needs a separate native install**, and its Linux prebuild needs glibc 2.38 -
|
|
25
28
|
no default Node `-slim` image has it, and Alpine has no prebuild at all.
|
|
26
|
-
- **Each
|
|
27
|
-
this library. `emit` and datagrams are flat.
|
|
29
|
+
- **Each bidirectional stream leaks ~5.95 KB of server memory**, upstream in the QUIC
|
|
30
|
+
binding, not in this library. `emit` and datagrams are flat. The leak is per stream rather
|
|
31
|
+
than per message, so a `stream()` of a thousand tokens costs 5.95 KB in total where a
|
|
32
|
+
thousand `call()`s cost 5.95 KB each: for token workloads, streaming is the cheap shape.
|
|
28
33
|
- **The protocol is v0 and unstable.** Both sides currently require an exact match.
|
|
29
34
|
|
|
30
35
|
```bash
|
package/dist/client.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* scope, so importing this on a server - which Next.js will do - is safe. Feature
|
|
6
6
|
* detection happens inside connect().
|
|
7
7
|
*/
|
|
8
|
-
import { type AnyMap, type CallableOf, type Contract, type StreamableOf } from './contract.ts';
|
|
8
|
+
import { type AnyMap, type CallableOf, type Contract, type Registered, type StreamableOf } from './contract.ts';
|
|
9
9
|
import { TransportError } from './errors.ts';
|
|
10
10
|
import { type SessionStats, type StreamResult } from './session.ts';
|
|
11
11
|
import type { Connection } from './transport/types.ts';
|
|
@@ -34,7 +34,7 @@ export interface ClientOptions<C extends Contract = Contract> {
|
|
|
34
34
|
/** Test seam: the clock the TTL is measured against. Defaults to `Date.now`. */
|
|
35
35
|
readonly now?: () => number;
|
|
36
36
|
}
|
|
37
|
-
export declare class Client<M extends AnyMap =
|
|
37
|
+
export declare class Client<M extends AnyMap = Registered> {
|
|
38
38
|
#private;
|
|
39
39
|
constructor(opts: ClientOptions);
|
|
40
40
|
/**
|
|
@@ -56,9 +56,9 @@ export declare class Client<M extends AnyMap = AnyMap> {
|
|
|
56
56
|
readonly signal?: AbortSignal;
|
|
57
57
|
}): Promise<M[K]['returns']>;
|
|
58
58
|
/**
|
|
59
|
-
* Available only on events declaring `yields`. Iterate it, or `.
|
|
60
|
-
* sequence. Leaving the loop with `break` resets the QUIC stream,
|
|
61
|
-
* the responder's `ctx.signal
|
|
59
|
+
* Available only on events declaring `yields`. Iterate it, or `.toArray()` the whole
|
|
60
|
+
* sequence. Leaving the loop with `break` resets the QUIC stream, and that reset is what
|
|
61
|
+
* fires the responder's `ctx.signal`. There is no separate cancel call.
|
|
62
62
|
*/
|
|
63
63
|
stream<K extends StreamableOf<M> & string>(event: K, payload: M[K]['payload'], options?: {
|
|
64
64
|
readonly signal?: AbortSignal;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE/E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;CAC1C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC1D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAErC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,mFAAmF;IACnF,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACpD,gFAAgF;IAChF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAC5B;AAED,qBAAa,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -85,9 +85,9 @@ export class Client {
|
|
|
85
85
|
return (await this.#requireSession().call(event, payload, options));
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
* Available only on events declaring `yields`. Iterate it, or `.
|
|
89
|
-
* sequence. Leaving the loop with `break` resets the QUIC stream,
|
|
90
|
-
* the responder's `ctx.signal
|
|
88
|
+
* Available only on events declaring `yields`. Iterate it, or `.toArray()` the whole
|
|
89
|
+
* sequence. Leaving the loop with `break` resets the QUIC stream, and that reset is what
|
|
90
|
+
* fires the responder's `ctx.signal`. There is no separate cancel call.
|
|
91
91
|
*/
|
|
92
92
|
stream(event, payload, options) {
|
|
93
93
|
return this.#requireSession().stream(event, payload, options);
|
|
@@ -102,7 +102,7 @@ export class Client {
|
|
|
102
102
|
const conn = await this.#opts.connect();
|
|
103
103
|
// Chrome implements neither `requireUnreliable` nor `reliability`, so `undefined`
|
|
104
104
|
// must pass or every session on the dominant browser would be refused. Only an
|
|
105
|
-
// explicit reliable-only
|
|
105
|
+
// explicit reliable-only would misreport what the unreliable lane does.
|
|
106
106
|
if (conn.reliability() === 'reliable-only') {
|
|
107
107
|
// §10.2 code 1006. Throwing without closing left the peer holding a session this
|
|
108
108
|
// side had already abandoned, with nothing on the wire to say why.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAEL,eAAe,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -67,6 +67,44 @@ export interface EventShape {
|
|
|
67
67
|
readonly yields: unknown;
|
|
68
68
|
}
|
|
69
69
|
export type AnyMap = Readonly<Record<string, EventShape>>;
|
|
70
|
+
/**
|
|
71
|
+
* Augmented by the application to register its contract once:
|
|
72
|
+
*
|
|
73
|
+
* ```ts
|
|
74
|
+
* declare module 'transport-io' {
|
|
75
|
+
* interface Register {
|
|
76
|
+
* map: AppMap
|
|
77
|
+
* }
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* It holds the **map**, not the contract, and that is measured rather than stylistic.
|
|
82
|
+
* Resolving the map through a conditional over the contract is an alias instantiation, and
|
|
83
|
+
* TypeScript expands those while preserving interface names: hover on `emit` goes from 107
|
|
84
|
+
* characters to 377, with the validator's internals back in it. See D100.
|
|
85
|
+
*/
|
|
86
|
+
export interface Register {
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The sentinel for an unregistered application. Its only key is the instruction, so the
|
|
90
|
+
* first `emit` fails with `Argument of type '"chat"' is not assignable to parameter of type
|
|
91
|
+
* '"no contract registered: ..."'`.
|
|
92
|
+
*
|
|
93
|
+
* It must be a **type alias, not an interface**. Interfaces get no implicit index signature,
|
|
94
|
+
* so an interface here fails the `AnyMap` constraint and produces a second, confusing error
|
|
95
|
+
* next to the useful one. The next person to touch this will try the interface.
|
|
96
|
+
*/
|
|
97
|
+
type NoContractRegistered = {
|
|
98
|
+
readonly 'no contract registered: declare module "transport-io" { interface Register { map: AppMap } }': {
|
|
99
|
+
readonly payload: never;
|
|
100
|
+
readonly returns: never;
|
|
101
|
+
readonly yields: never;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
/** The registered map, or the sentinel that explains how to register one. */
|
|
105
|
+
export type Registered = Register extends {
|
|
106
|
+
map: infer M extends AnyMap;
|
|
107
|
+
} ? M : NoContractRegistered;
|
|
70
108
|
/** Events declaring `returns`, and therefore callable. */
|
|
71
109
|
export type CallableOf<M extends AnyMap> = {
|
|
72
110
|
[K in keyof M]: [M[K]['returns']] extends [never] ? never : K;
|
|
@@ -75,7 +113,78 @@ export type CallableOf<M extends AnyMap> = {
|
|
|
75
113
|
export type StreamableOf<M extends AnyMap> = {
|
|
76
114
|
[K in keyof M]: [M[K]['yields']] extends [never] ? never : K;
|
|
77
115
|
}[keyof M];
|
|
78
|
-
|
|
116
|
+
/**
|
|
117
|
+
* `unknown` and `any` both satisfy `unknown extends T`, so the `any` check runs first. An
|
|
118
|
+
* event whose payload is deliberately untyped writes `any` and says so at the call site.
|
|
119
|
+
*/
|
|
120
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
121
|
+
type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
|
|
122
|
+
/**
|
|
123
|
+
* Replaces any event whose payload infers `unknown` with a sentence, so the error lands on
|
|
124
|
+
* the offending property inside the contract literal and names the event.
|
|
125
|
+
*
|
|
126
|
+
* `reliable()` with no type argument and no schema infers `unknown`, which would otherwise
|
|
127
|
+
* compile and accept anything for the rest of the application's life. The check lives here
|
|
128
|
+
* rather than at `emit()` because this is where the mistake is, and where someone is
|
|
129
|
+
* looking when they make it.
|
|
130
|
+
*
|
|
131
|
+
* Intersected with `C` rather than taken alone, which costs error quality and buys the
|
|
132
|
+
* TypeScript 5.0 floor. Alone it produces a one-line error, and on 5.0 it stops inferring
|
|
133
|
+
* `returns` out of the contract: `CallableOf` collapses to `never` and every `handle()` in
|
|
134
|
+
* a consumer's project fails with `event: never`. The floor gate caught it. The intersection
|
|
135
|
+
* repeats the object type before naming the event, so the useful line is the last one.
|
|
136
|
+
*/
|
|
137
|
+
export type CheckPayloads<C extends Contract> = {
|
|
138
|
+
[K in keyof C]: IsUnknown<Infer<C[K]['payload']>> extends true ? `event '${K & string}' has an unknown payload: pass a type argument or a schema` : C[K];
|
|
139
|
+
};
|
|
140
|
+
export declare function defineContract<const C extends Contract>(contract: C & CheckPayloads<C>): C;
|
|
141
|
+
/**
|
|
142
|
+
* Sugar over the object literal. The literal keeps working, and anything generating a
|
|
143
|
+
* contract programmatically needs it, so these add nothing the literal cannot express.
|
|
144
|
+
*
|
|
145
|
+
* Each takes either a type argument or a Standard Schema, because validation is
|
|
146
|
+
* bring-your-own and must not become second class. `id` is reached by spreading:
|
|
147
|
+
* `{ ...reliable<T>(), id: 0x31e06f7d }`.
|
|
148
|
+
*
|
|
149
|
+
* `rpc` and `streaming` are reliable by construction. An unreliable event has no response
|
|
150
|
+
* path, so the lane is not a parameter and the combination stops being expressible.
|
|
151
|
+
*/
|
|
152
|
+
export declare function reliable<T>(): {
|
|
153
|
+
readonly lane: 'reliable';
|
|
154
|
+
readonly payload: StandardSchemaV1<unknown, T>;
|
|
155
|
+
};
|
|
156
|
+
export declare function reliable<S extends Schema>(schema: S): {
|
|
157
|
+
readonly lane: 'reliable';
|
|
158
|
+
readonly payload: S;
|
|
159
|
+
};
|
|
160
|
+
export declare function unreliable<T>(): {
|
|
161
|
+
readonly lane: 'unreliable';
|
|
162
|
+
readonly payload: StandardSchemaV1<unknown, T>;
|
|
163
|
+
};
|
|
164
|
+
export declare function unreliable<S extends Schema>(schema: S): {
|
|
165
|
+
readonly lane: 'unreliable';
|
|
166
|
+
readonly payload: S;
|
|
167
|
+
};
|
|
168
|
+
export declare function rpc<P, R>(): {
|
|
169
|
+
readonly lane: 'reliable';
|
|
170
|
+
readonly payload: StandardSchemaV1<unknown, P>;
|
|
171
|
+
readonly returns: StandardSchemaV1<unknown, R>;
|
|
172
|
+
};
|
|
173
|
+
export declare function rpc<P extends Schema, R extends Schema>(payload: P, returns: R): {
|
|
174
|
+
readonly lane: 'reliable';
|
|
175
|
+
readonly payload: P;
|
|
176
|
+
readonly returns: R;
|
|
177
|
+
};
|
|
178
|
+
export declare function streaming<P, Y>(): {
|
|
179
|
+
readonly lane: 'reliable';
|
|
180
|
+
readonly payload: StandardSchemaV1<unknown, P>;
|
|
181
|
+
readonly yields: StandardSchemaV1<unknown, Y>;
|
|
182
|
+
};
|
|
183
|
+
export declare function streaming<P extends Schema, Y extends Schema>(payload: P, yields: Y): {
|
|
184
|
+
readonly lane: 'reliable';
|
|
185
|
+
readonly payload: P;
|
|
186
|
+
readonly yields: Y;
|
|
187
|
+
};
|
|
79
188
|
/** A types-only schema, for inference without runtime validation. */
|
|
80
189
|
export declare function type$<T>(): StandardSchemaV1<unknown, T>;
|
|
81
190
|
export interface EventEntry {
|
|
@@ -100,4 +209,5 @@ export interface EventTable {
|
|
|
100
209
|
*/
|
|
101
210
|
export declare function eventIdOf(name: string): Promise<number>;
|
|
102
211
|
export declare function buildEventTable(contract: Contract): Promise<EventTable>;
|
|
212
|
+
export {};
|
|
103
213
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.js
CHANGED
|
@@ -3,6 +3,26 @@ import { EVENT_ID_NOT_APPLICABLE } from './protocol.js';
|
|
|
3
3
|
export function defineContract(contract) {
|
|
4
4
|
return contract;
|
|
5
5
|
}
|
|
6
|
+
export function reliable(schema) {
|
|
7
|
+
return { lane: 'reliable', payload: schema ?? type$() };
|
|
8
|
+
}
|
|
9
|
+
export function unreliable(schema) {
|
|
10
|
+
return { lane: 'unreliable', payload: schema ?? type$() };
|
|
11
|
+
}
|
|
12
|
+
export function rpc(payload, returns) {
|
|
13
|
+
return {
|
|
14
|
+
lane: 'reliable',
|
|
15
|
+
payload: payload ?? type$(),
|
|
16
|
+
returns: returns ?? type$(),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function streaming(payload, yields) {
|
|
20
|
+
return {
|
|
21
|
+
lane: 'reliable',
|
|
22
|
+
payload: payload ?? type$(),
|
|
23
|
+
yields: yields ?? type$(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
6
26
|
/** A types-only schema, for inference without runtime validation. */
|
|
7
27
|
export function type$() {
|
|
8
28
|
return {
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/framer.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* reference transport, 51 writes arrived as 217 reads, and the large write fragmented
|
|
6
6
|
* while the small ones happened to survive - which is the worst case, because naive
|
|
7
7
|
* boundary-trusting code passes in development and fails under load. The length prefix
|
|
8
|
-
* is the only thing that recovers frame boundaries
|
|
8
|
+
* is the only thing that recovers frame boundaries. Users of this library should never
|
|
9
9
|
* ever have to think about it.
|
|
10
10
|
*/
|
|
11
11
|
import { TransportError } from './errors.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
export { type Adapter, type BroadcastOptions, type Frame as AdapterFrame, MemoryAdapter, type MemoryBus, memoryBus, type PeerId, type RemoteEnvelope, } from './adapter.ts';
|
|
2
2
|
export { Client, type ClientOptions, type ClientState, type Status } from './client.ts';
|
|
3
|
-
export { type AnyMap, type CallableOf, type Contract, defineContract, type EventDef, type EventShape, type Infer, type Lane, type MapOf, type Schema, type$, } from './contract.ts';
|
|
3
|
+
export { type AnyMap, type CallableOf, type Contract, defineContract, type EventDef, type EventShape, type Infer, type Lane, type MapOf, type Register, type Registered, reliable, rpc, type Schema, type StreamableOf, streaming, type$, unreliable, } from './contract.ts';
|
|
4
4
|
export { maxDatagramPayload } from './datagram.ts';
|
|
5
5
|
export { TransportError, type TransportErrorCode } from './errors.ts';
|
|
6
6
|
export { encodeFrame, type Frame, FrameDecoder, maxPayloadFor } from './framer.ts';
|
|
7
7
|
export { CloseCode, Codec, DATAGRAM_CONSERVATIVE_PAYLOAD_MAX, DATAGRAM_HEADER_BYTES, EVENT_ID_NOT_APPLICABLE, FrameType, MAX_CALL_PAYLOAD_BYTES, MAX_EMIT_PAYLOAD_BYTES, PROTOCOL_VERSION, ResetCode, STREAM_FRAME_OVERHEAD_BYTES, } from './protocol.ts';
|
|
8
|
-
export { createServer, type RoomTarget, Server, type ServerOptions, type ServerPeer, } from './server.ts';
|
|
9
|
-
export type { SessionStats } from './session.ts';
|
|
8
|
+
export { type ConnectionSource, createServer, type ListenOptions, type RoomTarget, Server, type ServerOptions, type ServerPeer, } from './server.ts';
|
|
9
|
+
export type { SessionStats, StreamResult } from './session.ts';
|
|
10
10
|
/**
|
|
11
11
|
* Hand-maintained and asserted against `package.json` by `index.test.ts`, because
|
|
12
12
|
* `isolatedDeclarations` forbids inferring it from an import and a version that drifts from
|
|
13
|
-
* its manifest
|
|
13
|
+
* its manifest misreports the version in the first place a user looks.
|
|
14
14
|
*
|
|
15
15
|
* `changeset version` moves the manifest, so this moves in the same commit - which the test
|
|
16
16
|
* enforces rather than trusting anyone to remember.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,KAAK,IAAI,YAAY,EAC1B,aAAa,EACb,KAAK,SAAS,EACd,SAAS,EACT,KAAK,MAAM,EAKX,KAAK,cAAc,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EACL,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,KAAK,IAAI,YAAY,EAC1B,aAAa,EACb,KAAK,SAAS,EACd,SAAS,EACT,KAAK,MAAM,EAKX,KAAK,cAAc,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AACvF,OAAO,EACL,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,QAAQ,EACR,GAAG,EACH,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,SAAS,EACT,KAAK,EACL,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAClF,OAAO,EACL,SAAS,EACT,KAAK,EACL,iCAAiC,EACjC,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACT,2BAA2B,GAC5B,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,KAAK,gBAAgB,EACrB,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,MAAM,EACN,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,EAAE,MAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { MemoryAdapter, memoryBus, } from './adapter.js';
|
|
2
2
|
export { Client } from './client.js';
|
|
3
|
-
export { defineContract, type$, } from './contract.js';
|
|
3
|
+
export { defineContract, reliable, rpc, streaming, type$, unreliable, } from './contract.js';
|
|
4
4
|
export { maxDatagramPayload } from './datagram.js';
|
|
5
5
|
export { TransportError } from './errors.js';
|
|
6
6
|
export { encodeFrame, FrameDecoder, maxPayloadFor } from './framer.js';
|
|
@@ -9,10 +9,10 @@ export { createServer, Server, } from './server.js';
|
|
|
9
9
|
/**
|
|
10
10
|
* Hand-maintained and asserted against `package.json` by `index.test.ts`, because
|
|
11
11
|
* `isolatedDeclarations` forbids inferring it from an import and a version that drifts from
|
|
12
|
-
* its manifest
|
|
12
|
+
* its manifest misreports the version in the first place a user looks.
|
|
13
13
|
*
|
|
14
14
|
* `changeset version` moves the manifest, so this moves in the same commit - which the test
|
|
15
15
|
* enforces rather than trusting anyone to remember.
|
|
16
16
|
*/
|
|
17
|
-
export const VERSION = '0.
|
|
17
|
+
export const VERSION = '0.4.0';
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,EAEb,SAAS,GAOV,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,MAAM,EAAqD,MAAM,aAAa,CAAA;AACvF,OAAO,EAIL,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,EAEb,SAAS,GAOV,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,MAAM,EAAqD,MAAM,aAAa,CAAA;AACvF,OAAO,EAIL,cAAc,EAQd,QAAQ,EACR,GAAG,EAGH,SAAS,EACT,KAAK,EACL,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,WAAW,EAAc,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAClF,OAAO,EACL,SAAS,EACT,KAAK,EACL,iCAAiC,EACjC,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,SAAS,EACT,2BAA2B,GAC5B,MAAM,eAAe,CAAA;AACtB,OAAO,EAEL,YAAY,EAGZ,MAAM,GAGP,MAAM,aAAa,CAAA;AAGpB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAW,OAAO,CAAA"}
|
package/dist/origin.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare class OriginAllocator {
|
|
|
3
3
|
/**
|
|
4
4
|
* `counterSpace` exists so the exhaustion branch can be reached in a test. Exhausting the
|
|
5
5
|
* real space means 4,194,304 allocations, which is why §7.3's "MUST refuse new sessions"
|
|
6
|
-
* went unproven
|
|
6
|
+
* went unproven. An unreachable branch in an allocator is the kind of code
|
|
7
7
|
* that is wrong the first time it runs. Production never passes it.
|
|
8
8
|
*/
|
|
9
9
|
constructor(hostOrdinal?: number, quarantineMs?: number, counterSpace?: number);
|
package/dist/origin.js
CHANGED
|
@@ -23,7 +23,7 @@ export class OriginAllocator {
|
|
|
23
23
|
/**
|
|
24
24
|
* `counterSpace` exists so the exhaustion branch can be reached in a test. Exhausting the
|
|
25
25
|
* real space means 4,194,304 allocations, which is why §7.3's "MUST refuse new sessions"
|
|
26
|
-
* went unproven
|
|
26
|
+
* went unproven. An unreachable branch in an allocator is the kind of code
|
|
27
27
|
* that is wrong the first time it runs. Production never passes it.
|
|
28
28
|
*/
|
|
29
29
|
constructor(hostOrdinal = 0, quarantineMs = ORIGIN_QUARANTINE_MS, counterSpace = COUNTER_SPACE) {
|
package/dist/server.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Server surface. Transport-agnostic: it accepts a Connection from the seam. */
|
|
2
2
|
import { type Adapter, type PeerId } from './adapter.ts';
|
|
3
|
-
import { type AnyMap, type CallableOf, type Contract, type StreamableOf } from './contract.ts';
|
|
3
|
+
import { type AnyMap, type CallableOf, type Contract, type Registered, type StreamableOf } from './contract.ts';
|
|
4
4
|
import { type SessionStats } from './session.ts';
|
|
5
5
|
import type { Connection } from './transport/types.ts';
|
|
6
6
|
export interface ServerPeer<M extends AnyMap = AnyMap> {
|
|
@@ -18,6 +18,17 @@ export interface CallContext {
|
|
|
18
18
|
/** Fires when the initiator resets the stream. Immediate, and free on this transport. */
|
|
19
19
|
readonly signal: AbortSignal;
|
|
20
20
|
}
|
|
21
|
+
/** Anything that yields connections: a transport listener, or a test double. */
|
|
22
|
+
export interface ConnectionSource {
|
|
23
|
+
sessions(): AsyncIterable<Connection>;
|
|
24
|
+
}
|
|
25
|
+
export interface ListenOptions {
|
|
26
|
+
/**
|
|
27
|
+
* Called for each accept that rejects. Without it the failure is still counted in
|
|
28
|
+
* `acceptErrors`, so it is never silent, only quiet.
|
|
29
|
+
*/
|
|
30
|
+
readonly onAcceptError?: (error: unknown) => void;
|
|
31
|
+
}
|
|
21
32
|
export interface ServerOptions {
|
|
22
33
|
readonly contract: Contract;
|
|
23
34
|
readonly adapter?: Adapter;
|
|
@@ -29,11 +40,29 @@ export interface RoomTarget<M extends AnyMap = AnyMap> {
|
|
|
29
40
|
emit<K extends keyof M & string>(event: K, payload: M[K]['payload']): Promise<void>;
|
|
30
41
|
except(...peers: PeerId[]): RoomTarget<M>;
|
|
31
42
|
}
|
|
32
|
-
export declare class Server<M extends AnyMap =
|
|
43
|
+
export declare class Server<M extends AnyMap = Registered> {
|
|
33
44
|
#private;
|
|
34
45
|
constructor(opts: ServerOptions);
|
|
35
46
|
/** Builds the event table once. Async because event ids are a SHA-256 of the name. */
|
|
36
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Prepare the server, and optionally take ownership of the accept loop.
|
|
49
|
+
*
|
|
50
|
+
* Without a source this is what it always was, and `accept()` is yours to drive. With
|
|
51
|
+
* one, `listen()` runs `for await (const conn of source.sessions()) accept(conn)` for
|
|
52
|
+
* you. That loop existed in ten places in this repository alone, identical every time
|
|
53
|
+
* and swallowing the rejection every time.
|
|
54
|
+
*
|
|
55
|
+
* A rejected accept is counted rather than discarded. A failed handshake must not take
|
|
56
|
+
* the server down, so it cannot throw; it must not be undiscoverable either, so it
|
|
57
|
+
* cannot vanish. `acceptErrors` is the count, and `onAcceptError` is for an application
|
|
58
|
+
* that wants to do something about it.
|
|
59
|
+
*/
|
|
60
|
+
listen(source?: ConnectionSource, opts?: ListenOptions): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Accepts that failed since `listen()`. Zero on a healthy server, and the only signal
|
|
63
|
+
* that connections are being refused when nobody installed `onAcceptError`.
|
|
64
|
+
*/
|
|
65
|
+
get acceptErrors(): number;
|
|
37
66
|
/** Register a responder for a callable event. */
|
|
38
67
|
handle<K extends CallableOf<M> & string>(event: K, handler: (payload: M[K]['payload'], ctx: CallContext) => Promise<M[K]['returns']>): () => void;
|
|
39
68
|
/**
|
|
@@ -47,5 +76,5 @@ export declare class Server<M extends AnyMap = AnyMap> {
|
|
|
47
76
|
accept(conn: Connection): Promise<ServerPeer<M>>;
|
|
48
77
|
to(room: string): RoomTarget<M>;
|
|
49
78
|
}
|
|
50
|
-
export declare function createServer<M extends AnyMap =
|
|
79
|
+
export declare function createServer<M extends AnyMap = Registered>(opts: ServerOptions): Server<M>;
|
|
51
80
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,UAAU,EACf,KAAK,QAAQ,EAEb,KAAK,YAAY,EAClB,MAAM,eAAe,CAAA;AAItB,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC3B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,GAC1C,MAAM,IAAI,CAAA;IACb,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IAC1E,KAAK,IAAI,YAAY,CAAA;IACrB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CACnC;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACnD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnF,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;CAC1C;AAED,qBAAa,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -10,6 +10,8 @@ export class Server {
|
|
|
10
10
|
#nodeId;
|
|
11
11
|
#origins;
|
|
12
12
|
#peers = new Map();
|
|
13
|
+
#acceptErrors = 0;
|
|
14
|
+
#accepting;
|
|
13
15
|
#onPeer = [];
|
|
14
16
|
#table;
|
|
15
17
|
#hub;
|
|
@@ -23,13 +25,51 @@ export class Server {
|
|
|
23
25
|
this.#origins = new OriginAllocator(opts.hostOrdinal ?? 0);
|
|
24
26
|
}
|
|
25
27
|
/** Builds the event table once. Async because event ids are a SHA-256 of the name. */
|
|
26
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Prepare the server, and optionally take ownership of the accept loop.
|
|
30
|
+
*
|
|
31
|
+
* Without a source this is what it always was, and `accept()` is yours to drive. With
|
|
32
|
+
* one, `listen()` runs `for await (const conn of source.sessions()) accept(conn)` for
|
|
33
|
+
* you. That loop existed in ten places in this repository alone, identical every time
|
|
34
|
+
* and swallowing the rejection every time.
|
|
35
|
+
*
|
|
36
|
+
* A rejected accept is counted rather than discarded. A failed handshake must not take
|
|
37
|
+
* the server down, so it cannot throw; it must not be undiscoverable either, so it
|
|
38
|
+
* cannot vanish. `acceptErrors` is the count, and `onAcceptError` is for an application
|
|
39
|
+
* that wants to do something about it.
|
|
40
|
+
*/
|
|
41
|
+
async listen(source, opts) {
|
|
27
42
|
this.#table = await buildEventTable(this.#opts.contract);
|
|
28
43
|
this.#adapter = this.#opts.adapter ?? new MemoryAdapter(this.#nodeId);
|
|
29
44
|
this.#hub = new Hub(this.#adapter, this.#table);
|
|
30
45
|
// The server broadcasts on the unreliable lane too, so it needs its own origin.
|
|
31
46
|
// Origin 0 is reserved, so it cannot simply be left unset.
|
|
32
47
|
this.#serverOrigin = this.#origins.allocate(Date.now());
|
|
48
|
+
if (source === undefined)
|
|
49
|
+
return;
|
|
50
|
+
this.#accepting = (async () => {
|
|
51
|
+
for await (const conn of source.sessions()) {
|
|
52
|
+
// Per connection, so one refused handshake does not end the loop for everyone
|
|
53
|
+
// else. Awaiting here would serialise accepts behind the slowest handshake.
|
|
54
|
+
void this.accept(conn).catch((e) => {
|
|
55
|
+
this.#acceptErrors++;
|
|
56
|
+
opts?.onAcceptError?.(e);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
})();
|
|
60
|
+
// The loop ends when the source ends, which is a transport concern rather than an
|
|
61
|
+
// error. A source that throws surfaces through `acceptErrors` the same way.
|
|
62
|
+
this.#accepting.catch((e) => {
|
|
63
|
+
this.#acceptErrors++;
|
|
64
|
+
opts?.onAcceptError?.(e);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Accepts that failed since `listen()`. Zero on a healthy server, and the only signal
|
|
69
|
+
* that connections are being refused when nobody installed `onAcceptError`.
|
|
70
|
+
*/
|
|
71
|
+
get acceptErrors() {
|
|
72
|
+
return this.#acceptErrors;
|
|
33
73
|
}
|
|
34
74
|
handle(event, handler) {
|
|
35
75
|
this.#callHandlers.set(event, handler);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAgB,aAAa,EAAe,MAAM,cAAc,CAAA;AACvE,OAAO,EAEL,eAAe,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/session.d.ts
CHANGED
|
@@ -13,16 +13,37 @@ export type CallHandler = (payload: unknown, ctx: {
|
|
|
13
13
|
readonly signal: AbortSignal;
|
|
14
14
|
}) => Promise<unknown>;
|
|
15
15
|
/**
|
|
16
|
-
* A responder for an event declaring `yields`. The generator
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* A responder for an event declaring `yields`. The generator's `next()` is what the credit
|
|
17
|
+
* scheme counts: the consumer asking for another element is what refills the window. The
|
|
18
|
+
* transport does not provide the bound, so this library keeps it (D93).
|
|
19
19
|
*/
|
|
20
20
|
export type StreamHandler = (payload: unknown, ctx: {
|
|
21
21
|
readonly signal: AbortSignal;
|
|
22
22
|
}) => AsyncIterable<unknown>;
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* What `stream()` returns.
|
|
25
|
+
*
|
|
26
|
+
* Four helpers, named and shaped after the TC39 async iterator helpers proposal and
|
|
27
|
+
* implemented **sequentially**. That proposal is Stage 2 and "in the process of being
|
|
28
|
+
* revised"; the revision adds concurrency to `map`, `filter`, `take`, `drop` and `flatMap`
|
|
29
|
+
* so several `next()` calls can be in flight at once. A helper that pulls ahead of its
|
|
30
|
+
* consumer defeats the credit window, which bounds the producer against what the consumer
|
|
31
|
+
* has taken, so these will not adopt that behaviour if it lands. See D99.
|
|
32
|
+
*
|
|
33
|
+
* `cancel()` is not in the proposal. It is ours, for stopping from outside the loop.
|
|
34
|
+
*/
|
|
24
35
|
export interface StreamResult<T> extends AsyncIterable<T> {
|
|
25
|
-
|
|
36
|
+
/** At most `limit` elements, then the source is closed as though the loop had broken. */
|
|
37
|
+
take(limit: number): StreamResult<T>;
|
|
38
|
+
/** Calls `fn` for each element and awaits it before pulling the next. */
|
|
39
|
+
forEach(fn: (value: T) => void | Promise<void>): Promise<void>;
|
|
40
|
+
/** The whole sequence as an array. Rejects on a mid-stream error, discarding the partial. */
|
|
41
|
+
toArray(): Promise<T[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Stop from outside the loop, where `break` cannot reach. Aborts the stream, so a
|
|
44
|
+
* consumer iterating it sees `WT_ABORTED`, exactly as it would from an `AbortSignal`.
|
|
45
|
+
*/
|
|
46
|
+
cancel(): void;
|
|
26
47
|
}
|
|
27
48
|
export interface SessionOptions {
|
|
28
49
|
readonly table: EventTable;
|
|
@@ -31,9 +52,9 @@ export interface SessionOptions {
|
|
|
31
52
|
readonly now?: () => number;
|
|
32
53
|
readonly handshakeDeadlineMs?: number;
|
|
33
54
|
/**
|
|
34
|
-
* How a queued datagram flush is deferred. Defaults to a microtask
|
|
35
|
-
*
|
|
36
|
-
* would
|
|
55
|
+
* How a queued datagram flush is deferred. Defaults to a microtask. A synchronous drain
|
|
56
|
+
* on every push would mean a burst never queues, so neither the bounded ring nor the TTL
|
|
57
|
+
* would ever apply. Tests inject a
|
|
37
58
|
* manual scheduler to exercise both deterministically.
|
|
38
59
|
*/
|
|
39
60
|
readonly scheduleFlush?: (flush: () => void) => void;
|
|
@@ -99,13 +120,12 @@ export declare class Session {
|
|
|
99
120
|
sendDatagramBytes(bytes: Uint8Array): void;
|
|
100
121
|
stats(): SessionStats;
|
|
101
122
|
/**
|
|
102
|
-
* The only
|
|
123
|
+
* The only way out of a session. Every internal path routes through here.
|
|
103
124
|
*
|
|
104
|
-
* Guarding this method alone was not enough
|
|
105
|
-
* directly
|
|
106
|
-
* protocol error on the read loop
|
|
107
|
-
*
|
|
108
|
-
* quiche after the first fix, which is what a partial guard looks like from the outside.
|
|
125
|
+
* Guarding this method alone was not enough. Four call sites reached `#conn.close()`
|
|
126
|
+
* directly: the handshake deadline, the peer-too-slow bound, an emit write failure and a
|
|
127
|
+
* protocol error on the read loop. A soak produced 619,422 `close sent twice` complaints
|
|
128
|
+
* from quiche after that first partial fix.
|
|
109
129
|
*/
|
|
110
130
|
close(code: number, reason: string): void;
|
|
111
131
|
/**
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAe,KAAK,KAAK,EAAgB,MAAM,aAAa,CAAA;AACnE,OAAO,EAAkB,KAAK,UAAU,EAA6B,MAAM,gBAAgB,CAAA;AAc3F,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAA;AACtF,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,KAClC,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,KAClC,aAAa,CAAC,OAAO,CAAC,CAAA;AAE3B
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -54,6 +54,56 @@ function abortToTransportError(cause) {
|
|
|
54
54
|
const timedOut = cause?.name === 'TimeoutError';
|
|
55
55
|
return new TransportError('WT_ABORTED', timedOut ? 'the call timed out before the responder answered' : 'the call was aborted', 'The stream was reset, so the responder was told. Retry if the work is idempotent, or raise the deadline.');
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* The four helpers, over a source generator.
|
|
59
|
+
*
|
|
60
|
+
* `take` closes the source when it reaches its limit, which is what makes it equivalent to
|
|
61
|
+
* `break`. `cancel` is threaded through every wrapper, so a chain still stops the real
|
|
62
|
+
* stream rather than only the outermost link.
|
|
63
|
+
*/
|
|
64
|
+
function streamResult(source, stop) {
|
|
65
|
+
return {
|
|
66
|
+
[Symbol.asyncIterator]: () => source,
|
|
67
|
+
take(limit) {
|
|
68
|
+
async function* taken() {
|
|
69
|
+
if (limit <= 0)
|
|
70
|
+
return;
|
|
71
|
+
let n = 0;
|
|
72
|
+
try {
|
|
73
|
+
for await (const v of source) {
|
|
74
|
+
yield v;
|
|
75
|
+
if (++n >= limit)
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
// `for await` closes the source on `break`, but not when the consumer abandons
|
|
81
|
+
// this wrapper instead. Closing here covers both.
|
|
82
|
+
await source.return(undefined).catch(() => undefined);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return streamResult(taken(), stop);
|
|
86
|
+
},
|
|
87
|
+
async forEach(fn) {
|
|
88
|
+
// Awaited, which is the whole reason a callback is acceptable here: the next element
|
|
89
|
+
// is not pulled until this one is handled, so backpressure still holds.
|
|
90
|
+
for await (const v of source)
|
|
91
|
+
await fn(v);
|
|
92
|
+
},
|
|
93
|
+
async toArray() {
|
|
94
|
+
const out = [];
|
|
95
|
+
for await (const v of source)
|
|
96
|
+
out.push(v);
|
|
97
|
+
return out;
|
|
98
|
+
},
|
|
99
|
+
cancel() {
|
|
100
|
+
// Synchronous, and it does not await the generator. An async generator queues
|
|
101
|
+
// `return()` behind a pending `next()`, and that pending `next()` is the read this
|
|
102
|
+
// abort is unblocking, so awaiting it here deadlocks. Measured: it hung.
|
|
103
|
+
stop();
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
57
107
|
export class Session {
|
|
58
108
|
#conn;
|
|
59
109
|
#table;
|
|
@@ -72,10 +122,9 @@ export class Session {
|
|
|
72
122
|
#callHandlers = new Map();
|
|
73
123
|
/**
|
|
74
124
|
* Every inbound call or stream currently being served. A streaming responder parked for
|
|
75
|
-
* credit
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* had open. Measured: it did.
|
|
125
|
+
* credit waits on a peer that may never return, and the credit scheme cannot distinguish
|
|
126
|
+
* a slow consumer from a departed one. Session liveness does. Without this set, a parked
|
|
127
|
+
* generator outlived its session and held a stream slot open.
|
|
79
128
|
*/
|
|
80
129
|
#inflight = new Set();
|
|
81
130
|
#openCalls = 0;
|
|
@@ -261,7 +310,7 @@ export class Session {
|
|
|
261
310
|
// travelling to the responder to come back as "no handler registered", which is a
|
|
262
311
|
// different fault with a different remedy.
|
|
263
312
|
if (entry.def.yields !== undefined) {
|
|
264
|
-
throw new TransportError('WT_PROTOCOL_ERROR', `'${event}' declares \`yields\`, so its response is a sequence`, 'Use stream(), or stream(...).
|
|
313
|
+
throw new TransportError('WT_PROTOCOL_ERROR', `'${event}' declares \`yields\`, so its response is a sequence`, 'Use stream(), or stream(...).toArray() if you want the whole sequence as one value.');
|
|
265
314
|
}
|
|
266
315
|
if (entry.lane === 'reliable' && entry.def.returns === undefined) {
|
|
267
316
|
throw new TransportError('WT_UNKNOWN_EVENT', `'${event}' declares no \`returns\`, so there is nothing to await`, 'Add `returns` to the event in the contract, or use emit() if it is fire-and-forget.');
|
|
@@ -282,7 +331,7 @@ export class Session {
|
|
|
282
331
|
// library has - and it rejected with a raw DOMException carrying no code and no
|
|
283
332
|
// remedy, which the error helper printed in API.md reports as 'unknown'.
|
|
284
333
|
// Read through a call so narrowing from the pre-check above does not apply: the
|
|
285
|
-
// signal can abort at any point during the call
|
|
334
|
+
// signal can abort at any point during the call.
|
|
286
335
|
const abortedNow = () => opts?.signal?.aborted ?? false;
|
|
287
336
|
throw isAbort(e) || abortedNow() ? abortToTransportError(e) : e;
|
|
288
337
|
}
|
|
@@ -390,20 +439,18 @@ export class Session {
|
|
|
390
439
|
return { ...this.#dgQueue.stats(), staleReceived: this.#gate.staleReceived };
|
|
391
440
|
}
|
|
392
441
|
/**
|
|
393
|
-
* The only
|
|
442
|
+
* The only way out of a session. Every internal path routes through here.
|
|
394
443
|
*
|
|
395
|
-
* Guarding this method alone was not enough
|
|
396
|
-
* directly
|
|
397
|
-
* protocol error on the read loop
|
|
398
|
-
*
|
|
399
|
-
* quiche after the first fix, which is what a partial guard looks like from the outside.
|
|
444
|
+
* Guarding this method alone was not enough. Four call sites reached `#conn.close()`
|
|
445
|
+
* directly: the handshake deadline, the peer-too-slow bound, an emit write failure and a
|
|
446
|
+
* protocol error on the read loop. A soak produced 619,422 `close sent twice` complaints
|
|
447
|
+
* from quiche after that first partial fix.
|
|
400
448
|
*/
|
|
401
449
|
close(code, reason) {
|
|
402
|
-
// Idempotent in both halves. `dispose()` already was
|
|
403
|
-
//
|
|
404
|
-
// down,
|
|
405
|
-
// "WebTransportHttp3 close sent twice" and refuses it
|
|
406
|
-
// complaint we were generating and then ignoring.
|
|
450
|
+
// Idempotent in both halves. `dispose()` already was, `conn.close()` was not. A second
|
|
451
|
+
// close happens routinely when a client disconnects while the server is tearing the
|
|
452
|
+
// same session down, and it reached the transport twice. quiche logs
|
|
453
|
+
// "WebTransportHttp3 close sent twice" and refuses it.
|
|
407
454
|
if (this.#disposed)
|
|
408
455
|
return;
|
|
409
456
|
this.dispose();
|
|
@@ -496,15 +543,22 @@ export class Session {
|
|
|
496
543
|
/**
|
|
497
544
|
* An async generator is the implementation as well as the API, because `return()` is
|
|
498
545
|
* what makes `break` mean "reset the stream". The consumer leaving the loop runs the
|
|
499
|
-
* `finally` below
|
|
500
|
-
*
|
|
501
|
-
*
|
|
546
|
+
* `finally` below. That resets the stream. The responder sees STOP_SENDING, its
|
|
547
|
+
* `ctx.signal` fires, and its own generator's `finally` runs. The protocol carries no
|
|
548
|
+
* cancellation message.
|
|
502
549
|
*
|
|
503
|
-
*
|
|
504
|
-
* when the consumer asks for the next element,
|
|
505
|
-
*
|
|
550
|
+
* The consumer holds the producer back by granting credit, not by declining to read.
|
|
551
|
+
* `reader.read()` is only reached when the consumer asks for the next element, and the
|
|
552
|
+
* credit sent from here (§6.6) is what lets the responder write another frame. Receive
|
|
553
|
+
* buffering alone would not bound anything on the reference binding.
|
|
506
554
|
*/
|
|
507
555
|
#doStream(eventId, body, signal) {
|
|
556
|
+
/**
|
|
557
|
+
* What `cancel()` aborts. It is watched by the same listener as the caller's signal, so
|
|
558
|
+
* cancelling from outside the loop takes the path an `AbortSignal` already takes:
|
|
559
|
+
* reset the stream, which the responder sees as STOP_SENDING.
|
|
560
|
+
*/
|
|
561
|
+
const cancelled = new AbortController();
|
|
508
562
|
const open = () => this.#conn.openBidi();
|
|
509
563
|
const released = () => {
|
|
510
564
|
this.#openCalls--;
|
|
@@ -522,6 +576,7 @@ export class Session {
|
|
|
522
576
|
};
|
|
523
577
|
const onAbort = () => reset();
|
|
524
578
|
signal?.addEventListener('abort', onAbort, { once: true });
|
|
579
|
+
cancelled.signal.addEventListener('abort', onAbort, { once: true });
|
|
525
580
|
try {
|
|
526
581
|
await writer.write(encodeFrame({
|
|
527
582
|
type: FrameType.CALL_REQUEST,
|
|
@@ -560,23 +615,27 @@ export class Session {
|
|
|
560
615
|
if (f.type !== FrameType.CALL_RESPONSE)
|
|
561
616
|
continue;
|
|
562
617
|
yield decodePayload(f.payload);
|
|
563
|
-
// Reached only when the consumer asks for the next element,
|
|
564
|
-
//
|
|
618
|
+
// Reached only when the consumer asks for the next element, so this
|
|
619
|
+
// acknowledges consumption rather than arrival.
|
|
565
620
|
taken++;
|
|
566
621
|
await payCredit();
|
|
567
622
|
}
|
|
568
623
|
}
|
|
569
624
|
signal?.throwIfAborted();
|
|
625
|
+
cancelled.signal.throwIfAborted();
|
|
570
626
|
ended = true;
|
|
571
627
|
await writer.close();
|
|
572
628
|
}
|
|
573
629
|
catch (e) {
|
|
574
630
|
// Same conversion `call()` makes. Aborting is the most-documented failure this
|
|
575
631
|
// library has and it must not arrive as a DOMException with no code and no remedy.
|
|
576
|
-
throw isAbort(e) || signal?.aborted === true
|
|
632
|
+
throw isAbort(e) || signal?.aborted === true || cancelled.signal.aborted
|
|
633
|
+
? abortToTransportError(e)
|
|
634
|
+
: e;
|
|
577
635
|
}
|
|
578
636
|
finally {
|
|
579
637
|
signal?.removeEventListener('abort', onAbort);
|
|
638
|
+
cancelled.signal.removeEventListener('abort', onAbort);
|
|
580
639
|
// Not ended means the consumer broke, threw, or was aborted. Either way the
|
|
581
640
|
// responder is still producing and has to be told.
|
|
582
641
|
if (!ended)
|
|
@@ -584,16 +643,9 @@ export class Session {
|
|
|
584
643
|
released();
|
|
585
644
|
}
|
|
586
645
|
}
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
async collect() {
|
|
591
|
-
const out = [];
|
|
592
|
-
for await (const v of gen)
|
|
593
|
-
out.push(v);
|
|
594
|
-
return out;
|
|
595
|
-
},
|
|
596
|
-
};
|
|
646
|
+
return streamResult(run(), () => {
|
|
647
|
+
cancelled.abort();
|
|
648
|
+
});
|
|
597
649
|
}
|
|
598
650
|
async #serveCall(stream, controller) {
|
|
599
651
|
const reader = stream.readable.getReader();
|
|
@@ -692,9 +744,9 @@ export class Session {
|
|
|
692
744
|
* who wants fewer, larger frames batches inside their own generator and pays the 12-byte
|
|
693
745
|
* frame overhead once per batch instead of once per element.
|
|
694
746
|
*
|
|
695
|
-
*
|
|
696
|
-
* unconditionally the
|
|
697
|
-
*
|
|
747
|
+
* The bound is the credit window, not `writer.ready`. That writer resolves
|
|
748
|
+
* unconditionally on the reference binding, so awaiting it holds nothing back. It is
|
|
749
|
+
* still awaited, for a transport that honours it. See D93 for the measurement.
|
|
698
750
|
*/
|
|
699
751
|
async #serveStream(handler, payload, name, writer, controller, inbound) {
|
|
700
752
|
const produced = handler(payload, { signal: controller.signal });
|
|
@@ -758,6 +810,12 @@ export class Session {
|
|
|
758
810
|
const it = produced[Symbol.asyncIterator]();
|
|
759
811
|
try {
|
|
760
812
|
for (;;) {
|
|
813
|
+
// Before the pull, not after. Asking a generator for a value that will be
|
|
814
|
+
// discarded costs whatever the handler does to produce it, and a handler should
|
|
815
|
+
// not need `ctx.signal.throwIfAborted()` in its loop to avoid that. It remains the
|
|
816
|
+
// escape hatch for long work *between* yields, where nothing else can interrupt.
|
|
817
|
+
if (controller.signal.aborted)
|
|
818
|
+
break;
|
|
761
819
|
const next = await it.next();
|
|
762
820
|
if (next.done === true)
|
|
763
821
|
break;
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAc,YAAY,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,cAAc,EAAmB,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC3F,OAAO,EACL,sBAAsB,EACtB,SAAS,EACT,KAAK,EACL,uBAAuB,EACvB,SAAS,EACT,qBAAqB,EACrB,2BAA2B,EAC3B,SAAS,EACT,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAA;AAgExF;;;;;GAKG;AACH,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,IAAI,KAAK,8BAA8B;YAAE,OAAO,SAAS,CAAC,4BAA4B,CAAA;QAC5F,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAsB;YAAE,OAAO,SAAS,CAAC,oBAAoB,CAAA;IAC9E,CAAC;IACD,OAAO,SAAS,CAAC,iBAAiB,CAAA;AACpC,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,CAAU;IAC7B,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;IACjC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,sBAAsB;QAAE,OAAO,OAAO,CAAA;IAChF,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAA;QAC1C,IAAI,KAAK,GAAG,IAAI,GAAG,sBAAsB;YAAE,MAAK;QAChD,GAAG,IAAI,EAAE,CAAA;QACT,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,CAAU;IACzB,MAAM,IAAI,GAAI,CAAmD,EAAE,IAAI,CAAA;IACvE,OAAO,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,cAAc,CAAA;AACzD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,QAAQ,GACX,KAAuD,EAAE,IAAI,KAAK,cAAc,CAAA;IACnF,OAAO,IAAI,cAAc,CACvB,YAAY,EACZ,QAAQ,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,sBAAsB,EACtF,0GAA0G,CAC3G,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAI,MAAyB,EAAE,IAAgB;IAClE,OAAO;QACL,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM;QAEpC,IAAI,CAAC,KAAa;YAChB,KAAK,SAAS,CAAC,CAAC,KAAK;gBACnB,IAAI,KAAK,IAAI,CAAC;oBAAE,OAAM;gBACtB,IAAI,CAAC,GAAG,CAAC,CAAA;gBACT,IAAI,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;wBAC7B,MAAM,CAAC,CAAA;wBACP,IAAI,EAAE,CAAC,IAAI,KAAK;4BAAE,MAAK;oBACzB,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,+EAA+E;oBAC/E,kDAAkD;oBAClD,MAAM,MAAM,CAAC,MAAM,CAAC,SAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;gBAChE,CAAC;YACH,CAAC;YACD,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,EAAsC;YAClD,qFAAqF;YACrF,wEAAwE;YACxE,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC;QAED,KAAK,CAAC,OAAO;YACX,MAAM,GAAG,GAAQ,EAAE,CAAA;YACnB,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACzC,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,MAAM;YACJ,8EAA8E;YAC9E,mFAAmF;YACnF,yEAAyE;YACzE,IAAI,EAAE,CAAA;QACR,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,OAAO,OAAO;IACT,KAAK,CAAY;IACjB,MAAM,CAAY;IAClB,OAAO,CAAQ;IACf,gBAAgB,CAAS;IACzB,IAAI,CAAc;IAClB,WAAW,CAAQ;IACnB,SAAS,CAA6B;IAC/C,eAAe,GAAG,KAAK,CAAA;IAEd,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAA;IAChD,KAAK,GAAG,IAAI,YAAY,EAAE,CAAA;IAC1B,QAAQ,GAAG,IAAI,aAAa,EAAc,CAAA;IAC1C,UAAU,GAAG,IAAI,SAAS,EAAc,CAAA;IACxC,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IACtC,gBAAgB,GAAG,IAAI,GAAG,EAAyC,CAAA;IACnE,aAAa,GAAG,IAAI,GAAG,EAAuC,CAAA;IACvE;;;;;OAKG;IACM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAA;IAC/C,UAAU,GAAG,CAAC,CAAA;IACd,aAAa,GAAG,CAAC,CAAA;IAEjB,OAAO,CAAqD;IAC5D,QAAQ,GAAG,KAAK,CAAA;IAChB,cAAc,GAAG,KAAK,CAAA;IACtB,WAAW,CAAwB;IACnC,iBAAiB,CAA0B;IAC3C,gBAAgB,CAAuB;IACvC,WAAW,CAA4C;IACvD,SAAS,GAAG,KAAK,CAAA;IAEjB,iEAAiE;IACxD,KAAK,CAAqB;IAEnC,YAAY,IAAgB,EAAE,IAAoB;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAA;QACpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,IAAI,qBAAqB,CAAA;QACpE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAa,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAA;YAC5B,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAA;QAC7B,CAAC,CAAC,CAAA;QACF,uFAAuF;QACvF,qFAAqF;QACrF,uFAAuF;QACvF,sFAAsF;QACtF,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,gFAAgF;QAChF,4DAA4D;QAC5D,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;QACvD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;QAEzD;;;;;;;;WAQG;QACH,IAAI,UAAiC,CAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAChD,UAAU,GAAG,MAAM,CAAA;QACrB,CAAC,CAAC,CAAA;QACF,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA,CAAC,sDAAsD;QAE3F,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,GAAG,IAAI,cAAc,CAC1B,sBAAsB,EACtB,uBAAuB,IAAI,CAAC,WAAW,IAAI,EAC3C,+JAA+J,CAChK,CAAA;YACD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAA;YAChE,UAAU,CAAC,CAAC,CAAC,CAAA;QACf,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAEpB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QAErB,oFAAoF;QACpF,4DAA4D;QAC5D,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,MAAM,CAAC,KAAK,CACV,WAAW,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,SAAS;gBACzB,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpD,CAAC,CACH;YACD,QAAQ;SACT,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAA;YAC1B,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,2BAA2B,CAAC,CAAA;YAC5D,CAAC,EAAE,2BAA2B,CAAC,CAG9B;YAAC,IAAI,CAAC,WAAiD,CAAC,KAAK,EAAE,EAAE,CAAA;YAClE,OAAO,CAAC,CAAA;QACV,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED;6FACyF;IACzF,SAAS,CAAC,EAAyC;QACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAClC,CAAC,CAAA;IACH,CAAC;IAED,EAAE,CAAC,KAAa,EAAE,OAAqB;QACrC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;YACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAChC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAChB,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACrB,CAAC,CAAA;IACH,CAAC;IAED,4FAA4F;IAC5F,IAAI,CAAC,KAAa,EAAE,OAAgB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,cAAc,CACtB,kBAAkB,EAClB,IAAI,KAAK,0BAA0B,EACnC,gDAAgD,CACjD,CAAA;QACH,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACjE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;YAClC,MAAM,EAAE,GAAG,cAAc,CACvB,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAC1E,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAC7B,CAAA;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YACnC,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;IACJ,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,KAAa,EAAE,OAAoC;QACxD,iFAAiF;QACjF,oFAAoF;QACpF,qFAAqF;QACrF,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvD,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,IAAI,KAAK,6DAA6D,EACtE,oFAAoF,CACrF,CAAA;QACH,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACtC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC,CAAA;IACH,CAAC;IAED,+EAA+E;IAC/E,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,oFAAoF;IACpF,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,CACR,KAAa,EACb,OAAgB,EAChB,IAAwC;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,cAAc,CACtB,kBAAkB,EAClB,IAAI,KAAK,0BAA0B,EACnC,gDAAgD,CACjD,CAAA;QACH,CAAC;QACD,yEAAyE;QACzE,qFAAqF;QACrF,kFAAkF;QAClF,6EAA6E;QAC7E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,8DAA8D,EAC9D,oFAAoF,CACrF,CAAA;QACH,CAAC;QACD,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI;YAAE,MAAM,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnF,mFAAmF;QACnF,oFAAoF;QACpF,kFAAkF;QAClF,kFAAkF;QAClF,2CAA2C;QAC3C,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,IAAI,KAAK,sDAAsD,EAC/D,qFAAqF,CACtF,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjE,MAAM,IAAI,cAAc,CACtB,kBAAkB,EAClB,IAAI,KAAK,yDAAyD,EAClE,qFAAqF,CACtF,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,IAAI,KAAK,4CAA4C,EACrD,kHAAkH,CACnH,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,2BAA2B,EAAE,CAAC;YACnD,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,GAAG,IAAI,CAAC,UAAU,gDAAgD,EAClE,4BAA4B,2BAA2B,qCAAqC,CAC7F,CAAA;QACH,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qFAAqF;YACrF,gFAAgF;YAChF,gFAAgF;YAChF,yEAAyE;YACzE,gFAAgF;YAChF,iDAAiD;YACjD,MAAM,UAAU,GAAG,GAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,CAAA;YAChE,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CACJ,KAAa,EACb,OAAgB,EAChB,IAAwC;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,cAAc,CACtB,kBAAkB,EAClB,IAAI,KAAK,0BAA0B,EACnC,gDAAgD,CACjD,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,8DAA8D,EAC9D,oFAAoF,CACrF,CAAA;QACH,CAAC;QACD,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI;YAAE,MAAM,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnF,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,cAAc,CACtB,kBAAkB,EAClB,IAAI,KAAK,2EAA2E,EACpF,2DAA2D,CAC5D,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,2BAA2B,EAAE,CAAC;YACnD,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,GAAG,IAAI,CAAC,UAAU,gDAAgD,EAClE,4BAA4B,2BAA2B,qCAAqC,CAC7F,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CAAC,MAAkB;QAC5B,IAAI,IAAI,CAAC,aAAa,IAAI,2BAA2B,EAAE,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,QAAQ,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAA;YAClE,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC1D,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC3D,OAAM;QACR,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,uFAAuF;QACvF,uFAAuF;QACvF,wCAAwC;QACxC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC9B,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACjC,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,wFAAwF;IACxF,SAAS,CAAC,KAAY;QACpB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,KAAiB;QAChC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;gBACjD,OAAM;YACR,CAAC;YACD,MAAM,CAAC,CAAA;QACT,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,iBAAiB,CAAC,KAAiB;QACjC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IAED,KAAK;QACH,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAA;IAC9E,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAY,EAAE,MAAc;QAChC,uFAAuF;QACvF,oFAAoF;QACpF,qEAAqE;QACrE,uDAAuD;QACvD,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QACzC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,sFAAsF;QACtF,uFAAuF;QACvF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,iFAAiF;QACjF,oEAAoE;QACpE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACnE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC5B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1B,CAAC;IAED,2EAA2E;IAE3E,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,IAAgB,EAAE,MAAoB;QACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAE1C,oFAAoF;QACpF,+EAA+E;QAC/E,6BAA6B;QAC7B,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YACnF,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACtF,CAAC,CAAA;QACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1D,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAChB,WAAW,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,YAAY;gBAC5B,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO;gBACP,OAAO,EAAE,IAAI;aACd,CAAC,CACH,CAAA;YACD,mEAAmE;YACnE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YAEpB,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAA;YAClC,MAAM,SAAS,GAAY,EAAE,CAAA;YAC7B,SAAS,CAAC;gBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC3C,IAAI,IAAI;oBAAE,MAAK;gBACf,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAQ;gBACjC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxD,CAAC;YAED,MAAM,EAAE,cAAc,EAAE,CAAA;YAExB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,CAAA;YACpE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAwC,CAAA;gBACjF,MAAM,IAAI,cAAc,CACtB,CAAC,KAAK,CAAC,IAAI,IAAI,kBAAkB,CAA2B,EAC5D,KAAK,CAAC,OAAO,IAAI,iCAAiC,EAClD,sDAAsD,CACvD,CAAA;YACH,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,CAAC,CAAA;YACvE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,0DAA0D,EAC1D,qEAAqE,CACtE,CAAA;YACH,CAAC;YACD,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,OAAe,EAAE,IAAgB,EAAE,MAAoB;QAC/D;;;;WAIG;QACH,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAA;QACvC,MAAM,IAAI,GAAG,GAAwB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC7D,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC,CAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAA;QAEjB,KAAK,SAAS,CAAC,CAAC,GAAG;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;YAC1C,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,MAAM,KAAK,GAAG,GAAS,EAAE;gBACvB,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,SAAS,CAAC,UAAU,EAAE,CAAC,CAAA;gBACnD,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;gBAC3C,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YAC9C,CAAC,CAAA;YACD,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,KAAK,EAAE,CAAA;YACnC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAC1D,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAEnE,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAChB,WAAW,CAAC;oBACV,IAAI,EAAE,SAAS,CAAC,YAAY;oBAC5B,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,OAAO;oBACP,OAAO,EAAE,IAAI;iBACd,CAAC,CACH,CAAA;gBACD,mFAAmF;gBACnF,4DAA4D;gBAE5D,IAAI,KAAK,GAAG,CAAC,CAAA;gBACb,IAAI,YAAY,GAAG,CAAC,CAAA;gBACpB,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;oBAC1C,MAAM,IAAI,GAAG,KAAK,GAAG,YAAY,CAAA;oBACjC,IAAI,IAAI,GAAG,oBAAoB;wBAAE,OAAM;oBACvC,YAAY,GAAG,KAAK,CAAA;oBACpB,MAAM,MAAM,CAAC,KAAK,CAChB,WAAW,CAAC;wBACV,IAAI,EAAE,SAAS,CAAC,WAAW;wBAC3B,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,OAAO,EAAE,uBAAuB;wBAChC,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;qBACzC,CAAC,CACH,CAAA;gBACH,CAAC,CAAA;gBAED,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAA;gBAClC,SAAS,CAAC;oBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;oBAC3C,IAAI,IAAI;wBAAE,MAAK;oBACf,IAAI,KAAK,KAAK,SAAS;wBAAE,SAAQ;oBACjC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;4BACpC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAwC,CAAA;4BACzE,MAAM,IAAI,cAAc,CACtB,CAAC,CAAC,CAAC,IAAI,IAAI,kBAAkB,CAA2B,EACxD,CAAC,CAAC,OAAO,IAAI,iCAAiC,EAC9C,gFAAgF,CACjF,CAAA;wBACH,CAAC;wBACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa;4BAAE,SAAQ;wBAChD,MAAM,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;wBAC9B,oEAAoE;wBACpE,gDAAgD;wBAChD,KAAK,EAAE,CAAA;wBACP,MAAM,SAAS,EAAE,CAAA;oBACnB,CAAC;gBACH,CAAC;gBACD,MAAM,EAAE,cAAc,EAAE,CAAA;gBACxB,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;gBACjC,KAAK,GAAG,IAAI,CAAA;gBACZ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACtB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,+EAA+E;gBAC/E,mFAAmF;gBACnF,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO;oBACtE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC,CAAA;YACP,CAAC;oBAAS,CAAC;gBACT,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBAC7C,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACtD,4EAA4E;gBAC5E,mDAAmD;gBACnD,IAAI,CAAC,KAAK;oBAAE,KAAK,EAAE,CAAA;gBACnB,QAAQ,EAAE,CAAA;YACZ,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE;YAC9B,SAAS,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAkB,EAAE,UAA2B;QAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;QAC1C,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAA;QAClC,IAAI,OAA0B,CAAA;QAE9B,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,IAAI,CAAC;YACH,SAAS,CAAC;gBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC3C,IAAI,IAAI;oBAAE,MAAK,CAAC,qDAAqD;gBACrE,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAQ;gBACjC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,IAAI,OAAO,KAAK,SAAS;wBAAE,OAAO,GAAG,CAAC,CAAA;gBAC3E,+EAA+E;gBAC/E,mEAAmE;gBACnE,IACE,OAAO,KAAK,SAAS;oBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,EAC3D,CAAC;oBACD,SAAS,GAAG,IAAI,CAAA;oBAChB,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,OAAM;QACR,CAAC;QAED,iFAAiF;QACjF,gFAAgF;QAChF,sFAAsF;QACtF,yEAAyE;QACzE,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;QAElD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC;YACrE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,+BAA+B,CAAC,CAAA;YAClF,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,sEAAsE;YACtE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,yBAAyB,EAAE,iCAAiC,CAAC,CAAA;YAC1F,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,SAAS,CAClB,MAAM,EACN,kBAAkB,EAClB,YAAY,OAAO,CAAC,OAAO,yBAAyB,CACrD,CAAA;YACD,OAAM;QACR,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,yEAAyE;YACzE,6EAA6E;YAC7E,qFAAqF;YACrF,2CAA2C;YAC3C,MAAM,IAAI,CAAC,SAAS,CAClB,MAAM,EACN,mBAAmB,EACnB,UAAU,KAAK,CAAC,IAAI,iDAAiD,CACtE,CAAA;YACD,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,SAAS,CAClB,MAAM,EACN,kBAAkB,EAClB,8BAA8B,KAAK,CAAC,IAAI,GAAG,CAC5C,CAAA;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC1C,IAAI,IAAI,CAAC,gBAAgB;gBAAE,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAE3E,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,YAAY,CACrB,OAAwB,EACxB,KAAK,EACL,KAAK,CAAC,IAAI,EACV,MAAM,EACN,UAAU,EACV;oBACE,QAAQ,EAAE,KAAK,IAAI,EAAE;wBACnB,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;wBAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,KAAoB,CAAA;oBACrD,CAAC;oBACD,OAAO;oBACP,SAAS;iBACV,CACF,CAAA;gBACD,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAO,OAAuB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;YACnF,MAAM,MAAM,CAAC,KAAK,CAChB,WAAW,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,aAAa;gBAC7B,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;aAC/B,CAAC,CACH,CAAA;YACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,YAAY,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAA;YACtE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAChF,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,YAAY,CAChB,OAAsB,EACtB,OAAgB,EAChB,IAAY,EACZ,MAA+C,EAC/C,UAA2B,EAC3B,OAMC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,IACE,QAAQ,KAAK,IAAI;YACjB,OAAO,QAAQ,KAAK,QAAQ;YAC5B,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,EACnC,CAAC;YACD,MAAM,IAAI,CAAC,SAAS,CAClB,MAAM,EACN,kBAAkB,EAClB,oBAAoB,IAAI,4DAA4D,CACrF,CAAA;YACD,OAAM;QACR,CAAC;QAED,qFAAqF;QACrF,uFAAuF;QACvF,wFAAwF;QACxF,wBAAwB;QACxB,IAAI,MAAM,GAAG,qBAAqB,CAAA;QAClC,IAAI,IAA8B,CAAA;QAClC,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,IAAI,EAAE,EAAE,CAAA;YACR,IAAI,GAAG,SAAS,CAAA;QAClB,CAAC,CAAA;QACD,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAElE;;;;;;;;;WASG;QACH,IAAI,WAAqC,CAAA;QACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YAC5C,WAAW,GAAG,GAAS,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YAC9E,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;QACF,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACnC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,SAAS,CAAC;wBACR,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;wBACtC,IAAI,KAAK,KAAK,SAAS;4BAAE,MAAK;wBAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW;gCAAE,SAAQ;4BAC9C,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAwB,CAAA;4BACzD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACjD,MAAM,IAAI,CAAC,CAAC,MAAM,CAAA;gCAClB,KAAK,EAAE,CAAA;4BACT,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6EAA6E;gBAC/E,CAAC;gBACD,UAAU,CAAC,KAAK,EAAE,CAAA;YACpB,CAAC,CAAC,EAAE,CAAA;QACN,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;QAC3C,IAAI,CAAC;YACH,SAAS,CAAC;gBACR,0EAA0E;gBAC1E,gFAAgF;gBAChF,mFAAmF;gBACnF,iFAAiF;gBACjF,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAK;gBACpC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;gBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;oBAAE,MAAK;gBAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAK;gBACpC,mFAAmF;gBACnF,mFAAmF;gBACnF,iFAAiF;gBACjF,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;oBACvB,UAAU,CAAC,KAAK,EAAE,CAAA;oBAClB,MAAK;gBACP,CAAC;gBACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjD,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE;wBAC9B,IAAI,GAAG,GAAG,CAAA;oBACZ,CAAC,CAAC,CAAA;gBACJ,CAAC;gBACD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAK;gBACpC,MAAM,EAAE,CAAA;gBACR,MAAM,MAAM,CAAC,KAAK,CAAA;gBAClB,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,MAAM,CAAC,KAAK,CACV,WAAW,CAAC;wBACV,IAAI,EAAE,SAAS,CAAC,aAAa;wBAC7B,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,OAAO,EAAE,uBAAuB;wBAChC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;qBACnC,CAAC,CACH;oBACD,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,+EAA+E;YAC/E,kDAAkD;YAClD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,CAAC,YAAY,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAA;gBACtE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAChF,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACrD,IAAI,WAAW,KAAK,SAAS;gBAAE,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC1F,mFAAmF;YACnF,qEAAqE;YACrE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,MAA+C,EAC/C,IAAY,EACZ,OAAe;QAEf,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAChB,WAAW,CAAC;gBACV,IAAI,EAAE,SAAS,CAAC,UAAU;gBAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;aAClE,CAAC,CACH,CAAA;YACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC;IAED,+EAA+E;IAE/E;;;;OAIG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,eAAe;YAAE,OAAM;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;YAC5B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAM;QACjD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,SAAS;YAAE,OAAM;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QACnC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAM;QAE9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CACrB,GAAG,EAAE;YACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;YACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC,EACD,CAAC,CAAU,EAAE,EAAE;YACb,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,mFAAmF;YACnF,qFAAqF;YACrF,8BAA8B;YAC9B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QACzD,CAAC,CACF,CAAA;IACH,CAAC;IAED,4EAA4E;IAC5E;;;;;;;;OAQG;IACH,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;IAClD,CAAC;IAED,0FAA0F;IAC1F,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAA;IACnF,CAAC;IAED,yEAAyE;IACzE,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAA;IACnC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAoC;QACxD,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAA;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAA;QACnC,IAAI,CAAC;YACH,SAAS,CAAC;gBACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC3C,IAAI,IAAI;oBAAE,MAAK;gBACf,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAQ;gBACjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,oFAAoF;YACpF,qFAAqF;YACrF,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAY;QACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;YACzD,MAAM,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;YACtD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;YACzB,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,cAAc,CACtB,yBAAyB,EACzB,KAAK,KAAK,CAAC,IAAI,qCAAqC,EACpD,8EAA8E,CAC/E,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAC/D,OAAM;QACR,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACzC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB;gBAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAiB;QAC3B,sFAAsF;QACtF,sFAAsF;QACtF,sFAAsF;QACtF,mFAAmF;QACnF,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,OAAM;QAC1C,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;gBAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAE,OAAM;gBAC/E,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,iFAAiF;gBACjF,kEAAkE;YACpE,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,OAAmB,EAAE,IAAY;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM,CAAC,kDAAkD;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAM;QACzD,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,IAAI,CAAC,gBAAgB;YAAE,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC3E,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;CACF"}
|