effect-jetstream 1.0.3 → 1.0.4
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 +3 -0
- package/dist/Jetstream.d.ts +1 -0
- package/dist/Jetstream.d.ts.map +1 -1
- package/dist/Jetstream.js.map +1 -1
- package/dist/internal/jetstream.d.ts +1 -0
- package/dist/internal/jetstream.d.ts.map +1 -1
- package/dist/internal/jetstream.js +34 -21
- package/dist/internal/jetstream.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -141,6 +141,9 @@ interface Jetstream {
|
|
|
141
141
|
|
|
142
142
|
// Update subscription options
|
|
143
143
|
readonly updateOptions: (options: OptionsUpdate) => Effect<void, JetstreamError>
|
|
144
|
+
|
|
145
|
+
// Gracefully close the connection and end the stream
|
|
146
|
+
readonly shutdown: Effect<void>
|
|
144
147
|
}
|
|
145
148
|
```
|
|
146
149
|
|
package/dist/Jetstream.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export interface Jetstream {
|
|
|
28
28
|
readonly stream: Stream.Stream<JetstreamMessage, JetstreamError>;
|
|
29
29
|
readonly send: (message: SubscriberSourcedMessage) => Effect.Effect<void, JetstreamError>;
|
|
30
30
|
readonly updateOptions: (options: OptionsUpdate) => Effect.Effect<void, JetstreamError>;
|
|
31
|
+
readonly shutdown: Effect.Effect<void>;
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
34
|
* @since 1.0.0
|
package/dist/Jetstream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Jetstream.d.ts","sourceRoot":"","sources":["../src/Jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AAEnD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAwB,CAAA;AAE7D;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACzF,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Jetstream.d.ts","sourceRoot":"","sources":["../src/Jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AAEnD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,QAAQ,CAAC,MAAwB,CAAA;AAE7D;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACzF,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,QAAQ,CAAC,GAAkB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,MAAM,EAAE,eAAe,KACpB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,oBAAoB,CAAkB,CAAA;AAEzF;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,CACjB,MAAM,EAAE,eAAe,KACpB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAiB,CAAA"}
|
package/dist/Jetstream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Jetstream.js","sourceRoot":"","sources":["../src/Jetstream.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA2B,QAAQ,CAAC,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"Jetstream.js","sourceRoot":"","sources":["../src/Jetstream.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAA2B,QAAQ,CAAC,MAAM,CAAA;AAoB7D;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAwB,QAAQ,CAAC,GAAG,CAAA;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAEyD,QAAQ,CAAC,KAAK,CAAA;AAEzF;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAE6B,QAAQ,CAAC,IAAI,CAAA"}
|
|
@@ -28,6 +28,7 @@ export interface Jetstream {
|
|
|
28
28
|
readonly stream: Stream.Stream<JetstreamMessage, JetstreamError>;
|
|
29
29
|
readonly send: (message: SubscriberSourcedMessage) => Effect.Effect<void, JetstreamError>;
|
|
30
30
|
readonly updateOptions: (options: OptionsUpdate) => Effect.Effect<void, JetstreamError>;
|
|
31
|
+
readonly shutdown: Effect.Effect<void>;
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
34
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jetstream.d.ts","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"jetstream.d.ts","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AAEjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAOrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,eAAe,EAAoB,aAAa,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACvH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAI9D;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAAiD,CAAA;AAE7E;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACzF,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,GAAG,mCAA8D,CAAA;AA6B9E;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,eAAe,KACtB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,oBAAoB,CAmJlE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,QAAQ,eAAe,KACtB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAGrC,CAAA"}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import * as Socket from "@effect/platform/Socket";
|
|
5
|
+
import * as Cause from "effect/Cause";
|
|
5
6
|
import * as Context from "effect/Context";
|
|
6
7
|
import * as Deferred from "effect/Deferred";
|
|
7
8
|
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as Fiber from "effect/Fiber";
|
|
8
10
|
import * as Layer from "effect/Layer";
|
|
9
11
|
import * as Mailbox from "effect/Mailbox";
|
|
10
12
|
import * as Option from "effect/Option";
|
|
@@ -50,27 +52,11 @@ export const layer = (config) => Layer.scoped(tag, Effect.gen(function* () {
|
|
|
50
52
|
const mailbox = yield* Mailbox.make();
|
|
51
53
|
const outbound = yield* Queue.bounded(outboundBufferSize);
|
|
52
54
|
const pending = yield* Ref.make(Option.none());
|
|
55
|
+
const shutdownSignal = yield* Deferred.make();
|
|
53
56
|
const decoder = resolveDecoder(config);
|
|
54
57
|
if (config.compress && config.decoder === undefined) {
|
|
55
58
|
yield* Effect.logWarning("Jetstream compression enabled without a custom decoder; using Bun.zstdDecompress without a dictionary.");
|
|
56
59
|
}
|
|
57
|
-
const shutdown = Effect.gen(function* () {
|
|
58
|
-
const closed = new ConnectionError({
|
|
59
|
-
reason: "Closed",
|
|
60
|
-
cause: "Jetstream shutdown"
|
|
61
|
-
});
|
|
62
|
-
const pendingValue = yield* Ref.get(pending);
|
|
63
|
-
if (Option.isSome(pendingValue)) {
|
|
64
|
-
yield* Deferred.fail(pendingValue.value.done, closed);
|
|
65
|
-
}
|
|
66
|
-
const remaining = yield* Queue.takeAll(outbound);
|
|
67
|
-
for (const item of remaining) {
|
|
68
|
-
yield* Deferred.fail(item.done, closed);
|
|
69
|
-
}
|
|
70
|
-
yield* Queue.shutdown(outbound);
|
|
71
|
-
yield* mailbox.end;
|
|
72
|
-
});
|
|
73
|
-
yield* Scope.addFinalizer(scope, shutdown);
|
|
74
60
|
const logDecodeError = (error) => Effect.logWarning("Dropping malformed Jetstream message", {
|
|
75
61
|
message: error.message,
|
|
76
62
|
raw: error.raw
|
|
@@ -95,12 +81,38 @@ export const layer = (config) => Layer.scoped(tag, Effect.gen(function* () {
|
|
|
95
81
|
const writer = yield* socket.writer;
|
|
96
82
|
yield* Effect.raceFirst(readLoop(socket), writeLoop(writer));
|
|
97
83
|
})).pipe(Effect.retry(reconnectSchedule));
|
|
98
|
-
|
|
84
|
+
const runConnectionUntilShutdown = Effect.raceFirst(runConnection, Deferred.await(shutdownSignal)).pipe(Effect.catchAllCause((cause) => Cause.isInterrupted(cause)
|
|
85
|
+
? Effect.void
|
|
86
|
+
: Effect.failCause(cause)));
|
|
87
|
+
const connectionFiber = yield* Effect.forkIn(runConnectionUntilShutdown, scope);
|
|
88
|
+
const shutdown = Effect.uninterruptible(Effect.gen(function* () {
|
|
89
|
+
yield* Deferred.succeed(shutdownSignal, undefined);
|
|
90
|
+
yield* Fiber.interrupt(connectionFiber);
|
|
91
|
+
const closed = new ConnectionError({
|
|
92
|
+
reason: "Closed",
|
|
93
|
+
cause: "Jetstream shutdown"
|
|
94
|
+
});
|
|
95
|
+
const pendingValue = yield* Ref.get(pending);
|
|
96
|
+
if (Option.isSome(pendingValue)) {
|
|
97
|
+
yield* Deferred.fail(pendingValue.value.done, closed);
|
|
98
|
+
yield* Ref.set(pending, Option.none());
|
|
99
|
+
}
|
|
100
|
+
const remaining = yield* Queue.takeAll(outbound);
|
|
101
|
+
for (const item of remaining) {
|
|
102
|
+
yield* Deferred.fail(item.done, closed);
|
|
103
|
+
}
|
|
104
|
+
yield* mailbox.end;
|
|
105
|
+
}));
|
|
106
|
+
yield* Scope.addFinalizer(scope, shutdown);
|
|
99
107
|
const send = Effect.fn("Jetstream.send")((message) => Effect.gen(function* () {
|
|
108
|
+
const isShutdown = yield* Deferred.isDone(shutdownSignal);
|
|
109
|
+
if (isShutdown) {
|
|
110
|
+
return yield* Effect.fail(new ConnectionError({ reason: "Closed", cause: "Jetstream shutdown" }));
|
|
111
|
+
}
|
|
100
112
|
const done = yield* Deferred.make();
|
|
101
|
-
const accepted = yield* Queue.offer(outbound, { message, done });
|
|
113
|
+
const accepted = yield* Effect.raceFirst(Queue.offer(outbound, { message, done }), Deferred.await(shutdownSignal).pipe(Effect.as(false)));
|
|
102
114
|
if (!accepted) {
|
|
103
|
-
return yield* Effect.fail(new ConnectionError({ reason: "Closed", cause: "
|
|
115
|
+
return yield* Effect.fail(new ConnectionError({ reason: "Closed", cause: "Jetstream shutdown" }));
|
|
104
116
|
}
|
|
105
117
|
return yield* Deferred.await(done);
|
|
106
118
|
}));
|
|
@@ -109,7 +121,8 @@ export const layer = (config) => Layer.scoped(tag, Effect.gen(function* () {
|
|
|
109
121
|
[TypeId]: TypeId,
|
|
110
122
|
stream: Mailbox.toStream(mailbox),
|
|
111
123
|
send,
|
|
112
|
-
updateOptions
|
|
124
|
+
updateOptions,
|
|
125
|
+
shutdown
|
|
113
126
|
});
|
|
114
127
|
}));
|
|
115
128
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jetstream.js","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAuB,MAAM,sBAAsB,CAAA;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAkB,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"jetstream.js","sourceRoot":"","sources":["../../src/internal/jetstream.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAuB,MAAM,sBAAsB,CAAA;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAkB,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAoB7E;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAY,4BAA4B,CAAC,CAAA;AAE9E,MAAM,iBAAiB,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAC7D,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAC9C,CAAA;AAED,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAO/B,MAAM,kBAAkB,GAAqB,CAAC,IAAI,EAAE,EAAE,CACpD,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,UAAU,CAAC;QACb,OAAO,EAAE,8BAA8B,MAAM,CAAC,KAAK,CAAC,EAAE;KACvD,CAAC;CACL,CAAC,CAAA;AAEJ,MAAM,cAAc,GAAG,CAAC,MAAuB,EAAgC,EAAE;IAC/E,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,IAAI,kBAAkB,CAAA;AAC7C,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,MAAuB,EAC8C,EAAE,CACvE,KAAK,CAAC,MAAM,CACV,GAAG,EACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAoC,CAAA;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAkB,kBAAkB,CAAC,CAAA;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAiC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9E,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAQ,CAAA;IACnD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IAEtC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACpD,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CACtB,wGAAwG,CACzG,CAAA;IACH,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,KAAiB,EAAE,EAAE,CAC3C,MAAM,CAAC,UAAU,CAAC,sCAAsC,EAAE;QACxD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC,CAAA;IAEJ,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAC1D,CAAC,IAAyB,EAAE,EAAE,CAC5B,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EACnD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAChC,CACJ,CAAA;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,EAAE,CAC9D,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CACnB,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QAC9B,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACvC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAChB,CACF,CACF,CAAA;IACH,CAAC,CAAC,CACH,CACF,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,MAAmG,EAAE,EAAE,CACvH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;QACpC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAC7E,CAAA;QACD,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACtC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEJ,MAAM,SAAS,GAAG,CAAC,MAAmG,EAAE,EAAE,CACxH,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEvC,MAAM,QAAQ,GAAG,CAAC,MAAqB,EAAE,EAAE,CACzC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EACzF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAChG,CAAA;IAEH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;QACnC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CACH,CAAC,IAAI,CACJ,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAChC,CAAA;IAED,MAAM,0BAA0B,GAAG,MAAM,CAAC,SAAS,CACjD,aAAa,EACb,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAC/B,CAAC,IAAI,CACJ,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAC5B,CACF,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;IAE/E,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QAClD,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC5C,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACrD,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACxC,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAChD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;QACD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA;IACpB,CAAC,CAAC,CACH,CAAA;IAED,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAE1C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CACtC,CAAC,OAAiC,EAAuC,EAAE,CACzE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;QACnG,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAwB,CAAA;QACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CACtC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACxC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACtD,CAAA;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;QACnG,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAC,CACL,CAAA;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC,yBAAyB,CAAC,CACxD,CAAC,OAAsB,EAAuC,EAAE,CAC9D,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACrD,CAAA;IAED,OAAO,GAAG,CAAC,EAAE,CAAC;QACZ,CAAC,MAAM,CAAC,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI;QACJ,aAAa;QACb,QAAQ;KACT,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CAAA;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAuB,EACiB,EAAE,CAC1C,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAChB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CACtD,CAAA"}
|