@sovereignbase/sequencer 1.0.0 → 1.0.2
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/INTERNALS.md +330 -951
- package/README.md +60 -41
- package/dist/index.cjs +61 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +41 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -24,10 +24,12 @@ footage?: ReadonlyArray<T | undefined>]>;
|
|
|
24
24
|
/**
|
|
25
25
|
* Describes one Actor's acknowledgement frontier.
|
|
26
26
|
* `[actorID, sessionID, sessionEnd, ...]` contains removal Session/frontier pairs.
|
|
27
|
-
*
|
|
27
|
+
* Actor-only tuples establish membership before removals, including offline Actors.
|
|
28
|
+
* Compaction requires equal complete Session frontiers from every active Actor.
|
|
29
|
+
* The application must deliver pending history before claiming that frontier.
|
|
28
30
|
*/
|
|
29
31
|
type Acknowledgement = U32List;
|
|
30
|
-
/**
|
|
32
|
+
/** Replication batch within retained history; delivery may be duplicated or causally reordered. */
|
|
31
33
|
type Gossip<T> = ReadonlyArray<Acknowledgement | Insertion<T>>;
|
|
32
34
|
/**
|
|
33
35
|
* Retained state required to hydrate the same visible Projection.
|
|
@@ -35,7 +37,9 @@ type Gossip<T> = ReadonlyArray<Acknowledgement | Insertion<T>>;
|
|
|
35
37
|
* Small snapshots use six-word insertion records after length-prefixed ACKs;
|
|
36
38
|
* `words[0]` locates those records. Large snapshots begin with
|
|
37
39
|
* `[0, frontiersEnd, insertionCount]` and omit predictable coordinate fields.
|
|
38
|
-
* Both layouts
|
|
40
|
+
* Both layouts encode the retained coordinates and acknowledgements.
|
|
41
|
+
* Eligible masks, deleted Footage and compacted Session claims are omitted;
|
|
42
|
+
* Actor membership remains. Compaction may translate retained coordinates.
|
|
39
43
|
* Positive insertion diffs consume successive spans of `footage`.
|
|
40
44
|
* `[[], []]` is an empty Sequence. Both numeric arrays and typed views are accepted.
|
|
41
45
|
*/
|
|
@@ -57,6 +61,23 @@ type Change<T> = ReadonlyArray<Splice<T>>;
|
|
|
57
61
|
/** Visible changes and optional Gossip returned by `apply()` or `merge()`. */
|
|
58
62
|
type Result<T> = Readonly<[change: Change<T>, gossip?: Gossip<T>]>;
|
|
59
63
|
//#endregion
|
|
64
|
+
//#region src/typescript/errors/class.d.ts
|
|
65
|
+
/** Semantic error codes reported by the Sequencer public API. */
|
|
66
|
+
type SequencerErrorCode = 'PROJECTION_DESTROYED' | 'NATIVE_OPERATION_FAILED';
|
|
67
|
+
/** Error reported by Sequencer with a stable code and package-prefixed message. */
|
|
68
|
+
export declare class SequencerError extends Error {
|
|
69
|
+
/** Machine-readable code identifying the failure condition. */
|
|
70
|
+
readonly code: SequencerErrorCode;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a Sequencer error.
|
|
73
|
+
*
|
|
74
|
+
* @param code Stable code identifying the failure condition.
|
|
75
|
+
* @param message Human-readable detail; defaults to `code`.
|
|
76
|
+
* @param options Standard error options; `cause` retains an underlying error.
|
|
77
|
+
*/
|
|
78
|
+
constructor(code: SequencerErrorCode, message?: string, options?: ErrorOptions);
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
60
81
|
//#region src/typescript/class.d.ts
|
|
61
82
|
/** Visible Projection of a replicated Sequence. */
|
|
62
83
|
export declare class Projection<T> {
|
|
@@ -68,6 +89,7 @@ export declare class Projection<T> {
|
|
|
68
89
|
*
|
|
69
90
|
* @param actorID Actor identifier used in acknowledgements.
|
|
70
91
|
* @param trustedSequence Optional trusted Sequence in Structural Order, stored by the application.
|
|
92
|
+
* @throws {@link SequencerError} if native initialization fails.
|
|
71
93
|
*/
|
|
72
94
|
constructor(actorID: number, trustedSequence?: unknown);
|
|
73
95
|
/**
|
|
@@ -76,6 +98,7 @@ export declare class Projection<T> {
|
|
|
76
98
|
* @param gossip Batch of Insertion and Acknowledgement tuples.
|
|
77
99
|
* @returns Visible changes and optional acknowledgement Gossip, or
|
|
78
100
|
* `undefined` for invalid input. Earlier entries may already have been applied.
|
|
101
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
79
102
|
*/
|
|
80
103
|
apply(gossip: unknown): Result<T> | undefined;
|
|
81
104
|
/**
|
|
@@ -84,12 +107,14 @@ export declare class Projection<T> {
|
|
|
84
107
|
* @param values Nonempty array of values to insert.
|
|
85
108
|
* @param at Insertion position in `0..length()`, inclusive.
|
|
86
109
|
* @returns Gossip describing the insertion.
|
|
110
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
87
111
|
*/
|
|
88
112
|
insert(values: Array<T>, at: number): Gossip<T>;
|
|
89
113
|
/**
|
|
90
114
|
* Returns the length, A.K.A. amount of entries of this projection.
|
|
91
115
|
*
|
|
92
116
|
* @returns Current Projection length.
|
|
117
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
93
118
|
*/
|
|
94
119
|
length(): number;
|
|
95
120
|
/**
|
|
@@ -98,6 +123,7 @@ export declare class Projection<T> {
|
|
|
98
123
|
* @param sequence Sequence to merge.
|
|
99
124
|
* @returns Visible changes and optional acknowledgement Gossip, or
|
|
100
125
|
* `undefined` if the Sequence has an invalid runtime shape.
|
|
126
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
101
127
|
*/
|
|
102
128
|
merge(sequence: unknown): Result<T> | undefined;
|
|
103
129
|
/**
|
|
@@ -106,6 +132,7 @@ export declare class Projection<T> {
|
|
|
106
132
|
* @param startAt First position to remove; defaults to 0.
|
|
107
133
|
* @param endWith Last position to remove; defaults to `length() - 1`.
|
|
108
134
|
* @returns Reducing Insertions and their acknowledgement as Gossip.
|
|
135
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
109
136
|
*/
|
|
110
137
|
remove(startAt?: number, endWith?: number): Gossip<T>;
|
|
111
138
|
/**
|
|
@@ -115,6 +142,7 @@ export declare class Projection<T> {
|
|
|
115
142
|
* @param startAt First position to replace; defaults to 0.
|
|
116
143
|
* @param endWith Last position to replace; defaults to `length() - 1`.
|
|
117
144
|
* @returns Removal and insertion Gossip, in that order.
|
|
145
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
118
146
|
*/
|
|
119
147
|
replace(withValues: Array<T>, startAt?: number, endWith?: number): Gossip<T>;
|
|
120
148
|
/**
|
|
@@ -125,12 +153,19 @@ export declare class Projection<T> {
|
|
|
125
153
|
* for propagating that decision to the relevant replicas.
|
|
126
154
|
*
|
|
127
155
|
* @param actorID Actor whose Acknowledgements are no longer required for compaction.
|
|
156
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
128
157
|
*/
|
|
129
158
|
retire(actorID: number): void;
|
|
130
159
|
/**
|
|
131
160
|
* Sequences state into a compact serializable format.
|
|
132
161
|
*
|
|
162
|
+
* @remarks
|
|
163
|
+
* Register active Actors before removal. Equal complete Session frontiers
|
|
164
|
+
* permit masks and deleted Footage to be omitted from the retained checkpoint.
|
|
165
|
+
* Compaction may translate retained anchors without rewriting this instance.
|
|
166
|
+
*
|
|
133
167
|
* @returns A Sequence with acknowledged removals compacted in the exported state.
|
|
168
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
134
169
|
*/
|
|
135
170
|
sequence(): Sequence<T>;
|
|
136
171
|
/**
|
|
@@ -138,6 +173,7 @@ export declare class Projection<T> {
|
|
|
138
173
|
*
|
|
139
174
|
* @param at Valid visible position in `0..length() - 1`.
|
|
140
175
|
* @returns The corresponding Footage value.
|
|
176
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
141
177
|
*/
|
|
142
178
|
value(at: number): T | undefined;
|
|
143
179
|
/**
|
|
@@ -146,11 +182,12 @@ export declare class Projection<T> {
|
|
|
146
182
|
* @param startAt First included position; defaults to 0.
|
|
147
183
|
* @param endWith Last included position; defaults to `length() - 1`.
|
|
148
184
|
* @returns A new array of values, or an empty array for an empty range.
|
|
185
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
149
186
|
*/
|
|
150
187
|
values(startAt?: number, endWith?: number): Array<T>;
|
|
151
188
|
/** Destroys the Projection. Repeated calls have no effect. */
|
|
152
189
|
destroy(): void;
|
|
153
190
|
}
|
|
154
191
|
//#endregion
|
|
155
|
-
export type { Acknowledgement, Change, Gossip, Insertion, InsertionWords, Result, Sequence, Splice, U32List };
|
|
192
|
+
export type { Acknowledgement, Change, Gossip, Insertion, InsertionWords, Result, Sequence, SequencerErrorCode, Splice, U32List };
|
|
156
193
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/typescript/types/type.ts","../src/typescript/class.ts"],"mappings":";;;KACY,UAAU,cAAc;;;;;;;;;KAUxB,iBAAiB;;;;;;KAOjB,UAAU,KAAK;;AAGvB,OAAO;;AAEP,UAAU,cAAc
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/typescript/types/type.ts","../src/typescript/errors/class.ts","../src/typescript/class.ts"],"mappings":";;;KACY,UAAU,cAAc;;;;;;;;;KAUxB,iBAAiB;;;;;;KAOjB,UAAU,KAAK;;AAGvB,OAAO;;AAEP,UAAU,cAAc;;;;;;;;KAWhB,kBAAkB;;KAGlB,OAAO,KAAK,cAAc,kBAAkB,UAAU;;;;;;;;;;;;;KActD,SAAS,KAAK;;AAGtB,OAAO;;AAEP,SAAS,cAAc;;KAKf,OAAO,KAAK;;AAGpB;;AAEA;;AAEA,SAAS,cAAc;;KAKf,OAAO,KAAK,cAAc,OAAO;;KAEjC,OAAO,KAAK,UAAU,QAAQ,OAAO,IAAI,SAAS,OAAO;;;;KC1EzD;;qBAIC,uBAAuB;;WAEzB,MAAM;;;;;;;;EAUb,YAAA,MAAM,oBACN,kBACA,UAAU;;;;;qBCdD,WAAW;WAYJ;;UAVV;;;;;;;;EAUU,YAAA,iBAChB;;;;;;;;;EAaF,MAAM,kBAAkB,OAAO;;;;;;;;;EAY/B,OAAO,QAAQ,MAAM,IAAI,aAAa,OAAO;;;;;;;EAU7C;;;;;;;;;EAYA,MAAM,oBAAoB,OAAO;;;;;;;;;EAYjC,OAAO,kBAAkB,mBAAmB,OAAO;;;;;;;;;;EAanD,QAAQ,YAAY,MAAM,IAAI,kBAAkB,mBAAmB,OAAO;;;;;;;;;;;EAoB1E,OAAO;;;;;;;;;;;;EAeP,YAAY,SAAS;;;;;;;;EAWrB,MAAM,aAAa;;;;;;;;;EAYnB,OAAO,kBAAkB,mBAAmB,MAAM;;EAKlD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,10 +24,12 @@ footage?: ReadonlyArray<T | undefined>]>;
|
|
|
24
24
|
/**
|
|
25
25
|
* Describes one Actor's acknowledgement frontier.
|
|
26
26
|
* `[actorID, sessionID, sessionEnd, ...]` contains removal Session/frontier pairs.
|
|
27
|
-
*
|
|
27
|
+
* Actor-only tuples establish membership before removals, including offline Actors.
|
|
28
|
+
* Compaction requires equal complete Session frontiers from every active Actor.
|
|
29
|
+
* The application must deliver pending history before claiming that frontier.
|
|
28
30
|
*/
|
|
29
31
|
type Acknowledgement = U32List;
|
|
30
|
-
/**
|
|
32
|
+
/** Replication batch within retained history; delivery may be duplicated or causally reordered. */
|
|
31
33
|
type Gossip<T> = ReadonlyArray<Acknowledgement | Insertion<T>>;
|
|
32
34
|
/**
|
|
33
35
|
* Retained state required to hydrate the same visible Projection.
|
|
@@ -35,7 +37,9 @@ type Gossip<T> = ReadonlyArray<Acknowledgement | Insertion<T>>;
|
|
|
35
37
|
* Small snapshots use six-word insertion records after length-prefixed ACKs;
|
|
36
38
|
* `words[0]` locates those records. Large snapshots begin with
|
|
37
39
|
* `[0, frontiersEnd, insertionCount]` and omit predictable coordinate fields.
|
|
38
|
-
* Both layouts
|
|
40
|
+
* Both layouts encode the retained coordinates and acknowledgements.
|
|
41
|
+
* Eligible masks, deleted Footage and compacted Session claims are omitted;
|
|
42
|
+
* Actor membership remains. Compaction may translate retained coordinates.
|
|
39
43
|
* Positive insertion diffs consume successive spans of `footage`.
|
|
40
44
|
* `[[], []]` is an empty Sequence. Both numeric arrays and typed views are accepted.
|
|
41
45
|
*/
|
|
@@ -57,6 +61,23 @@ type Change<T> = ReadonlyArray<Splice<T>>;
|
|
|
57
61
|
/** Visible changes and optional Gossip returned by `apply()` or `merge()`. */
|
|
58
62
|
type Result<T> = Readonly<[change: Change<T>, gossip?: Gossip<T>]>;
|
|
59
63
|
//#endregion
|
|
64
|
+
//#region src/typescript/errors/class.d.ts
|
|
65
|
+
/** Semantic error codes reported by the Sequencer public API. */
|
|
66
|
+
type SequencerErrorCode = 'PROJECTION_DESTROYED' | 'NATIVE_OPERATION_FAILED';
|
|
67
|
+
/** Error reported by Sequencer with a stable code and package-prefixed message. */
|
|
68
|
+
export declare class SequencerError extends Error {
|
|
69
|
+
/** Machine-readable code identifying the failure condition. */
|
|
70
|
+
readonly code: SequencerErrorCode;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a Sequencer error.
|
|
73
|
+
*
|
|
74
|
+
* @param code Stable code identifying the failure condition.
|
|
75
|
+
* @param message Human-readable detail; defaults to `code`.
|
|
76
|
+
* @param options Standard error options; `cause` retains an underlying error.
|
|
77
|
+
*/
|
|
78
|
+
constructor(code: SequencerErrorCode, message?: string, options?: ErrorOptions);
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
60
81
|
//#region src/typescript/class.d.ts
|
|
61
82
|
/** Visible Projection of a replicated Sequence. */
|
|
62
83
|
export declare class Projection<T> {
|
|
@@ -68,6 +89,7 @@ export declare class Projection<T> {
|
|
|
68
89
|
*
|
|
69
90
|
* @param actorID Actor identifier used in acknowledgements.
|
|
70
91
|
* @param trustedSequence Optional trusted Sequence in Structural Order, stored by the application.
|
|
92
|
+
* @throws {@link SequencerError} if native initialization fails.
|
|
71
93
|
*/
|
|
72
94
|
constructor(actorID: number, trustedSequence?: unknown);
|
|
73
95
|
/**
|
|
@@ -76,6 +98,7 @@ export declare class Projection<T> {
|
|
|
76
98
|
* @param gossip Batch of Insertion and Acknowledgement tuples.
|
|
77
99
|
* @returns Visible changes and optional acknowledgement Gossip, or
|
|
78
100
|
* `undefined` for invalid input. Earlier entries may already have been applied.
|
|
101
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
79
102
|
*/
|
|
80
103
|
apply(gossip: unknown): Result<T> | undefined;
|
|
81
104
|
/**
|
|
@@ -84,12 +107,14 @@ export declare class Projection<T> {
|
|
|
84
107
|
* @param values Nonempty array of values to insert.
|
|
85
108
|
* @param at Insertion position in `0..length()`, inclusive.
|
|
86
109
|
* @returns Gossip describing the insertion.
|
|
110
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
87
111
|
*/
|
|
88
112
|
insert(values: Array<T>, at: number): Gossip<T>;
|
|
89
113
|
/**
|
|
90
114
|
* Returns the length, A.K.A. amount of entries of this projection.
|
|
91
115
|
*
|
|
92
116
|
* @returns Current Projection length.
|
|
117
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
93
118
|
*/
|
|
94
119
|
length(): number;
|
|
95
120
|
/**
|
|
@@ -98,6 +123,7 @@ export declare class Projection<T> {
|
|
|
98
123
|
* @param sequence Sequence to merge.
|
|
99
124
|
* @returns Visible changes and optional acknowledgement Gossip, or
|
|
100
125
|
* `undefined` if the Sequence has an invalid runtime shape.
|
|
126
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
101
127
|
*/
|
|
102
128
|
merge(sequence: unknown): Result<T> | undefined;
|
|
103
129
|
/**
|
|
@@ -106,6 +132,7 @@ export declare class Projection<T> {
|
|
|
106
132
|
* @param startAt First position to remove; defaults to 0.
|
|
107
133
|
* @param endWith Last position to remove; defaults to `length() - 1`.
|
|
108
134
|
* @returns Reducing Insertions and their acknowledgement as Gossip.
|
|
135
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
109
136
|
*/
|
|
110
137
|
remove(startAt?: number, endWith?: number): Gossip<T>;
|
|
111
138
|
/**
|
|
@@ -115,6 +142,7 @@ export declare class Projection<T> {
|
|
|
115
142
|
* @param startAt First position to replace; defaults to 0.
|
|
116
143
|
* @param endWith Last position to replace; defaults to `length() - 1`.
|
|
117
144
|
* @returns Removal and insertion Gossip, in that order.
|
|
145
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
118
146
|
*/
|
|
119
147
|
replace(withValues: Array<T>, startAt?: number, endWith?: number): Gossip<T>;
|
|
120
148
|
/**
|
|
@@ -125,12 +153,19 @@ export declare class Projection<T> {
|
|
|
125
153
|
* for propagating that decision to the relevant replicas.
|
|
126
154
|
*
|
|
127
155
|
* @param actorID Actor whose Acknowledgements are no longer required for compaction.
|
|
156
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
128
157
|
*/
|
|
129
158
|
retire(actorID: number): void;
|
|
130
159
|
/**
|
|
131
160
|
* Sequences state into a compact serializable format.
|
|
132
161
|
*
|
|
162
|
+
* @remarks
|
|
163
|
+
* Register active Actors before removal. Equal complete Session frontiers
|
|
164
|
+
* permit masks and deleted Footage to be omitted from the retained checkpoint.
|
|
165
|
+
* Compaction may translate retained anchors without rewriting this instance.
|
|
166
|
+
*
|
|
133
167
|
* @returns A Sequence with acknowledged removals compacted in the exported state.
|
|
168
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
134
169
|
*/
|
|
135
170
|
sequence(): Sequence<T>;
|
|
136
171
|
/**
|
|
@@ -138,6 +173,7 @@ export declare class Projection<T> {
|
|
|
138
173
|
*
|
|
139
174
|
* @param at Valid visible position in `0..length() - 1`.
|
|
140
175
|
* @returns The corresponding Footage value.
|
|
176
|
+
* @throws {@link SequencerError} with code `PROJECTION_DESTROYED` after destruction.
|
|
141
177
|
*/
|
|
142
178
|
value(at: number): T | undefined;
|
|
143
179
|
/**
|
|
@@ -146,11 +182,12 @@ export declare class Projection<T> {
|
|
|
146
182
|
* @param startAt First included position; defaults to 0.
|
|
147
183
|
* @param endWith Last included position; defaults to `length() - 1`.
|
|
148
184
|
* @returns A new array of values, or an empty array for an empty range.
|
|
185
|
+
* @throws {@link SequencerError} if destroyed or the native runtime reports an operation failure.
|
|
149
186
|
*/
|
|
150
187
|
values(startAt?: number, endWith?: number): Array<T>;
|
|
151
188
|
/** Destroys the Projection. Repeated calls have no effect. */
|
|
152
189
|
destroy(): void;
|
|
153
190
|
}
|
|
154
191
|
//#endregion
|
|
155
|
-
export type { Acknowledgement, Change, Gossip, Insertion, InsertionWords, Result, Sequence, Splice, U32List };
|
|
192
|
+
export type { Acknowledgement, Change, Gossip, Insertion, InsertionWords, Result, Sequence, SequencerErrorCode, Splice, U32List };
|
|
156
193
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/typescript/types/type.ts","../src/typescript/class.ts"],"mappings":";;;KACY,UAAU,cAAc;;;;;;;;;KAUxB,iBAAiB;;;;;;KAOjB,UAAU,KAAK;;AAGvB,OAAO;;AAEP,UAAU,cAAc
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/typescript/types/type.ts","../src/typescript/errors/class.ts","../src/typescript/class.ts"],"mappings":";;;KACY,UAAU,cAAc;;;;;;;;;KAUxB,iBAAiB;;;;;;KAOjB,UAAU,KAAK;;AAGvB,OAAO;;AAEP,UAAU,cAAc;;;;;;;;KAWhB,kBAAkB;;KAGlB,OAAO,KAAK,cAAc,kBAAkB,UAAU;;;;;;;;;;;;;KActD,SAAS,KAAK;;AAGtB,OAAO;;AAEP,SAAS,cAAc;;KAKf,OAAO,KAAK;;AAGpB;;AAEA;;AAEA,SAAS,cAAc;;KAKf,OAAO,KAAK,cAAc,OAAO;;KAEjC,OAAO,KAAK,UAAU,QAAQ,OAAO,IAAI,SAAS,OAAO;;;;KC1EzD;;qBAIC,uBAAuB;;WAEzB,MAAM;;;;;;;;EAUb,YAAA,MAAM,oBACN,kBACA,UAAU;;;;;qBCdD,WAAW;WAYJ;;UAVV;;;;;;;;EAUU,YAAA,iBAChB;;;;;;;;;EAaF,MAAM,kBAAkB,OAAO;;;;;;;;;EAY/B,OAAO,QAAQ,MAAM,IAAI,aAAa,OAAO;;;;;;;EAU7C;;;;;;;;;EAYA,MAAM,oBAAoB,OAAO;;;;;;;;;EAYjC,OAAO,kBAAkB,mBAAmB,OAAO;;;;;;;;;;EAanD,QAAQ,YAAY,MAAM,IAAI,kBAAkB,mBAAmB,OAAO;;;;;;;;;;;EAoB1E,OAAO;;;;;;;;;;;;EAeP,YAAY,SAAS;;;;;;;;EAWrB,MAAM,aAAa;;;;;;;;;EAYnB,OAAO,kBAAkB,mBAAmB,MAAM;;EAKlD"}
|