astronomical 2.0.0 → 2.1.1-rc.1

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.
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeType = exports.TokenType = void 0;
3
4
  exports.tokenize = tokenize;
4
5
  exports.parse = parse;
5
6
  const _1 = require(".");
@@ -10,11 +11,48 @@ const log = debugLogEnabled ? {
10
11
  console.debug(...args);
11
12
  }
12
13
  } : undefined;
13
- const supportedIdentifiers = Object.fromEntries(Object.keys(nodeutils_1.VISITOR_KEYS).map(k => [k, k]));
14
+ // Optimize: create supportedIdentifiers directly instead of Object.fromEntries + map
15
+ const visitorKeys = Object.keys(nodeutils_1.VISITOR_KEYS);
16
+ const supportedIdentifiers = {};
17
+ for (let i = 0; i < visitorKeys.length; i++) {
18
+ const k = visitorKeys[i];
19
+ supportedIdentifiers[k] = k;
20
+ }
21
+ var TokenType;
22
+ (function (TokenType) {
23
+ TokenType[TokenType["IDENTIFIER"] = 0] = "IDENTIFIER";
24
+ TokenType[TokenType["WILDCARD"] = 1] = "WILDCARD";
25
+ TokenType[TokenType["DESCENDANT"] = 2] = "DESCENDANT";
26
+ TokenType[TokenType["CHILD"] = 3] = "CHILD";
27
+ TokenType[TokenType["PARENT"] = 4] = "PARENT";
28
+ TokenType[TokenType["AND"] = 5] = "AND";
29
+ TokenType[TokenType["OR"] = 6] = "OR";
30
+ TokenType[TokenType["EQUALS"] = 7] = "EQUALS";
31
+ TokenType[TokenType["LITERAL"] = 8] = "LITERAL";
32
+ TokenType[TokenType["ATTRIBUTESELECTOR"] = 9] = "ATTRIBUTESELECTOR";
33
+ TokenType[TokenType["RESOLVESELECTOR"] = 10] = "RESOLVESELECTOR";
34
+ TokenType[TokenType["BINDINGSELECTOR"] = 11] = "BINDINGSELECTOR";
35
+ TokenType[TokenType["FILTERBEGIN"] = 12] = "FILTERBEGIN";
36
+ TokenType[TokenType["FILTEREND"] = 13] = "FILTEREND";
37
+ TokenType[TokenType["SEPARATOR"] = 14] = "SEPARATOR";
38
+ TokenType[TokenType["PARAMETERSBEGIN"] = 15] = "PARAMETERSBEGIN";
39
+ TokenType[TokenType["PARAMETERSEND"] = 16] = "PARAMETERSEND";
40
+ TokenType[TokenType["FUNCTION"] = 17] = "FUNCTION";
41
+ })(TokenType || (exports.TokenType = TokenType = {}));
42
+ exports.NodeType = {
43
+ PARENT: 0xf1,
44
+ CHILD: 0xf2,
45
+ DESCENDANT: 0xf3,
46
+ AND: 0xf4,
47
+ OR: 0xf5,
48
+ EQUALS: 0xf6,
49
+ LITERAL: 0xf7,
50
+ FUNCTION: 0xf8
51
+ };
14
52
  function isIdentifierToken(token) {
15
53
  if (token == undefined)
16
54
  return false;
17
- if (token.type != "identifier" && token.type != "wildcard")
55
+ if (token.tokenType != TokenType.IDENTIFIER && token.tokenType != TokenType.WILDCARD)
18
56
  return false;
19
57
  if (!token.value)
20
58
  return false;
@@ -25,12 +63,10 @@ function isIdentifierToken(token) {
25
63
  return true;
26
64
  }
27
65
  const whitespace = " \n\r\t";
28
- function isCharacter(c) {
29
- const charcode = c.charCodeAt(0);
66
+ function isCharacter(charcode) {
30
67
  return (charcode >= 65 && charcode <= 90) || (charcode >= 97 && charcode <= 122);
31
68
  }
32
- function isInteger(c) {
33
- const charcode = c.charCodeAt(0);
69
+ function isInteger(charcode) {
34
70
  return (charcode >= 48 && charcode <= 57);
35
71
  }
36
72
  function tokenize(input) {
@@ -43,71 +79,71 @@ function tokenize(input) {
43
79
  break;
44
80
  if (input[s] == "/") {
45
81
  if (input[s + 1] == "/") {
46
- result.push({ type: "descendant" });
82
+ result.push({ tokenType: TokenType.DESCENDANT });
47
83
  s += 2;
48
84
  continue;
49
85
  }
50
- result.push({ type: "child" });
86
+ result.push({ tokenType: TokenType.CHILD });
51
87
  s++;
52
88
  continue;
53
89
  }
54
90
  if (input[s] == ":") {
55
- result.push({ type: "attributeSelector" });
91
+ result.push({ tokenType: TokenType.ATTRIBUTESELECTOR });
56
92
  s++;
57
93
  continue;
58
94
  }
59
95
  if (input[s] == "$" && input[s + 1] == "$") {
60
- result.push({ type: "resolveSelector" });
96
+ result.push({ tokenType: TokenType.RESOLVESELECTOR });
61
97
  s += 2;
62
98
  continue;
63
99
  }
64
100
  if (input[s] == "$") {
65
- result.push({ type: "bindingSelector" });
101
+ result.push({ tokenType: TokenType.BINDINGSELECTOR });
66
102
  s++;
67
103
  continue;
68
104
  }
69
105
  if (input[s] == "[") {
70
- result.push({ type: "filterBegin" });
106
+ result.push({ tokenType: TokenType.FILTERBEGIN });
71
107
  s++;
72
108
  continue;
73
109
  }
74
110
  if (input[s] == "]") {
75
- result.push({ type: "filterEnd" });
111
+ result.push({ tokenType: TokenType.FILTEREND });
76
112
  s++;
77
113
  continue;
78
114
  }
79
115
  if (input[s] == ",") {
80
- result.push({ type: "separator" });
116
+ result.push({ tokenType: TokenType.SEPARATOR });
81
117
  s++;
82
118
  continue;
83
119
  }
84
120
  if (input[s] == "(") {
85
- result.push({ type: "parametersBegin" });
121
+ result.push({ tokenType: TokenType.PARAMETERSBEGIN });
86
122
  s++;
87
123
  continue;
88
124
  }
89
125
  if (input[s] == "f" && input[s + 1] == "n" && input[s + 2] == ":") {
90
- result.push({ type: "function" });
126
+ result.push({ tokenType: TokenType.FUNCTION });
91
127
  s += 3;
92
128
  continue;
93
129
  }
94
130
  if (input[s] == ")") {
95
- result.push({ type: "parametersEnd" });
131
+ result.push({ tokenType: TokenType.PARAMETERSEND });
96
132
  s++;
97
133
  continue;
98
134
  }
99
135
  if (input[s] == "&" && input[s + 1] == "&") {
100
- result.push({ type: "and" });
136
+ result.push({ tokenType: TokenType.AND });
101
137
  s += 2;
102
138
  continue;
103
139
  }
104
140
  if (input[s] == "|" && input[s + 1] == "|") {
105
- result.push({ type: "or" });
141
+ result.push({ tokenType: TokenType.OR });
106
142
  s += 2;
107
143
  continue;
108
144
  }
109
145
  if (input[s] == "=" && input[s + 1] == "=") {
110
- result.push({ type: "eq" });
146
+ result.push({ tokenType: TokenType.EQUALS });
111
147
  s += 2;
112
148
  continue;
113
149
  }
@@ -117,32 +153,33 @@ function tokenize(input) {
117
153
  s++;
118
154
  while (s < input.length && input[s] != begin)
119
155
  s++;
120
- result.push({ type: "literal", value: input.slice(start + 1, s) });
156
+ result.push({ tokenType: TokenType.LITERAL, value: input.slice(start + 1, s) });
121
157
  s++;
122
158
  continue;
123
159
  }
124
160
  if (input[s] == "." && input[s + 1] == ".") {
125
- result.push({ type: "parent" });
161
+ result.push({ tokenType: TokenType.PARENT });
126
162
  s += 2;
127
163
  continue;
128
164
  }
129
165
  if (input[s] == "*") {
130
- result.push({ type: "wildcard", value: "*" });
166
+ result.push({ tokenType: TokenType.WILDCARD, value: "*" });
131
167
  s++;
132
168
  continue;
133
169
  }
134
- if (isCharacter(input[s])) {
170
+ const charCode = input.charCodeAt(s);
171
+ if (isCharacter(charCode)) {
135
172
  const start = s;
136
- while (s < input.length && isCharacter(input[s]))
173
+ while (s < input.length && isCharacter(input.charCodeAt(s)))
137
174
  s++;
138
- result.push({ type: "identifier", value: input.slice(start, s) });
175
+ result.push({ tokenType: TokenType.IDENTIFIER, value: input.slice(start, s) });
139
176
  continue;
140
177
  }
141
- if (isInteger(input[s])) {
178
+ if (isInteger(charCode)) {
142
179
  const start = s;
143
- while (s < input.length && isInteger(input[s]))
180
+ while (s < input.length && isInteger(input.charCodeAt(s)))
144
181
  s++;
145
- result.push({ type: "literal", value: input.slice(start, s) });
182
+ result.push({ tokenType: TokenType.LITERAL, value: input.slice(start, s) });
146
183
  continue;
147
184
  }
148
185
  throw new Error("Unexpected token: " + input[s]);
@@ -154,48 +191,48 @@ function buildFilter(tokens) {
154
191
  tokens.shift();
155
192
  const p = buildTree(tokens);
156
193
  const next = tokens[0];
157
- if (next.type == "and") {
194
+ if (next.tokenType == TokenType.AND) {
158
195
  return {
159
- type: "and",
196
+ type: exports.NodeType.AND,
160
197
  left: p,
161
198
  right: buildFilter(tokens)
162
199
  };
163
200
  }
164
- if (next.type == "or") {
201
+ if (next.tokenType == TokenType.OR) {
165
202
  return {
166
- type: "or",
203
+ type: exports.NodeType.OR,
167
204
  left: p,
168
205
  right: buildFilter(tokens)
169
206
  };
170
207
  }
171
- if (next.type == "eq") {
208
+ if (next.tokenType == TokenType.EQUALS) {
172
209
  const right = buildFilter(tokens);
173
- if (right.type == "or" || right.type == "and") {
210
+ if (right.type == exports.NodeType.OR || right.type == exports.NodeType.AND) {
174
211
  return {
175
212
  type: right.type,
176
213
  left: {
177
- type: "equals",
214
+ type: exports.NodeType.EQUALS,
178
215
  left: p,
179
216
  right: right.left
180
217
  },
181
218
  right: right.right
182
219
  };
183
220
  }
184
- if (right.type == "equals")
221
+ if (right.type == exports.NodeType.EQUALS)
185
222
  throw new Error("Unexpected equals in equals");
186
223
  return {
187
- type: "equals",
224
+ type: exports.NodeType.EQUALS,
188
225
  left: p,
189
226
  right: right
190
227
  };
191
228
  }
192
- if (next.type == "filterEnd") {
229
+ if (next.tokenType == TokenType.FILTEREND) {
193
230
  tokens.shift();
194
231
  return p;
195
232
  }
196
- throw new Error("Unexpected token in filter: " + next?.type);
233
+ throw new Error("Unexpected token in filter: " + next?.tokenType);
197
234
  }
198
- const subNodes = ["child", "descendant"];
235
+ const subNodes = [TokenType.CHILD, TokenType.DESCENDANT];
199
236
  function buildTree(tokens) {
200
237
  log?.debug("BUILD TREE", tokens);
201
238
  if (tokens.length == 0)
@@ -203,53 +240,60 @@ function buildTree(tokens) {
203
240
  const token = tokens.shift();
204
241
  if (token == undefined)
205
242
  throw new Error("Unexpected end of input");
206
- if (token.type == "parent") {
243
+ if (token.tokenType == TokenType.PARENT) {
207
244
  return {
208
- type: "parent",
245
+ type: exports.NodeType.PARENT,
209
246
  child: buildTree(tokens)
210
247
  };
211
248
  }
212
- if (subNodes.includes(token.type)) {
249
+ if (subNodes.includes(token.tokenType)) {
213
250
  let next = tokens.shift();
214
- if (next?.type == "function") {
251
+ if (next?.tokenType == TokenType.FUNCTION) {
215
252
  const name = tokens.shift();
216
- if (name == undefined || name.type != "identifier" || name.value == undefined || typeof (name.value) != "string")
217
- throw new Error("Unexpected token: " + name?.type + ". Expecting function name");
253
+ if (name == undefined || name.tokenType != TokenType.IDENTIFIER || name.value == undefined || typeof (name.value) != "string")
254
+ throw new Error("Unexpected token: " + name?.tokenType + ". Expecting function name");
218
255
  const value = name.value;
219
256
  if (!(0, _1.isAvailableFunction)(value)) {
220
257
  throw new Error("Unsupported function: " + name.value);
221
258
  }
222
259
  return buildFunctionCall(value, tokens);
223
260
  }
224
- if (next?.type == "parent") {
225
- return { type: "parent", child: buildTree(tokens) };
261
+ if (next?.tokenType == TokenType.PARENT) {
262
+ return { type: exports.NodeType.PARENT, child: buildTree(tokens) };
226
263
  }
227
264
  const modifiers = [];
228
- while (next && (next?.type == "attributeSelector" || next?.type == "bindingSelector" || next?.type == "resolveSelector")) {
265
+ while (next && (next?.tokenType == TokenType.ATTRIBUTESELECTOR || next?.tokenType == TokenType.BINDINGSELECTOR || next?.tokenType == TokenType.RESOLVESELECTOR)) {
229
266
  modifiers.push(next);
230
267
  next = tokens.shift();
231
268
  }
232
- const isAttribute = modifiers.some(m => m.type == "attributeSelector");
233
- const isBinding = modifiers.some(m => m.type == "bindingSelector");
234
- const isResolve = modifiers.some(m => m.type == "resolveSelector");
269
+ const isAttribute = modifiers.some(m => m.tokenType == TokenType.ATTRIBUTESELECTOR);
270
+ const isBinding = modifiers.some(m => m.tokenType == TokenType.BINDINGSELECTOR);
271
+ const isResolve = modifiers.some(m => m.tokenType == TokenType.RESOLVESELECTOR);
235
272
  if (isResolve && isBinding)
236
273
  throw new Error("Cannot have both resolve and binding");
237
274
  if (!next || !next.value || (!isAttribute && !isIdentifierToken(next)))
238
- throw new Error("Unexpected or missing token: " + next?.type);
275
+ throw new Error("Unexpected or missing token: " + next?.tokenType);
239
276
  const identifer = next.value;
240
277
  let filter = undefined;
241
- if (tokens.length > 0 && tokens[0].type == "filterBegin") {
278
+ if (tokens.length > 0 && tokens[0].tokenType == TokenType.FILTERBEGIN) {
242
279
  filter = buildFilter(tokens);
243
280
  log?.debug("FILTER", filter, tokens);
244
281
  }
245
282
  let child = undefined;
246
- if (tokens.length > 0 && subNodes.includes(tokens[0].type)) {
283
+ if (tokens.length > 0 && subNodes.includes(tokens[0].tokenType)) {
247
284
  child = buildTree(tokens);
248
285
  }
249
286
  if (typeof (identifer) != "string")
250
287
  throw new Error("Identifier must be a string");
288
+ let nodeType = exports.NodeType.CHILD;
289
+ if (token.tokenType == TokenType.DESCENDANT) {
290
+ nodeType = exports.NodeType.DESCENDANT;
291
+ }
292
+ else if (token.tokenType != TokenType.CHILD) {
293
+ throw new Error("Unexpected token:" + token.tokenType);
294
+ }
251
295
  return {
252
- type: token.type,
296
+ type: nodeType,
253
297
  value: identifer,
254
298
  attribute: isAttribute,
255
299
  binding: isBinding,
@@ -258,30 +302,30 @@ function buildTree(tokens) {
258
302
  child: child
259
303
  };
260
304
  }
261
- if (token.type == "literal") {
305
+ if (token.tokenType == TokenType.LITERAL) {
262
306
  return {
263
- type: "literal",
307
+ type: exports.NodeType.LITERAL,
264
308
  value: token.value
265
309
  };
266
310
  }
267
- throw new Error("Unexpected token: " + token.type);
311
+ throw new Error("Unexpected token: " + token.tokenType);
268
312
  }
269
313
  function buildFunctionCall(name, tokens) {
270
314
  log?.debug("BUILD FUNCTION", name, tokens);
271
315
  const parameters = [];
272
316
  const next = tokens.shift();
273
- if (next?.type != "parametersBegin")
274
- throw new Error("Unexpected token: " + next?.type);
275
- while (tokens.length > 0 && tokens[0].type != "parametersEnd") {
317
+ if (next?.tokenType != TokenType.PARAMETERSBEGIN)
318
+ throw new Error("Unexpected token: " + next?.tokenType);
319
+ while (tokens.length > 0 && tokens[0].tokenType != TokenType.PARAMETERSEND) {
276
320
  parameters.push(buildTree(tokens));
277
- if (tokens[0].type == "separator")
321
+ if (tokens[0].tokenType == TokenType.SEPARATOR)
278
322
  tokens.shift();
279
323
  }
280
324
  if (tokens.length == 0)
281
325
  throw new Error("Unexpected end of input");
282
326
  tokens.shift();
283
327
  return {
284
- type: "function",
328
+ type: exports.NodeType.FUNCTION,
285
329
  function: name,
286
330
  parameters: parameters
287
331
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,40 @@
1
1
  import { AvailableFunction } from ".";
2
+ export declare enum TokenType {
3
+ IDENTIFIER = 0,
4
+ WILDCARD = 1,
5
+ DESCENDANT = 2,
6
+ CHILD = 3,
7
+ PARENT = 4,
8
+ AND = 5,
9
+ OR = 6,
10
+ EQUALS = 7,
11
+ LITERAL = 8,
12
+ ATTRIBUTESELECTOR = 9,
13
+ RESOLVESELECTOR = 10,
14
+ BINDINGSELECTOR = 11,
15
+ FILTERBEGIN = 12,
16
+ FILTEREND = 13,
17
+ SEPARATOR = 14,
18
+ PARAMETERSBEGIN = 15,
19
+ PARAMETERSEND = 16,
20
+ FUNCTION = 17
21
+ }
22
+ export declare const NodeType: {
23
+ readonly PARENT: 241;
24
+ readonly CHILD: 242;
25
+ readonly DESCENDANT: 243;
26
+ readonly AND: 244;
27
+ readonly OR: 245;
28
+ readonly EQUALS: 246;
29
+ readonly LITERAL: 247;
30
+ readonly FUNCTION: 248;
31
+ };
2
32
  type Token = {
3
- type: string;
33
+ tokenType: TokenType;
4
34
  value?: string;
5
35
  };
6
36
  export declare function tokenize(input: string): Token[];
7
37
  type BaseNode = {
8
- type: string;
9
38
  attribute?: boolean;
10
39
  binding?: boolean;
11
40
  resolve?: boolean;
@@ -14,25 +43,25 @@ type BaseNode = {
14
43
  child?: QNode;
15
44
  };
16
45
  export type Selector = BaseNode & ({
17
- type: "child" | "descendant";
46
+ type: typeof NodeType.CHILD | typeof NodeType.DESCENDANT;
18
47
  attribute: boolean;
19
48
  binding: boolean;
20
49
  value: string;
21
50
  resolve: boolean;
22
51
  } | {
23
- type: "parent";
52
+ type: typeof NodeType.PARENT;
24
53
  });
25
54
  export type Condition = BaseNode & {
26
- type: "and" | "or" | "equals";
55
+ type: typeof NodeType.AND | typeof NodeType.OR | typeof NodeType.EQUALS;
27
56
  left: QNode;
28
57
  right: QNode;
29
58
  };
30
59
  export type Literal = BaseNode & {
31
- type: "literal";
60
+ type: typeof NodeType.LITERAL;
32
61
  value: string;
33
62
  };
34
63
  export type FunctionCall = BaseNode & {
35
- type: "function";
64
+ type: typeof NodeType.FUNCTION;
36
65
  function: AvailableFunction;
37
66
  parameters: QNode[];
38
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parseQuery.d.ts","sourceRoot":"","sources":["../../../src/parseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuB,MAAM,GAAG,CAAC;AAa3D,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAA;AA2BD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAI,KAAK,EAAE,CA8GhD;AACD,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;IACjC,IAAI,EAAE,OAAO,GAAG,YAAY,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG;IACF,IAAI,EAAE,QAAQ,CAAA;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG;IACjC,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,KAAK,EAAE,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAE;AAyInE,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAM1C"}
1
+ {"version":3,"file":"parseQuery.d.ts","sourceRoot":"","sources":["../../../src/parseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuB,MAAM,GAAG,CAAC;AAmB3D,oBAAY,SAAS;IACnB,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,UAAU,IAAA;IACV,KAAK,IAAA;IACL,MAAM,IAAA;IACN,GAAG,IAAA;IACH,EAAE,IAAA;IACF,MAAM,IAAA;IACN,OAAO,IAAA;IACP,iBAAiB,IAAA;IACjB,eAAe,KAAA;IACf,eAAe,KAAA;IACf,WAAW,KAAA;IACX,SAAS,KAAA;IACT,SAAS,KAAA;IACT,eAAe,KAAA;IACf,aAAa,KAAA;IACb,QAAQ,KAAA;CACT;AAED,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAIX,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAA;AAyBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAI,KAAK,EAAE,CA+GhD;AACD,KAAK,QAAQ,GAAG;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAA;AAKD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;IACjC,IAAI,EAAE,OAAO,QAAQ,CAAC,KAAK,GAAG,OAAO,QAAQ,CAAC,UAAU,CAAC;IACzD,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG;IACF,IAAI,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAA;CAC7B,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG;IACjC,IAAI,EAAE,OAAO,QAAQ,CAAC,GAAG,GAAG,OAAO,QAAQ,CAAC,EAAE,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC;IACxE,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG;IAC/B,IAAI,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG;IACpC,IAAI,EAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,KAAK,EAAE,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAE;AA+InE,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAM1C"}