@ahsankhanamu/json-transformer 0.1.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.
Files changed (49) hide show
  1. package/dist/ast.d.ts +259 -0
  2. package/dist/ast.d.ts.map +1 -0
  3. package/dist/ast.js +12 -0
  4. package/dist/ast.js.map +1 -0
  5. package/dist/codegen/base.d.ts +83 -0
  6. package/dist/codegen/base.d.ts.map +1 -0
  7. package/dist/codegen/base.js +494 -0
  8. package/dist/codegen/base.js.map +1 -0
  9. package/dist/codegen/index.d.ts +35 -0
  10. package/dist/codegen/index.d.ts.map +1 -0
  11. package/dist/codegen/index.js +42 -0
  12. package/dist/codegen/index.js.map +1 -0
  13. package/dist/codegen/library.d.ts +42 -0
  14. package/dist/codegen/library.d.ts.map +1 -0
  15. package/dist/codegen/library.js +406 -0
  16. package/dist/codegen/library.js.map +1 -0
  17. package/dist/codegen/native.d.ts +33 -0
  18. package/dist/codegen/native.d.ts.map +1 -0
  19. package/dist/codegen/native.js +452 -0
  20. package/dist/codegen/native.js.map +1 -0
  21. package/dist/codegen.d.ts +13 -0
  22. package/dist/codegen.d.ts.map +1 -0
  23. package/dist/codegen.js +12 -0
  24. package/dist/codegen.js.map +1 -0
  25. package/dist/index.d.ts +257 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +231 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/lexer.d.ts +37 -0
  30. package/dist/lexer.d.ts.map +1 -0
  31. package/dist/lexer.js +499 -0
  32. package/dist/lexer.js.map +1 -0
  33. package/dist/parser.d.ts +63 -0
  34. package/dist/parser.d.ts.map +1 -0
  35. package/dist/parser.js +1045 -0
  36. package/dist/parser.js.map +1 -0
  37. package/dist/playground.d.ts +6 -0
  38. package/dist/playground.d.ts.map +1 -0
  39. package/dist/playground.js +216 -0
  40. package/dist/playground.js.map +1 -0
  41. package/dist/runtime.d.ts +229 -0
  42. package/dist/runtime.d.ts.map +1 -0
  43. package/dist/runtime.js +933 -0
  44. package/dist/runtime.js.map +1 -0
  45. package/dist/tokens.d.ts +80 -0
  46. package/dist/tokens.d.ts.map +1 -0
  47. package/dist/tokens.js +88 -0
  48. package/dist/tokens.js.map +1 -0
  49. package/package.json +30 -0
package/dist/lexer.js ADDED
@@ -0,0 +1,499 @@
1
+ /**
2
+ * Lexer - Tokenizes input string into tokens
3
+ */
4
+ import { TokenType, KEYWORDS } from './tokens.js';
5
+ export class LexerError extends Error {
6
+ line;
7
+ column;
8
+ offset;
9
+ constructor(message, line, column, offset) {
10
+ super(`Lexer error at line ${line}, column ${column}: ${message}`);
11
+ this.line = line;
12
+ this.column = column;
13
+ this.offset = offset;
14
+ this.name = 'LexerError';
15
+ }
16
+ }
17
+ export class Lexer {
18
+ input;
19
+ pos = 0;
20
+ line = 1;
21
+ column = 1;
22
+ tokens = [];
23
+ constructor(input) {
24
+ this.input = input;
25
+ }
26
+ tokenize() {
27
+ while (!this.isAtEnd()) {
28
+ this.skipWhitespaceAndComments();
29
+ if (this.isAtEnd())
30
+ break;
31
+ this.scanToken();
32
+ }
33
+ this.tokens.push(this.makeToken(TokenType.EOF, ''));
34
+ return this.tokens;
35
+ }
36
+ scanToken() {
37
+ const char = this.peek();
38
+ const start = this.pos;
39
+ const startLine = this.line;
40
+ const startColumn = this.column;
41
+ // Multi-character operators first
42
+ if (this.match('...')) {
43
+ this.addToken(TokenType.SPREAD, '...', start, startLine, startColumn);
44
+ return;
45
+ }
46
+ if (this.match('$$')) {
47
+ this.addToken(TokenType.DOLLAR_DOLLAR, '$$', start, startLine, startColumn);
48
+ return;
49
+ }
50
+ if (this.match('?.')) {
51
+ this.addToken(TokenType.QUESTION_DOT, '?.', start, startLine, startColumn);
52
+ return;
53
+ }
54
+ if (this.match('?[')) {
55
+ this.addToken(TokenType.QUESTION_BRACKET, '?[', start, startLine, startColumn);
56
+ return;
57
+ }
58
+ if (this.match('??')) {
59
+ this.addToken(TokenType.QUESTION_QUESTION, '??', start, startLine, startColumn);
60
+ return;
61
+ }
62
+ if (this.match('=>')) {
63
+ this.addToken(TokenType.ARROW, '=>', start, startLine, startColumn);
64
+ return;
65
+ }
66
+ if (this.match('===')) {
67
+ this.addToken(TokenType.STRICT_EQ, '===', start, startLine, startColumn);
68
+ return;
69
+ }
70
+ if (this.match('==')) {
71
+ this.addToken(TokenType.EQ, '==', start, startLine, startColumn);
72
+ return;
73
+ }
74
+ if (this.match('!==')) {
75
+ this.addToken(TokenType.STRICT_NEQ, '!==', start, startLine, startColumn);
76
+ return;
77
+ }
78
+ if (this.match('!=')) {
79
+ this.addToken(TokenType.NEQ, '!=', start, startLine, startColumn);
80
+ return;
81
+ }
82
+ // Single = (assignment) - must come after == check
83
+ if (char === '=' && this.peekNext() !== '=') {
84
+ this.advance();
85
+ this.addToken(TokenType.ASSIGN, '=', start, startLine, startColumn);
86
+ return;
87
+ }
88
+ if (this.match('<=')) {
89
+ this.addToken(TokenType.LTE, '<=', start, startLine, startColumn);
90
+ return;
91
+ }
92
+ if (this.match('>=')) {
93
+ this.addToken(TokenType.GTE, '>=', start, startLine, startColumn);
94
+ return;
95
+ }
96
+ if (this.match('&&')) {
97
+ this.addToken(TokenType.AND_AND, '&&', start, startLine, startColumn);
98
+ return;
99
+ }
100
+ if (this.match('||')) {
101
+ this.addToken(TokenType.OR_OR, '||', start, startLine, startColumn);
102
+ return;
103
+ }
104
+ // Single character tokens
105
+ switch (char) {
106
+ case '+':
107
+ this.advance();
108
+ this.addToken(TokenType.PLUS, '+', start, startLine, startColumn);
109
+ return;
110
+ case '-':
111
+ this.advance();
112
+ this.addToken(TokenType.MINUS, '-', start, startLine, startColumn);
113
+ return;
114
+ case '*':
115
+ this.advance();
116
+ this.addToken(TokenType.STAR, '*', start, startLine, startColumn);
117
+ return;
118
+ case '/':
119
+ this.advance();
120
+ this.addToken(TokenType.SLASH, '/', start, startLine, startColumn);
121
+ return;
122
+ case '%':
123
+ this.advance();
124
+ this.addToken(TokenType.PERCENT, '%', start, startLine, startColumn);
125
+ return;
126
+ case '&':
127
+ this.advance();
128
+ this.addToken(TokenType.AMPERSAND, '&', start, startLine, startColumn);
129
+ return;
130
+ case '<':
131
+ this.advance();
132
+ this.addToken(TokenType.LT, '<', start, startLine, startColumn);
133
+ return;
134
+ case '>':
135
+ this.advance();
136
+ this.addToken(TokenType.GT, '>', start, startLine, startColumn);
137
+ return;
138
+ case '!':
139
+ this.advance();
140
+ this.addToken(TokenType.BANG, '!', start, startLine, startColumn);
141
+ return;
142
+ case '?':
143
+ this.advance();
144
+ this.addToken(TokenType.QUESTION, '?', start, startLine, startColumn);
145
+ return;
146
+ case ':':
147
+ this.advance();
148
+ this.addToken(TokenType.COLON, ':', start, startLine, startColumn);
149
+ return;
150
+ case '|':
151
+ this.advance();
152
+ this.addToken(TokenType.PIPE, '|', start, startLine, startColumn);
153
+ return;
154
+ case '.':
155
+ this.advance();
156
+ this.addToken(TokenType.DOT, '.', start, startLine, startColumn);
157
+ return;
158
+ case ',':
159
+ this.advance();
160
+ this.addToken(TokenType.COMMA, ',', start, startLine, startColumn);
161
+ return;
162
+ case ';':
163
+ this.advance();
164
+ this.addToken(TokenType.SEMICOLON, ';', start, startLine, startColumn);
165
+ return;
166
+ case '(':
167
+ this.advance();
168
+ this.addToken(TokenType.LPAREN, '(', start, startLine, startColumn);
169
+ return;
170
+ case ')':
171
+ this.advance();
172
+ this.addToken(TokenType.RPAREN, ')', start, startLine, startColumn);
173
+ return;
174
+ case '[':
175
+ this.advance();
176
+ this.addToken(TokenType.LBRACKET, '[', start, startLine, startColumn);
177
+ return;
178
+ case ']':
179
+ this.advance();
180
+ this.addToken(TokenType.RBRACKET, ']', start, startLine, startColumn);
181
+ return;
182
+ case '{':
183
+ this.advance();
184
+ this.addToken(TokenType.LBRACE, '{', start, startLine, startColumn);
185
+ return;
186
+ case '}':
187
+ this.advance();
188
+ this.addToken(TokenType.RBRACE, '}', start, startLine, startColumn);
189
+ return;
190
+ case '$':
191
+ // Check if this is a context variable like $index, $item, etc.
192
+ if (this.isIdentifierStart(this.peekNext()) || this.peekNext() === '$') {
193
+ // Let it fall through to identifier scanning
194
+ break;
195
+ }
196
+ this.advance();
197
+ this.addToken(TokenType.DOLLAR, '$', start, startLine, startColumn);
198
+ return;
199
+ case '^':
200
+ this.advance();
201
+ this.addToken(TokenType.CARET, '^', start, startLine, startColumn);
202
+ return;
203
+ }
204
+ // Strings
205
+ if (char === '"' || char === "'") {
206
+ this.scanString(char);
207
+ return;
208
+ }
209
+ // Template literals
210
+ if (char === '`') {
211
+ this.scanTemplateLiteral();
212
+ return;
213
+ }
214
+ // Numbers
215
+ if (this.isDigit(char) || (char === '-' && this.isDigit(this.peekNext()))) {
216
+ this.scanNumber();
217
+ return;
218
+ }
219
+ // Identifiers and keywords
220
+ if (this.isIdentifierStart(char)) {
221
+ this.scanIdentifier();
222
+ return;
223
+ }
224
+ throw new LexerError(`Unexpected character: '${char}'`, this.line, this.column, this.pos);
225
+ }
226
+ scanString(quote) {
227
+ const start = this.pos;
228
+ const startLine = this.line;
229
+ const startColumn = this.column;
230
+ this.advance(); // consume opening quote
231
+ let value = '';
232
+ while (!this.isAtEnd() && this.peek() !== quote) {
233
+ if (this.peek() === '\\') {
234
+ this.advance();
235
+ if (this.isAtEnd())
236
+ break;
237
+ const escaped = this.advance();
238
+ switch (escaped) {
239
+ case 'n':
240
+ value += '\n';
241
+ break;
242
+ case 'r':
243
+ value += '\r';
244
+ break;
245
+ case 't':
246
+ value += '\t';
247
+ break;
248
+ case 'b':
249
+ value += '\b';
250
+ break;
251
+ case 'f':
252
+ value += '\f';
253
+ break;
254
+ case '\\':
255
+ value += '\\';
256
+ break;
257
+ case '"':
258
+ value += '"';
259
+ break;
260
+ case "'":
261
+ value += "'";
262
+ break;
263
+ case 'u': {
264
+ const hex = this.input.slice(this.pos, this.pos + 4);
265
+ if (/^[0-9a-fA-F]{4}$/.test(hex)) {
266
+ value += String.fromCharCode(parseInt(hex, 16));
267
+ this.pos += 4;
268
+ this.column += 4;
269
+ }
270
+ else {
271
+ value += '\\u' + hex;
272
+ }
273
+ break;
274
+ }
275
+ default:
276
+ value += escaped;
277
+ }
278
+ }
279
+ else {
280
+ if (this.peek() === '\n') {
281
+ this.line++;
282
+ this.column = 0;
283
+ }
284
+ value += this.advance();
285
+ }
286
+ }
287
+ if (this.isAtEnd()) {
288
+ throw new LexerError('Unterminated string', startLine, startColumn, start);
289
+ }
290
+ this.advance(); // consume closing quote
291
+ this.addToken(TokenType.STRING, value, start, startLine, startColumn);
292
+ }
293
+ scanTemplateLiteral() {
294
+ const start = this.pos;
295
+ const startLine = this.line;
296
+ const startColumn = this.column;
297
+ this.advance(); // consume opening backtick
298
+ let value = '';
299
+ let _hasInterpolation = false;
300
+ while (!this.isAtEnd() && this.peek() !== '`') {
301
+ if (this.peek() === '$' && this.peekNext() === '{') {
302
+ _hasInterpolation = true;
303
+ // For now, just include interpolation as-is
304
+ // Full implementation would tokenize the contents
305
+ value += this.advance(); // $
306
+ value += this.advance(); // {
307
+ let braceDepth = 1;
308
+ while (!this.isAtEnd() && braceDepth > 0) {
309
+ const ch = this.advance();
310
+ value += ch;
311
+ if (ch === '{')
312
+ braceDepth++;
313
+ if (ch === '}')
314
+ braceDepth--;
315
+ }
316
+ }
317
+ else if (this.peek() === '\\') {
318
+ this.advance();
319
+ if (!this.isAtEnd()) {
320
+ const escaped = this.advance();
321
+ switch (escaped) {
322
+ case 'n':
323
+ value += '\n';
324
+ break;
325
+ case 'r':
326
+ value += '\r';
327
+ break;
328
+ case 't':
329
+ value += '\t';
330
+ break;
331
+ case '`':
332
+ value += '`';
333
+ break;
334
+ case '\\':
335
+ value += '\\';
336
+ break;
337
+ case '$':
338
+ value += '$';
339
+ break;
340
+ default:
341
+ value += '\\' + escaped;
342
+ }
343
+ }
344
+ }
345
+ else {
346
+ if (this.peek() === '\n') {
347
+ this.line++;
348
+ this.column = 0;
349
+ }
350
+ value += this.advance();
351
+ }
352
+ }
353
+ if (this.isAtEnd()) {
354
+ throw new LexerError('Unterminated template literal', startLine, startColumn, start);
355
+ }
356
+ this.advance(); // consume closing backtick
357
+ this.addToken(TokenType.TEMPLATE_STRING, value, start, startLine, startColumn);
358
+ }
359
+ scanNumber() {
360
+ const start = this.pos;
361
+ const startLine = this.line;
362
+ const startColumn = this.column;
363
+ if (this.peek() === '-')
364
+ this.advance();
365
+ // Integer part
366
+ while (this.isDigit(this.peek())) {
367
+ this.advance();
368
+ }
369
+ // Decimal part
370
+ if (this.peek() === '.' && this.isDigit(this.peekNext())) {
371
+ this.advance(); // consume '.'
372
+ while (this.isDigit(this.peek())) {
373
+ this.advance();
374
+ }
375
+ }
376
+ // Exponent part
377
+ if (this.peek() === 'e' || this.peek() === 'E') {
378
+ this.advance();
379
+ if (this.peek() === '+' || this.peek() === '-') {
380
+ this.advance();
381
+ }
382
+ while (this.isDigit(this.peek())) {
383
+ this.advance();
384
+ }
385
+ }
386
+ const value = this.input.slice(start, this.pos);
387
+ this.addToken(TokenType.NUMBER, value, start, startLine, startColumn);
388
+ }
389
+ scanIdentifier() {
390
+ const start = this.pos;
391
+ const startLine = this.line;
392
+ const startColumn = this.column;
393
+ while (this.isIdentifierPart(this.peek())) {
394
+ this.advance();
395
+ }
396
+ const value = this.input.slice(start, this.pos);
397
+ const type = KEYWORDS[value] ?? TokenType.IDENTIFIER;
398
+ this.addToken(type, value, start, startLine, startColumn);
399
+ }
400
+ skipWhitespaceAndComments() {
401
+ while (!this.isAtEnd()) {
402
+ const char = this.peek();
403
+ if (char === ' ' || char === '\t' || char === '\r') {
404
+ this.advance();
405
+ }
406
+ else if (char === '\n') {
407
+ this.line++;
408
+ this.column = 0;
409
+ this.advance();
410
+ }
411
+ else if (char === '/' && this.peekNext() === '/') {
412
+ // Single-line comment
413
+ while (!this.isAtEnd() && this.peek() !== '\n') {
414
+ this.advance();
415
+ }
416
+ }
417
+ else if (char === '/' && this.peekNext() === '*') {
418
+ // Multi-line comment
419
+ this.advance(); // /
420
+ this.advance(); // *
421
+ while (!this.isAtEnd() && !(this.peek() === '*' && this.peekNext() === '/')) {
422
+ if (this.peek() === '\n') {
423
+ this.line++;
424
+ this.column = 0;
425
+ }
426
+ this.advance();
427
+ }
428
+ if (!this.isAtEnd()) {
429
+ this.advance(); // *
430
+ this.advance(); // /
431
+ }
432
+ }
433
+ else {
434
+ break;
435
+ }
436
+ }
437
+ }
438
+ // Helper methods
439
+ isAtEnd() {
440
+ return this.pos >= this.input.length;
441
+ }
442
+ peek() {
443
+ if (this.isAtEnd())
444
+ return '\0';
445
+ return this.input[this.pos];
446
+ }
447
+ peekNext() {
448
+ if (this.pos + 1 >= this.input.length)
449
+ return '\0';
450
+ return this.input[this.pos + 1];
451
+ }
452
+ advance() {
453
+ const char = this.input[this.pos];
454
+ this.pos++;
455
+ this.column++;
456
+ return char;
457
+ }
458
+ match(expected) {
459
+ if (this.input.slice(this.pos, this.pos + expected.length) === expected) {
460
+ this.pos += expected.length;
461
+ this.column += expected.length;
462
+ return true;
463
+ }
464
+ return false;
465
+ }
466
+ isDigit(char) {
467
+ return char >= '0' && char <= '9';
468
+ }
469
+ isIdentifierStart(char) {
470
+ return ((char >= 'a' && char <= 'z') || (char >= 'A' && char <= 'Z') || char === '_' || char === '$');
471
+ }
472
+ isIdentifierPart(char) {
473
+ return this.isIdentifierStart(char) || this.isDigit(char);
474
+ }
475
+ makeToken(type, value) {
476
+ return {
477
+ type,
478
+ value,
479
+ line: this.line,
480
+ column: this.column,
481
+ start: this.pos,
482
+ end: this.pos,
483
+ };
484
+ }
485
+ addToken(type, value, start, line, column) {
486
+ this.tokens.push({
487
+ type,
488
+ value,
489
+ line,
490
+ column,
491
+ start,
492
+ end: this.pos,
493
+ });
494
+ }
495
+ }
496
+ export function tokenize(input) {
497
+ return new Lexer(input).tokenize();
498
+ }
499
+ //# sourceMappingURL=lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Parser - Recursive Descent Parser
3
+ * Produces AST from tokens
4
+ */
5
+ import { Token } from './tokens.js';
6
+ import * as AST from './ast.js';
7
+ export declare class ParseError extends Error {
8
+ token: Token;
9
+ expected?: string | undefined;
10
+ constructor(message: string, token: Token, expected?: string | undefined);
11
+ }
12
+ export declare class Parser {
13
+ private input;
14
+ private tokens;
15
+ private current;
16
+ private inPipeObjectContext;
17
+ private arrowParamStack;
18
+ constructor(input: string);
19
+ parse(): AST.Program;
20
+ private parseLetBinding;
21
+ private parseExpression;
22
+ private parsePipe;
23
+ private parsePipeArrayOrIndex;
24
+ private parsePipeObjectConstruction;
25
+ private parsePipeArrayConstruction;
26
+ private parsePipeArrayLiteral;
27
+ private parsePipePropertyAccess;
28
+ private parsePipeIndexAccess;
29
+ private parsePipeContextAccess;
30
+ private parseArrowContextAccess;
31
+ private parseTernary;
32
+ private parseLogicalOr;
33
+ private parseLogicalAnd;
34
+ private parseEquality;
35
+ private parseComparison;
36
+ private parseNullCoalesce;
37
+ private parseAdditive;
38
+ private parseMultiplicative;
39
+ private parseUnary;
40
+ private parsePostfix;
41
+ private parseIndexOrSliceOrFilter;
42
+ private parseCallExpression;
43
+ private parsePrimary;
44
+ private parseTemplateLiteral;
45
+ private parseObjectLiteral;
46
+ private parseArrayLiteral;
47
+ private parseIfExpression;
48
+ private parseBlockExpression;
49
+ private parseParenOrArrow;
50
+ private exprToParam;
51
+ private parseTypeAnnotation;
52
+ private parsePrimaryType;
53
+ private isAtEnd;
54
+ private peek;
55
+ private peekNext;
56
+ private previous;
57
+ private advance;
58
+ private check;
59
+ private match;
60
+ private consume;
61
+ }
62
+ export declare function parse(input: string): AST.Program;
63
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAa,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,qBAAa,UAAW,SAAQ,KAAK;IAG1B,KAAK,EAAE,KAAK;IACZ,QAAQ,CAAC,EAAE,MAAM;gBAFxB,OAAO,EAAE,MAAM,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,MAAM,YAAA;CAK3B;AAED,qBAAa,MAAM;IAQL,OAAO,CAAC,KAAK;IAPzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,mBAAmB,CAAkB;IAG7C,OAAO,CAAC,eAAe,CAAgB;gBAEnB,KAAK,EAAE,MAAM;IAEjC,KAAK,IAAI,GAAG,CAAC,OAAO;IAkCpB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,qBAAqB;IA8B7B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,uBAAuB;IA8D/B,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,sBAAsB;IAiE9B,OAAO,CAAC,uBAAuB;IAiE/B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,yBAAyB;IA4CjC,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,YAAY;IAsHpB,OAAO,CAAC,oBAAoB;IA4C5B,OAAO,CAAC,kBAAkB;IAyE1B,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,iBAAiB;IAgDzB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,gBAAgB;IAgDxB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,OAAO;CAIhB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAEhD"}