@webda/ql 4.0.0-beta.5 → 4.0.0-beta.7
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 +72 -31
- package/lib/WebdaQLLexer.d.ts +44 -30
- package/lib/WebdaQLLexer.d.ts.map +1 -1
- package/lib/WebdaQLLexer.js +257 -152
- package/lib/WebdaQLLexer.js.map +1 -1
- package/lib/WebdaQLParserLexer.d.ts +44 -30
- package/lib/WebdaQLParserLexer.d.ts.map +1 -1
- package/lib/WebdaQLParserLexer.js +257 -152
- package/lib/WebdaQLParserLexer.js.map +1 -1
- package/lib/WebdaQLParserListener.d.ts +203 -30
- package/lib/WebdaQLParserListener.d.ts.map +1 -1
- package/lib/WebdaQLParserParser.d.ts +242 -44
- package/lib/WebdaQLParserParser.d.ts.map +1 -1
- package/lib/WebdaQLParserParser.js +2054 -715
- package/lib/WebdaQLParserParser.js.map +1 -1
- package/lib/WebdaQLParserVisitor.d.ts +126 -17
- package/lib/WebdaQLParserVisitor.d.ts.map +1 -1
- package/lib/aggregation-query.d.ts +95 -0
- package/lib/aggregation-query.d.ts.map +1 -0
- package/lib/aggregation-query.js +104 -0
- package/lib/aggregation-query.js.map +1 -0
- package/lib/aggregation-select.spec.d.ts +2 -0
- package/lib/aggregation-select.spec.d.ts.map +1 -0
- package/lib/aggregation-select.spec.js +165 -0
- package/lib/aggregation-select.spec.js.map +1 -0
- package/lib/aggregation.d.ts +97 -0
- package/lib/aggregation.d.ts.map +1 -0
- package/lib/aggregation.js +241 -0
- package/lib/aggregation.js.map +1 -0
- package/lib/aggregation.spec.d.ts +2 -0
- package/lib/aggregation.spec.d.ts.map +1 -0
- package/lib/aggregation.spec.js +360 -0
- package/lib/aggregation.spec.js.map +1 -0
- package/lib/bind.d.ts.map +1 -1
- package/lib/bind.js +29 -0
- package/lib/bind.js.map +1 -1
- package/lib/filter.d.ts +54 -0
- package/lib/filter.d.ts.map +1 -0
- package/lib/filter.js +135 -0
- package/lib/filter.js.map +1 -0
- package/lib/filter.spec.d.ts +2 -0
- package/lib/filter.spec.d.ts.map +1 -0
- package/lib/filter.spec.js +124 -0
- package/lib/filter.spec.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/query.d.ts +173 -12
- package/lib/query.d.ts.map +1 -1
- package/lib/query.js +529 -64
- package/lib/query.js.map +1 -1
- package/lib/query.spec.js +7 -4
- package/lib/query.spec.js.map +1 -1
- package/lib/statements.spec.d.ts +2 -0
- package/lib/statements.spec.d.ts.map +1 -0
- package/lib/statements.spec.js +423 -0
- package/lib/statements.spec.js.map +1 -0
- package/lib/webdaql-string.d.ts +9 -0
- package/lib/webdaql-string.d.ts.map +1 -1
- package/lib/webdaql-string.js +9 -8
- package/lib/webdaql-string.js.map +1 -1
- package/package.json +2 -2
package/lib/query.d.ts
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import { AbstractParseTreeVisitor, ParseTree } from "antlr4ts/tree/index.js";
|
|
2
2
|
import { WebdaQLLexer } from "./WebdaQLLexer.js";
|
|
3
|
-
import { AndLogicExpressionContext, AtomExpressionContext, BinaryComparisonExpressionContext, BooleanLiteralContext, ContainsExpressionContext, InExpressionContext, IntegerLiteralContext, IsNotNullExpressionContext, IsNullExpressionContext, LikeExpressionContext, LimitExpressionContext, NumberLiteralContext, OffsetExpressionContext, OrLogicExpressionContext, OrderExpressionContext, OrderFieldExpressionContext, ParameterContext, SetExpressionContext, StringLiteralContext, WebdaqlContext } from "./WebdaQLParserParser.js";
|
|
3
|
+
import { AndLogicExpressionContext, AssignmentContext, AtomExpressionContext, BinaryComparisonExpressionContext, BooleanLiteralContext, ContainsExpressionContext, DeleteStatementContext, ExpressionContext, FieldListContext, FilterQueryContext, InExpressionContext, IntegerLiteralContext, IsNotNullExpressionContext, IsNullExpressionContext, LikeExpressionContext, LimitExpressionContext, NumberLiteralContext, OffsetExpressionContext, OrLogicExpressionContext, OrderExpressionContext, OrderFieldExpressionContext, ParameterContext, SelectStatementContext, SetExpressionContext, StatementContext, StringLiteralContext, SubExpressionContext, UpdateStatementContext, WebdaqlContext } from "./WebdaQLParserParser.js";
|
|
4
4
|
import { WebdaQLParserVisitor } from "./WebdaQLParserVisitor.js";
|
|
5
|
+
import { type AggregationQuery, type Metric } from "./aggregation-query.js";
|
|
5
6
|
/**
|
|
6
7
|
* Primitive value types supported by WebdaQL expressions
|
|
7
8
|
*/
|
|
8
9
|
type value = boolean | string | number;
|
|
10
|
+
/**
|
|
11
|
+
* Kind of statement a query is: a plain filter is an implicit `SELECT` of every field
|
|
12
|
+
*/
|
|
13
|
+
export type QueryType = "SELECT" | "DELETE" | "UPDATE";
|
|
14
|
+
/**
|
|
15
|
+
* One `field = value` of an `UPDATE SET`
|
|
16
|
+
*/
|
|
17
|
+
export interface Assignment {
|
|
18
|
+
/** Field path (dot-notation for nested attributes) */
|
|
19
|
+
field: string;
|
|
20
|
+
/** Value to assign */
|
|
21
|
+
value: value;
|
|
22
|
+
}
|
|
9
23
|
/**
|
|
10
24
|
* Strip the quotes of a WebdaQL string literal and unescape its contents.
|
|
11
25
|
*
|
|
@@ -32,11 +46,14 @@ export interface OrderBy {
|
|
|
32
46
|
* Prepend a condition to an existing query string using AND logic
|
|
33
47
|
*
|
|
34
48
|
* Parses both strings, merges them, and reconstructs the combined query.
|
|
35
|
-
* ORDER BY, LIMIT, and OFFSET clauses
|
|
49
|
+
* The statement head (`SELECT fields`, `DELETE`, `UPDATE SET ...`) and the ORDER BY, LIMIT, and OFFSET clauses
|
|
50
|
+
* of the original query are preserved; the condition joins the WHERE part. Both sides keep their own grouping:
|
|
51
|
+
* `a OR b` merged with `c OR d` is `( a OR b ) AND ( c OR d )`.
|
|
36
52
|
*
|
|
37
|
-
* @param query - existing query string (may include ORDER BY / LIMIT / OFFSET)
|
|
38
|
-
* @param condition - condition to prepend (filter
|
|
53
|
+
* @param query - existing query string (a plain filter or a statement, may include ORDER BY / LIMIT / OFFSET)
|
|
54
|
+
* @param condition - condition to prepend (a plain filter: a statement is refused)
|
|
39
55
|
* @returns merged query string
|
|
56
|
+
* @throws {SyntaxError} if the condition is a statement, or adds ORDER BY / OFFSET to a DELETE or UPDATE
|
|
40
57
|
*
|
|
41
58
|
* @example
|
|
42
59
|
* ```ts
|
|
@@ -101,14 +118,73 @@ export declare class ExpressionBuilder extends AbstractParseTreeVisitor<Query> i
|
|
|
101
118
|
*/
|
|
102
119
|
visitOrderExpression(ctx: OrderExpressionContext): void;
|
|
103
120
|
/**
|
|
104
|
-
* Visit the root `webdaql` rule and build the complete Query
|
|
121
|
+
* Visit the root `webdaql` rule and build the complete Query: a statement or a plain filter query
|
|
122
|
+
* @param ctx - the webdaql parse context
|
|
123
|
+
* @returns the built Query
|
|
124
|
+
*/
|
|
125
|
+
visitWebdaql(ctx: WebdaqlContext): Query;
|
|
126
|
+
/**
|
|
127
|
+
* Visit a DELETE, UPDATE or SELECT statement
|
|
128
|
+
* @param ctx - the statement context
|
|
129
|
+
* @returns the built Query
|
|
130
|
+
*/
|
|
131
|
+
visitStatement(ctx: StatementContext): Query;
|
|
132
|
+
/**
|
|
133
|
+
* Visit a plain filter query: an implicit SELECT of every field
|
|
105
134
|
*
|
|
106
135
|
* Parses filter expression, ORDER BY, LIMIT, and OFFSET clauses.
|
|
107
136
|
* Returns an empty AND expression (always true) when no filter is present.
|
|
108
|
-
* @param ctx - the
|
|
137
|
+
* @param ctx - the filter query context
|
|
109
138
|
* @returns the built Query
|
|
110
139
|
*/
|
|
111
|
-
|
|
140
|
+
visitFilterQuery(ctx: FilterQueryContext): Query;
|
|
141
|
+
/**
|
|
142
|
+
* Visit `DELETE [WHERE ...] [LIMIT n]`
|
|
143
|
+
* @param ctx - the DELETE statement context
|
|
144
|
+
* @returns the built Query
|
|
145
|
+
*/
|
|
146
|
+
visitDeleteStatement(ctx: DeleteStatementContext): Query;
|
|
147
|
+
/**
|
|
148
|
+
* Visit `UPDATE SET a = v, ... [WHERE ...] [LIMIT n]`
|
|
149
|
+
* @param ctx - the UPDATE statement context
|
|
150
|
+
* @returns the built Query
|
|
151
|
+
*/
|
|
152
|
+
visitUpdateStatement(ctx: UpdateStatementContext): Query;
|
|
153
|
+
/**
|
|
154
|
+
* Visit a SELECT statement: a field list, or an aggregation when it has metrics or a GROUP BY
|
|
155
|
+
* @param ctx - the select statement context
|
|
156
|
+
* @returns the query
|
|
157
|
+
*/
|
|
158
|
+
visitSelectStatement(ctx: SelectStatementContext): Query;
|
|
159
|
+
/**
|
|
160
|
+
* Read one `field = value` of an UPDATE SET
|
|
161
|
+
* @param ctx - the assignment context
|
|
162
|
+
* @returns the assignment
|
|
163
|
+
*/
|
|
164
|
+
visitAssignment(ctx: AssignmentContext): Assignment;
|
|
165
|
+
/**
|
|
166
|
+
* Read the field list of a SELECT: plain fields and aggregate metrics
|
|
167
|
+
* @param ctx - the field list context
|
|
168
|
+
* @returns the field paths and the metrics by alias
|
|
169
|
+
*/
|
|
170
|
+
visitFieldList(ctx: FieldListContext): {
|
|
171
|
+
fields: string[];
|
|
172
|
+
metrics: Record<string, Metric>;
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Visit a parenthesised expression: the inner expression
|
|
176
|
+
* @param ctx - the sub expression context
|
|
177
|
+
* @returns the inner expression
|
|
178
|
+
*/
|
|
179
|
+
visitSubExpression(ctx: SubExpressionContext): Expression;
|
|
180
|
+
/**
|
|
181
|
+
* Build the Query of a statement or filter query: its condition and its ORDER BY, LIMIT and OFFSET clauses
|
|
182
|
+
* @param type - the statement type
|
|
183
|
+
* @param expression - the condition, if any
|
|
184
|
+
* @param ctx - the statement context holding the optional clauses
|
|
185
|
+
* @returns the Query
|
|
186
|
+
*/
|
|
187
|
+
protected buildQuery(type: QueryType, expression: ExpressionContext | undefined, ctx: FilterQueryContext | DeleteStatementContext | UpdateStatementContext | SelectStatementContext): Query;
|
|
112
188
|
/**
|
|
113
189
|
* Recursively flatten nested logical expressions of the same type
|
|
114
190
|
*
|
|
@@ -238,6 +314,22 @@ export interface Query {
|
|
|
238
314
|
* Order by clause
|
|
239
315
|
*/
|
|
240
316
|
orderBy?: OrderBy[];
|
|
317
|
+
/**
|
|
318
|
+
* Statement type: `SELECT` for a plain filter query (an implicit SELECT of every field) and an explicit SELECT
|
|
319
|
+
*/
|
|
320
|
+
type: QueryType;
|
|
321
|
+
/**
|
|
322
|
+
* Field list of an explicit `SELECT f1, f2`; undefined means every field
|
|
323
|
+
*/
|
|
324
|
+
fields?: string[];
|
|
325
|
+
/**
|
|
326
|
+
* Assignments of an `UPDATE SET`
|
|
327
|
+
*/
|
|
328
|
+
assignments?: Assignment[];
|
|
329
|
+
/**
|
|
330
|
+
* Aggregation of a `SELECT … GROUP BY` or a SELECT with aggregate functions
|
|
331
|
+
*/
|
|
332
|
+
aggregation?: AggregationQuery;
|
|
241
333
|
/**
|
|
242
334
|
* Get the string representation of the query
|
|
243
335
|
*/
|
|
@@ -290,7 +382,7 @@ export declare class ComparisonExpression<T extends ComparisonOperator = Compari
|
|
|
290
382
|
/**
|
|
291
383
|
* Right side of the comparison
|
|
292
384
|
*/
|
|
293
|
-
value: value | value[];
|
|
385
|
+
value: value | value[] | null;
|
|
294
386
|
/**
|
|
295
387
|
* Attribute to read from the object (split by .)
|
|
296
388
|
*/
|
|
@@ -300,7 +392,7 @@ export declare class ComparisonExpression<T extends ComparisonOperator = Compari
|
|
|
300
392
|
* @param attribute - dot-notation path to the object property (e.g. `"user.name"`)
|
|
301
393
|
* @param value - literal value or array of values (for IN operator) to compare against
|
|
302
394
|
*/
|
|
303
|
-
constructor(operator: T, attribute: string, value: value | any[]);
|
|
395
|
+
constructor(operator: T, attribute: string, value: value | any[] | null);
|
|
304
396
|
/**
|
|
305
397
|
* Convert a SQL LIKE pattern to a JavaScript RegExp
|
|
306
398
|
*
|
|
@@ -339,7 +431,7 @@ export declare class ComparisonExpression<T extends ComparisonOperator = Compari
|
|
|
339
431
|
* @param value - the value to serialize
|
|
340
432
|
* @returns the serialized string
|
|
341
433
|
*/
|
|
342
|
-
toStringValue(value: value | value[]): string;
|
|
434
|
+
toStringValue(value: value | value[] | null): string;
|
|
343
435
|
/**
|
|
344
436
|
* Allow subclass to create different display
|
|
345
437
|
* @returns the attribute string
|
|
@@ -501,7 +593,7 @@ export declare class QueryValidator {
|
|
|
501
593
|
* @param type - logical operator to combine filters (`"AND"` or `"OR"`)
|
|
502
594
|
* @returns `this` for chaining
|
|
503
595
|
*/
|
|
504
|
-
merge(query
|
|
596
|
+
merge(query?: string, type?: "OR" | "AND"): this;
|
|
505
597
|
/**
|
|
506
598
|
* Get parsed LIMIT value, defaulting to 1000
|
|
507
599
|
* @returns the limit value
|
|
@@ -698,11 +790,80 @@ export declare class PartialExpressionBuilder extends ExpressionBuilder {
|
|
|
698
790
|
* @returns the cleaned query string
|
|
699
791
|
*/
|
|
700
792
|
export declare function unsanitize(query: string): string;
|
|
793
|
+
/**
|
|
794
|
+
* Print a query in its canonical form, which parses back to the same query
|
|
795
|
+
*
|
|
796
|
+
* - plain filter: `<filter> [ORDER BY ...] [LIMIT n] [OFFSET "token"]`
|
|
797
|
+
* - `SELECT f1, f2 [WHERE <filter>] [ORDER BY ...] [LIMIT n] [OFFSET "token"]`
|
|
798
|
+
* - `DELETE [WHERE <filter>] [LIMIT n]`
|
|
799
|
+
* - `UPDATE SET a = v, ... [WHERE <filter>] [LIMIT n]`
|
|
800
|
+
*
|
|
801
|
+
* @param query - the query
|
|
802
|
+
* @returns the query string
|
|
803
|
+
*/
|
|
804
|
+
export declare function stringifyQuery(query: Omit<Query, "toString">): string;
|
|
805
|
+
/**
|
|
806
|
+
* Check a field path of a query object
|
|
807
|
+
* @param field - the path, as a string or its segments
|
|
808
|
+
* @returns the dotted path
|
|
809
|
+
* @throws {WebdaQLError} when a segment is empty or holds anything but letters, digits and `_`
|
|
810
|
+
*/
|
|
811
|
+
export declare function checkFieldPath(field: unknown): string;
|
|
812
|
+
/**
|
|
813
|
+
* Normalize a query object built or changed by code: every part is checked against what the grammar allows, the
|
|
814
|
+
* query is printed from its data and parsed again
|
|
815
|
+
*
|
|
816
|
+
* Use it before handing a `Query` object received from a caller to a backend: field paths (letters, digits, `_`),
|
|
817
|
+
* operators, values (strings, finite numbers, booleans), LIMIT (non-negative integer) and OFFSET (string) are
|
|
818
|
+
* checked, and the result only holds expressions built by the parser.
|
|
819
|
+
*
|
|
820
|
+
* @param query - the query object
|
|
821
|
+
* @returns the same query, as parsed from its canonical text
|
|
822
|
+
* @throws {WebdaQLError} when a part of the query cannot be written in WebdaQL
|
|
823
|
+
*/
|
|
824
|
+
export declare function normalizeQuery(query: Partial<Query>): Query;
|
|
825
|
+
/**
|
|
826
|
+
* Validate the SELECT fields, the aggregation metric fields and the UPDATE SET targets of a query against the
|
|
827
|
+
* allowed fields
|
|
828
|
+
*
|
|
829
|
+
* A dotted path is allowed when it is listed, or when one of its parents is (`profile.email` is allowed by
|
|
830
|
+
* `profile` or by `profile.email`). GROUP BY paths are the SELECT fields; the field of every aggregation metric
|
|
831
|
+
* (`SUM(points)`) is checked too, `COUNT(*)` has none. Filter attributes are not checked.
|
|
832
|
+
*
|
|
833
|
+
* @param query - parsed query to validate
|
|
834
|
+
* @param allowedFields - allowed field paths (dot-notation)
|
|
835
|
+
* @throws {SyntaxError} if a field, a metric field or an assignment target is not allowed
|
|
836
|
+
*/
|
|
837
|
+
export declare function validateQueryFields(query: Pick<Query, "fields" | "assignments" | "aggregation">, allowedFields: string[]): void;
|
|
838
|
+
/**
|
|
839
|
+
* Refuse anything but a plain filter query: DELETE, UPDATE and SELECT with a field list
|
|
840
|
+
*
|
|
841
|
+
* Used where a query only selects objects, such as the Query operations exposed to clients. A query built by hand
|
|
842
|
+
* without `type` is a filter.
|
|
843
|
+
*
|
|
844
|
+
* @param query - the parsed query
|
|
845
|
+
* @throws {WebdaQLError} for a DELETE or UPDATE statement, or a SELECT field list
|
|
846
|
+
*/
|
|
847
|
+
export declare function assertFilterQuery(query: Partial<Pick<Query, "type" | "fields">>): void;
|
|
701
848
|
/**
|
|
702
849
|
* Parse a query string into a Query object
|
|
850
|
+
*
|
|
851
|
+
* Accepts a plain filter query (an implicit SELECT of every field) or a statement:
|
|
852
|
+
* - `SELECT f1, f2 [WHERE <condition>] [ORDER BY ...] [LIMIT n] [OFFSET token]`
|
|
853
|
+
* - `SELECT g1, COUNT(*) AS n, SUM(f) AS s [WHERE <condition>] [GROUP BY g1] [ORDER BY ...] [LIMIT n]`: an
|
|
854
|
+
* aggregation (metrics COUNT, COUNT(DISTINCT f), SUM, AVG, MIN, MAX), returned in `aggregation`; the
|
|
855
|
+
* selected fields must be the GROUP BY paths, every metric needs an alias, OFFSET is refused
|
|
856
|
+
* - `DELETE [WHERE <condition>] [LIMIT n]`
|
|
857
|
+
* - `UPDATE SET a = v, b = v [WHERE <condition>] [LIMIT n]`
|
|
858
|
+
*
|
|
859
|
+
* Keywords are uppercase only: `select`, `delete`, `set`, `count`... remain field names.
|
|
860
|
+
*
|
|
703
861
|
* @param query - the query string to parse
|
|
862
|
+
* @param allowedFields - when given, SELECT fields, aggregation metric fields and UPDATE SET targets must be in
|
|
863
|
+
* this list (see {@link validateQueryFields})
|
|
704
864
|
* @returns the parsed Query object
|
|
865
|
+
* @throws {SyntaxError} on a grammar error or a field outside `allowedFields`
|
|
705
866
|
*/
|
|
706
|
-
export declare function parse(query: string): Query;
|
|
867
|
+
export declare function parse(query: string, allowedFields?: string[]): Query;
|
|
707
868
|
export {};
|
|
708
869
|
//# sourceMappingURL=query.d.ts.map
|
package/lib/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAgB,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,iCAAiC,EACjC,qBAAqB,EACrB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAgB,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,iCAAiC,EACjC,qBAAqB,EACrB,yBAAyB,EAGzB,sBAAsB,EACtB,iBAAiB,EAEjB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EAEtB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EAEtB,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACZ,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,KAAK,CAAC;CACd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiC7D;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,MAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/E;AACD;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,wBAAwB,CAAC,KAAK,CAAE,YAAW,oBAAoB,CAAC,GAAG,CAAC;IACzG;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,OAAO,EAAE,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,aAAa,IAAI,KAAK,CAM/B;IAED;;;OAGG;IACH,SAAS,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,QAE/C;IAED;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,QAEjD;IAED;;;;OAIG;IACH,yBAAyB,CAAC,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAKnE;IAED;;;OAGG;IACH,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAItD;IAED;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,KAAK,CAIvC;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,KAAK,CAE3C;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,KAAK,CAE/C;IAED;;;;OAIG;IACH,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,GAAG,KAAK,CAEvD;IAED;;;;OAIG;IACH,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,GAAG,KAAK,CAQvD;IAED;;;;OAIG;IACH,oBAAoB,CAAC,GAAG,EAAE,sBAAsB,GAAG,KAAK,CA0BvD;IAED;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,iBAAiB,GAAG,UAAU,CAKlD;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CA0B3F;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,UAAU,CAExD;IAED;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,CAClB,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,iBAAiB,GAAG,SAAS,EACzC,GAAG,EAAE,kBAAkB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,sBAAsB,GACjG,KAAK,CAmBP;IAED;;;;;;;;;OASG;IACH,aAAa,CAAC,GAAG,EAAE,yBAAyB,GAAG,wBAAwB,GAAG,GAAG,EAAE,CAsB9E;IAED;;;;;;;OAOG;IACH,uBAAuB,CAAC,GAAG,EAAE,yBAAyB,GAAG,UAAU,CAKlE;IAED;;;;OAIG;IACH,+BAA+B,CAAC,GAAG,EAAE,iCAAiC,4CAMrE;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,KAAK,EAAE,CAErD;IAED;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,gCAK7C;IAED;;;;OAIG;IACH,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,8BAKzC;IAED;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,yBAAyB,oCAKrD;IAED;;;;OAIG;IACH,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,mCAEjD;IAED;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,0BAA0B,uCAEvD;IAED;;;;;;;OAOG;IACH,sBAAsB,CAAC,GAAG,EAAE,wBAAwB,GAAG,UAAU,CAKhE;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,GAAG,UAAU,CAM1D;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAEpD;IAED;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAEvD;IAED;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAEtD;IAED;;;;OAIG;IACH,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAEpD;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,KAAK,CAI3C;CACF;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,8BAAsB,UAAU,CAAC,CAAC,GAAG,MAAM;IACzC,QAAQ,EAAE,CAAC,CAAC;IAEZ;;OAEG;IACH,YAAY,QAAQ,EAAE,CAAC,EAEtB;IAED;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC;IACpC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3C;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAC5B,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC;AAEhG;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,kBAAkB,EAA+B,CAAC;AAEpG;;;;;;GAMG;AACH,qBAAa,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACxG;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAC9B;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,YAAY,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,EAItE;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBvC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAM9D;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,GAAG,QAa5B;IACD;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CA+CzB;IAED;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,CAWnD;IAED;;;OAGG;IACH,iBAAiB,WAEhB;IAED;;;OAGG;IACH,gBAAgB,MAEf;IAED;;OAEG;IACH,QAAQ,WAKP;CACF;AAED;;;;GAIG;AACH,8BAAsB,iBAAiB,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IAC9D;;OAEG;IACH,QAAQ,EAAE,UAAU,EAAE,CAAM;IAE5B;;;OAGG;IACH,YAAY,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAG9C;IAED;;OAEG;IACH,QAAQ,CAAC,KAAK,GAAE,MAAU,UAKzB;CACF;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,iBAAiB,CAAC,KAAK,CAAC;IACzD;;OAEG;IACH,YAAY,QAAQ,EAAE,UAAU,EAAE,EAEjC;IAED;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAOzB;CACF;AAED;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,iBAAiB,CAAC,IAAI,CAAC;IACvD;;OAEG;IACH,YAAY,QAAQ,EAAE,UAAU,EAAE,EAEjC;IAED;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAOzB;CACF;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC;IACjE;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,YAAY,KAAK,EAAE,OAAO,EAGzB;IAED;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAE1B;IAED;;OAEG;IACH,QAAQ,IAAI,MAAM,CAEjB;CACF;AA8ED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IAcvB,SAAS,CAAC,GAAG,EAAE,MAAM;IAbvB,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC;IAC/B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAErC;;;;;;OAMG;IACH,YACY,GAAG,EAAE,MAAM,EACrB,OAAO,GAAE,iBAA2C,EAQrD;IAED;;;OAGG;IACH,SAAS,IAAI,MAAM,CAElB;IAED;;;;;OAKG;IACH,YAAY,YAOX;IAED;;;;;OAKG;IACH,QAAQ,WAEP;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK,GAAE,MAAW,EAAE,IAAI,GAAE,IAAI,GAAG,KAAa,GAAG,IAAI,CAsC1D;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,aAAa,IAAI,UAAU,CAE1B;IAED;;;OAGG;IACH,QAAQ,IAAI,KAAK,CAKhB;IAED;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,WAEf;IAED;;;;OAIG;IACH,WAAW,CAAC,IAAI,GAAE,SAAqB,GAAG,MAAM,CAc/C;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAgB,SAAQ,cAAc;IACjD;;;OAGG;IACH,YAAY,GAAG,EAAE,MAAM,EAItB;IAED;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAKzB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,QAQzC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAC1C,OAAO,EAAE,wBAAwB,CAAC;IAE1C;;;OAGG;IACH,YAAY,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,wBAAyD,EAE5F;IAED;;;;;OAKG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,GAAE,OAAc,GAAG,OAAO,CAIlD;IAED;;;OAGG;IACH,eAAe,IAAI,OAAO,CAEzB;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,2BAA2B,CACtC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CACjD,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IAQ7B,SAAS,CAAC,OAAO,EAAE,wBAAwB;IAP7C;;;;;OAKG;IACH,YACY,OAAO,EAAE,wBAAwB,EAC3C,EAAE,EAAE,CAAC,EACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,GAAG,EAGX;IAED;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CASzB;CACF;AAED;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,QAE1B;IAED;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,QAE/B;IAED;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,GAAG,uCAK3B;IAED;;;;OAIG;IACH,+BAA+B,CAAC,GAAG,EAAE,GAAG,oCAMvC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,qCAKzB;IAED;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,GAAG,2CAK/B;IAED;;;;OAIG;IACH,qBAAqB,CAAC,GAAG,EAAE,GAAG,0CAE7B;IAED;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,GAAG,8CAEhC;CACF;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,CAgCrE;AAOD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOrD;AAuFD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CA4E3D;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC,EAC5D,aAAa,EAAE,MAAM,EAAE,GACtB,IAAI,CAmBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAOtF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAMpE"}
|