circuitscript 0.1.29 → 0.1.32

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 (71) hide show
  1. package/dist/cjs/BaseVisitor.js +185 -22
  2. package/dist/cjs/RefdesAnnotationVisitor.js +27 -10
  3. package/dist/cjs/antlr/CircuitScriptLexer.js +241 -236
  4. package/dist/cjs/antlr/CircuitScriptParser.js +1197 -901
  5. package/dist/cjs/builtinMethods.js +6 -2
  6. package/dist/cjs/draw_symbols.js +38 -34
  7. package/dist/cjs/environment.js +28 -4
  8. package/dist/cjs/execute.js +195 -125
  9. package/dist/cjs/globals.js +6 -1
  10. package/dist/cjs/graph.js +14 -12
  11. package/dist/cjs/helpers.js +90 -17
  12. package/dist/cjs/layout.js +50 -25
  13. package/dist/cjs/main.js +16 -14
  14. package/dist/cjs/objects/ClassComponent.js +199 -30
  15. package/dist/cjs/objects/ExecutionScope.js +9 -0
  16. package/dist/cjs/objects/types.js +25 -2
  17. package/dist/cjs/parser.js +6 -2
  18. package/dist/cjs/regenerate-tests.js +3 -3
  19. package/dist/cjs/render.js +5 -3
  20. package/dist/cjs/rules-check/no-connect-on-connected-pin.js +9 -8
  21. package/dist/cjs/rules-check/rules.js +7 -2
  22. package/dist/cjs/rules-check/unconnected-pins.js +10 -8
  23. package/dist/cjs/utils.js +2 -1
  24. package/dist/cjs/validate/SymbolTable.js +7 -1
  25. package/dist/cjs/validate/SymbolValidatorVisitor.js +54 -17
  26. package/dist/cjs/visitor.js +299 -238
  27. package/dist/esm/BaseVisitor.js +187 -24
  28. package/dist/esm/RefdesAnnotationVisitor.js +27 -10
  29. package/dist/esm/antlr/CircuitScriptLexer.js +241 -236
  30. package/dist/esm/antlr/CircuitScriptParser.js +1196 -899
  31. package/dist/esm/antlr/CircuitScriptVisitor.js +4 -1
  32. package/dist/esm/builtinMethods.js +7 -3
  33. package/dist/esm/draw_symbols.js +38 -34
  34. package/dist/esm/environment.js +25 -1
  35. package/dist/esm/execute.js +197 -127
  36. package/dist/esm/globals.js +4 -0
  37. package/dist/esm/graph.js +14 -12
  38. package/dist/esm/helpers.js +91 -18
  39. package/dist/esm/layout.js +51 -26
  40. package/dist/esm/main.js +16 -14
  41. package/dist/esm/objects/ClassComponent.js +201 -30
  42. package/dist/esm/objects/ExecutionScope.js +9 -0
  43. package/dist/esm/objects/types.js +33 -1
  44. package/dist/esm/parser.js +6 -2
  45. package/dist/esm/regenerate-tests.js +3 -3
  46. package/dist/esm/render.js +5 -3
  47. package/dist/esm/rules-check/no-connect-on-connected-pin.js +9 -8
  48. package/dist/esm/rules-check/rules.js +7 -2
  49. package/dist/esm/rules-check/unconnected-pins.js +10 -8
  50. package/dist/esm/utils.js +2 -1
  51. package/dist/esm/validate/SymbolTable.js +5 -0
  52. package/dist/esm/validate/SymbolValidatorVisitor.js +53 -16
  53. package/dist/esm/visitor.js +201 -137
  54. package/dist/types/BaseVisitor.d.ts +27 -10
  55. package/dist/types/RefdesAnnotationVisitor.d.ts +2 -0
  56. package/dist/types/antlr/CircuitScriptLexer.d.ts +43 -42
  57. package/dist/types/antlr/CircuitScriptParser.d.ts +102 -58
  58. package/dist/types/antlr/CircuitScriptVisitor.d.ts +8 -2
  59. package/dist/types/environment.d.ts +8 -1
  60. package/dist/types/execute.d.ts +6 -3
  61. package/dist/types/globals.d.ts +4 -0
  62. package/dist/types/graph.d.ts +2 -2
  63. package/dist/types/helpers.d.ts +2 -1
  64. package/dist/types/layout.d.ts +5 -4
  65. package/dist/types/objects/ClassComponent.d.ts +34 -9
  66. package/dist/types/objects/ExecutionScope.d.ts +3 -1
  67. package/dist/types/objects/types.d.ts +40 -3
  68. package/dist/types/validate/SymbolTable.d.ts +1 -0
  69. package/dist/types/validate/SymbolValidatorVisitor.d.ts +6 -6
  70. package/dist/types/visitor.d.ts +10 -2
  71. package/package.json +4 -1
@@ -25,50 +25,51 @@ export class CircuitScriptParser extends antlr.Parser {
25
25
  static Return = 23;
26
26
  static Define = 24;
27
27
  static Import = 25;
28
- static For = 26;
29
- static In = 27;
30
- static While = 28;
31
- static Continue = 29;
32
- static If = 30;
33
- static Else = 31;
34
- static Not = 32;
35
- static Frame = 33;
36
- static Sheet = 34;
37
- static Equals = 35;
38
- static NotEquals = 36;
39
- static GreaterThan = 37;
40
- static GreatOrEqualThan = 38;
41
- static LessThan = 39;
42
- static LessOrEqualThan = 40;
43
- static LogicalAnd = 41;
44
- static LogicalOr = 42;
45
- static Addition = 43;
46
- static Minus = 44;
47
- static Divide = 45;
48
- static Multiply = 46;
49
- static Modulus = 47;
50
- static AdditionAssign = 48;
51
- static MinusAssign = 49;
52
- static DivideAssign = 50;
53
- static MultiplyAssign = 51;
54
- static ModulusAssign = 52;
55
- static ANNOTATION_START = 53;
56
- static OPEN_PAREN = 54;
57
- static CLOSE_PAREN = 55;
58
- static NOT_CONNECTED = 56;
59
- static BOOLEAN_VALUE = 57;
60
- static ID = 58;
61
- static INTEGER_VALUE = 59;
62
- static DECIMAL_VALUE = 60;
63
- static NUMERIC_VALUE = 61;
64
- static STRING_VALUE = 62;
65
- static PERCENTAGE_VALUE = 63;
66
- static ALPHA_NUMERIC = 64;
67
- static WS = 65;
68
- static NEWLINE = 66;
69
- static COMMENT = 67;
70
- static INDENT = 68;
71
- static DEDENT = 69;
28
+ static From = 26;
29
+ static For = 27;
30
+ static In = 28;
31
+ static While = 29;
32
+ static Continue = 30;
33
+ static If = 31;
34
+ static Else = 32;
35
+ static Not = 33;
36
+ static Frame = 34;
37
+ static Sheet = 35;
38
+ static Equals = 36;
39
+ static NotEquals = 37;
40
+ static GreaterThan = 38;
41
+ static GreatOrEqualThan = 39;
42
+ static LessThan = 40;
43
+ static LessOrEqualThan = 41;
44
+ static LogicalAnd = 42;
45
+ static LogicalOr = 43;
46
+ static Addition = 44;
47
+ static Minus = 45;
48
+ static Divide = 46;
49
+ static Multiply = 47;
50
+ static Modulus = 48;
51
+ static AdditionAssign = 49;
52
+ static MinusAssign = 50;
53
+ static DivideAssign = 51;
54
+ static MultiplyAssign = 52;
55
+ static ModulusAssign = 53;
56
+ static ANNOTATION_START = 54;
57
+ static OPEN_PAREN = 55;
58
+ static CLOSE_PAREN = 56;
59
+ static NOT_CONNECTED = 57;
60
+ static BOOLEAN_VALUE = 58;
61
+ static ID = 59;
62
+ static INTEGER_VALUE = 60;
63
+ static DECIMAL_VALUE = 61;
64
+ static NUMERIC_VALUE = 62;
65
+ static STRING_VALUE = 63;
66
+ static PERCENTAGE_VALUE = 64;
67
+ static ALPHA_NUMERIC = 65;
68
+ static WS = 66;
69
+ static NEWLINE = 67;
70
+ static COMMENT = 68;
71
+ static INDENT = 69;
72
+ static DEDENT = 70;
72
73
  static RULE_script = 0;
73
74
  static RULE_expression = 1;
74
75
  static RULE_flow_expressions = 2;
@@ -129,35 +130,36 @@ export class CircuitScriptParser extends antlr.Parser {
129
130
  static RULE_array_expr = 57;
130
131
  static RULE_point_expr = 58;
131
132
  static RULE_import_expr = 59;
132
- static RULE_frame_expr = 60;
133
- static RULE_if_expr = 61;
134
- static RULE_if_inner_expr = 62;
135
- static RULE_else_expr = 63;
136
- static RULE_while_expr = 64;
137
- static RULE_for_expr = 65;
138
- static RULE_part_set_expr = 66;
139
- static RULE_part_set_key = 67;
140
- static RULE_part_match_block = 68;
141
- static RULE_part_sub_expr = 69;
142
- static RULE_part_condition_expr = 70;
143
- static RULE_part_condition_key_only_expr = 71;
144
- static RULE_part_value_expr = 72;
145
- static RULE_annotation_comment_expr = 73;
133
+ static RULE_import_annotation_expr = 60;
134
+ static RULE_frame_expr = 61;
135
+ static RULE_if_expr = 62;
136
+ static RULE_if_inner_expr = 63;
137
+ static RULE_else_expr = 64;
138
+ static RULE_while_expr = 65;
139
+ static RULE_for_expr = 66;
140
+ static RULE_part_set_expr = 67;
141
+ static RULE_part_set_key = 68;
142
+ static RULE_part_match_block = 69;
143
+ static RULE_part_sub_expr = 70;
144
+ static RULE_part_condition_expr = 71;
145
+ static RULE_part_condition_key_only_expr = 72;
146
+ static RULE_part_value_expr = 73;
147
+ static RULE_annotation_comment_expr = 74;
146
148
  static literalNames = [
147
149
  null, "':'", "','", "'='", "'..'", "'['", "']'", "'.'", "'set'",
148
150
  "'break'", "'branch'", "'create'", "'component'", "'graphic'", "'module'",
149
151
  "'wire'", "'pin'", "'add'", "'at'", "'to'", "'point'", "'join'",
150
- "'parallel'", "'return'", "'def'", "'import'", "'for'", "'in'",
151
- "'while'", "'continue'", "'if'", "'else'", null, "'frame'", "'sheet'",
152
- "'=='", "'!='", "'>'", "'>='", "'<'", "'<='", null, null, "'+'",
153
- "'-'", "'/'", "'*'", "'%'", "'+='", "'-='", "'/='", "'*='", "'%='",
154
- "'#='", "'('", "')'"
152
+ "'parallel'", "'return'", "'def'", "'import'", "'from'", "'for'",
153
+ "'in'", "'while'", "'continue'", "'if'", "'else'", null, "'frame'",
154
+ "'sheet'", "'=='", "'!='", "'>'", "'>='", "'<'", "'<='", null, null,
155
+ "'+'", "'-'", "'/'", "'*'", "'%'", "'+='", "'-='", "'/='", "'*='",
156
+ "'%='", "'#='", "'('", "')'"
155
157
  ];
156
158
  static symbolicNames = [
157
159
  null, null, null, null, null, null, null, null, null, "Break", "Branch",
158
160
  "Create", "Component", "Graphic", "Module", "Wire", "Pin", "Add",
159
161
  "At", "To", "Point", "Join", "Parallel", "Return", "Define", "Import",
160
- "For", "In", "While", "Continue", "If", "Else", "Not", "Frame",
162
+ "From", "For", "In", "While", "Continue", "If", "Else", "Not", "Frame",
161
163
  "Sheet", "Equals", "NotEquals", "GreaterThan", "GreatOrEqualThan",
162
164
  "LessThan", "LessOrEqualThan", "LogicalAnd", "LogicalOr", "Addition",
163
165
  "Minus", "Divide", "Multiply", "Modulus", "AdditionAssign", "MinusAssign",
@@ -185,10 +187,11 @@ export class CircuitScriptParser extends antlr.Parser {
185
187
  "graphic_expressions_block", "create_graphic_expr", "create_module_expr",
186
188
  "nested_properties_inner", "graphic_expr", "property_expr", "property_key_expr",
187
189
  "property_value_expr", "wire_atom_expr", "wire_expr", "array_expr",
188
- "point_expr", "import_expr", "frame_expr", "if_expr", "if_inner_expr",
189
- "else_expr", "while_expr", "for_expr", "part_set_expr", "part_set_key",
190
- "part_match_block", "part_sub_expr", "part_condition_expr", "part_condition_key_only_expr",
191
- "part_value_expr", "annotation_comment_expr",
190
+ "point_expr", "import_expr", "import_annotation_expr", "frame_expr",
191
+ "if_expr", "if_inner_expr", "else_expr", "while_expr", "for_expr",
192
+ "part_set_expr", "part_set_key", "part_match_block", "part_sub_expr",
193
+ "part_condition_expr", "part_condition_key_only_expr", "part_value_expr",
194
+ "annotation_comment_expr",
192
195
  ];
193
196
  get grammarFileName() { return "CircuitScript.g4"; }
194
197
  get literalNames() { return CircuitScriptParser.literalNames; }
@@ -210,24 +213,25 @@ export class CircuitScriptParser extends antlr.Parser {
210
213
  let alternative;
211
214
  this.enterOuterAlt(localContext, 1);
212
215
  {
213
- this.state = 152;
216
+ this.state = 154;
214
217
  this.errorHandler.sync(this);
215
218
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
216
219
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
217
220
  if (alternative === 1) {
218
221
  {
219
- this.state = 150;
222
+ this.state = 152;
220
223
  this.errorHandler.sync(this);
221
224
  switch (this.tokenStream.LA(1)) {
222
225
  case CircuitScriptParser.Import:
226
+ case CircuitScriptParser.From:
223
227
  {
224
- this.state = 148;
228
+ this.state = 150;
225
229
  this.import_expr();
226
230
  }
227
231
  break;
228
232
  case CircuitScriptParser.NEWLINE:
229
233
  {
230
- this.state = 149;
234
+ this.state = 151;
231
235
  this.match(CircuitScriptParser.NEWLINE);
232
236
  }
233
237
  break;
@@ -236,16 +240,16 @@ export class CircuitScriptParser extends antlr.Parser {
236
240
  }
237
241
  }
238
242
  }
239
- this.state = 154;
243
+ this.state = 156;
240
244
  this.errorHandler.sync(this);
241
245
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
242
246
  }
243
- this.state = 157;
247
+ this.state = 159;
244
248
  this.errorHandler.sync(this);
245
249
  _la = this.tokenStream.LA(1);
246
250
  do {
247
251
  {
248
- this.state = 157;
252
+ this.state = 159;
249
253
  this.errorHandler.sync(this);
250
254
  switch (this.tokenStream.LA(1)) {
251
255
  case CircuitScriptParser.T__3:
@@ -261,6 +265,7 @@ export class CircuitScriptParser extends antlr.Parser {
261
265
  case CircuitScriptParser.Parallel:
262
266
  case CircuitScriptParser.Define:
263
267
  case CircuitScriptParser.Import:
268
+ case CircuitScriptParser.From:
264
269
  case CircuitScriptParser.For:
265
270
  case CircuitScriptParser.While:
266
271
  case CircuitScriptParser.Continue:
@@ -272,13 +277,13 @@ export class CircuitScriptParser extends antlr.Parser {
272
277
  case CircuitScriptParser.ANNOTATION_START:
273
278
  case CircuitScriptParser.ID:
274
279
  {
275
- this.state = 155;
280
+ this.state = 157;
276
281
  this.expression();
277
282
  }
278
283
  break;
279
284
  case CircuitScriptParser.NEWLINE:
280
285
  {
281
- this.state = 156;
286
+ this.state = 158;
282
287
  this.match(CircuitScriptParser.NEWLINE);
283
288
  }
284
289
  break;
@@ -286,11 +291,11 @@ export class CircuitScriptParser extends antlr.Parser {
286
291
  throw new antlr.NoViableAltException(this);
287
292
  }
288
293
  }
289
- this.state = 159;
294
+ this.state = 161;
290
295
  this.errorHandler.sync(this);
291
296
  _la = this.tokenStream.LA(1);
292
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
293
- this.state = 161;
297
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 3472353393) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 8422405) !== 0));
298
+ this.state = 163;
294
299
  this.match(CircuitScriptParser.EOF);
295
300
  }
296
301
  }
@@ -312,104 +317,104 @@ export class CircuitScriptParser extends antlr.Parser {
312
317
  let localContext = new ExpressionContext(this.context, this.state);
313
318
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
314
319
  try {
315
- this.state = 177;
320
+ this.state = 179;
316
321
  this.errorHandler.sync(this);
317
322
  switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context)) {
318
323
  case 1:
319
324
  this.enterOuterAlt(localContext, 1);
320
325
  {
321
- this.state = 163;
326
+ this.state = 165;
322
327
  this.graph_expressions();
323
328
  }
324
329
  break;
325
330
  case 2:
326
331
  this.enterOuterAlt(localContext, 2);
327
332
  {
328
- this.state = 164;
333
+ this.state = 166;
329
334
  this.assignment_expr();
330
335
  }
331
336
  break;
332
337
  case 3:
333
338
  this.enterOuterAlt(localContext, 3);
334
339
  {
335
- this.state = 165;
340
+ this.state = 167;
336
341
  this.operator_assignment_expr();
337
342
  }
338
343
  break;
339
344
  case 4:
340
345
  this.enterOuterAlt(localContext, 4);
341
346
  {
342
- this.state = 166;
347
+ this.state = 168;
343
348
  this.property_set_expr();
344
349
  }
345
350
  break;
346
351
  case 5:
347
352
  this.enterOuterAlt(localContext, 5);
348
353
  {
349
- this.state = 167;
354
+ this.state = 169;
350
355
  this.property_set_expr2();
351
356
  }
352
357
  break;
353
358
  case 6:
354
359
  this.enterOuterAlt(localContext, 6);
355
360
  {
356
- this.state = 168;
361
+ this.state = 170;
357
362
  this.double_dot_property_set_expr();
358
363
  }
359
364
  break;
360
365
  case 7:
361
366
  this.enterOuterAlt(localContext, 7);
362
367
  {
363
- this.state = 169;
368
+ this.state = 171;
364
369
  this.function_def_expr();
365
370
  }
366
371
  break;
367
372
  case 8:
368
373
  this.enterOuterAlt(localContext, 8);
369
374
  {
370
- this.state = 170;
375
+ this.state = 172;
371
376
  this.function_call_expr();
372
377
  }
373
378
  break;
374
379
  case 9:
375
380
  this.enterOuterAlt(localContext, 9);
376
381
  {
377
- this.state = 171;
382
+ this.state = 173;
378
383
  this.import_expr();
379
384
  }
380
385
  break;
381
386
  case 10:
382
387
  this.enterOuterAlt(localContext, 10);
383
388
  {
384
- this.state = 172;
389
+ this.state = 174;
385
390
  this.atom_expr();
386
391
  }
387
392
  break;
388
393
  case 11:
389
394
  this.enterOuterAlt(localContext, 11);
390
395
  {
391
- this.state = 173;
396
+ this.state = 175;
392
397
  this.frame_expr();
393
398
  }
394
399
  break;
395
400
  case 12:
396
401
  this.enterOuterAlt(localContext, 12);
397
402
  {
398
- this.state = 174;
403
+ this.state = 176;
399
404
  this.flow_expressions();
400
405
  }
401
406
  break;
402
407
  case 13:
403
408
  this.enterOuterAlt(localContext, 13);
404
409
  {
405
- this.state = 175;
410
+ this.state = 177;
406
411
  this.annotation_comment_expr();
407
412
  }
408
413
  break;
409
414
  case 14:
410
415
  this.enterOuterAlt(localContext, 14);
411
416
  {
412
- this.state = 176;
417
+ this.state = 178;
413
418
  this.part_set_expr();
414
419
  }
415
420
  break;
@@ -433,41 +438,41 @@ export class CircuitScriptParser extends antlr.Parser {
433
438
  let localContext = new Flow_expressionsContext(this.context, this.state);
434
439
  this.enterRule(localContext, 4, CircuitScriptParser.RULE_flow_expressions);
435
440
  try {
436
- this.state = 184;
441
+ this.state = 186;
437
442
  this.errorHandler.sync(this);
438
443
  switch (this.tokenStream.LA(1)) {
439
444
  case CircuitScriptParser.If:
440
445
  this.enterOuterAlt(localContext, 1);
441
446
  {
442
- this.state = 179;
447
+ this.state = 181;
443
448
  this.if_expr();
444
449
  }
445
450
  break;
446
451
  case CircuitScriptParser.While:
447
452
  this.enterOuterAlt(localContext, 2);
448
453
  {
449
- this.state = 180;
454
+ this.state = 182;
450
455
  this.while_expr();
451
456
  }
452
457
  break;
453
458
  case CircuitScriptParser.For:
454
459
  this.enterOuterAlt(localContext, 3);
455
460
  {
456
- this.state = 181;
461
+ this.state = 183;
457
462
  this.for_expr();
458
463
  }
459
464
  break;
460
465
  case CircuitScriptParser.Break:
461
466
  this.enterOuterAlt(localContext, 4);
462
467
  {
463
- this.state = 182;
468
+ this.state = 184;
464
469
  this.match(CircuitScriptParser.Break);
465
470
  }
466
471
  break;
467
472
  case CircuitScriptParser.Continue:
468
473
  this.enterOuterAlt(localContext, 5);
469
474
  {
470
- this.state = 183;
475
+ this.state = 185;
471
476
  this.match(CircuitScriptParser.Continue);
472
477
  }
473
478
  break;
@@ -493,20 +498,20 @@ export class CircuitScriptParser extends antlr.Parser {
493
498
  let localContext = new Graph_expressionsContext(this.context, this.state);
494
499
  this.enterRule(localContext, 6, CircuitScriptParser.RULE_graph_expressions);
495
500
  try {
496
- this.state = 188;
501
+ this.state = 190;
497
502
  this.errorHandler.sync(this);
498
503
  switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context)) {
499
504
  case 1:
500
505
  this.enterOuterAlt(localContext, 1);
501
506
  {
502
- this.state = 186;
507
+ this.state = 188;
503
508
  this.graph_linear_expression();
504
509
  }
505
510
  break;
506
511
  case 2:
507
512
  this.enterOuterAlt(localContext, 2);
508
513
  {
509
- this.state = 187;
514
+ this.state = 189;
510
515
  this.path_block();
511
516
  }
512
517
  break;
@@ -530,48 +535,48 @@ export class CircuitScriptParser extends antlr.Parser {
530
535
  let localContext = new Graph_linear_expressionContext(this.context, this.state);
531
536
  this.enterRule(localContext, 8, CircuitScriptParser.RULE_graph_linear_expression);
532
537
  try {
533
- this.state = 196;
538
+ this.state = 198;
534
539
  this.errorHandler.sync(this);
535
540
  switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context)) {
536
541
  case 1:
537
542
  this.enterOuterAlt(localContext, 1);
538
543
  {
539
- this.state = 190;
544
+ this.state = 192;
540
545
  this.add_component_expr();
541
546
  }
542
547
  break;
543
548
  case 2:
544
549
  this.enterOuterAlt(localContext, 2);
545
550
  {
546
- this.state = 191;
551
+ this.state = 193;
547
552
  this.to_component_expr();
548
553
  }
549
554
  break;
550
555
  case 3:
551
556
  this.enterOuterAlt(localContext, 3);
552
557
  {
553
- this.state = 192;
558
+ this.state = 194;
554
559
  this.at_component_expr();
555
560
  }
556
561
  break;
557
562
  case 4:
558
563
  this.enterOuterAlt(localContext, 4);
559
564
  {
560
- this.state = 193;
565
+ this.state = 195;
561
566
  this.at_block();
562
567
  }
563
568
  break;
564
569
  case 5:
565
570
  this.enterOuterAlt(localContext, 5);
566
571
  {
567
- this.state = 194;
572
+ this.state = 196;
568
573
  this.wire_expr();
569
574
  }
570
575
  break;
571
576
  case 6:
572
577
  this.enterOuterAlt(localContext, 6);
573
578
  {
574
- this.state = 195;
579
+ this.state = 197;
575
580
  this.point_expr();
576
581
  }
577
582
  break;
@@ -598,21 +603,21 @@ export class CircuitScriptParser extends antlr.Parser {
598
603
  try {
599
604
  this.enterOuterAlt(localContext, 1);
600
605
  {
601
- this.state = 198;
606
+ this.state = 200;
602
607
  this.match(CircuitScriptParser.NEWLINE);
603
- this.state = 199;
608
+ this.state = 201;
604
609
  this.match(CircuitScriptParser.INDENT);
605
- this.state = 202;
610
+ this.state = 204;
606
611
  this.errorHandler.sync(this);
607
612
  _la = this.tokenStream.LA(1);
608
613
  do {
609
614
  {
610
- this.state = 202;
615
+ this.state = 204;
611
616
  this.errorHandler.sync(this);
612
617
  switch (this.tokenStream.LA(1)) {
613
618
  case CircuitScriptParser.NEWLINE:
614
619
  {
615
- this.state = 200;
620
+ this.state = 202;
616
621
  this.match(CircuitScriptParser.NEWLINE);
617
622
  }
618
623
  break;
@@ -629,6 +634,7 @@ export class CircuitScriptParser extends antlr.Parser {
629
634
  case CircuitScriptParser.Parallel:
630
635
  case CircuitScriptParser.Define:
631
636
  case CircuitScriptParser.Import:
637
+ case CircuitScriptParser.From:
632
638
  case CircuitScriptParser.For:
633
639
  case CircuitScriptParser.While:
634
640
  case CircuitScriptParser.Continue:
@@ -640,7 +646,7 @@ export class CircuitScriptParser extends antlr.Parser {
640
646
  case CircuitScriptParser.ANNOTATION_START:
641
647
  case CircuitScriptParser.ID:
642
648
  {
643
- this.state = 201;
649
+ this.state = 203;
644
650
  this.expression();
645
651
  }
646
652
  break;
@@ -648,11 +654,11 @@ export class CircuitScriptParser extends antlr.Parser {
648
654
  throw new antlr.NoViableAltException(this);
649
655
  }
650
656
  }
651
- this.state = 204;
657
+ this.state = 206;
652
658
  this.errorHandler.sync(this);
653
659
  _la = this.tokenStream.LA(1);
654
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
655
- this.state = 206;
660
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 3472353393) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 8422405) !== 0));
661
+ this.state = 208;
656
662
  this.match(CircuitScriptParser.DEDENT);
657
663
  }
658
664
  }
@@ -677,7 +683,7 @@ export class CircuitScriptParser extends antlr.Parser {
677
683
  try {
678
684
  this.enterOuterAlt(localContext, 1);
679
685
  {
680
- this.state = 208;
686
+ this.state = 210;
681
687
  _la = this.tokenStream.LA(1);
682
688
  if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 7341056) !== 0))) {
683
689
  this.errorHandler.recoverInline(this);
@@ -686,9 +692,9 @@ export class CircuitScriptParser extends antlr.Parser {
686
692
  this.errorHandler.reportMatch(this);
687
693
  this.consume();
688
694
  }
689
- this.state = 209;
695
+ this.state = 211;
690
696
  this.match(CircuitScriptParser.T__0);
691
- this.state = 210;
697
+ this.state = 212;
692
698
  this.expressions_block();
693
699
  }
694
700
  }
@@ -713,32 +719,32 @@ export class CircuitScriptParser extends antlr.Parser {
713
719
  try {
714
720
  this.enterOuterAlt(localContext, 1);
715
721
  {
716
- this.state = 212;
722
+ this.state = 214;
717
723
  this.atom_expr();
718
- this.state = 213;
724
+ this.state = 215;
719
725
  this.match(CircuitScriptParser.T__0);
720
- this.state = 214;
726
+ this.state = 216;
721
727
  this.match(CircuitScriptParser.NEWLINE);
722
- this.state = 215;
728
+ this.state = 217;
723
729
  this.match(CircuitScriptParser.INDENT);
724
- this.state = 218;
730
+ this.state = 220;
725
731
  this.errorHandler.sync(this);
726
732
  _la = this.tokenStream.LA(1);
727
733
  do {
728
734
  {
729
- this.state = 218;
735
+ this.state = 220;
730
736
  this.errorHandler.sync(this);
731
737
  switch (this.tokenStream.LA(1)) {
732
738
  case CircuitScriptParser.NEWLINE:
733
739
  {
734
- this.state = 216;
740
+ this.state = 218;
735
741
  this.match(CircuitScriptParser.NEWLINE);
736
742
  }
737
743
  break;
738
744
  case CircuitScriptParser.ID:
739
745
  case CircuitScriptParser.INTEGER_VALUE:
740
746
  {
741
- this.state = 217;
747
+ this.state = 219;
742
748
  this.assignment_expr2();
743
749
  }
744
750
  break;
@@ -746,11 +752,11 @@ export class CircuitScriptParser extends antlr.Parser {
746
752
  throw new antlr.NoViableAltException(this);
747
753
  }
748
754
  }
749
- this.state = 220;
755
+ this.state = 222;
750
756
  this.errorHandler.sync(this);
751
757
  _la = this.tokenStream.LA(1);
752
- } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 259) !== 0));
753
- this.state = 222;
758
+ } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 259) !== 0));
759
+ this.state = 224;
754
760
  this.match(CircuitScriptParser.DEDENT);
755
761
  }
756
762
  }
@@ -775,18 +781,18 @@ export class CircuitScriptParser extends antlr.Parser {
775
781
  try {
776
782
  this.enterOuterAlt(localContext, 1);
777
783
  {
778
- this.state = 224;
784
+ this.state = 226;
779
785
  _la = this.tokenStream.LA(1);
780
- if (!(_la === 58 || _la === 59)) {
786
+ if (!(_la === 59 || _la === 60)) {
781
787
  this.errorHandler.recoverInline(this);
782
788
  }
783
789
  else {
784
790
  this.errorHandler.reportMatch(this);
785
791
  this.consume();
786
792
  }
787
- this.state = 225;
793
+ this.state = 227;
788
794
  this.match(CircuitScriptParser.T__0);
789
- this.state = 226;
795
+ this.state = 228;
790
796
  this.value_expr();
791
797
  }
792
798
  }
@@ -810,9 +816,9 @@ export class CircuitScriptParser extends antlr.Parser {
810
816
  try {
811
817
  this.enterOuterAlt(localContext, 1);
812
818
  {
813
- this.state = 228;
819
+ this.state = 230;
814
820
  this.match(CircuitScriptParser.Pin);
815
- this.state = 229;
821
+ this.state = 231;
816
822
  this.data_expr(0);
817
823
  }
818
824
  }
@@ -836,11 +842,11 @@ export class CircuitScriptParser extends antlr.Parser {
836
842
  try {
837
843
  this.enterOuterAlt(localContext, 1);
838
844
  {
839
- this.state = 231;
845
+ this.state = 233;
840
846
  this.match(CircuitScriptParser.ID);
841
- this.state = 232;
847
+ this.state = 234;
842
848
  this.match(CircuitScriptParser.T__0);
843
- this.state = 235;
849
+ this.state = 237;
844
850
  this.errorHandler.sync(this);
845
851
  switch (this.tokenStream.LA(1)) {
846
852
  case CircuitScriptParser.Minus:
@@ -851,13 +857,13 @@ export class CircuitScriptParser extends antlr.Parser {
851
857
  case CircuitScriptParser.STRING_VALUE:
852
858
  case CircuitScriptParser.PERCENTAGE_VALUE:
853
859
  {
854
- this.state = 233;
860
+ this.state = 235;
855
861
  this.value_expr();
856
862
  }
857
863
  break;
858
864
  case CircuitScriptParser.ID:
859
865
  {
860
- this.state = 234;
866
+ this.state = 236;
861
867
  this.match(CircuitScriptParser.ID);
862
868
  }
863
869
  break;
@@ -888,44 +894,44 @@ export class CircuitScriptParser extends antlr.Parser {
888
894
  let alternative;
889
895
  this.enterOuterAlt(localContext, 1);
890
896
  {
891
- this.state = 239;
897
+ this.state = 241;
892
898
  this.errorHandler.sync(this);
893
899
  switch (this.interpreter.adaptivePredict(this.tokenStream, 13, this.context)) {
894
900
  case 1:
895
901
  {
896
- this.state = 237;
902
+ this.state = 239;
897
903
  this.data_expr(0);
898
904
  }
899
905
  break;
900
906
  case 2:
901
907
  {
902
- this.state = 238;
908
+ this.state = 240;
903
909
  this.assignment_expr();
904
910
  }
905
911
  break;
906
912
  }
907
- this.state = 244;
913
+ this.state = 246;
908
914
  this.errorHandler.sync(this);
909
915
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
910
916
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
911
917
  if (alternative === 1) {
912
918
  {
913
919
  {
914
- this.state = 241;
920
+ this.state = 243;
915
921
  this.component_modifier_expr();
916
922
  }
917
923
  }
918
924
  }
919
- this.state = 246;
925
+ this.state = 248;
920
926
  this.errorHandler.sync(this);
921
927
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
922
928
  }
923
- this.state = 248;
929
+ this.state = 250;
924
930
  this.errorHandler.sync(this);
925
931
  _la = this.tokenStream.LA(1);
926
932
  if (_la === 16) {
927
933
  {
928
- this.state = 247;
934
+ this.state = 249;
929
935
  this.pin_select_expr();
930
936
  }
931
937
  }
@@ -951,9 +957,9 @@ export class CircuitScriptParser extends antlr.Parser {
951
957
  try {
952
958
  this.enterOuterAlt(localContext, 1);
953
959
  {
954
- this.state = 250;
960
+ this.state = 252;
955
961
  this.match(CircuitScriptParser.Add);
956
- this.state = 251;
962
+ this.state = 253;
957
963
  this.data_expr_with_assignment();
958
964
  }
959
965
  }
@@ -975,7 +981,7 @@ export class CircuitScriptParser extends antlr.Parser {
975
981
  let localContext = new Component_select_exprContext(this.context, this.state);
976
982
  this.enterRule(localContext, 26, CircuitScriptParser.RULE_component_select_expr);
977
983
  try {
978
- this.state = 256;
984
+ this.state = 258;
979
985
  this.errorHandler.sync(this);
980
986
  switch (this.tokenStream.LA(1)) {
981
987
  case CircuitScriptParser.T__4:
@@ -994,21 +1000,21 @@ export class CircuitScriptParser extends antlr.Parser {
994
1000
  case CircuitScriptParser.PERCENTAGE_VALUE:
995
1001
  this.enterOuterAlt(localContext, 1);
996
1002
  {
997
- this.state = 253;
1003
+ this.state = 255;
998
1004
  this.data_expr_with_assignment();
999
1005
  }
1000
1006
  break;
1001
1007
  case CircuitScriptParser.Pin:
1002
1008
  this.enterOuterAlt(localContext, 2);
1003
1009
  {
1004
- this.state = 254;
1010
+ this.state = 256;
1005
1011
  this.pin_select_expr();
1006
1012
  }
1007
1013
  break;
1008
1014
  case CircuitScriptParser.Point:
1009
1015
  this.enterOuterAlt(localContext, 3);
1010
1016
  {
1011
- this.state = 255;
1017
+ this.state = 257;
1012
1018
  this.match(CircuitScriptParser.Point);
1013
1019
  }
1014
1020
  break;
@@ -1037,9 +1043,9 @@ export class CircuitScriptParser extends antlr.Parser {
1037
1043
  try {
1038
1044
  this.enterOuterAlt(localContext, 1);
1039
1045
  {
1040
- this.state = 258;
1046
+ this.state = 260;
1041
1047
  _la = this.tokenStream.LA(1);
1042
- if (!(_la === 59 || _la === 62)) {
1048
+ if (!(_la === 60 || _la === 63)) {
1043
1049
  this.errorHandler.recoverInline(this);
1044
1050
  }
1045
1051
  else {
@@ -1068,9 +1074,9 @@ export class CircuitScriptParser extends antlr.Parser {
1068
1074
  try {
1069
1075
  this.enterOuterAlt(localContext, 1);
1070
1076
  {
1071
- this.state = 260;
1077
+ this.state = 262;
1072
1078
  this.match(CircuitScriptParser.At);
1073
- this.state = 261;
1079
+ this.state = 263;
1074
1080
  this.component_select_expr();
1075
1081
  }
1076
1082
  }
@@ -1095,24 +1101,24 @@ export class CircuitScriptParser extends antlr.Parser {
1095
1101
  try {
1096
1102
  this.enterOuterAlt(localContext, 1);
1097
1103
  {
1098
- this.state = 263;
1104
+ this.state = 265;
1099
1105
  this.match(CircuitScriptParser.To);
1100
1106
  {
1101
- this.state = 264;
1107
+ this.state = 266;
1102
1108
  this.component_select_expr();
1103
- this.state = 269;
1109
+ this.state = 271;
1104
1110
  this.errorHandler.sync(this);
1105
1111
  _la = this.tokenStream.LA(1);
1106
1112
  while (_la === 2) {
1107
1113
  {
1108
1114
  {
1109
- this.state = 265;
1115
+ this.state = 267;
1110
1116
  this.match(CircuitScriptParser.T__1);
1111
- this.state = 266;
1117
+ this.state = 268;
1112
1118
  this.component_select_expr();
1113
1119
  }
1114
1120
  }
1115
- this.state = 271;
1121
+ this.state = 273;
1116
1122
  this.errorHandler.sync(this);
1117
1123
  _la = this.tokenStream.LA(1);
1118
1124
  }
@@ -1140,54 +1146,54 @@ export class CircuitScriptParser extends antlr.Parser {
1140
1146
  try {
1141
1147
  this.enterOuterAlt(localContext, 1);
1142
1148
  {
1143
- this.state = 272;
1149
+ this.state = 274;
1144
1150
  this.match(CircuitScriptParser.At);
1145
- this.state = 273;
1151
+ this.state = 275;
1146
1152
  this.component_select_expr();
1147
- this.state = 274;
1153
+ this.state = 276;
1148
1154
  this.match(CircuitScriptParser.To);
1149
- this.state = 275;
1155
+ this.state = 277;
1150
1156
  this.component_select_expr();
1151
- this.state = 280;
1157
+ this.state = 282;
1152
1158
  this.errorHandler.sync(this);
1153
1159
  _la = this.tokenStream.LA(1);
1154
1160
  while (_la === 2) {
1155
1161
  {
1156
1162
  {
1157
- this.state = 276;
1163
+ this.state = 278;
1158
1164
  this.match(CircuitScriptParser.T__1);
1159
- this.state = 277;
1165
+ this.state = 279;
1160
1166
  this.component_select_expr();
1161
1167
  }
1162
1168
  }
1163
- this.state = 282;
1169
+ this.state = 284;
1164
1170
  this.errorHandler.sync(this);
1165
1171
  _la = this.tokenStream.LA(1);
1166
1172
  }
1167
- this.state = 283;
1173
+ this.state = 285;
1168
1174
  this.match(CircuitScriptParser.T__0);
1169
- this.state = 284;
1175
+ this.state = 286;
1170
1176
  this.match(CircuitScriptParser.NEWLINE);
1171
- this.state = 285;
1177
+ this.state = 287;
1172
1178
  this.match(CircuitScriptParser.INDENT);
1173
- this.state = 288;
1179
+ this.state = 290;
1174
1180
  this.errorHandler.sync(this);
1175
1181
  _la = this.tokenStream.LA(1);
1176
1182
  do {
1177
1183
  {
1178
- this.state = 288;
1184
+ this.state = 290;
1179
1185
  this.errorHandler.sync(this);
1180
1186
  switch (this.tokenStream.LA(1)) {
1181
1187
  case CircuitScriptParser.NEWLINE:
1182
1188
  {
1183
- this.state = 286;
1189
+ this.state = 288;
1184
1190
  this.match(CircuitScriptParser.NEWLINE);
1185
1191
  }
1186
1192
  break;
1187
1193
  case CircuitScriptParser.INTEGER_VALUE:
1188
1194
  case CircuitScriptParser.STRING_VALUE:
1189
1195
  {
1190
- this.state = 287;
1196
+ this.state = 289;
1191
1197
  this.at_to_multiple_line_expr();
1192
1198
  }
1193
1199
  break;
@@ -1195,11 +1201,11 @@ export class CircuitScriptParser extends antlr.Parser {
1195
1201
  throw new antlr.NoViableAltException(this);
1196
1202
  }
1197
1203
  }
1198
- this.state = 290;
1204
+ this.state = 292;
1199
1205
  this.errorHandler.sync(this);
1200
1206
  _la = this.tokenStream.LA(1);
1201
- } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 137) !== 0));
1202
- this.state = 292;
1207
+ } while (((((_la - 60)) & ~0x1F) === 0 && ((1 << (_la - 60)) & 137) !== 0));
1208
+ this.state = 294;
1203
1209
  this.match(CircuitScriptParser.DEDENT);
1204
1210
  }
1205
1211
  }
@@ -1224,25 +1230,25 @@ export class CircuitScriptParser extends antlr.Parser {
1224
1230
  try {
1225
1231
  this.enterOuterAlt(localContext, 1);
1226
1232
  {
1227
- this.state = 294;
1233
+ this.state = 296;
1228
1234
  this.pin_select_expr2();
1229
- this.state = 295;
1235
+ this.state = 297;
1230
1236
  this.match(CircuitScriptParser.T__0);
1231
- this.state = 296;
1237
+ this.state = 298;
1232
1238
  this.at_to_multiple_line_expr_to_pin();
1233
- this.state = 301;
1239
+ this.state = 303;
1234
1240
  this.errorHandler.sync(this);
1235
1241
  _la = this.tokenStream.LA(1);
1236
1242
  while (_la === 2) {
1237
1243
  {
1238
1244
  {
1239
- this.state = 297;
1245
+ this.state = 299;
1240
1246
  this.match(CircuitScriptParser.T__1);
1241
- this.state = 298;
1247
+ this.state = 300;
1242
1248
  this.at_to_multiple_line_expr_to_pin();
1243
1249
  }
1244
1250
  }
1245
- this.state = 303;
1251
+ this.state = 305;
1246
1252
  this.errorHandler.sync(this);
1247
1253
  _la = this.tokenStream.LA(1);
1248
1254
  }
@@ -1269,9 +1275,9 @@ export class CircuitScriptParser extends antlr.Parser {
1269
1275
  try {
1270
1276
  this.enterOuterAlt(localContext, 1);
1271
1277
  {
1272
- this.state = 304;
1278
+ this.state = 306;
1273
1279
  _la = this.tokenStream.LA(1);
1274
- if (!(_la === 56 || _la === 59)) {
1280
+ if (!(_la === 57 || _la === 60)) {
1275
1281
  this.errorHandler.recoverInline(this);
1276
1282
  }
1277
1283
  else {
@@ -1301,23 +1307,23 @@ export class CircuitScriptParser extends antlr.Parser {
1301
1307
  try {
1302
1308
  this.enterOuterAlt(localContext, 1);
1303
1309
  {
1304
- this.state = 306;
1310
+ this.state = 308;
1305
1311
  this.at_block_header();
1306
- this.state = 307;
1312
+ this.state = 309;
1307
1313
  this.match(CircuitScriptParser.NEWLINE);
1308
- this.state = 308;
1314
+ this.state = 310;
1309
1315
  this.match(CircuitScriptParser.INDENT);
1310
- this.state = 311;
1316
+ this.state = 313;
1311
1317
  this.errorHandler.sync(this);
1312
1318
  _la = this.tokenStream.LA(1);
1313
1319
  do {
1314
1320
  {
1315
- this.state = 311;
1321
+ this.state = 313;
1316
1322
  this.errorHandler.sync(this);
1317
1323
  switch (this.tokenStream.LA(1)) {
1318
1324
  case CircuitScriptParser.NEWLINE:
1319
1325
  {
1320
- this.state = 309;
1326
+ this.state = 311;
1321
1327
  this.match(CircuitScriptParser.NEWLINE);
1322
1328
  }
1323
1329
  break;
@@ -1334,6 +1340,7 @@ export class CircuitScriptParser extends antlr.Parser {
1334
1340
  case CircuitScriptParser.Parallel:
1335
1341
  case CircuitScriptParser.Define:
1336
1342
  case CircuitScriptParser.Import:
1343
+ case CircuitScriptParser.From:
1337
1344
  case CircuitScriptParser.For:
1338
1345
  case CircuitScriptParser.While:
1339
1346
  case CircuitScriptParser.Continue:
@@ -1347,7 +1354,7 @@ export class CircuitScriptParser extends antlr.Parser {
1347
1354
  case CircuitScriptParser.INTEGER_VALUE:
1348
1355
  case CircuitScriptParser.STRING_VALUE:
1349
1356
  {
1350
- this.state = 310;
1357
+ this.state = 312;
1351
1358
  this.at_block_expressions();
1352
1359
  }
1353
1360
  break;
@@ -1355,11 +1362,11 @@ export class CircuitScriptParser extends antlr.Parser {
1355
1362
  throw new antlr.NoViableAltException(this);
1356
1363
  }
1357
1364
  }
1358
- this.state = 313;
1365
+ this.state = 315;
1359
1366
  this.errorHandler.sync(this);
1360
1367
  _la = this.tokenStream.LA(1);
1361
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 9012229) !== 0));
1362
- this.state = 315;
1368
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 3472353393) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 9012229) !== 0));
1369
+ this.state = 317;
1363
1370
  this.match(CircuitScriptParser.DEDENT);
1364
1371
  }
1365
1372
  }
@@ -1381,7 +1388,7 @@ export class CircuitScriptParser extends antlr.Parser {
1381
1388
  let localContext = new At_block_expressionsContext(this.context, this.state);
1382
1389
  this.enterRule(localContext, 42, CircuitScriptParser.RULE_at_block_expressions);
1383
1390
  try {
1384
- this.state = 319;
1391
+ this.state = 321;
1385
1392
  this.errorHandler.sync(this);
1386
1393
  switch (this.tokenStream.LA(1)) {
1387
1394
  case CircuitScriptParser.T__3:
@@ -1397,6 +1404,7 @@ export class CircuitScriptParser extends antlr.Parser {
1397
1404
  case CircuitScriptParser.Parallel:
1398
1405
  case CircuitScriptParser.Define:
1399
1406
  case CircuitScriptParser.Import:
1407
+ case CircuitScriptParser.From:
1400
1408
  case CircuitScriptParser.For:
1401
1409
  case CircuitScriptParser.While:
1402
1410
  case CircuitScriptParser.Continue:
@@ -1409,7 +1417,7 @@ export class CircuitScriptParser extends antlr.Parser {
1409
1417
  case CircuitScriptParser.ID:
1410
1418
  this.enterOuterAlt(localContext, 1);
1411
1419
  {
1412
- this.state = 317;
1420
+ this.state = 319;
1413
1421
  this.expression();
1414
1422
  }
1415
1423
  break;
@@ -1417,7 +1425,7 @@ export class CircuitScriptParser extends antlr.Parser {
1417
1425
  case CircuitScriptParser.STRING_VALUE:
1418
1426
  this.enterOuterAlt(localContext, 2);
1419
1427
  {
1420
- this.state = 318;
1428
+ this.state = 320;
1421
1429
  this.at_block_pin_expr();
1422
1430
  }
1423
1431
  break;
@@ -1446,21 +1454,21 @@ export class CircuitScriptParser extends antlr.Parser {
1446
1454
  try {
1447
1455
  this.enterOuterAlt(localContext, 1);
1448
1456
  {
1449
- this.state = 321;
1457
+ this.state = 323;
1450
1458
  this.at_component_expr();
1451
- this.state = 322;
1459
+ this.state = 324;
1452
1460
  this.match(CircuitScriptParser.T__0);
1453
- this.state = 326;
1461
+ this.state = 328;
1454
1462
  this.errorHandler.sync(this);
1455
1463
  _la = this.tokenStream.LA(1);
1456
- while (_la === 53) {
1464
+ while (_la === 54) {
1457
1465
  {
1458
1466
  {
1459
- this.state = 323;
1467
+ this.state = 325;
1460
1468
  this.annotation_comment_expr();
1461
1469
  }
1462
1470
  }
1463
- this.state = 328;
1471
+ this.state = 330;
1464
1472
  this.errorHandler.sync(this);
1465
1473
  _la = this.tokenStream.LA(1);
1466
1474
  }
@@ -1486,11 +1494,11 @@ export class CircuitScriptParser extends antlr.Parser {
1486
1494
  try {
1487
1495
  this.enterOuterAlt(localContext, 1);
1488
1496
  {
1489
- this.state = 329;
1497
+ this.state = 331;
1490
1498
  this.pin_select_expr2();
1491
- this.state = 330;
1499
+ this.state = 332;
1492
1500
  this.match(CircuitScriptParser.T__0);
1493
- this.state = 333;
1501
+ this.state = 335;
1494
1502
  this.errorHandler.sync(this);
1495
1503
  switch (this.tokenStream.LA(1)) {
1496
1504
  case CircuitScriptParser.T__3:
@@ -1506,6 +1514,7 @@ export class CircuitScriptParser extends antlr.Parser {
1506
1514
  case CircuitScriptParser.Parallel:
1507
1515
  case CircuitScriptParser.Define:
1508
1516
  case CircuitScriptParser.Import:
1517
+ case CircuitScriptParser.From:
1509
1518
  case CircuitScriptParser.For:
1510
1519
  case CircuitScriptParser.While:
1511
1520
  case CircuitScriptParser.Continue:
@@ -1518,13 +1527,13 @@ export class CircuitScriptParser extends antlr.Parser {
1518
1527
  case CircuitScriptParser.NOT_CONNECTED:
1519
1528
  case CircuitScriptParser.ID:
1520
1529
  {
1521
- this.state = 331;
1530
+ this.state = 333;
1522
1531
  this.at_block_pin_expression_simple();
1523
1532
  }
1524
1533
  break;
1525
1534
  case CircuitScriptParser.NEWLINE:
1526
1535
  {
1527
- this.state = 332;
1536
+ this.state = 334;
1528
1537
  this.at_block_pin_expression_complex();
1529
1538
  }
1530
1539
  break;
@@ -1553,7 +1562,7 @@ export class CircuitScriptParser extends antlr.Parser {
1553
1562
  try {
1554
1563
  this.enterOuterAlt(localContext, 1);
1555
1564
  {
1556
- this.state = 337;
1565
+ this.state = 339;
1557
1566
  this.errorHandler.sync(this);
1558
1567
  switch (this.tokenStream.LA(1)) {
1559
1568
  case CircuitScriptParser.T__3:
@@ -1569,6 +1578,7 @@ export class CircuitScriptParser extends antlr.Parser {
1569
1578
  case CircuitScriptParser.Parallel:
1570
1579
  case CircuitScriptParser.Define:
1571
1580
  case CircuitScriptParser.Import:
1581
+ case CircuitScriptParser.From:
1572
1582
  case CircuitScriptParser.For:
1573
1583
  case CircuitScriptParser.While:
1574
1584
  case CircuitScriptParser.Continue:
@@ -1580,13 +1590,13 @@ export class CircuitScriptParser extends antlr.Parser {
1580
1590
  case CircuitScriptParser.ANNOTATION_START:
1581
1591
  case CircuitScriptParser.ID:
1582
1592
  {
1583
- this.state = 335;
1593
+ this.state = 337;
1584
1594
  this.expression();
1585
1595
  }
1586
1596
  break;
1587
1597
  case CircuitScriptParser.NOT_CONNECTED:
1588
1598
  {
1589
- this.state = 336;
1599
+ this.state = 338;
1590
1600
  this.match(CircuitScriptParser.NOT_CONNECTED);
1591
1601
  }
1592
1602
  break;
@@ -1615,7 +1625,7 @@ export class CircuitScriptParser extends antlr.Parser {
1615
1625
  try {
1616
1626
  this.enterOuterAlt(localContext, 1);
1617
1627
  {
1618
- this.state = 339;
1628
+ this.state = 341;
1619
1629
  this.expressions_block();
1620
1630
  }
1621
1631
  }
@@ -1639,25 +1649,25 @@ export class CircuitScriptParser extends antlr.Parser {
1639
1649
  try {
1640
1650
  this.enterOuterAlt(localContext, 1);
1641
1651
  {
1642
- this.state = 343;
1652
+ this.state = 345;
1643
1653
  this.errorHandler.sync(this);
1644
1654
  switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context)) {
1645
1655
  case 1:
1646
1656
  {
1647
- this.state = 341;
1657
+ this.state = 343;
1648
1658
  this.atom_expr();
1649
1659
  }
1650
1660
  break;
1651
1661
  case 2:
1652
1662
  {
1653
- this.state = 342;
1663
+ this.state = 344;
1654
1664
  this.function_call_expr();
1655
1665
  }
1656
1666
  break;
1657
1667
  }
1658
- this.state = 345;
1668
+ this.state = 347;
1659
1669
  this.match(CircuitScriptParser.T__2);
1660
- this.state = 346;
1670
+ this.state = 348;
1661
1671
  this.data_expr(0);
1662
1672
  }
1663
1673
  }
@@ -1682,18 +1692,18 @@ export class CircuitScriptParser extends antlr.Parser {
1682
1692
  try {
1683
1693
  this.enterOuterAlt(localContext, 1);
1684
1694
  {
1685
- this.state = 348;
1695
+ this.state = 350;
1686
1696
  this.atom_expr();
1687
- this.state = 349;
1697
+ this.state = 351;
1688
1698
  _la = this.tokenStream.LA(1);
1689
- if (!(((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 31) !== 0))) {
1699
+ if (!(((((_la - 49)) & ~0x1F) === 0 && ((1 << (_la - 49)) & 31) !== 0))) {
1690
1700
  this.errorHandler.recoverInline(this);
1691
1701
  }
1692
1702
  else {
1693
1703
  this.errorHandler.reportMatch(this);
1694
1704
  this.consume();
1695
1705
  }
1696
- this.state = 350;
1706
+ this.state = 352;
1697
1707
  this.data_expr(0);
1698
1708
  }
1699
1709
  }
@@ -1717,11 +1727,11 @@ export class CircuitScriptParser extends antlr.Parser {
1717
1727
  try {
1718
1728
  this.enterOuterAlt(localContext, 1);
1719
1729
  {
1720
- this.state = 352;
1730
+ this.state = 354;
1721
1731
  this.match(CircuitScriptParser.ID);
1722
- this.state = 353;
1732
+ this.state = 355;
1723
1733
  this.match(CircuitScriptParser.T__2);
1724
- this.state = 354;
1734
+ this.state = 356;
1725
1735
  this.data_expr(0);
1726
1736
  }
1727
1737
  }
@@ -1745,46 +1755,46 @@ export class CircuitScriptParser extends antlr.Parser {
1745
1755
  let _la;
1746
1756
  try {
1747
1757
  let alternative;
1748
- this.state = 379;
1758
+ this.state = 381;
1749
1759
  this.errorHandler.sync(this);
1750
1760
  switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context)) {
1751
1761
  case 1:
1752
1762
  this.enterOuterAlt(localContext, 1);
1753
1763
  {
1754
1764
  {
1755
- this.state = 356;
1765
+ this.state = 358;
1756
1766
  this.data_expr(0);
1757
- this.state = 361;
1767
+ this.state = 363;
1758
1768
  this.errorHandler.sync(this);
1759
1769
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1760
1770
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1761
1771
  if (alternative === 1) {
1762
1772
  {
1763
1773
  {
1764
- this.state = 357;
1774
+ this.state = 359;
1765
1775
  this.match(CircuitScriptParser.T__1);
1766
- this.state = 358;
1776
+ this.state = 360;
1767
1777
  this.data_expr(0);
1768
1778
  }
1769
1779
  }
1770
1780
  }
1771
- this.state = 363;
1781
+ this.state = 365;
1772
1782
  this.errorHandler.sync(this);
1773
1783
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1774
1784
  }
1775
- this.state = 368;
1785
+ this.state = 370;
1776
1786
  this.errorHandler.sync(this);
1777
1787
  _la = this.tokenStream.LA(1);
1778
1788
  while (_la === 2) {
1779
1789
  {
1780
1790
  {
1781
- this.state = 364;
1791
+ this.state = 366;
1782
1792
  this.match(CircuitScriptParser.T__1);
1783
- this.state = 365;
1793
+ this.state = 367;
1784
1794
  this.keyword_assignment_expr();
1785
1795
  }
1786
1796
  }
1787
- this.state = 370;
1797
+ this.state = 372;
1788
1798
  this.errorHandler.sync(this);
1789
1799
  _la = this.tokenStream.LA(1);
1790
1800
  }
@@ -1795,21 +1805,21 @@ export class CircuitScriptParser extends antlr.Parser {
1795
1805
  this.enterOuterAlt(localContext, 2);
1796
1806
  {
1797
1807
  {
1798
- this.state = 371;
1808
+ this.state = 373;
1799
1809
  this.keyword_assignment_expr();
1800
- this.state = 376;
1810
+ this.state = 378;
1801
1811
  this.errorHandler.sync(this);
1802
1812
  _la = this.tokenStream.LA(1);
1803
1813
  while (_la === 2) {
1804
1814
  {
1805
1815
  {
1806
- this.state = 372;
1816
+ this.state = 374;
1807
1817
  this.match(CircuitScriptParser.T__1);
1808
- this.state = 373;
1818
+ this.state = 375;
1809
1819
  this.keyword_assignment_expr();
1810
1820
  }
1811
1821
  }
1812
- this.state = 378;
1822
+ this.state = 380;
1813
1823
  this.errorHandler.sync(this);
1814
1824
  _la = this.tokenStream.LA(1);
1815
1825
  }
@@ -1838,11 +1848,11 @@ export class CircuitScriptParser extends antlr.Parser {
1838
1848
  try {
1839
1849
  this.enterOuterAlt(localContext, 1);
1840
1850
  {
1841
- this.state = 381;
1851
+ this.state = 383;
1842
1852
  this.atom_expr();
1843
- this.state = 382;
1853
+ this.state = 384;
1844
1854
  this.match(CircuitScriptParser.T__2);
1845
- this.state = 383;
1855
+ this.state = 385;
1846
1856
  this.data_expr(0);
1847
1857
  }
1848
1858
  }
@@ -1866,13 +1876,13 @@ export class CircuitScriptParser extends antlr.Parser {
1866
1876
  try {
1867
1877
  this.enterOuterAlt(localContext, 1);
1868
1878
  {
1869
- this.state = 385;
1879
+ this.state = 387;
1870
1880
  this.match(CircuitScriptParser.T__3);
1871
- this.state = 386;
1881
+ this.state = 388;
1872
1882
  this.match(CircuitScriptParser.ID);
1873
- this.state = 387;
1883
+ this.state = 389;
1874
1884
  this.match(CircuitScriptParser.T__2);
1875
- this.state = 388;
1885
+ this.state = 390;
1876
1886
  this.data_expr(0);
1877
1887
  }
1878
1888
  }
@@ -1905,7 +1915,7 @@ export class CircuitScriptParser extends antlr.Parser {
1905
1915
  let alternative;
1906
1916
  this.enterOuterAlt(localContext, 1);
1907
1917
  {
1908
- this.state = 407;
1918
+ this.state = 409;
1909
1919
  this.errorHandler.sync(this);
1910
1920
  switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context)) {
1911
1921
  case 1:
@@ -1913,11 +1923,11 @@ export class CircuitScriptParser extends antlr.Parser {
1913
1923
  localContext = new RoundedBracketsExprContext(localContext);
1914
1924
  this.context = localContext;
1915
1925
  previousContext = localContext;
1916
- this.state = 391;
1926
+ this.state = 393;
1917
1927
  this.match(CircuitScriptParser.OPEN_PAREN);
1918
- this.state = 392;
1928
+ this.state = 394;
1919
1929
  this.data_expr(0);
1920
- this.state = 393;
1930
+ this.state = 395;
1921
1931
  this.match(CircuitScriptParser.CLOSE_PAREN);
1922
1932
  }
1923
1933
  break;
@@ -1926,7 +1936,7 @@ export class CircuitScriptParser extends antlr.Parser {
1926
1936
  localContext = new ValueAtomExprContext(localContext);
1927
1937
  this.context = localContext;
1928
1938
  previousContext = localContext;
1929
- this.state = 397;
1939
+ this.state = 399;
1930
1940
  this.errorHandler.sync(this);
1931
1941
  switch (this.tokenStream.LA(1)) {
1932
1942
  case CircuitScriptParser.Minus:
@@ -1937,13 +1947,13 @@ export class CircuitScriptParser extends antlr.Parser {
1937
1947
  case CircuitScriptParser.STRING_VALUE:
1938
1948
  case CircuitScriptParser.PERCENTAGE_VALUE:
1939
1949
  {
1940
- this.state = 395;
1950
+ this.state = 397;
1941
1951
  this.value_expr();
1942
1952
  }
1943
1953
  break;
1944
1954
  case CircuitScriptParser.ID:
1945
1955
  {
1946
- this.state = 396;
1956
+ this.state = 398;
1947
1957
  this.atom_expr();
1948
1958
  }
1949
1959
  break;
@@ -1957,9 +1967,9 @@ export class CircuitScriptParser extends antlr.Parser {
1957
1967
  localContext = new UnaryOperatorExprContext(localContext);
1958
1968
  this.context = localContext;
1959
1969
  previousContext = localContext;
1960
- this.state = 399;
1970
+ this.state = 401;
1961
1971
  this.unary_operator();
1962
- this.state = 400;
1972
+ this.state = 402;
1963
1973
  this.data_expr(11);
1964
1974
  }
1965
1975
  break;
@@ -1968,7 +1978,7 @@ export class CircuitScriptParser extends antlr.Parser {
1968
1978
  localContext = new DataExprContext(localContext);
1969
1979
  this.context = localContext;
1970
1980
  previousContext = localContext;
1971
- this.state = 402;
1981
+ this.state = 404;
1972
1982
  this.create_component_expr();
1973
1983
  }
1974
1984
  break;
@@ -1977,7 +1987,7 @@ export class CircuitScriptParser extends antlr.Parser {
1977
1987
  localContext = new DataExprContext(localContext);
1978
1988
  this.context = localContext;
1979
1989
  previousContext = localContext;
1980
- this.state = 403;
1990
+ this.state = 405;
1981
1991
  this.create_graphic_expr();
1982
1992
  }
1983
1993
  break;
@@ -1986,7 +1996,7 @@ export class CircuitScriptParser extends antlr.Parser {
1986
1996
  localContext = new DataExprContext(localContext);
1987
1997
  this.context = localContext;
1988
1998
  previousContext = localContext;
1989
- this.state = 404;
1999
+ this.state = 406;
1990
2000
  this.create_module_expr();
1991
2001
  }
1992
2002
  break;
@@ -1995,7 +2005,7 @@ export class CircuitScriptParser extends antlr.Parser {
1995
2005
  localContext = new FunctionCallExprContext(localContext);
1996
2006
  this.context = localContext;
1997
2007
  previousContext = localContext;
1998
- this.state = 405;
2008
+ this.state = 407;
1999
2009
  this.function_call_expr();
2000
2010
  }
2001
2011
  break;
@@ -2004,13 +2014,13 @@ export class CircuitScriptParser extends antlr.Parser {
2004
2014
  localContext = new ArrayExprContext(localContext);
2005
2015
  this.context = localContext;
2006
2016
  previousContext = localContext;
2007
- this.state = 406;
2017
+ this.state = 408;
2008
2018
  this.array_expr();
2009
2019
  }
2010
2020
  break;
2011
2021
  }
2012
2022
  this.context.stop = this.tokenStream.LT(-1);
2013
- this.state = 429;
2023
+ this.state = 431;
2014
2024
  this.errorHandler.sync(this);
2015
2025
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
2016
2026
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -2020,27 +2030,27 @@ export class CircuitScriptParser extends antlr.Parser {
2020
2030
  }
2021
2031
  previousContext = localContext;
2022
2032
  {
2023
- this.state = 427;
2033
+ this.state = 429;
2024
2034
  this.errorHandler.sync(this);
2025
2035
  switch (this.interpreter.adaptivePredict(this.tokenStream, 35, this.context)) {
2026
2036
  case 1:
2027
2037
  {
2028
2038
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
2029
2039
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
2030
- this.state = 409;
2040
+ this.state = 411;
2031
2041
  if (!(this.precpred(this.context, 10))) {
2032
2042
  throw this.createFailedPredicateException("this.precpred(this.context, 10)");
2033
2043
  }
2034
- this.state = 410;
2044
+ this.state = 412;
2035
2045
  _la = this.tokenStream.LA(1);
2036
- if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 7) !== 0))) {
2046
+ if (!(((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 7) !== 0))) {
2037
2047
  this.errorHandler.recoverInline(this);
2038
2048
  }
2039
2049
  else {
2040
2050
  this.errorHandler.reportMatch(this);
2041
2051
  this.consume();
2042
2052
  }
2043
- this.state = 411;
2053
+ this.state = 413;
2044
2054
  this.data_expr(11);
2045
2055
  }
2046
2056
  break;
@@ -2048,20 +2058,20 @@ export class CircuitScriptParser extends antlr.Parser {
2048
2058
  {
2049
2059
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
2050
2060
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
2051
- this.state = 412;
2061
+ this.state = 414;
2052
2062
  if (!(this.precpred(this.context, 9))) {
2053
2063
  throw this.createFailedPredicateException("this.precpred(this.context, 9)");
2054
2064
  }
2055
- this.state = 413;
2065
+ this.state = 415;
2056
2066
  _la = this.tokenStream.LA(1);
2057
- if (!(_la === 43 || _la === 44)) {
2067
+ if (!(_la === 44 || _la === 45)) {
2058
2068
  this.errorHandler.recoverInline(this);
2059
2069
  }
2060
2070
  else {
2061
2071
  this.errorHandler.reportMatch(this);
2062
2072
  this.consume();
2063
2073
  }
2064
- this.state = 414;
2074
+ this.state = 416;
2065
2075
  this.data_expr(10);
2066
2076
  }
2067
2077
  break;
@@ -2069,13 +2079,13 @@ export class CircuitScriptParser extends antlr.Parser {
2069
2079
  {
2070
2080
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
2071
2081
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
2072
- this.state = 415;
2082
+ this.state = 417;
2073
2083
  if (!(this.precpred(this.context, 8))) {
2074
2084
  throw this.createFailedPredicateException("this.precpred(this.context, 8)");
2075
2085
  }
2076
- this.state = 416;
2086
+ this.state = 418;
2077
2087
  this.binary_operator();
2078
- this.state = 417;
2088
+ this.state = 419;
2079
2089
  this.data_expr(9);
2080
2090
  }
2081
2091
  break;
@@ -2083,20 +2093,20 @@ export class CircuitScriptParser extends antlr.Parser {
2083
2093
  {
2084
2094
  localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
2085
2095
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
2086
- this.state = 419;
2096
+ this.state = 421;
2087
2097
  if (!(this.precpred(this.context, 7))) {
2088
2098
  throw this.createFailedPredicateException("this.precpred(this.context, 7)");
2089
2099
  }
2090
- this.state = 420;
2100
+ this.state = 422;
2091
2101
  _la = this.tokenStream.LA(1);
2092
- if (!(_la === 41 || _la === 42)) {
2102
+ if (!(_la === 42 || _la === 43)) {
2093
2103
  this.errorHandler.recoverInline(this);
2094
2104
  }
2095
2105
  else {
2096
2106
  this.errorHandler.reportMatch(this);
2097
2107
  this.consume();
2098
2108
  }
2099
- this.state = 421;
2109
+ this.state = 423;
2100
2110
  this.data_expr(8);
2101
2111
  }
2102
2112
  break;
@@ -2104,22 +2114,22 @@ export class CircuitScriptParser extends antlr.Parser {
2104
2114
  {
2105
2115
  localContext = new ArrayIndexExprContext(new Data_exprContext(parentContext, parentState));
2106
2116
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
2107
- this.state = 422;
2117
+ this.state = 424;
2108
2118
  if (!(this.precpred(this.context, 1))) {
2109
2119
  throw this.createFailedPredicateException("this.precpred(this.context, 1)");
2110
2120
  }
2111
- this.state = 423;
2121
+ this.state = 425;
2112
2122
  this.match(CircuitScriptParser.T__4);
2113
- this.state = 424;
2123
+ this.state = 426;
2114
2124
  this.data_expr(0);
2115
- this.state = 425;
2125
+ this.state = 427;
2116
2126
  this.match(CircuitScriptParser.T__5);
2117
2127
  }
2118
2128
  break;
2119
2129
  }
2120
2130
  }
2121
2131
  }
2122
- this.state = 431;
2132
+ this.state = 433;
2123
2133
  this.errorHandler.sync(this);
2124
2134
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
2125
2135
  }
@@ -2146,9 +2156,9 @@ export class CircuitScriptParser extends antlr.Parser {
2146
2156
  try {
2147
2157
  this.enterOuterAlt(localContext, 1);
2148
2158
  {
2149
- this.state = 432;
2159
+ this.state = 434;
2150
2160
  _la = this.tokenStream.LA(1);
2151
- if (!(((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 63) !== 0))) {
2161
+ if (!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 63) !== 0))) {
2152
2162
  this.errorHandler.recoverInline(this);
2153
2163
  }
2154
2164
  else {
@@ -2178,9 +2188,9 @@ export class CircuitScriptParser extends antlr.Parser {
2178
2188
  try {
2179
2189
  this.enterOuterAlt(localContext, 1);
2180
2190
  {
2181
- this.state = 434;
2191
+ this.state = 436;
2182
2192
  _la = this.tokenStream.LA(1);
2183
- if (!(_la === 32 || _la === 44)) {
2193
+ if (!(_la === 33 || _la === 45)) {
2184
2194
  this.errorHandler.recoverInline(this);
2185
2195
  }
2186
2196
  else {
@@ -2211,18 +2221,18 @@ export class CircuitScriptParser extends antlr.Parser {
2211
2221
  this.enterOuterAlt(localContext, 1);
2212
2222
  {
2213
2223
  {
2214
- this.state = 437;
2224
+ this.state = 439;
2215
2225
  this.errorHandler.sync(this);
2216
2226
  _la = this.tokenStream.LA(1);
2217
- if (_la === 44) {
2227
+ if (_la === 45) {
2218
2228
  {
2219
- this.state = 436;
2229
+ this.state = 438;
2220
2230
  this.match(CircuitScriptParser.Minus);
2221
2231
  }
2222
2232
  }
2223
- this.state = 439;
2233
+ this.state = 441;
2224
2234
  _la = this.tokenStream.LA(1);
2225
- if (!(((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 125) !== 0))) {
2235
+ if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 125) !== 0))) {
2226
2236
  this.errorHandler.recoverInline(this);
2227
2237
  }
2228
2238
  else {
@@ -2253,40 +2263,40 @@ export class CircuitScriptParser extends antlr.Parser {
2253
2263
  try {
2254
2264
  this.enterOuterAlt(localContext, 1);
2255
2265
  {
2256
- this.state = 441;
2266
+ this.state = 443;
2257
2267
  this.match(CircuitScriptParser.Define);
2258
- this.state = 442;
2268
+ this.state = 444;
2259
2269
  this.match(CircuitScriptParser.ID);
2260
- this.state = 443;
2261
- this.match(CircuitScriptParser.OPEN_PAREN);
2262
2270
  this.state = 445;
2271
+ this.match(CircuitScriptParser.OPEN_PAREN);
2272
+ this.state = 447;
2263
2273
  this.errorHandler.sync(this);
2264
2274
  _la = this.tokenStream.LA(1);
2265
- if (_la === 58) {
2275
+ if (_la === 59) {
2266
2276
  {
2267
- this.state = 444;
2277
+ this.state = 446;
2268
2278
  this.function_args_expr();
2269
2279
  }
2270
2280
  }
2271
- this.state = 447;
2281
+ this.state = 449;
2272
2282
  this.match(CircuitScriptParser.CLOSE_PAREN);
2273
- this.state = 448;
2283
+ this.state = 450;
2274
2284
  this.match(CircuitScriptParser.T__0);
2275
- this.state = 449;
2285
+ this.state = 451;
2276
2286
  this.match(CircuitScriptParser.NEWLINE);
2277
- this.state = 450;
2287
+ this.state = 452;
2278
2288
  this.match(CircuitScriptParser.INDENT);
2279
- this.state = 453;
2289
+ this.state = 455;
2280
2290
  this.errorHandler.sync(this);
2281
2291
  _la = this.tokenStream.LA(1);
2282
2292
  do {
2283
2293
  {
2284
- this.state = 453;
2294
+ this.state = 455;
2285
2295
  this.errorHandler.sync(this);
2286
2296
  switch (this.tokenStream.LA(1)) {
2287
2297
  case CircuitScriptParser.NEWLINE:
2288
2298
  {
2289
- this.state = 451;
2299
+ this.state = 453;
2290
2300
  this.match(CircuitScriptParser.NEWLINE);
2291
2301
  }
2292
2302
  break;
@@ -2304,6 +2314,7 @@ export class CircuitScriptParser extends antlr.Parser {
2304
2314
  case CircuitScriptParser.Return:
2305
2315
  case CircuitScriptParser.Define:
2306
2316
  case CircuitScriptParser.Import:
2317
+ case CircuitScriptParser.From:
2307
2318
  case CircuitScriptParser.For:
2308
2319
  case CircuitScriptParser.While:
2309
2320
  case CircuitScriptParser.Continue:
@@ -2315,7 +2326,7 @@ export class CircuitScriptParser extends antlr.Parser {
2315
2326
  case CircuitScriptParser.ANNOTATION_START:
2316
2327
  case CircuitScriptParser.ID:
2317
2328
  {
2318
- this.state = 452;
2329
+ this.state = 454;
2319
2330
  this.function_expr();
2320
2331
  }
2321
2332
  break;
@@ -2323,11 +2334,11 @@ export class CircuitScriptParser extends antlr.Parser {
2323
2334
  throw new antlr.NoViableAltException(this);
2324
2335
  }
2325
2336
  }
2326
- this.state = 455;
2337
+ this.state = 457;
2327
2338
  this.errorHandler.sync(this);
2328
2339
  _la = this.tokenStream.LA(1);
2329
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1736435825) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
2330
- this.state = 457;
2340
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 3472877681) !== 0) || ((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 8422405) !== 0));
2341
+ this.state = 459;
2331
2342
  this.match(CircuitScriptParser.DEDENT);
2332
2343
  }
2333
2344
  }
@@ -2349,7 +2360,7 @@ export class CircuitScriptParser extends antlr.Parser {
2349
2360
  let localContext = new Function_exprContext(this.context, this.state);
2350
2361
  this.enterRule(localContext, 74, CircuitScriptParser.RULE_function_expr);
2351
2362
  try {
2352
- this.state = 461;
2363
+ this.state = 463;
2353
2364
  this.errorHandler.sync(this);
2354
2365
  switch (this.tokenStream.LA(1)) {
2355
2366
  case CircuitScriptParser.T__3:
@@ -2365,6 +2376,7 @@ export class CircuitScriptParser extends antlr.Parser {
2365
2376
  case CircuitScriptParser.Parallel:
2366
2377
  case CircuitScriptParser.Define:
2367
2378
  case CircuitScriptParser.Import:
2379
+ case CircuitScriptParser.From:
2368
2380
  case CircuitScriptParser.For:
2369
2381
  case CircuitScriptParser.While:
2370
2382
  case CircuitScriptParser.Continue:
@@ -2377,14 +2389,14 @@ export class CircuitScriptParser extends antlr.Parser {
2377
2389
  case CircuitScriptParser.ID:
2378
2390
  this.enterOuterAlt(localContext, 1);
2379
2391
  {
2380
- this.state = 459;
2392
+ this.state = 461;
2381
2393
  this.expression();
2382
2394
  }
2383
2395
  break;
2384
2396
  case CircuitScriptParser.Return:
2385
2397
  this.enterOuterAlt(localContext, 2);
2386
2398
  {
2387
- this.state = 460;
2399
+ this.state = 462;
2388
2400
  this.function_return_expr();
2389
2401
  }
2390
2402
  break;
@@ -2412,49 +2424,49 @@ export class CircuitScriptParser extends antlr.Parser {
2412
2424
  let _la;
2413
2425
  try {
2414
2426
  let alternative;
2415
- this.state = 492;
2427
+ this.state = 494;
2416
2428
  this.errorHandler.sync(this);
2417
2429
  switch (this.interpreter.adaptivePredict(this.tokenStream, 45, this.context)) {
2418
2430
  case 1:
2419
2431
  this.enterOuterAlt(localContext, 1);
2420
2432
  {
2421
- this.state = 463;
2433
+ this.state = 465;
2422
2434
  this.match(CircuitScriptParser.ID);
2423
- this.state = 468;
2435
+ this.state = 470;
2424
2436
  this.errorHandler.sync(this);
2425
2437
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2426
2438
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2427
2439
  if (alternative === 1) {
2428
2440
  {
2429
2441
  {
2430
- this.state = 464;
2442
+ this.state = 466;
2431
2443
  this.match(CircuitScriptParser.T__1);
2432
- this.state = 465;
2444
+ this.state = 467;
2433
2445
  this.match(CircuitScriptParser.ID);
2434
2446
  }
2435
2447
  }
2436
2448
  }
2437
- this.state = 470;
2449
+ this.state = 472;
2438
2450
  this.errorHandler.sync(this);
2439
2451
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2440
2452
  }
2441
- this.state = 477;
2453
+ this.state = 479;
2442
2454
  this.errorHandler.sync(this);
2443
2455
  _la = this.tokenStream.LA(1);
2444
2456
  while (_la === 2) {
2445
2457
  {
2446
2458
  {
2447
- this.state = 471;
2459
+ this.state = 473;
2448
2460
  this.match(CircuitScriptParser.T__1);
2449
- this.state = 472;
2461
+ this.state = 474;
2450
2462
  this.match(CircuitScriptParser.ID);
2451
- this.state = 473;
2463
+ this.state = 475;
2452
2464
  this.match(CircuitScriptParser.T__2);
2453
- this.state = 474;
2465
+ this.state = 476;
2454
2466
  this.value_expr();
2455
2467
  }
2456
2468
  }
2457
- this.state = 479;
2469
+ this.state = 481;
2458
2470
  this.errorHandler.sync(this);
2459
2471
  _la = this.tokenStream.LA(1);
2460
2472
  }
@@ -2463,29 +2475,29 @@ export class CircuitScriptParser extends antlr.Parser {
2463
2475
  case 2:
2464
2476
  this.enterOuterAlt(localContext, 2);
2465
2477
  {
2466
- this.state = 480;
2478
+ this.state = 482;
2467
2479
  this.match(CircuitScriptParser.ID);
2468
- this.state = 481;
2480
+ this.state = 483;
2469
2481
  this.match(CircuitScriptParser.T__2);
2470
- this.state = 482;
2482
+ this.state = 484;
2471
2483
  this.value_expr();
2472
- this.state = 489;
2484
+ this.state = 491;
2473
2485
  this.errorHandler.sync(this);
2474
2486
  _la = this.tokenStream.LA(1);
2475
2487
  while (_la === 2) {
2476
2488
  {
2477
2489
  {
2478
- this.state = 483;
2490
+ this.state = 485;
2479
2491
  this.match(CircuitScriptParser.T__1);
2480
- this.state = 484;
2492
+ this.state = 486;
2481
2493
  this.match(CircuitScriptParser.ID);
2482
- this.state = 485;
2494
+ this.state = 487;
2483
2495
  this.match(CircuitScriptParser.T__2);
2484
- this.state = 486;
2496
+ this.state = 488;
2485
2497
  this.value_expr();
2486
2498
  }
2487
2499
  }
2488
- this.state = 491;
2500
+ this.state = 493;
2489
2501
  this.errorHandler.sync(this);
2490
2502
  _la = this.tokenStream.LA(1);
2491
2503
  }
@@ -2514,21 +2526,21 @@ export class CircuitScriptParser extends antlr.Parser {
2514
2526
  let alternative;
2515
2527
  this.enterOuterAlt(localContext, 1);
2516
2528
  {
2517
- this.state = 494;
2529
+ this.state = 496;
2518
2530
  this.match(CircuitScriptParser.ID);
2519
- this.state = 498;
2531
+ this.state = 500;
2520
2532
  this.errorHandler.sync(this);
2521
2533
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2522
2534
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2523
2535
  if (alternative === 1) {
2524
2536
  {
2525
2537
  {
2526
- this.state = 495;
2538
+ this.state = 497;
2527
2539
  this.trailer_expr2();
2528
2540
  }
2529
2541
  }
2530
2542
  }
2531
- this.state = 500;
2543
+ this.state = 502;
2532
2544
  this.errorHandler.sync(this);
2533
2545
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2534
2546
  }
@@ -2553,24 +2565,24 @@ export class CircuitScriptParser extends antlr.Parser {
2553
2565
  this.enterRule(localContext, 80, CircuitScriptParser.RULE_trailer_expr);
2554
2566
  let _la;
2555
2567
  try {
2556
- this.state = 507;
2568
+ this.state = 509;
2557
2569
  this.errorHandler.sync(this);
2558
2570
  switch (this.tokenStream.LA(1)) {
2559
2571
  case CircuitScriptParser.OPEN_PAREN:
2560
2572
  this.enterOuterAlt(localContext, 1);
2561
2573
  {
2562
- this.state = 501;
2563
- this.match(CircuitScriptParser.OPEN_PAREN);
2564
2574
  this.state = 503;
2575
+ this.match(CircuitScriptParser.OPEN_PAREN);
2576
+ this.state = 505;
2565
2577
  this.errorHandler.sync(this);
2566
2578
  _la = this.tokenStream.LA(1);
2567
- if (_la === 5 || _la === 11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4265621505) !== 0)) {
2579
+ if (_la === 5 || _la === 11 || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 4265621505) !== 0)) {
2568
2580
  {
2569
- this.state = 502;
2581
+ this.state = 504;
2570
2582
  this.parameters();
2571
2583
  }
2572
2584
  }
2573
- this.state = 505;
2585
+ this.state = 507;
2574
2586
  this.match(CircuitScriptParser.CLOSE_PAREN);
2575
2587
  }
2576
2588
  break;
@@ -2578,7 +2590,7 @@ export class CircuitScriptParser extends antlr.Parser {
2578
2590
  case CircuitScriptParser.T__6:
2579
2591
  this.enterOuterAlt(localContext, 2);
2580
2592
  {
2581
- this.state = 506;
2593
+ this.state = 508;
2582
2594
  this.trailer_expr2();
2583
2595
  }
2584
2596
  break;
@@ -2604,26 +2616,26 @@ export class CircuitScriptParser extends antlr.Parser {
2604
2616
  let localContext = new Trailer_expr2Context(this.context, this.state);
2605
2617
  this.enterRule(localContext, 82, CircuitScriptParser.RULE_trailer_expr2);
2606
2618
  try {
2607
- this.state = 515;
2619
+ this.state = 517;
2608
2620
  this.errorHandler.sync(this);
2609
2621
  switch (this.tokenStream.LA(1)) {
2610
2622
  case CircuitScriptParser.T__6:
2611
2623
  this.enterOuterAlt(localContext, 1);
2612
2624
  {
2613
- this.state = 509;
2625
+ this.state = 511;
2614
2626
  this.match(CircuitScriptParser.T__6);
2615
- this.state = 510;
2627
+ this.state = 512;
2616
2628
  this.match(CircuitScriptParser.ID);
2617
2629
  }
2618
2630
  break;
2619
2631
  case CircuitScriptParser.T__4:
2620
2632
  this.enterOuterAlt(localContext, 2);
2621
2633
  {
2622
- this.state = 511;
2634
+ this.state = 513;
2623
2635
  this.match(CircuitScriptParser.T__4);
2624
- this.state = 512;
2636
+ this.state = 514;
2625
2637
  this.data_expr(0);
2626
- this.state = 513;
2638
+ this.state = 515;
2627
2639
  this.match(CircuitScriptParser.T__5);
2628
2640
  }
2629
2641
  break;
@@ -2653,18 +2665,18 @@ export class CircuitScriptParser extends antlr.Parser {
2653
2665
  let alternative;
2654
2666
  this.enterOuterAlt(localContext, 1);
2655
2667
  {
2656
- this.state = 518;
2668
+ this.state = 520;
2657
2669
  this.errorHandler.sync(this);
2658
2670
  _la = this.tokenStream.LA(1);
2659
- if (_la === 43 || _la === 45) {
2671
+ if (_la === 44 || _la === 46) {
2660
2672
  {
2661
- this.state = 517;
2673
+ this.state = 519;
2662
2674
  this.net_namespace_expr();
2663
2675
  }
2664
2676
  }
2665
- this.state = 520;
2666
- this.match(CircuitScriptParser.ID);
2667
2677
  this.state = 522;
2678
+ this.match(CircuitScriptParser.ID);
2679
+ this.state = 524;
2668
2680
  this.errorHandler.sync(this);
2669
2681
  alternative = 1;
2670
2682
  do {
@@ -2672,7 +2684,7 @@ export class CircuitScriptParser extends antlr.Parser {
2672
2684
  case 1:
2673
2685
  {
2674
2686
  {
2675
- this.state = 521;
2687
+ this.state = 523;
2676
2688
  this.trailer_expr();
2677
2689
  }
2678
2690
  }
@@ -2680,7 +2692,7 @@ export class CircuitScriptParser extends antlr.Parser {
2680
2692
  default:
2681
2693
  throw new antlr.NoViableAltException(this);
2682
2694
  }
2683
- this.state = 524;
2695
+ this.state = 526;
2684
2696
  this.errorHandler.sync(this);
2685
2697
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 51, this.context);
2686
2698
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -2707,23 +2719,23 @@ export class CircuitScriptParser extends antlr.Parser {
2707
2719
  try {
2708
2720
  this.enterOuterAlt(localContext, 1);
2709
2721
  {
2710
- this.state = 527;
2722
+ this.state = 529;
2711
2723
  this.errorHandler.sync(this);
2712
2724
  _la = this.tokenStream.LA(1);
2713
- if (_la === 43) {
2725
+ if (_la === 44) {
2714
2726
  {
2715
- this.state = 526;
2727
+ this.state = 528;
2716
2728
  this.match(CircuitScriptParser.Addition);
2717
2729
  }
2718
2730
  }
2719
- this.state = 529;
2720
- this.match(CircuitScriptParser.Divide);
2721
2731
  this.state = 531;
2732
+ this.match(CircuitScriptParser.Divide);
2733
+ this.state = 533;
2722
2734
  this.errorHandler.sync(this);
2723
2735
  switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context)) {
2724
2736
  case 1:
2725
2737
  {
2726
- this.state = 530;
2738
+ this.state = 532;
2727
2739
  this.data_expr(0);
2728
2740
  }
2729
2741
  break;
@@ -2750,9 +2762,9 @@ export class CircuitScriptParser extends antlr.Parser {
2750
2762
  try {
2751
2763
  this.enterOuterAlt(localContext, 1);
2752
2764
  {
2753
- this.state = 533;
2765
+ this.state = 535;
2754
2766
  this.match(CircuitScriptParser.Return);
2755
- this.state = 534;
2767
+ this.state = 536;
2756
2768
  this.data_expr(0);
2757
2769
  }
2758
2770
  }
@@ -2776,11 +2788,11 @@ export class CircuitScriptParser extends antlr.Parser {
2776
2788
  try {
2777
2789
  this.enterOuterAlt(localContext, 1);
2778
2790
  {
2779
- this.state = 536;
2791
+ this.state = 538;
2780
2792
  this.property_key_expr();
2781
- this.state = 537;
2793
+ this.state = 539;
2782
2794
  this.match(CircuitScriptParser.T__0);
2783
- this.state = 538;
2795
+ this.state = 540;
2784
2796
  this.expressions_block();
2785
2797
  }
2786
2798
  }
@@ -2805,27 +2817,27 @@ export class CircuitScriptParser extends antlr.Parser {
2805
2817
  try {
2806
2818
  this.enterOuterAlt(localContext, 1);
2807
2819
  {
2808
- this.state = 540;
2820
+ this.state = 542;
2809
2821
  this.match(CircuitScriptParser.Create);
2810
- this.state = 541;
2822
+ this.state = 543;
2811
2823
  this.match(CircuitScriptParser.Component);
2812
- this.state = 542;
2824
+ this.state = 544;
2813
2825
  this.match(CircuitScriptParser.T__0);
2814
- this.state = 543;
2826
+ this.state = 545;
2815
2827
  this.match(CircuitScriptParser.NEWLINE);
2816
- this.state = 544;
2828
+ this.state = 546;
2817
2829
  this.match(CircuitScriptParser.INDENT);
2818
- this.state = 547;
2830
+ this.state = 549;
2819
2831
  this.errorHandler.sync(this);
2820
2832
  _la = this.tokenStream.LA(1);
2821
2833
  do {
2822
2834
  {
2823
- this.state = 547;
2835
+ this.state = 549;
2824
2836
  this.errorHandler.sync(this);
2825
2837
  switch (this.tokenStream.LA(1)) {
2826
2838
  case CircuitScriptParser.NEWLINE:
2827
2839
  {
2828
- this.state = 545;
2840
+ this.state = 547;
2829
2841
  this.match(CircuitScriptParser.NEWLINE);
2830
2842
  }
2831
2843
  break;
@@ -2833,7 +2845,7 @@ export class CircuitScriptParser extends antlr.Parser {
2833
2845
  case CircuitScriptParser.INTEGER_VALUE:
2834
2846
  case CircuitScriptParser.STRING_VALUE:
2835
2847
  {
2836
- this.state = 546;
2848
+ this.state = 548;
2837
2849
  this.property_expr();
2838
2850
  }
2839
2851
  break;
@@ -2841,11 +2853,11 @@ export class CircuitScriptParser extends antlr.Parser {
2841
2853
  throw new antlr.NoViableAltException(this);
2842
2854
  }
2843
2855
  }
2844
- this.state = 549;
2856
+ this.state = 551;
2845
2857
  this.errorHandler.sync(this);
2846
2858
  _la = this.tokenStream.LA(1);
2847
- } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
2848
- this.state = 551;
2859
+ } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 275) !== 0));
2860
+ this.state = 553;
2849
2861
  this.match(CircuitScriptParser.DEDENT);
2850
2862
  }
2851
2863
  }
@@ -2870,21 +2882,21 @@ export class CircuitScriptParser extends antlr.Parser {
2870
2882
  try {
2871
2883
  this.enterOuterAlt(localContext, 1);
2872
2884
  {
2873
- this.state = 553;
2885
+ this.state = 555;
2874
2886
  this.match(CircuitScriptParser.NEWLINE);
2875
- this.state = 554;
2887
+ this.state = 556;
2876
2888
  this.match(CircuitScriptParser.INDENT);
2877
- this.state = 557;
2889
+ this.state = 559;
2878
2890
  this.errorHandler.sync(this);
2879
2891
  _la = this.tokenStream.LA(1);
2880
2892
  do {
2881
2893
  {
2882
- this.state = 557;
2894
+ this.state = 559;
2883
2895
  this.errorHandler.sync(this);
2884
2896
  switch (this.tokenStream.LA(1)) {
2885
2897
  case CircuitScriptParser.NEWLINE:
2886
2898
  {
2887
- this.state = 555;
2899
+ this.state = 557;
2888
2900
  this.match(CircuitScriptParser.NEWLINE);
2889
2901
  }
2890
2902
  break;
@@ -2892,7 +2904,7 @@ export class CircuitScriptParser extends antlr.Parser {
2892
2904
  case CircuitScriptParser.For:
2893
2905
  case CircuitScriptParser.ID:
2894
2906
  {
2895
- this.state = 556;
2907
+ this.state = 558;
2896
2908
  this.graphic_expr();
2897
2909
  }
2898
2910
  break;
@@ -2900,11 +2912,11 @@ export class CircuitScriptParser extends antlr.Parser {
2900
2912
  throw new antlr.NoViableAltException(this);
2901
2913
  }
2902
2914
  }
2903
- this.state = 559;
2915
+ this.state = 561;
2904
2916
  this.errorHandler.sync(this);
2905
2917
  _la = this.tokenStream.LA(1);
2906
- } while (_la === 16 || _la === 26 || _la === 58 || _la === 66);
2907
- this.state = 561;
2918
+ } while (_la === 16 || _la === 27 || _la === 59 || _la === 67);
2919
+ this.state = 563;
2908
2920
  this.match(CircuitScriptParser.DEDENT);
2909
2921
  }
2910
2922
  }
@@ -2929,26 +2941,26 @@ export class CircuitScriptParser extends antlr.Parser {
2929
2941
  try {
2930
2942
  this.enterOuterAlt(localContext, 1);
2931
2943
  {
2932
- this.state = 563;
2944
+ this.state = 565;
2933
2945
  this.match(CircuitScriptParser.Create);
2934
- this.state = 564;
2946
+ this.state = 566;
2935
2947
  this.match(CircuitScriptParser.Graphic);
2936
- this.state = 568;
2948
+ this.state = 570;
2937
2949
  this.errorHandler.sync(this);
2938
2950
  _la = this.tokenStream.LA(1);
2939
- if (_la === 54) {
2951
+ if (_la === 55) {
2940
2952
  {
2941
- this.state = 565;
2953
+ this.state = 567;
2942
2954
  this.match(CircuitScriptParser.OPEN_PAREN);
2943
- this.state = 566;
2955
+ this.state = 568;
2944
2956
  this.match(CircuitScriptParser.ID);
2945
- this.state = 567;
2957
+ this.state = 569;
2946
2958
  this.match(CircuitScriptParser.CLOSE_PAREN);
2947
2959
  }
2948
2960
  }
2949
- this.state = 570;
2961
+ this.state = 572;
2950
2962
  this.match(CircuitScriptParser.T__0);
2951
- this.state = 571;
2963
+ this.state = 573;
2952
2964
  this.graphic_expressions_block();
2953
2965
  }
2954
2966
  }
@@ -2973,49 +2985,49 @@ export class CircuitScriptParser extends antlr.Parser {
2973
2985
  try {
2974
2986
  this.enterOuterAlt(localContext, 1);
2975
2987
  {
2976
- this.state = 573;
2988
+ this.state = 575;
2977
2989
  this.match(CircuitScriptParser.Create);
2978
- this.state = 574;
2990
+ this.state = 576;
2979
2991
  this.match(CircuitScriptParser.Module);
2980
- this.state = 575;
2992
+ this.state = 577;
2981
2993
  this.match(CircuitScriptParser.T__0);
2982
- this.state = 576;
2994
+ this.state = 578;
2983
2995
  this.match(CircuitScriptParser.NEWLINE);
2984
- this.state = 577;
2996
+ this.state = 579;
2985
2997
  this.match(CircuitScriptParser.INDENT);
2986
- this.state = 581;
2998
+ this.state = 583;
2987
2999
  this.errorHandler.sync(this);
2988
3000
  _la = this.tokenStream.LA(1);
2989
3001
  do {
2990
3002
  {
2991
- this.state = 581;
3003
+ this.state = 583;
2992
3004
  this.errorHandler.sync(this);
2993
3005
  switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
2994
3006
  case 1:
2995
3007
  {
2996
- this.state = 578;
3008
+ this.state = 580;
2997
3009
  this.match(CircuitScriptParser.NEWLINE);
2998
3010
  }
2999
3011
  break;
3000
3012
  case 2:
3001
3013
  {
3002
- this.state = 579;
3014
+ this.state = 581;
3003
3015
  this.property_expr();
3004
3016
  }
3005
3017
  break;
3006
3018
  case 3:
3007
3019
  {
3008
- this.state = 580;
3020
+ this.state = 582;
3009
3021
  this.property_block_expr();
3010
3022
  }
3011
3023
  break;
3012
3024
  }
3013
3025
  }
3014
- this.state = 583;
3026
+ this.state = 585;
3015
3027
  this.errorHandler.sync(this);
3016
3028
  _la = this.tokenStream.LA(1);
3017
- } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
3018
- this.state = 585;
3029
+ } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 275) !== 0));
3030
+ this.state = 587;
3019
3031
  this.match(CircuitScriptParser.DEDENT);
3020
3032
  }
3021
3033
  }
@@ -3041,21 +3053,21 @@ export class CircuitScriptParser extends antlr.Parser {
3041
3053
  this.enterOuterAlt(localContext, 1);
3042
3054
  {
3043
3055
  {
3044
- this.state = 587;
3056
+ this.state = 589;
3045
3057
  this.match(CircuitScriptParser.NEWLINE);
3046
- this.state = 588;
3058
+ this.state = 590;
3047
3059
  this.match(CircuitScriptParser.INDENT);
3048
- this.state = 591;
3060
+ this.state = 593;
3049
3061
  this.errorHandler.sync(this);
3050
3062
  _la = this.tokenStream.LA(1);
3051
3063
  do {
3052
3064
  {
3053
- this.state = 591;
3065
+ this.state = 593;
3054
3066
  this.errorHandler.sync(this);
3055
3067
  switch (this.tokenStream.LA(1)) {
3056
3068
  case CircuitScriptParser.NEWLINE:
3057
3069
  {
3058
- this.state = 589;
3070
+ this.state = 591;
3059
3071
  this.match(CircuitScriptParser.NEWLINE);
3060
3072
  }
3061
3073
  break;
@@ -3063,7 +3075,7 @@ export class CircuitScriptParser extends antlr.Parser {
3063
3075
  case CircuitScriptParser.INTEGER_VALUE:
3064
3076
  case CircuitScriptParser.STRING_VALUE:
3065
3077
  {
3066
- this.state = 590;
3078
+ this.state = 592;
3067
3079
  this.property_expr();
3068
3080
  }
3069
3081
  break;
@@ -3071,11 +3083,11 @@ export class CircuitScriptParser extends antlr.Parser {
3071
3083
  throw new antlr.NoViableAltException(this);
3072
3084
  }
3073
3085
  }
3074
- this.state = 593;
3086
+ this.state = 595;
3075
3087
  this.errorHandler.sync(this);
3076
3088
  _la = this.tokenStream.LA(1);
3077
- } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
3078
- this.state = 595;
3089
+ } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 275) !== 0));
3090
+ this.state = 597;
3079
3091
  this.match(CircuitScriptParser.DEDENT);
3080
3092
  }
3081
3093
  }
@@ -3099,7 +3111,7 @@ export class CircuitScriptParser extends antlr.Parser {
3099
3111
  this.enterRule(localContext, 102, CircuitScriptParser.RULE_graphic_expr);
3100
3112
  let _la;
3101
3113
  try {
3102
- this.state = 623;
3114
+ this.state = 625;
3103
3115
  this.errorHandler.sync(this);
3104
3116
  switch (this.tokenStream.LA(1)) {
3105
3117
  case CircuitScriptParser.Pin:
@@ -3107,47 +3119,47 @@ export class CircuitScriptParser extends antlr.Parser {
3107
3119
  localContext = new GraphicCommandExprContext(localContext);
3108
3120
  this.enterOuterAlt(localContext, 1);
3109
3121
  {
3110
- this.state = 597;
3122
+ this.state = 599;
3111
3123
  localContext._command = this.tokenStream.LT(1);
3112
3124
  _la = this.tokenStream.LA(1);
3113
- if (!(_la === 16 || _la === 58)) {
3125
+ if (!(_la === 16 || _la === 59)) {
3114
3126
  localContext._command = this.errorHandler.recoverInline(this);
3115
3127
  }
3116
3128
  else {
3117
3129
  this.errorHandler.reportMatch(this);
3118
3130
  this.consume();
3119
3131
  }
3120
- this.state = 599;
3132
+ this.state = 601;
3121
3133
  this.errorHandler.sync(this);
3122
3134
  _la = this.tokenStream.LA(1);
3123
3135
  if (_la === 1) {
3124
3136
  {
3125
- this.state = 598;
3137
+ this.state = 600;
3126
3138
  this.match(CircuitScriptParser.T__0);
3127
3139
  }
3128
3140
  }
3129
- this.state = 607;
3141
+ this.state = 609;
3130
3142
  this.errorHandler.sync(this);
3131
3143
  switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context)) {
3132
3144
  case 1:
3133
3145
  {
3134
- this.state = 601;
3146
+ this.state = 603;
3135
3147
  this.parameters();
3136
3148
  }
3137
3149
  break;
3138
3150
  case 2:
3139
3151
  {
3140
- this.state = 602;
3152
+ this.state = 604;
3141
3153
  this.match(CircuitScriptParser.OPEN_PAREN);
3142
- this.state = 603;
3154
+ this.state = 605;
3143
3155
  this.parameters();
3144
- this.state = 604;
3156
+ this.state = 606;
3145
3157
  this.match(CircuitScriptParser.CLOSE_PAREN);
3146
3158
  }
3147
3159
  break;
3148
3160
  case 3:
3149
3161
  {
3150
- this.state = 606;
3162
+ this.state = 608;
3151
3163
  this.nested_properties_inner();
3152
3164
  }
3153
3165
  break;
@@ -3158,33 +3170,33 @@ export class CircuitScriptParser extends antlr.Parser {
3158
3170
  localContext = new GraphicForExprContext(localContext);
3159
3171
  this.enterOuterAlt(localContext, 2);
3160
3172
  {
3161
- this.state = 609;
3173
+ this.state = 611;
3162
3174
  this.match(CircuitScriptParser.For);
3163
- this.state = 610;
3175
+ this.state = 612;
3164
3176
  this.match(CircuitScriptParser.ID);
3165
- this.state = 615;
3177
+ this.state = 617;
3166
3178
  this.errorHandler.sync(this);
3167
3179
  _la = this.tokenStream.LA(1);
3168
3180
  while (_la === 2) {
3169
3181
  {
3170
3182
  {
3171
- this.state = 611;
3183
+ this.state = 613;
3172
3184
  this.match(CircuitScriptParser.T__1);
3173
- this.state = 612;
3185
+ this.state = 614;
3174
3186
  this.match(CircuitScriptParser.ID);
3175
3187
  }
3176
3188
  }
3177
- this.state = 617;
3189
+ this.state = 619;
3178
3190
  this.errorHandler.sync(this);
3179
3191
  _la = this.tokenStream.LA(1);
3180
3192
  }
3181
- this.state = 618;
3193
+ this.state = 620;
3182
3194
  this.match(CircuitScriptParser.In);
3183
- this.state = 619;
3195
+ this.state = 621;
3184
3196
  this.data_expr(0);
3185
- this.state = 620;
3197
+ this.state = 622;
3186
3198
  this.match(CircuitScriptParser.T__0);
3187
- this.state = 621;
3199
+ this.state = 623;
3188
3200
  this.graphic_expressions_block();
3189
3201
  }
3190
3202
  break;
@@ -3209,14 +3221,29 @@ export class CircuitScriptParser extends antlr.Parser {
3209
3221
  property_expr() {
3210
3222
  let localContext = new Property_exprContext(this.context, this.state);
3211
3223
  this.enterRule(localContext, 104, CircuitScriptParser.RULE_property_expr);
3224
+ let _la;
3212
3225
  try {
3213
3226
  this.enterOuterAlt(localContext, 1);
3214
3227
  {
3215
- this.state = 625;
3228
+ this.state = 627;
3216
3229
  this.property_key_expr();
3217
- this.state = 626;
3230
+ this.state = 631;
3231
+ this.errorHandler.sync(this);
3232
+ _la = this.tokenStream.LA(1);
3233
+ while (_la === 63) {
3234
+ {
3235
+ {
3236
+ this.state = 628;
3237
+ localContext._extra = this.match(CircuitScriptParser.STRING_VALUE);
3238
+ }
3239
+ }
3240
+ this.state = 633;
3241
+ this.errorHandler.sync(this);
3242
+ _la = this.tokenStream.LA(1);
3243
+ }
3244
+ this.state = 634;
3218
3245
  this.match(CircuitScriptParser.T__0);
3219
- this.state = 627;
3246
+ this.state = 635;
3220
3247
  this.property_value_expr();
3221
3248
  }
3222
3249
  }
@@ -3241,9 +3268,9 @@ export class CircuitScriptParser extends antlr.Parser {
3241
3268
  try {
3242
3269
  this.enterOuterAlt(localContext, 1);
3243
3270
  {
3244
- this.state = 629;
3271
+ this.state = 637;
3245
3272
  _la = this.tokenStream.LA(1);
3246
- if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 19) !== 0))) {
3273
+ if (!(((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 19) !== 0))) {
3247
3274
  this.errorHandler.recoverInline(this);
3248
3275
  }
3249
3276
  else {
@@ -3271,14 +3298,14 @@ export class CircuitScriptParser extends antlr.Parser {
3271
3298
  this.enterRule(localContext, 108, CircuitScriptParser.RULE_property_value_expr);
3272
3299
  let _la;
3273
3300
  try {
3274
- this.state = 640;
3301
+ this.state = 648;
3275
3302
  this.errorHandler.sync(this);
3276
3303
  switch (this.tokenStream.LA(1)) {
3277
3304
  case CircuitScriptParser.NEWLINE:
3278
3305
  localContext = new Nested_propertiesContext(localContext);
3279
3306
  this.enterOuterAlt(localContext, 1);
3280
3307
  {
3281
- this.state = 631;
3308
+ this.state = 639;
3282
3309
  this.nested_properties_inner();
3283
3310
  }
3284
3311
  break;
@@ -3299,21 +3326,21 @@ export class CircuitScriptParser extends antlr.Parser {
3299
3326
  localContext = new Single_line_propertyContext(localContext);
3300
3327
  this.enterOuterAlt(localContext, 2);
3301
3328
  {
3302
- this.state = 632;
3329
+ this.state = 640;
3303
3330
  this.data_expr(0);
3304
- this.state = 637;
3331
+ this.state = 645;
3305
3332
  this.errorHandler.sync(this);
3306
3333
  _la = this.tokenStream.LA(1);
3307
3334
  while (_la === 2) {
3308
3335
  {
3309
3336
  {
3310
- this.state = 633;
3337
+ this.state = 641;
3311
3338
  this.match(CircuitScriptParser.T__1);
3312
- this.state = 634;
3339
+ this.state = 642;
3313
3340
  this.data_expr(0);
3314
3341
  }
3315
3342
  }
3316
- this.state = 639;
3343
+ this.state = 647;
3317
3344
  this.errorHandler.sync(this);
3318
3345
  _la = this.tokenStream.LA(1);
3319
3346
  }
@@ -3341,27 +3368,27 @@ export class CircuitScriptParser extends antlr.Parser {
3341
3368
  let localContext = new Wire_atom_exprContext(this.context, this.state);
3342
3369
  this.enterRule(localContext, 110, CircuitScriptParser.RULE_wire_atom_expr);
3343
3370
  try {
3344
- this.state = 648;
3371
+ this.state = 656;
3345
3372
  this.errorHandler.sync(this);
3346
- switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context)) {
3373
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context)) {
3347
3374
  case 1:
3348
3375
  localContext = new Wire_expr_direction_valueContext(localContext);
3349
3376
  this.enterOuterAlt(localContext, 1);
3350
3377
  {
3351
- this.state = 642;
3378
+ this.state = 650;
3352
3379
  this.match(CircuitScriptParser.ID);
3353
- this.state = 645;
3380
+ this.state = 653;
3354
3381
  this.errorHandler.sync(this);
3355
- switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context)) {
3382
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context)) {
3356
3383
  case 1:
3357
3384
  {
3358
- this.state = 643;
3385
+ this.state = 651;
3359
3386
  this.match(CircuitScriptParser.INTEGER_VALUE);
3360
3387
  }
3361
3388
  break;
3362
3389
  case 2:
3363
3390
  {
3364
- this.state = 644;
3391
+ this.state = 652;
3365
3392
  this.data_expr(0);
3366
3393
  }
3367
3394
  break;
@@ -3372,7 +3399,7 @@ export class CircuitScriptParser extends antlr.Parser {
3372
3399
  localContext = new Wire_expr_direction_onlyContext(localContext);
3373
3400
  this.enterOuterAlt(localContext, 2);
3374
3401
  {
3375
- this.state = 647;
3402
+ this.state = 655;
3376
3403
  this.match(CircuitScriptParser.ID);
3377
3404
  }
3378
3405
  break;
@@ -3399,23 +3426,23 @@ export class CircuitScriptParser extends antlr.Parser {
3399
3426
  let alternative;
3400
3427
  this.enterOuterAlt(localContext, 1);
3401
3428
  {
3402
- this.state = 650;
3429
+ this.state = 658;
3403
3430
  this.match(CircuitScriptParser.Wire);
3404
- this.state = 654;
3431
+ this.state = 662;
3405
3432
  this.errorHandler.sync(this);
3406
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3433
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 72, this.context);
3407
3434
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3408
3435
  if (alternative === 1) {
3409
3436
  {
3410
3437
  {
3411
- this.state = 651;
3438
+ this.state = 659;
3412
3439
  this.wire_atom_expr();
3413
3440
  }
3414
3441
  }
3415
3442
  }
3416
- this.state = 656;
3443
+ this.state = 664;
3417
3444
  this.errorHandler.sync(this);
3418
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3445
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 72, this.context);
3419
3446
  }
3420
3447
  }
3421
3448
  }
@@ -3440,39 +3467,39 @@ export class CircuitScriptParser extends antlr.Parser {
3440
3467
  try {
3441
3468
  this.enterOuterAlt(localContext, 1);
3442
3469
  {
3443
- this.state = 657;
3470
+ this.state = 665;
3444
3471
  this.match(CircuitScriptParser.T__4);
3445
- this.state = 668;
3472
+ this.state = 676;
3446
3473
  this.errorHandler.sync(this);
3447
3474
  _la = this.tokenStream.LA(1);
3448
- while (_la === 5 || _la === 11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4265621505) !== 0)) {
3475
+ while (_la === 5 || _la === 11 || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 4265621505) !== 0)) {
3449
3476
  {
3450
3477
  {
3451
- this.state = 658;
3478
+ this.state = 666;
3452
3479
  this.data_expr(0);
3453
- this.state = 663;
3480
+ this.state = 671;
3454
3481
  this.errorHandler.sync(this);
3455
3482
  _la = this.tokenStream.LA(1);
3456
3483
  while (_la === 2) {
3457
3484
  {
3458
3485
  {
3459
- this.state = 659;
3486
+ this.state = 667;
3460
3487
  this.match(CircuitScriptParser.T__1);
3461
- this.state = 660;
3488
+ this.state = 668;
3462
3489
  this.data_expr(0);
3463
3490
  }
3464
3491
  }
3465
- this.state = 665;
3492
+ this.state = 673;
3466
3493
  this.errorHandler.sync(this);
3467
3494
  _la = this.tokenStream.LA(1);
3468
3495
  }
3469
3496
  }
3470
3497
  }
3471
- this.state = 670;
3498
+ this.state = 678;
3472
3499
  this.errorHandler.sync(this);
3473
3500
  _la = this.tokenStream.LA(1);
3474
3501
  }
3475
- this.state = 671;
3502
+ this.state = 679;
3476
3503
  this.match(CircuitScriptParser.T__5);
3477
3504
  }
3478
3505
  }
@@ -3496,20 +3523,20 @@ export class CircuitScriptParser extends antlr.Parser {
3496
3523
  try {
3497
3524
  this.enterOuterAlt(localContext, 1);
3498
3525
  {
3499
- this.state = 673;
3526
+ this.state = 681;
3500
3527
  this.match(CircuitScriptParser.Point);
3501
- this.state = 676;
3528
+ this.state = 684;
3502
3529
  this.errorHandler.sync(this);
3503
- switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context)) {
3530
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 75, this.context)) {
3504
3531
  case 1:
3505
3532
  {
3506
- this.state = 674;
3533
+ this.state = 682;
3507
3534
  this.match(CircuitScriptParser.ID);
3508
3535
  }
3509
3536
  break;
3510
3537
  case 2:
3511
3538
  {
3512
- this.state = 675;
3539
+ this.state = 683;
3513
3540
  this.data_expr(0);
3514
3541
  }
3515
3542
  break;
@@ -3533,13 +3560,146 @@ export class CircuitScriptParser extends antlr.Parser {
3533
3560
  import_expr() {
3534
3561
  let localContext = new Import_exprContext(this.context, this.state);
3535
3562
  this.enterRule(localContext, 118, CircuitScriptParser.RULE_import_expr);
3563
+ let _la;
3536
3564
  try {
3565
+ this.state = 712;
3566
+ this.errorHandler.sync(this);
3567
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context)) {
3568
+ case 1:
3569
+ localContext = new Import_simpleContext(localContext);
3570
+ this.enterOuterAlt(localContext, 1);
3571
+ {
3572
+ this.state = 686;
3573
+ this.match(CircuitScriptParser.Import);
3574
+ this.state = 687;
3575
+ localContext._moduleName = this.match(CircuitScriptParser.ID);
3576
+ this.state = 689;
3577
+ this.errorHandler.sync(this);
3578
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 76, this.context)) {
3579
+ case 1:
3580
+ {
3581
+ this.state = 688;
3582
+ this.import_annotation_expr();
3583
+ }
3584
+ break;
3585
+ }
3586
+ }
3587
+ break;
3588
+ case 2:
3589
+ localContext = new Import_all_simpleContext(localContext);
3590
+ this.enterOuterAlt(localContext, 2);
3591
+ {
3592
+ this.state = 691;
3593
+ this.match(CircuitScriptParser.From);
3594
+ this.state = 692;
3595
+ localContext._moduleName = this.match(CircuitScriptParser.ID);
3596
+ this.state = 693;
3597
+ this.match(CircuitScriptParser.Import);
3598
+ this.state = 694;
3599
+ this.match(CircuitScriptParser.Multiply);
3600
+ this.state = 696;
3601
+ this.errorHandler.sync(this);
3602
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 77, this.context)) {
3603
+ case 1:
3604
+ {
3605
+ this.state = 695;
3606
+ this.import_annotation_expr();
3607
+ }
3608
+ break;
3609
+ }
3610
+ }
3611
+ break;
3612
+ case 3:
3613
+ localContext = new Import_specificContext(localContext);
3614
+ this.enterOuterAlt(localContext, 3);
3615
+ {
3616
+ this.state = 698;
3617
+ this.match(CircuitScriptParser.From);
3618
+ this.state = 699;
3619
+ localContext._moduleName = this.match(CircuitScriptParser.ID);
3620
+ this.state = 700;
3621
+ this.match(CircuitScriptParser.Import);
3622
+ this.state = 701;
3623
+ localContext._ID = this.match(CircuitScriptParser.ID);
3624
+ localContext._funcNames.push(localContext._ID);
3625
+ this.state = 706;
3626
+ this.errorHandler.sync(this);
3627
+ _la = this.tokenStream.LA(1);
3628
+ while (_la === 2) {
3629
+ {
3630
+ {
3631
+ this.state = 702;
3632
+ this.match(CircuitScriptParser.T__1);
3633
+ this.state = 703;
3634
+ localContext._ID = this.match(CircuitScriptParser.ID);
3635
+ localContext._funcNames.push(localContext._ID);
3636
+ }
3637
+ }
3638
+ this.state = 708;
3639
+ this.errorHandler.sync(this);
3640
+ _la = this.tokenStream.LA(1);
3641
+ }
3642
+ this.state = 710;
3643
+ this.errorHandler.sync(this);
3644
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 79, this.context)) {
3645
+ case 1:
3646
+ {
3647
+ this.state = 709;
3648
+ this.import_annotation_expr();
3649
+ }
3650
+ break;
3651
+ }
3652
+ }
3653
+ break;
3654
+ }
3655
+ }
3656
+ catch (re) {
3657
+ if (re instanceof antlr.RecognitionException) {
3658
+ this.errorHandler.reportError(this, re);
3659
+ this.errorHandler.recover(this, re);
3660
+ }
3661
+ else {
3662
+ throw re;
3663
+ }
3664
+ }
3665
+ finally {
3666
+ this.exitRule();
3667
+ }
3668
+ return localContext;
3669
+ }
3670
+ import_annotation_expr() {
3671
+ let localContext = new Import_annotation_exprContext(this.context, this.state);
3672
+ this.enterRule(localContext, 120, CircuitScriptParser.RULE_import_annotation_expr);
3673
+ let _la;
3674
+ try {
3675
+ let alternative;
3537
3676
  this.enterOuterAlt(localContext, 1);
3538
3677
  {
3539
- this.state = 678;
3540
- this.match(CircuitScriptParser.Import);
3541
- this.state = 679;
3542
- this.match(CircuitScriptParser.ID);
3678
+ this.state = 714;
3679
+ this.match(CircuitScriptParser.ANNOTATION_START);
3680
+ this.state = 718;
3681
+ this.errorHandler.sync(this);
3682
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 81, this.context);
3683
+ while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3684
+ if (alternative === 1) {
3685
+ {
3686
+ {
3687
+ this.state = 715;
3688
+ _la = this.tokenStream.LA(1);
3689
+ if (!(_la === 45 || _la === 59)) {
3690
+ this.errorHandler.recoverInline(this);
3691
+ }
3692
+ else {
3693
+ this.errorHandler.reportMatch(this);
3694
+ this.consume();
3695
+ }
3696
+ }
3697
+ }
3698
+ }
3699
+ this.state = 720;
3700
+ this.errorHandler.sync(this);
3701
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 81, this.context);
3702
+ }
3543
3703
  }
3544
3704
  }
3545
3705
  catch (re) {
@@ -3558,23 +3718,23 @@ export class CircuitScriptParser extends antlr.Parser {
3558
3718
  }
3559
3719
  frame_expr() {
3560
3720
  let localContext = new Frame_exprContext(this.context, this.state);
3561
- this.enterRule(localContext, 120, CircuitScriptParser.RULE_frame_expr);
3721
+ this.enterRule(localContext, 122, CircuitScriptParser.RULE_frame_expr);
3562
3722
  let _la;
3563
3723
  try {
3564
3724
  this.enterOuterAlt(localContext, 1);
3565
3725
  {
3566
- this.state = 681;
3726
+ this.state = 721;
3567
3727
  _la = this.tokenStream.LA(1);
3568
- if (!(_la === 33 || _la === 34)) {
3728
+ if (!(_la === 34 || _la === 35)) {
3569
3729
  this.errorHandler.recoverInline(this);
3570
3730
  }
3571
3731
  else {
3572
3732
  this.errorHandler.reportMatch(this);
3573
3733
  this.consume();
3574
3734
  }
3575
- this.state = 682;
3735
+ this.state = 722;
3576
3736
  this.match(CircuitScriptParser.T__0);
3577
- this.state = 683;
3737
+ this.state = 723;
3578
3738
  this.expressions_block();
3579
3739
  }
3580
3740
  }
@@ -3594,42 +3754,42 @@ export class CircuitScriptParser extends antlr.Parser {
3594
3754
  }
3595
3755
  if_expr() {
3596
3756
  let localContext = new If_exprContext(this.context, this.state);
3597
- this.enterRule(localContext, 122, CircuitScriptParser.RULE_if_expr);
3757
+ this.enterRule(localContext, 124, CircuitScriptParser.RULE_if_expr);
3598
3758
  let _la;
3599
3759
  try {
3600
3760
  let alternative;
3601
3761
  this.enterOuterAlt(localContext, 1);
3602
3762
  {
3603
- this.state = 685;
3763
+ this.state = 725;
3604
3764
  this.match(CircuitScriptParser.If);
3605
- this.state = 686;
3765
+ this.state = 726;
3606
3766
  this.data_expr(0);
3607
- this.state = 687;
3767
+ this.state = 727;
3608
3768
  this.match(CircuitScriptParser.T__0);
3609
- this.state = 688;
3769
+ this.state = 728;
3610
3770
  this.expressions_block();
3611
- this.state = 692;
3771
+ this.state = 732;
3612
3772
  this.errorHandler.sync(this);
3613
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3773
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3614
3774
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3615
3775
  if (alternative === 1) {
3616
3776
  {
3617
3777
  {
3618
- this.state = 689;
3778
+ this.state = 729;
3619
3779
  this.if_inner_expr();
3620
3780
  }
3621
3781
  }
3622
3782
  }
3623
- this.state = 694;
3783
+ this.state = 734;
3624
3784
  this.errorHandler.sync(this);
3625
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3785
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3626
3786
  }
3627
- this.state = 696;
3787
+ this.state = 736;
3628
3788
  this.errorHandler.sync(this);
3629
3789
  _la = this.tokenStream.LA(1);
3630
- if (_la === 31) {
3790
+ if (_la === 32) {
3631
3791
  {
3632
- this.state = 695;
3792
+ this.state = 735;
3633
3793
  this.else_expr();
3634
3794
  }
3635
3795
  }
@@ -3651,19 +3811,19 @@ export class CircuitScriptParser extends antlr.Parser {
3651
3811
  }
3652
3812
  if_inner_expr() {
3653
3813
  let localContext = new If_inner_exprContext(this.context, this.state);
3654
- this.enterRule(localContext, 124, CircuitScriptParser.RULE_if_inner_expr);
3814
+ this.enterRule(localContext, 126, CircuitScriptParser.RULE_if_inner_expr);
3655
3815
  try {
3656
3816
  this.enterOuterAlt(localContext, 1);
3657
3817
  {
3658
- this.state = 698;
3818
+ this.state = 738;
3659
3819
  this.match(CircuitScriptParser.Else);
3660
- this.state = 699;
3820
+ this.state = 739;
3661
3821
  this.match(CircuitScriptParser.If);
3662
- this.state = 700;
3822
+ this.state = 740;
3663
3823
  this.data_expr(0);
3664
- this.state = 701;
3824
+ this.state = 741;
3665
3825
  this.match(CircuitScriptParser.T__0);
3666
- this.state = 702;
3826
+ this.state = 742;
3667
3827
  this.expressions_block();
3668
3828
  }
3669
3829
  }
@@ -3683,15 +3843,15 @@ export class CircuitScriptParser extends antlr.Parser {
3683
3843
  }
3684
3844
  else_expr() {
3685
3845
  let localContext = new Else_exprContext(this.context, this.state);
3686
- this.enterRule(localContext, 126, CircuitScriptParser.RULE_else_expr);
3846
+ this.enterRule(localContext, 128, CircuitScriptParser.RULE_else_expr);
3687
3847
  try {
3688
3848
  this.enterOuterAlt(localContext, 1);
3689
3849
  {
3690
- this.state = 704;
3850
+ this.state = 744;
3691
3851
  this.match(CircuitScriptParser.Else);
3692
- this.state = 705;
3852
+ this.state = 745;
3693
3853
  this.match(CircuitScriptParser.T__0);
3694
- this.state = 706;
3854
+ this.state = 746;
3695
3855
  this.expressions_block();
3696
3856
  }
3697
3857
  }
@@ -3711,17 +3871,17 @@ export class CircuitScriptParser extends antlr.Parser {
3711
3871
  }
3712
3872
  while_expr() {
3713
3873
  let localContext = new While_exprContext(this.context, this.state);
3714
- this.enterRule(localContext, 128, CircuitScriptParser.RULE_while_expr);
3874
+ this.enterRule(localContext, 130, CircuitScriptParser.RULE_while_expr);
3715
3875
  try {
3716
3876
  this.enterOuterAlt(localContext, 1);
3717
3877
  {
3718
- this.state = 708;
3878
+ this.state = 748;
3719
3879
  this.match(CircuitScriptParser.While);
3720
- this.state = 709;
3880
+ this.state = 749;
3721
3881
  this.data_expr(0);
3722
- this.state = 710;
3882
+ this.state = 750;
3723
3883
  this.match(CircuitScriptParser.T__0);
3724
- this.state = 711;
3884
+ this.state = 751;
3725
3885
  this.expressions_block();
3726
3886
  }
3727
3887
  }
@@ -3741,38 +3901,38 @@ export class CircuitScriptParser extends antlr.Parser {
3741
3901
  }
3742
3902
  for_expr() {
3743
3903
  let localContext = new For_exprContext(this.context, this.state);
3744
- this.enterRule(localContext, 130, CircuitScriptParser.RULE_for_expr);
3904
+ this.enterRule(localContext, 132, CircuitScriptParser.RULE_for_expr);
3745
3905
  let _la;
3746
3906
  try {
3747
3907
  this.enterOuterAlt(localContext, 1);
3748
3908
  {
3749
- this.state = 713;
3909
+ this.state = 753;
3750
3910
  this.match(CircuitScriptParser.For);
3751
- this.state = 714;
3911
+ this.state = 754;
3752
3912
  this.match(CircuitScriptParser.ID);
3753
- this.state = 719;
3913
+ this.state = 759;
3754
3914
  this.errorHandler.sync(this);
3755
3915
  _la = this.tokenStream.LA(1);
3756
3916
  while (_la === 2) {
3757
3917
  {
3758
3918
  {
3759
- this.state = 715;
3919
+ this.state = 755;
3760
3920
  this.match(CircuitScriptParser.T__1);
3761
- this.state = 716;
3921
+ this.state = 756;
3762
3922
  this.match(CircuitScriptParser.ID);
3763
3923
  }
3764
3924
  }
3765
- this.state = 721;
3925
+ this.state = 761;
3766
3926
  this.errorHandler.sync(this);
3767
3927
  _la = this.tokenStream.LA(1);
3768
3928
  }
3769
- this.state = 722;
3929
+ this.state = 762;
3770
3930
  this.match(CircuitScriptParser.In);
3771
- this.state = 723;
3931
+ this.state = 763;
3772
3932
  this.data_expr(0);
3773
- this.state = 724;
3933
+ this.state = 764;
3774
3934
  this.match(CircuitScriptParser.T__0);
3775
- this.state = 725;
3935
+ this.state = 765;
3776
3936
  this.expressions_block();
3777
3937
  }
3778
3938
  }
@@ -3792,36 +3952,36 @@ export class CircuitScriptParser extends antlr.Parser {
3792
3952
  }
3793
3953
  part_set_expr() {
3794
3954
  let localContext = new Part_set_exprContext(this.context, this.state);
3795
- this.enterRule(localContext, 132, CircuitScriptParser.RULE_part_set_expr);
3955
+ this.enterRule(localContext, 134, CircuitScriptParser.RULE_part_set_expr);
3796
3956
  let _la;
3797
3957
  try {
3798
3958
  this.enterOuterAlt(localContext, 1);
3799
3959
  {
3800
- this.state = 727;
3960
+ this.state = 767;
3801
3961
  this.match(CircuitScriptParser.T__7);
3802
- this.state = 728;
3962
+ this.state = 768;
3803
3963
  this.match(CircuitScriptParser.T__0);
3804
- this.state = 729;
3964
+ this.state = 769;
3805
3965
  this.data_expr(0);
3806
- this.state = 734;
3966
+ this.state = 774;
3807
3967
  this.errorHandler.sync(this);
3808
3968
  _la = this.tokenStream.LA(1);
3809
3969
  while (_la === 2) {
3810
3970
  {
3811
3971
  {
3812
- this.state = 730;
3972
+ this.state = 770;
3813
3973
  this.match(CircuitScriptParser.T__1);
3814
- this.state = 731;
3974
+ this.state = 771;
3815
3975
  this.data_expr(0);
3816
3976
  }
3817
3977
  }
3818
- this.state = 736;
3978
+ this.state = 776;
3819
3979
  this.errorHandler.sync(this);
3820
3980
  _la = this.tokenStream.LA(1);
3821
3981
  }
3822
- this.state = 737;
3982
+ this.state = 777;
3823
3983
  this.match(CircuitScriptParser.T__0);
3824
- this.state = 738;
3984
+ this.state = 778;
3825
3985
  this.part_match_block();
3826
3986
  }
3827
3987
  }
@@ -3841,14 +4001,14 @@ export class CircuitScriptParser extends antlr.Parser {
3841
4001
  }
3842
4002
  part_set_key() {
3843
4003
  let localContext = new Part_set_keyContext(this.context, this.state);
3844
- this.enterRule(localContext, 134, CircuitScriptParser.RULE_part_set_key);
4004
+ this.enterRule(localContext, 136, CircuitScriptParser.RULE_part_set_key);
3845
4005
  let _la;
3846
4006
  try {
3847
4007
  this.enterOuterAlt(localContext, 1);
3848
4008
  {
3849
- this.state = 740;
4009
+ this.state = 780;
3850
4010
  _la = this.tokenStream.LA(1);
3851
- if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 59) !== 0))) {
4011
+ if (!(((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 59) !== 0))) {
3852
4012
  this.errorHandler.recoverInline(this);
3853
4013
  }
3854
4014
  else {
@@ -3873,26 +4033,26 @@ export class CircuitScriptParser extends antlr.Parser {
3873
4033
  }
3874
4034
  part_match_block() {
3875
4035
  let localContext = new Part_match_blockContext(this.context, this.state);
3876
- this.enterRule(localContext, 136, CircuitScriptParser.RULE_part_match_block);
4036
+ this.enterRule(localContext, 138, CircuitScriptParser.RULE_part_match_block);
3877
4037
  let _la;
3878
4038
  try {
3879
4039
  this.enterOuterAlt(localContext, 1);
3880
4040
  {
3881
- this.state = 742;
4041
+ this.state = 782;
3882
4042
  this.match(CircuitScriptParser.NEWLINE);
3883
- this.state = 743;
4043
+ this.state = 783;
3884
4044
  this.match(CircuitScriptParser.INDENT);
3885
- this.state = 746;
4045
+ this.state = 786;
3886
4046
  this.errorHandler.sync(this);
3887
4047
  _la = this.tokenStream.LA(1);
3888
4048
  do {
3889
4049
  {
3890
- this.state = 746;
4050
+ this.state = 786;
3891
4051
  this.errorHandler.sync(this);
3892
4052
  switch (this.tokenStream.LA(1)) {
3893
4053
  case CircuitScriptParser.NEWLINE:
3894
4054
  {
3895
- this.state = 744;
4055
+ this.state = 784;
3896
4056
  this.match(CircuitScriptParser.NEWLINE);
3897
4057
  }
3898
4058
  break;
@@ -3902,7 +4062,7 @@ export class CircuitScriptParser extends antlr.Parser {
3902
4062
  case CircuitScriptParser.STRING_VALUE:
3903
4063
  case CircuitScriptParser.PERCENTAGE_VALUE:
3904
4064
  {
3905
- this.state = 745;
4065
+ this.state = 785;
3906
4066
  this.part_sub_expr();
3907
4067
  }
3908
4068
  break;
@@ -3910,11 +4070,11 @@ export class CircuitScriptParser extends antlr.Parser {
3910
4070
  throw new antlr.NoViableAltException(this);
3911
4071
  }
3912
4072
  }
3913
- this.state = 748;
4073
+ this.state = 788;
3914
4074
  this.errorHandler.sync(this);
3915
4075
  _la = this.tokenStream.LA(1);
3916
- } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 315) !== 0));
3917
- this.state = 750;
4076
+ } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 315) !== 0));
4077
+ this.state = 790;
3918
4078
  this.match(CircuitScriptParser.DEDENT);
3919
4079
  }
3920
4080
  }
@@ -3934,29 +4094,29 @@ export class CircuitScriptParser extends antlr.Parser {
3934
4094
  }
3935
4095
  part_sub_expr() {
3936
4096
  let localContext = new Part_sub_exprContext(this.context, this.state);
3937
- this.enterRule(localContext, 138, CircuitScriptParser.RULE_part_sub_expr);
4097
+ this.enterRule(localContext, 140, CircuitScriptParser.RULE_part_sub_expr);
3938
4098
  try {
3939
- this.state = 755;
4099
+ this.state = 795;
3940
4100
  this.errorHandler.sync(this);
3941
- switch (this.interpreter.adaptivePredict(this.tokenStream, 81, this.context)) {
4101
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 88, this.context)) {
3942
4102
  case 1:
3943
4103
  this.enterOuterAlt(localContext, 1);
3944
4104
  {
3945
- this.state = 752;
4105
+ this.state = 792;
3946
4106
  this.part_condition_expr();
3947
4107
  }
3948
4108
  break;
3949
4109
  case 2:
3950
4110
  this.enterOuterAlt(localContext, 2);
3951
4111
  {
3952
- this.state = 753;
4112
+ this.state = 793;
3953
4113
  this.part_value_expr();
3954
4114
  }
3955
4115
  break;
3956
4116
  case 3:
3957
4117
  this.enterOuterAlt(localContext, 3);
3958
4118
  {
3959
- this.state = 754;
4119
+ this.state = 794;
3960
4120
  this.part_condition_key_only_expr();
3961
4121
  }
3962
4122
  break;
@@ -3978,68 +4138,68 @@ export class CircuitScriptParser extends antlr.Parser {
3978
4138
  }
3979
4139
  part_condition_expr() {
3980
4140
  let localContext = new Part_condition_exprContext(this.context, this.state);
3981
- this.enterRule(localContext, 140, CircuitScriptParser.RULE_part_condition_expr);
4141
+ this.enterRule(localContext, 142, CircuitScriptParser.RULE_part_condition_expr);
3982
4142
  let _la;
3983
4143
  try {
3984
4144
  let alternative;
3985
4145
  this.enterOuterAlt(localContext, 1);
3986
4146
  {
3987
- this.state = 757;
4147
+ this.state = 797;
3988
4148
  localContext._part_set_key = this.part_set_key();
3989
4149
  localContext._key_id.push(localContext._part_set_key);
3990
- this.state = 758;
4150
+ this.state = 798;
3991
4151
  this.match(CircuitScriptParser.T__0);
3992
- this.state = 759;
4152
+ this.state = 799;
3993
4153
  localContext._data_expr = this.data_expr(0);
3994
4154
  localContext._values.push(localContext._data_expr);
3995
- this.state = 767;
4155
+ this.state = 807;
3996
4156
  this.errorHandler.sync(this);
3997
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
4157
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 89, this.context);
3998
4158
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3999
4159
  if (alternative === 1) {
4000
4160
  {
4001
4161
  {
4002
- this.state = 760;
4162
+ this.state = 800;
4003
4163
  this.match(CircuitScriptParser.T__1);
4004
- this.state = 761;
4164
+ this.state = 801;
4005
4165
  localContext._part_set_key = this.part_set_key();
4006
4166
  localContext._key_id.push(localContext._part_set_key);
4007
- this.state = 762;
4167
+ this.state = 802;
4008
4168
  this.match(CircuitScriptParser.T__0);
4009
- this.state = 763;
4169
+ this.state = 803;
4010
4170
  localContext._data_expr = this.data_expr(0);
4011
4171
  localContext._values.push(localContext._data_expr);
4012
4172
  }
4013
4173
  }
4014
4174
  }
4015
- this.state = 769;
4175
+ this.state = 809;
4016
4176
  this.errorHandler.sync(this);
4017
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
4177
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 89, this.context);
4018
4178
  }
4019
- this.state = 774;
4179
+ this.state = 814;
4020
4180
  this.errorHandler.sync(this);
4021
4181
  _la = this.tokenStream.LA(1);
4022
4182
  while (_la === 2) {
4023
4183
  {
4024
4184
  {
4025
- this.state = 770;
4185
+ this.state = 810;
4026
4186
  this.match(CircuitScriptParser.T__1);
4027
- this.state = 771;
4187
+ this.state = 811;
4028
4188
  localContext._id_only = this.part_set_key();
4029
4189
  }
4030
4190
  }
4031
- this.state = 776;
4191
+ this.state = 816;
4032
4192
  this.errorHandler.sync(this);
4033
4193
  _la = this.tokenStream.LA(1);
4034
4194
  }
4035
- this.state = 777;
4195
+ this.state = 817;
4036
4196
  this.match(CircuitScriptParser.T__0);
4037
- this.state = 787;
4197
+ this.state = 827;
4038
4198
  this.errorHandler.sync(this);
4039
4199
  switch (this.tokenStream.LA(1)) {
4040
4200
  case CircuitScriptParser.NEWLINE:
4041
4201
  {
4042
- this.state = 778;
4202
+ this.state = 818;
4043
4203
  this.part_match_block();
4044
4204
  }
4045
4205
  break;
@@ -4059,23 +4219,23 @@ export class CircuitScriptParser extends antlr.Parser {
4059
4219
  case CircuitScriptParser.PERCENTAGE_VALUE:
4060
4220
  {
4061
4221
  {
4062
- this.state = 779;
4222
+ this.state = 819;
4063
4223
  localContext._data_expr = this.data_expr(0);
4064
4224
  localContext._last_data.push(localContext._data_expr);
4065
- this.state = 784;
4225
+ this.state = 824;
4066
4226
  this.errorHandler.sync(this);
4067
4227
  _la = this.tokenStream.LA(1);
4068
4228
  while (_la === 2) {
4069
4229
  {
4070
4230
  {
4071
- this.state = 780;
4231
+ this.state = 820;
4072
4232
  this.match(CircuitScriptParser.T__1);
4073
- this.state = 781;
4233
+ this.state = 821;
4074
4234
  localContext._data_expr = this.data_expr(0);
4075
4235
  localContext._last_data.push(localContext._data_expr);
4076
4236
  }
4077
4237
  }
4078
- this.state = 786;
4238
+ this.state = 826;
4079
4239
  this.errorHandler.sync(this);
4080
4240
  _la = this.tokenStream.LA(1);
4081
4241
  }
@@ -4103,15 +4263,15 @@ export class CircuitScriptParser extends antlr.Parser {
4103
4263
  }
4104
4264
  part_condition_key_only_expr() {
4105
4265
  let localContext = new Part_condition_key_only_exprContext(this.context, this.state);
4106
- this.enterRule(localContext, 142, CircuitScriptParser.RULE_part_condition_key_only_expr);
4266
+ this.enterRule(localContext, 144, CircuitScriptParser.RULE_part_condition_key_only_expr);
4107
4267
  try {
4108
4268
  this.enterOuterAlt(localContext, 1);
4109
4269
  {
4110
- this.state = 789;
4270
+ this.state = 829;
4111
4271
  this.part_set_key();
4112
- this.state = 790;
4272
+ this.state = 830;
4113
4273
  this.match(CircuitScriptParser.T__0);
4114
- this.state = 791;
4274
+ this.state = 831;
4115
4275
  this.part_match_block();
4116
4276
  }
4117
4277
  }
@@ -4131,30 +4291,30 @@ export class CircuitScriptParser extends antlr.Parser {
4131
4291
  }
4132
4292
  part_value_expr() {
4133
4293
  let localContext = new Part_value_exprContext(this.context, this.state);
4134
- this.enterRule(localContext, 144, CircuitScriptParser.RULE_part_value_expr);
4294
+ this.enterRule(localContext, 146, CircuitScriptParser.RULE_part_value_expr);
4135
4295
  let _la;
4136
4296
  try {
4137
4297
  this.enterOuterAlt(localContext, 1);
4138
4298
  {
4139
- this.state = 793;
4299
+ this.state = 833;
4140
4300
  this.part_set_key();
4141
- this.state = 794;
4301
+ this.state = 834;
4142
4302
  this.match(CircuitScriptParser.T__0);
4143
- this.state = 795;
4303
+ this.state = 835;
4144
4304
  this.data_expr(0);
4145
- this.state = 800;
4305
+ this.state = 840;
4146
4306
  this.errorHandler.sync(this);
4147
4307
  _la = this.tokenStream.LA(1);
4148
4308
  while (_la === 2) {
4149
4309
  {
4150
4310
  {
4151
- this.state = 796;
4311
+ this.state = 836;
4152
4312
  this.match(CircuitScriptParser.T__1);
4153
- this.state = 797;
4313
+ this.state = 837;
4154
4314
  this.data_expr(0);
4155
4315
  }
4156
4316
  }
4157
- this.state = 802;
4317
+ this.state = 842;
4158
4318
  this.errorHandler.sync(this);
4159
4319
  _la = this.tokenStream.LA(1);
4160
4320
  }
@@ -4176,13 +4336,13 @@ export class CircuitScriptParser extends antlr.Parser {
4176
4336
  }
4177
4337
  annotation_comment_expr() {
4178
4338
  let localContext = new Annotation_comment_exprContext(this.context, this.state);
4179
- this.enterRule(localContext, 146, CircuitScriptParser.RULE_annotation_comment_expr);
4339
+ this.enterRule(localContext, 148, CircuitScriptParser.RULE_annotation_comment_expr);
4180
4340
  try {
4181
4341
  this.enterOuterAlt(localContext, 1);
4182
4342
  {
4183
- this.state = 803;
4343
+ this.state = 843;
4184
4344
  this.match(CircuitScriptParser.ANNOTATION_START);
4185
- this.state = 804;
4345
+ this.state = 844;
4186
4346
  this.match(CircuitScriptParser.ID);
4187
4347
  }
4188
4348
  }
@@ -4223,7 +4383,7 @@ export class CircuitScriptParser extends antlr.Parser {
4223
4383
  return true;
4224
4384
  }
4225
4385
  static _serializedATN = [
4226
- 4, 1, 69, 807, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7,
4386
+ 4, 1, 70, 847, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7,
4227
4387
  6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13,
4228
4388
  2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20,
4229
4389
  7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26,
@@ -4234,292 +4394,308 @@ export class CircuitScriptParser extends antlr.Parser {
4234
4394
  2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59,
4235
4395
  7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65,
4236
4396
  2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72,
4237
- 7, 72, 2, 73, 7, 73, 1, 0, 1, 0, 5, 0, 151, 8, 0, 10, 0, 12, 0, 154, 9, 0, 1, 0, 1, 0, 4, 0,
4238
- 158, 8, 0, 11, 0, 12, 0, 159, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4239
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 178, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 185, 8,
4240
- 2, 1, 3, 1, 3, 3, 3, 189, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 197, 8, 4, 1, 5, 1,
4241
- 5, 1, 5, 1, 5, 4, 5, 203, 8, 5, 11, 5, 12, 5, 204, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7,
4242
- 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 219, 8, 7, 11, 7, 12, 7, 220, 1, 7, 1, 7, 1, 8, 1, 8, 1,
4243
- 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 236, 8, 10, 1, 11, 1, 11, 3,
4244
- 11, 240, 8, 11, 1, 11, 5, 11, 243, 8, 11, 10, 11, 12, 11, 246, 9, 11, 1, 11, 3, 11, 249,
4245
- 8, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 257, 8, 13, 1, 14, 1, 14, 1, 15,
4246
- 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 268, 8, 16, 10, 16, 12, 16, 271, 9, 16,
4247
- 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 279, 8, 17, 10, 17, 12, 17, 282, 9, 17,
4248
- 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 289, 8, 17, 11, 17, 12, 17, 290, 1, 17, 1, 17,
4249
- 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 300, 8, 18, 10, 18, 12, 18, 303, 9, 18, 1, 19,
4250
- 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 312, 8, 20, 11, 20, 12, 20, 313, 1, 20,
4251
- 1, 20, 1, 21, 1, 21, 3, 21, 320, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 325, 8, 22, 10, 22,
4252
- 12, 22, 328, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 334, 8, 23, 1, 24, 1, 24, 3, 24,
4253
- 338, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 344, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1,
4254
- 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 5, 29, 360, 8, 29, 10,
4255
- 29, 12, 29, 363, 9, 29, 1, 29, 1, 29, 5, 29, 367, 8, 29, 10, 29, 12, 29, 370, 9, 29, 1,
4256
- 29, 1, 29, 1, 29, 5, 29, 375, 8, 29, 10, 29, 12, 29, 378, 9, 29, 3, 29, 380, 8, 29, 1,
4257
- 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4258
- 32, 1, 32, 1, 32, 3, 32, 398, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4259
- 32, 3, 32, 408, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4260
- 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 428, 8, 32, 10, 32, 12,
4261
- 32, 431, 9, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 3, 35, 438, 8, 35, 1, 35, 1, 35, 1, 36,
4262
- 1, 36, 1, 36, 1, 36, 3, 36, 446, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36,
4263
- 454, 8, 36, 11, 36, 12, 36, 455, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 462, 8, 37, 1, 38,
4264
- 1, 38, 1, 38, 5, 38, 467, 8, 38, 10, 38, 12, 38, 470, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38,
4265
- 5, 38, 476, 8, 38, 10, 38, 12, 38, 479, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38,
4266
- 1, 38, 5, 38, 488, 8, 38, 10, 38, 12, 38, 491, 9, 38, 3, 38, 493, 8, 38, 1, 39, 1, 39,
4267
- 5, 39, 497, 8, 39, 10, 39, 12, 39, 500, 9, 39, 1, 40, 1, 40, 3, 40, 504, 8, 40, 1, 40,
4268
- 1, 40, 3, 40, 508, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 516, 8, 41, 1,
4269
- 42, 3, 42, 519, 8, 42, 1, 42, 1, 42, 4, 42, 523, 8, 42, 11, 42, 12, 42, 524, 1, 43, 3,
4270
- 43, 528, 8, 43, 1, 43, 1, 43, 3, 43, 532, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45,
4271
- 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 548, 8, 46, 11, 46, 12, 46,
4272
- 549, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 558, 8, 47, 11, 47, 12, 47, 559,
4273
- 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 569, 8, 48, 1, 48, 1, 48, 1, 48,
4274
- 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 582, 8, 49, 11, 49, 12, 49,
4275
- 583, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 4, 50, 592, 8, 50, 11, 50, 12, 50, 593,
4276
- 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 600, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51,
4277
- 3, 51, 608, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 614, 8, 51, 10, 51, 12, 51, 617,
4278
- 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 624, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52,
4279
- 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 636, 8, 54, 10, 54, 12, 54, 639, 9, 54,
4280
- 3, 54, 641, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 646, 8, 55, 1, 55, 3, 55, 649, 8, 55, 1,
4281
- 56, 1, 56, 5, 56, 653, 8, 56, 10, 56, 12, 56, 656, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5,
4282
- 57, 662, 8, 57, 10, 57, 12, 57, 665, 9, 57, 5, 57, 667, 8, 57, 10, 57, 12, 57, 670, 9,
4283
- 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 3, 58, 677, 8, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1,
4284
- 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 691, 8, 61, 10, 61, 12, 61,
4285
- 694, 9, 61, 1, 61, 3, 61, 697, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1,
4286
- 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 718,
4287
- 8, 65, 10, 65, 12, 65, 721, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66,
4288
- 1, 66, 1, 66, 5, 66, 733, 8, 66, 10, 66, 12, 66, 736, 9, 66, 1, 66, 1, 66, 1, 66, 1, 67,
4289
- 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 747, 8, 68, 11, 68, 12, 68, 748, 1, 68, 1, 68,
4290
- 1, 69, 1, 69, 1, 69, 3, 69, 756, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70,
4291
- 1, 70, 5, 70, 766, 8, 70, 10, 70, 12, 70, 769, 9, 70, 1, 70, 1, 70, 5, 70, 773, 8, 70,
4292
- 10, 70, 12, 70, 776, 9, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 783, 8, 70, 10, 70,
4293
- 12, 70, 786, 9, 70, 3, 70, 788, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72,
4294
- 1, 72, 1, 72, 5, 72, 799, 8, 72, 10, 72, 12, 72, 802, 9, 72, 1, 73, 1, 73, 1, 73, 1, 73,
4295
- 0, 1, 64, 74, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
4296
- 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
4297
- 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,
4298
- 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 0, 15, 2, 0,
4299
- 10, 10, 20, 22, 1, 0, 58, 59, 2, 0, 59, 59, 62, 62, 2, 0, 56, 56, 59, 59, 1, 0, 48, 52,
4300
- 1, 0, 45, 47, 1, 0, 43, 44, 1, 0, 41, 42, 1, 0, 35, 40, 2, 0, 32, 32, 44, 44, 2, 0, 57, 57,
4301
- 59, 63, 2, 0, 16, 16, 58, 58, 2, 0, 58, 59, 62, 62, 1, 0, 33, 34, 2, 0, 58, 59, 61, 63,
4302
- 851, 0, 152, 1, 0, 0, 0, 2, 177, 1, 0, 0, 0, 4, 184, 1, 0, 0, 0, 6, 188, 1, 0, 0, 0, 8, 196,
4303
- 1, 0, 0, 0, 10, 198, 1, 0, 0, 0, 12, 208, 1, 0, 0, 0, 14, 212, 1, 0, 0, 0, 16, 224, 1, 0,
4304
- 0, 0, 18, 228, 1, 0, 0, 0, 20, 231, 1, 0, 0, 0, 22, 239, 1, 0, 0, 0, 24, 250, 1, 0, 0, 0,
4305
- 26, 256, 1, 0, 0, 0, 28, 258, 1, 0, 0, 0, 30, 260, 1, 0, 0, 0, 32, 263, 1, 0, 0, 0, 34, 272,
4306
- 1, 0, 0, 0, 36, 294, 1, 0, 0, 0, 38, 304, 1, 0, 0, 0, 40, 306, 1, 0, 0, 0, 42, 319, 1, 0,
4307
- 0, 0, 44, 321, 1, 0, 0, 0, 46, 329, 1, 0, 0, 0, 48, 337, 1, 0, 0, 0, 50, 339, 1, 0, 0, 0,
4308
- 52, 343, 1, 0, 0, 0, 54, 348, 1, 0, 0, 0, 56, 352, 1, 0, 0, 0, 58, 379, 1, 0, 0, 0, 60, 381,
4309
- 1, 0, 0, 0, 62, 385, 1, 0, 0, 0, 64, 407, 1, 0, 0, 0, 66, 432, 1, 0, 0, 0, 68, 434, 1, 0,
4310
- 0, 0, 70, 437, 1, 0, 0, 0, 72, 441, 1, 0, 0, 0, 74, 461, 1, 0, 0, 0, 76, 492, 1, 0, 0, 0,
4311
- 78, 494, 1, 0, 0, 0, 80, 507, 1, 0, 0, 0, 82, 515, 1, 0, 0, 0, 84, 518, 1, 0, 0, 0, 86, 527,
4312
- 1, 0, 0, 0, 88, 533, 1, 0, 0, 0, 90, 536, 1, 0, 0, 0, 92, 540, 1, 0, 0, 0, 94, 553, 1, 0,
4313
- 0, 0, 96, 563, 1, 0, 0, 0, 98, 573, 1, 0, 0, 0, 100, 587, 1, 0, 0, 0, 102, 623, 1, 0, 0,
4314
- 0, 104, 625, 1, 0, 0, 0, 106, 629, 1, 0, 0, 0, 108, 640, 1, 0, 0, 0, 110, 648, 1, 0, 0,
4315
- 0, 112, 650, 1, 0, 0, 0, 114, 657, 1, 0, 0, 0, 116, 673, 1, 0, 0, 0, 118, 678, 1, 0, 0,
4316
- 0, 120, 681, 1, 0, 0, 0, 122, 685, 1, 0, 0, 0, 124, 698, 1, 0, 0, 0, 126, 704, 1, 0, 0,
4317
- 0, 128, 708, 1, 0, 0, 0, 130, 713, 1, 0, 0, 0, 132, 727, 1, 0, 0, 0, 134, 740, 1, 0, 0,
4318
- 0, 136, 742, 1, 0, 0, 0, 138, 755, 1, 0, 0, 0, 140, 757, 1, 0, 0, 0, 142, 789, 1, 0, 0,
4319
- 0, 144, 793, 1, 0, 0, 0, 146, 803, 1, 0, 0, 0, 148, 151, 3, 118, 59, 0, 149, 151, 5, 66,
4320
- 0, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0,
4321
- 0, 0, 152, 153, 1, 0, 0, 0, 153, 157, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 158, 3, 2,
4322
- 1, 0, 156, 158, 5, 66, 0, 0, 157, 155, 1, 0, 0, 0, 157, 156, 1, 0, 0, 0, 158, 159, 1, 0,
4323
- 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 5, 0,
4324
- 0, 1, 162, 1, 1, 0, 0, 0, 163, 178, 3, 6, 3, 0, 164, 178, 3, 52, 26, 0, 165, 178, 3, 54,
4325
- 27, 0, 166, 178, 3, 60, 30, 0, 167, 178, 3, 14, 7, 0, 168, 178, 3, 62, 31, 0, 169, 178,
4326
- 3, 72, 36, 0, 170, 178, 3, 84, 42, 0, 171, 178, 3, 118, 59, 0, 172, 178, 3, 78, 39, 0,
4327
- 173, 178, 3, 120, 60, 0, 174, 178, 3, 4, 2, 0, 175, 178, 3, 146, 73, 0, 176, 178, 3,
4328
- 132, 66, 0, 177, 163, 1, 0, 0, 0, 177, 164, 1, 0, 0, 0, 177, 165, 1, 0, 0, 0, 177, 166,
4329
- 1, 0, 0, 0, 177, 167, 1, 0, 0, 0, 177, 168, 1, 0, 0, 0, 177, 169, 1, 0, 0, 0, 177, 170,
4330
- 1, 0, 0, 0, 177, 171, 1, 0, 0, 0, 177, 172, 1, 0, 0, 0, 177, 173, 1, 0, 0, 0, 177, 174,
4331
- 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 177, 176, 1, 0, 0, 0, 178, 3, 1, 0, 0, 0, 179, 185, 3,
4332
- 122, 61, 0, 180, 185, 3, 128, 64, 0, 181, 185, 3, 130, 65, 0, 182, 185, 5, 9, 0, 0, 183,
4333
- 185, 5, 29, 0, 0, 184, 179, 1, 0, 0, 0, 184, 180, 1, 0, 0, 0, 184, 181, 1, 0, 0, 0, 184,
4334
- 182, 1, 0, 0, 0, 184, 183, 1, 0, 0, 0, 185, 5, 1, 0, 0, 0, 186, 189, 3, 8, 4, 0, 187, 189,
4335
- 3, 12, 6, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 7, 1, 0, 0, 0, 190, 197, 3,
4336
- 24, 12, 0, 191, 197, 3, 32, 16, 0, 192, 197, 3, 30, 15, 0, 193, 197, 3, 40, 20, 0, 194,
4337
- 197, 3, 112, 56, 0, 195, 197, 3, 116, 58, 0, 196, 190, 1, 0, 0, 0, 196, 191, 1, 0, 0,
4338
- 0, 196, 192, 1, 0, 0, 0, 196, 193, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 195, 1, 0, 0,
4339
- 0, 197, 9, 1, 0, 0, 0, 198, 199, 5, 66, 0, 0, 199, 202, 5, 68, 0, 0, 200, 203, 5, 66, 0,
4340
- 0, 201, 203, 3, 2, 1, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0,
4341
- 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, 5, 69, 0,
4342
- 0, 207, 11, 1, 0, 0, 0, 208, 209, 7, 0, 0, 0, 209, 210, 5, 1, 0, 0, 210, 211, 3, 10, 5,
4343
- 0, 211, 13, 1, 0, 0, 0, 212, 213, 3, 78, 39, 0, 213, 214, 5, 1, 0, 0, 214, 215, 5, 66,
4344
- 0, 0, 215, 218, 5, 68, 0, 0, 216, 219, 5, 66, 0, 0, 217, 219, 3, 16, 8, 0, 218, 216, 1,
4345
- 0, 0, 0, 218, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220, 221, 1,
4346
- 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 5, 69, 0, 0, 223, 15, 1, 0, 0, 0, 224, 225, 7,
4347
- 1, 0, 0, 225, 226, 5, 1, 0, 0, 226, 227, 3, 70, 35, 0, 227, 17, 1, 0, 0, 0, 228, 229, 5,
4348
- 16, 0, 0, 229, 230, 3, 64, 32, 0, 230, 19, 1, 0, 0, 0, 231, 232, 5, 58, 0, 0, 232, 235,
4349
- 5, 1, 0, 0, 233, 236, 3, 70, 35, 0, 234, 236, 5, 58, 0, 0, 235, 233, 1, 0, 0, 0, 235, 234,
4350
- 1, 0, 0, 0, 236, 21, 1, 0, 0, 0, 237, 240, 3, 64, 32, 0, 238, 240, 3, 52, 26, 0, 239, 237,
4351
- 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, 240, 244, 1, 0, 0, 0, 241, 243, 3, 20, 10, 0, 242, 241,
4352
- 1, 0, 0, 0, 243, 246, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 248,
4353
- 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 247, 249, 3, 18, 9, 0, 248, 247, 1, 0, 0, 0, 248, 249,
4354
- 1, 0, 0, 0, 249, 23, 1, 0, 0, 0, 250, 251, 5, 17, 0, 0, 251, 252, 3, 22, 11, 0, 252, 25,
4355
- 1, 0, 0, 0, 253, 257, 3, 22, 11, 0, 254, 257, 3, 18, 9, 0, 255, 257, 5, 20, 0, 0, 256,
4356
- 253, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 256, 255, 1, 0, 0, 0, 257, 27, 1, 0, 0, 0, 258, 259,
4357
- 7, 2, 0, 0, 259, 29, 1, 0, 0, 0, 260, 261, 5, 18, 0, 0, 261, 262, 3, 26, 13, 0, 262, 31,
4358
- 1, 0, 0, 0, 263, 264, 5, 19, 0, 0, 264, 269, 3, 26, 13, 0, 265, 266, 5, 2, 0, 0, 266, 268,
4359
- 3, 26, 13, 0, 267, 265, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270,
4360
- 1, 0, 0, 0, 270, 33, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 273, 5, 18, 0, 0, 273, 274,
4361
- 3, 26, 13, 0, 274, 275, 5, 19, 0, 0, 275, 280, 3, 26, 13, 0, 276, 277, 5, 2, 0, 0, 277,
4362
- 279, 3, 26, 13, 0, 278, 276, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 280,
4363
- 281, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 284, 5, 1, 0, 0, 284,
4364
- 285, 5, 66, 0, 0, 285, 288, 5, 68, 0, 0, 286, 289, 5, 66, 0, 0, 287, 289, 3, 36, 18, 0,
4365
- 288, 286, 1, 0, 0, 0, 288, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0,
4366
- 290, 291, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 293, 5, 69, 0, 0, 293, 35, 1, 0, 0, 0,
4367
- 294, 295, 3, 28, 14, 0, 295, 296, 5, 1, 0, 0, 296, 301, 3, 38, 19, 0, 297, 298, 5, 2,
4368
- 0, 0, 298, 300, 3, 38, 19, 0, 299, 297, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1,
4369
- 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 37, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 305, 7, 3,
4370
- 0, 0, 305, 39, 1, 0, 0, 0, 306, 307, 3, 44, 22, 0, 307, 308, 5, 66, 0, 0, 308, 311, 5,
4371
- 68, 0, 0, 309, 312, 5, 66, 0, 0, 310, 312, 3, 42, 21, 0, 311, 309, 1, 0, 0, 0, 311, 310,
4372
- 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315,
4373
- 1, 0, 0, 0, 315, 316, 5, 69, 0, 0, 316, 41, 1, 0, 0, 0, 317, 320, 3, 2, 1, 0, 318, 320,
4374
- 3, 46, 23, 0, 319, 317, 1, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320, 43, 1, 0, 0, 0, 321, 322,
4375
- 3, 30, 15, 0, 322, 326, 5, 1, 0, 0, 323, 325, 3, 146, 73, 0, 324, 323, 1, 0, 0, 0, 325,
4376
- 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 45, 1, 0, 0, 0, 328, 326,
4377
- 1, 0, 0, 0, 329, 330, 3, 28, 14, 0, 330, 333, 5, 1, 0, 0, 331, 334, 3, 48, 24, 0, 332,
4378
- 334, 3, 50, 25, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 47, 1, 0, 0, 0, 335,
4379
- 338, 3, 2, 1, 0, 336, 338, 5, 56, 0, 0, 337, 335, 1, 0, 0, 0, 337, 336, 1, 0, 0, 0, 338,
4380
- 49, 1, 0, 0, 0, 339, 340, 3, 10, 5, 0, 340, 51, 1, 0, 0, 0, 341, 344, 3, 78, 39, 0, 342,
4381
- 344, 3, 84, 42, 0, 343, 341, 1, 0, 0, 0, 343, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345,
4382
- 346, 5, 3, 0, 0, 346, 347, 3, 64, 32, 0, 347, 53, 1, 0, 0, 0, 348, 349, 3, 78, 39, 0, 349,
4383
- 350, 7, 4, 0, 0, 350, 351, 3, 64, 32, 0, 351, 55, 1, 0, 0, 0, 352, 353, 5, 58, 0, 0, 353,
4384
- 354, 5, 3, 0, 0, 354, 355, 3, 64, 32, 0, 355, 57, 1, 0, 0, 0, 356, 361, 3, 64, 32, 0, 357,
4385
- 358, 5, 2, 0, 0, 358, 360, 3, 64, 32, 0, 359, 357, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361,
4386
- 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 368, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 364,
4387
- 365, 5, 2, 0, 0, 365, 367, 3, 56, 28, 0, 366, 364, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368,
4388
- 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 380, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371,
4389
- 376, 3, 56, 28, 0, 372, 373, 5, 2, 0, 0, 373, 375, 3, 56, 28, 0, 374, 372, 1, 0, 0, 0,
4390
- 375, 378, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0,
4391
- 378, 376, 1, 0, 0, 0, 379, 356, 1, 0, 0, 0, 379, 371, 1, 0, 0, 0, 380, 59, 1, 0, 0, 0, 381,
4392
- 382, 3, 78, 39, 0, 382, 383, 5, 3, 0, 0, 383, 384, 3, 64, 32, 0, 384, 61, 1, 0, 0, 0, 385,
4393
- 386, 5, 4, 0, 0, 386, 387, 5, 58, 0, 0, 387, 388, 5, 3, 0, 0, 388, 389, 3, 64, 32, 0, 389,
4394
- 63, 1, 0, 0, 0, 390, 391, 6, 32, -1, 0, 391, 392, 5, 54, 0, 0, 392, 393, 3, 64, 32, 0,
4395
- 393, 394, 5, 55, 0, 0, 394, 408, 1, 0, 0, 0, 395, 398, 3, 70, 35, 0, 396, 398, 3, 78,
4396
- 39, 0, 397, 395, 1, 0, 0, 0, 397, 396, 1, 0, 0, 0, 398, 408, 1, 0, 0, 0, 399, 400, 3, 68,
4397
- 34, 0, 400, 401, 3, 64, 32, 11, 401, 408, 1, 0, 0, 0, 402, 408, 3, 92, 46, 0, 403, 408,
4398
- 3, 96, 48, 0, 404, 408, 3, 98, 49, 0, 405, 408, 3, 84, 42, 0, 406, 408, 3, 114, 57, 0,
4399
- 407, 390, 1, 0, 0, 0, 407, 397, 1, 0, 0, 0, 407, 399, 1, 0, 0, 0, 407, 402, 1, 0, 0, 0,
4400
- 407, 403, 1, 0, 0, 0, 407, 404, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 407, 406, 1, 0, 0, 0,
4401
- 408, 429, 1, 0, 0, 0, 409, 410, 10, 10, 0, 0, 410, 411, 7, 5, 0, 0, 411, 428, 3, 64, 32,
4402
- 11, 412, 413, 10, 9, 0, 0, 413, 414, 7, 6, 0, 0, 414, 428, 3, 64, 32, 10, 415, 416, 10,
4403
- 8, 0, 0, 416, 417, 3, 66, 33, 0, 417, 418, 3, 64, 32, 9, 418, 428, 1, 0, 0, 0, 419, 420,
4404
- 10, 7, 0, 0, 420, 421, 7, 7, 0, 0, 421, 428, 3, 64, 32, 8, 422, 423, 10, 1, 0, 0, 423,
4405
- 424, 5, 5, 0, 0, 424, 425, 3, 64, 32, 0, 425, 426, 5, 6, 0, 0, 426, 428, 1, 0, 0, 0, 427,
4406
- 409, 1, 0, 0, 0, 427, 412, 1, 0, 0, 0, 427, 415, 1, 0, 0, 0, 427, 419, 1, 0, 0, 0, 427,
4407
- 422, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430,
4408
- 65, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 433, 7, 8, 0, 0, 433, 67, 1, 0, 0, 0, 434, 435,
4409
- 7, 9, 0, 0, 435, 69, 1, 0, 0, 0, 436, 438, 5, 44, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438,
4410
- 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 7, 10, 0, 0, 440, 71, 1, 0, 0, 0, 441, 442,
4411
- 5, 24, 0, 0, 442, 443, 5, 58, 0, 0, 443, 445, 5, 54, 0, 0, 444, 446, 3, 76, 38, 0, 445,
4412
- 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 448, 5, 55, 0, 0, 448,
4413
- 449, 5, 1, 0, 0, 449, 450, 5, 66, 0, 0, 450, 453, 5, 68, 0, 0, 451, 454, 5, 66, 0, 0, 452,
4414
- 454, 3, 74, 37, 0, 453, 451, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455,
4415
- 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 5, 69, 0, 0, 458,
4416
- 73, 1, 0, 0, 0, 459, 462, 3, 2, 1, 0, 460, 462, 3, 88, 44, 0, 461, 459, 1, 0, 0, 0, 461,
4417
- 460, 1, 0, 0, 0, 462, 75, 1, 0, 0, 0, 463, 468, 5, 58, 0, 0, 464, 465, 5, 2, 0, 0, 465,
4418
- 467, 5, 58, 0, 0, 466, 464, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468,
4419
- 469, 1, 0, 0, 0, 469, 477, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 471, 472, 5, 2, 0, 0, 472,
4420
- 473, 5, 58, 0, 0, 473, 474, 5, 3, 0, 0, 474, 476, 3, 70, 35, 0, 475, 471, 1, 0, 0, 0, 476,
4421
- 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 493, 1, 0, 0, 0, 479,
4422
- 477, 1, 0, 0, 0, 480, 481, 5, 58, 0, 0, 481, 482, 5, 3, 0, 0, 482, 489, 3, 70, 35, 0, 483,
4423
- 484, 5, 2, 0, 0, 484, 485, 5, 58, 0, 0, 485, 486, 5, 3, 0, 0, 486, 488, 3, 70, 35, 0, 487,
4424
- 483, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490,
4425
- 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 492, 463, 1, 0, 0, 0, 492, 480, 1, 0, 0, 0, 493,
4426
- 77, 1, 0, 0, 0, 494, 498, 5, 58, 0, 0, 495, 497, 3, 82, 41, 0, 496, 495, 1, 0, 0, 0, 497,
4427
- 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 79, 1, 0, 0, 0, 500, 498,
4428
- 1, 0, 0, 0, 501, 503, 5, 54, 0, 0, 502, 504, 3, 58, 29, 0, 503, 502, 1, 0, 0, 0, 503, 504,
4429
- 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 508, 5, 55, 0, 0, 506, 508, 3, 82, 41, 0, 507, 501,
4430
- 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 81, 1, 0, 0, 0, 509, 510, 5, 7, 0, 0, 510, 516, 5,
4431
- 58, 0, 0, 511, 512, 5, 5, 0, 0, 512, 513, 3, 64, 32, 0, 513, 514, 5, 6, 0, 0, 514, 516,
4432
- 1, 0, 0, 0, 515, 509, 1, 0, 0, 0, 515, 511, 1, 0, 0, 0, 516, 83, 1, 0, 0, 0, 517, 519, 3,
4433
- 86, 43, 0, 518, 517, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 522,
4434
- 5, 58, 0, 0, 521, 523, 3, 80, 40, 0, 522, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 522,
4435
- 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 85, 1, 0, 0, 0, 526, 528, 5, 43, 0, 0, 527, 526,
4436
- 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 531, 5, 45, 0, 0, 530, 532,
4437
- 3, 64, 32, 0, 531, 530, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 87, 1, 0, 0, 0, 533, 534,
4438
- 5, 23, 0, 0, 534, 535, 3, 64, 32, 0, 535, 89, 1, 0, 0, 0, 536, 537, 3, 106, 53, 0, 537,
4439
- 538, 5, 1, 0, 0, 538, 539, 3, 10, 5, 0, 539, 91, 1, 0, 0, 0, 540, 541, 5, 11, 0, 0, 541,
4440
- 542, 5, 12, 0, 0, 542, 543, 5, 1, 0, 0, 543, 544, 5, 66, 0, 0, 544, 547, 5, 68, 0, 0, 545,
4441
- 548, 5, 66, 0, 0, 546, 548, 3, 104, 52, 0, 547, 545, 1, 0, 0, 0, 547, 546, 1, 0, 0, 0,
4442
- 548, 549, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0,
4443
- 551, 552, 5, 69, 0, 0, 552, 93, 1, 0, 0, 0, 553, 554, 5, 66, 0, 0, 554, 557, 5, 68, 0,
4444
- 0, 555, 558, 5, 66, 0, 0, 556, 558, 3, 102, 51, 0, 557, 555, 1, 0, 0, 0, 557, 556, 1,
4445
- 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 561, 1,
4446
- 0, 0, 0, 561, 562, 5, 69, 0, 0, 562, 95, 1, 0, 0, 0, 563, 564, 5, 11, 0, 0, 564, 568, 5,
4447
- 13, 0, 0, 565, 566, 5, 54, 0, 0, 566, 567, 5, 58, 0, 0, 567, 569, 5, 55, 0, 0, 568, 565,
4448
- 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 5, 1, 0, 0, 571, 572,
4449
- 3, 94, 47, 0, 572, 97, 1, 0, 0, 0, 573, 574, 5, 11, 0, 0, 574, 575, 5, 14, 0, 0, 575, 576,
4450
- 5, 1, 0, 0, 576, 577, 5, 66, 0, 0, 577, 581, 5, 68, 0, 0, 578, 582, 5, 66, 0, 0, 579, 582,
4451
- 3, 104, 52, 0, 580, 582, 3, 90, 45, 0, 581, 578, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581,
4452
- 580, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584,
4453
- 585, 1, 0, 0, 0, 585, 586, 5, 69, 0, 0, 586, 99, 1, 0, 0, 0, 587, 588, 5, 66, 0, 0, 588,
4454
- 591, 5, 68, 0, 0, 589, 592, 5, 66, 0, 0, 590, 592, 3, 104, 52, 0, 591, 589, 1, 0, 0, 0,
4455
- 591, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0,
4456
- 594, 595, 1, 0, 0, 0, 595, 596, 5, 69, 0, 0, 596, 101, 1, 0, 0, 0, 597, 599, 7, 11, 0,
4457
- 0, 598, 600, 5, 1, 0, 0, 599, 598, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 607, 1, 0, 0,
4458
- 0, 601, 608, 3, 58, 29, 0, 602, 603, 5, 54, 0, 0, 603, 604, 3, 58, 29, 0, 604, 605, 5,
4459
- 55, 0, 0, 605, 608, 1, 0, 0, 0, 606, 608, 3, 100, 50, 0, 607, 601, 1, 0, 0, 0, 607, 602,
4460
- 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 624, 1, 0, 0, 0, 609, 610, 5, 26, 0, 0, 610, 615,
4461
- 5, 58, 0, 0, 611, 612, 5, 2, 0, 0, 612, 614, 5, 58, 0, 0, 613, 611, 1, 0, 0, 0, 614, 617,
4462
- 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 618, 1, 0, 0, 0, 617, 615,
4463
- 1, 0, 0, 0, 618, 619, 5, 27, 0, 0, 619, 620, 3, 64, 32, 0, 620, 621, 5, 1, 0, 0, 621, 622,
4464
- 3, 94, 47, 0, 622, 624, 1, 0, 0, 0, 623, 597, 1, 0, 0, 0, 623, 609, 1, 0, 0, 0, 624, 103,
4465
- 1, 0, 0, 0, 625, 626, 3, 106, 53, 0, 626, 627, 5, 1, 0, 0, 627, 628, 3, 108, 54, 0, 628,
4466
- 105, 1, 0, 0, 0, 629, 630, 7, 12, 0, 0, 630, 107, 1, 0, 0, 0, 631, 641, 3, 100, 50, 0,
4467
- 632, 637, 3, 64, 32, 0, 633, 634, 5, 2, 0, 0, 634, 636, 3, 64, 32, 0, 635, 633, 1, 0,
4468
- 0, 0, 636, 639, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 641, 1, 0,
4469
- 0, 0, 639, 637, 1, 0, 0, 0, 640, 631, 1, 0, 0, 0, 640, 632, 1, 0, 0, 0, 641, 109, 1, 0,
4470
- 0, 0, 642, 645, 5, 58, 0, 0, 643, 646, 5, 59, 0, 0, 644, 646, 3, 64, 32, 0, 645, 643,
4471
- 1, 0, 0, 0, 645, 644, 1, 0, 0, 0, 646, 649, 1, 0, 0, 0, 647, 649, 5, 58, 0, 0, 648, 642,
4472
- 1, 0, 0, 0, 648, 647, 1, 0, 0, 0, 649, 111, 1, 0, 0, 0, 650, 654, 5, 15, 0, 0, 651, 653,
4473
- 3, 110, 55, 0, 652, 651, 1, 0, 0, 0, 653, 656, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655,
4474
- 1, 0, 0, 0, 655, 113, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 657, 668, 5, 5, 0, 0, 658, 663,
4475
- 3, 64, 32, 0, 659, 660, 5, 2, 0, 0, 660, 662, 3, 64, 32, 0, 661, 659, 1, 0, 0, 0, 662,
4476
- 665, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 667, 1, 0, 0, 0, 665,
4477
- 663, 1, 0, 0, 0, 666, 658, 1, 0, 0, 0, 667, 670, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 668,
4478
- 669, 1, 0, 0, 0, 669, 671, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 671, 672, 5, 6, 0, 0, 672,
4479
- 115, 1, 0, 0, 0, 673, 676, 5, 20, 0, 0, 674, 677, 5, 58, 0, 0, 675, 677, 3, 64, 32, 0,
4480
- 676, 674, 1, 0, 0, 0, 676, 675, 1, 0, 0, 0, 677, 117, 1, 0, 0, 0, 678, 679, 5, 25, 0, 0,
4481
- 679, 680, 5, 58, 0, 0, 680, 119, 1, 0, 0, 0, 681, 682, 7, 13, 0, 0, 682, 683, 5, 1, 0,
4482
- 0, 683, 684, 3, 10, 5, 0, 684, 121, 1, 0, 0, 0, 685, 686, 5, 30, 0, 0, 686, 687, 3, 64,
4483
- 32, 0, 687, 688, 5, 1, 0, 0, 688, 692, 3, 10, 5, 0, 689, 691, 3, 124, 62, 0, 690, 689,
4484
- 1, 0, 0, 0, 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 696,
4485
- 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 697, 3, 126, 63, 0, 696, 695, 1, 0, 0, 0, 696, 697,
4486
- 1, 0, 0, 0, 697, 123, 1, 0, 0, 0, 698, 699, 5, 31, 0, 0, 699, 700, 5, 30, 0, 0, 700, 701,
4487
- 3, 64, 32, 0, 701, 702, 5, 1, 0, 0, 702, 703, 3, 10, 5, 0, 703, 125, 1, 0, 0, 0, 704, 705,
4488
- 5, 31, 0, 0, 705, 706, 5, 1, 0, 0, 706, 707, 3, 10, 5, 0, 707, 127, 1, 0, 0, 0, 708, 709,
4489
- 5, 28, 0, 0, 709, 710, 3, 64, 32, 0, 710, 711, 5, 1, 0, 0, 711, 712, 3, 10, 5, 0, 712,
4490
- 129, 1, 0, 0, 0, 713, 714, 5, 26, 0, 0, 714, 719, 5, 58, 0, 0, 715, 716, 5, 2, 0, 0, 716,
4491
- 718, 5, 58, 0, 0, 717, 715, 1, 0, 0, 0, 718, 721, 1, 0, 0, 0, 719, 717, 1, 0, 0, 0, 719,
4492
- 720, 1, 0, 0, 0, 720, 722, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 722, 723, 5, 27, 0, 0, 723,
4493
- 724, 3, 64, 32, 0, 724, 725, 5, 1, 0, 0, 725, 726, 3, 10, 5, 0, 726, 131, 1, 0, 0, 0, 727,
4494
- 728, 5, 8, 0, 0, 728, 729, 5, 1, 0, 0, 729, 734, 3, 64, 32, 0, 730, 731, 5, 2, 0, 0, 731,
4495
- 733, 3, 64, 32, 0, 732, 730, 1, 0, 0, 0, 733, 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734,
4496
- 735, 1, 0, 0, 0, 735, 737, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 738, 5, 1, 0, 0, 738,
4497
- 739, 3, 136, 68, 0, 739, 133, 1, 0, 0, 0, 740, 741, 7, 14, 0, 0, 741, 135, 1, 0, 0, 0,
4498
- 742, 743, 5, 66, 0, 0, 743, 746, 5, 68, 0, 0, 744, 747, 5, 66, 0, 0, 745, 747, 3, 138,
4499
- 69, 0, 746, 744, 1, 0, 0, 0, 746, 745, 1, 0, 0, 0, 747, 748, 1, 0, 0, 0, 748, 746, 1, 0,
4500
- 0, 0, 748, 749, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 751, 5, 69, 0, 0, 751, 137, 1, 0,
4501
- 0, 0, 752, 756, 3, 140, 70, 0, 753, 756, 3, 144, 72, 0, 754, 756, 3, 142, 71, 0, 755,
4502
- 752, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 755, 754, 1, 0, 0, 0, 756, 139, 1, 0, 0, 0, 757,
4503
- 758, 3, 134, 67, 0, 758, 759, 5, 1, 0, 0, 759, 767, 3, 64, 32, 0, 760, 761, 5, 2, 0, 0,
4504
- 761, 762, 3, 134, 67, 0, 762, 763, 5, 1, 0, 0, 763, 764, 3, 64, 32, 0, 764, 766, 1, 0,
4505
- 0, 0, 765, 760, 1, 0, 0, 0, 766, 769, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 767, 768, 1, 0,
4506
- 0, 0, 768, 774, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 770, 771, 5, 2, 0, 0, 771, 773, 3, 134,
4507
- 67, 0, 772, 770, 1, 0, 0, 0, 773, 776, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0,
4508
- 0, 0, 775, 777, 1, 0, 0, 0, 776, 774, 1, 0, 0, 0, 777, 787, 5, 1, 0, 0, 778, 788, 3, 136,
4509
- 68, 0, 779, 784, 3, 64, 32, 0, 780, 781, 5, 2, 0, 0, 781, 783, 3, 64, 32, 0, 782, 780,
4510
- 1, 0, 0, 0, 783, 786, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 788,
4511
- 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 787, 778, 1, 0, 0, 0, 787, 779, 1, 0, 0, 0, 788, 141,
4512
- 1, 0, 0, 0, 789, 790, 3, 134, 67, 0, 790, 791, 5, 1, 0, 0, 791, 792, 3, 136, 68, 0, 792,
4513
- 143, 1, 0, 0, 0, 793, 794, 3, 134, 67, 0, 794, 795, 5, 1, 0, 0, 795, 800, 3, 64, 32, 0,
4514
- 796, 797, 5, 2, 0, 0, 797, 799, 3, 64, 32, 0, 798, 796, 1, 0, 0, 0, 799, 802, 1, 0, 0,
4515
- 0, 800, 798, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 145, 1, 0, 0, 0, 802, 800, 1, 0, 0,
4516
- 0, 803, 804, 5, 53, 0, 0, 804, 805, 5, 58, 0, 0, 805, 147, 1, 0, 0, 0, 87, 150, 152, 157,
4517
- 159, 177, 184, 188, 196, 202, 204, 218, 220, 235, 239, 244, 248, 256, 269, 280,
4518
- 288, 290, 301, 311, 313, 319, 326, 333, 337, 343, 361, 368, 376, 379, 397, 407,
4519
- 427, 429, 437, 445, 453, 455, 461, 468, 477, 489, 492, 498, 503, 507, 515, 518,
4520
- 524, 527, 531, 547, 549, 557, 559, 568, 581, 583, 591, 593, 599, 607, 615, 623,
4521
- 637, 640, 645, 648, 654, 663, 668, 676, 692, 696, 719, 734, 746, 748, 755, 767,
4522
- 774, 784, 787, 800
4397
+ 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 1, 0, 1, 0, 5, 0, 153, 8, 0, 10, 0, 12, 0, 156, 9, 0, 1,
4398
+ 0, 1, 0, 4, 0, 160, 8, 0, 11, 0, 12, 0, 161, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4399
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 180, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
4400
+ 3, 2, 187, 8, 2, 1, 3, 1, 3, 3, 3, 191, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 199,
4401
+ 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 205, 8, 5, 11, 5, 12, 5, 206, 1, 5, 1, 5, 1, 6, 1, 6, 1,
4402
+ 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 221, 8, 7, 11, 7, 12, 7, 222, 1, 7, 1, 7,
4403
+ 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 238, 8, 10, 1,
4404
+ 11, 1, 11, 3, 11, 242, 8, 11, 1, 11, 5, 11, 245, 8, 11, 10, 11, 12, 11, 248, 9, 11, 1,
4405
+ 11, 3, 11, 251, 8, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 259, 8, 13, 1, 14,
4406
+ 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 270, 8, 16, 10, 16, 12, 16,
4407
+ 273, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 281, 8, 17, 10, 17, 12, 17,
4408
+ 284, 9, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 291, 8, 17, 11, 17, 12, 17, 292,
4409
+ 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 302, 8, 18, 10, 18, 12, 18, 305,
4410
+ 9, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 314, 8, 20, 11, 20, 12, 20,
4411
+ 315, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 322, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 327, 8,
4412
+ 22, 10, 22, 12, 22, 330, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 336, 8, 23, 1, 24, 1,
4413
+ 24, 3, 24, 340, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 346, 8, 26, 1, 26, 1, 26, 1, 26,
4414
+ 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 5, 29, 362,
4415
+ 8, 29, 10, 29, 12, 29, 365, 9, 29, 1, 29, 1, 29, 5, 29, 369, 8, 29, 10, 29, 12, 29, 372,
4416
+ 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 377, 8, 29, 10, 29, 12, 29, 380, 9, 29, 3, 29, 382,
4417
+ 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32,
4418
+ 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 400, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
4419
+ 1, 32, 1, 32, 3, 32, 410, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
4420
+ 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 430, 8, 32,
4421
+ 10, 32, 12, 32, 433, 9, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 3, 35, 440, 8, 35, 1, 35,
4422
+ 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 448, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36,
4423
+ 1, 36, 4, 36, 456, 8, 36, 11, 36, 12, 36, 457, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 464,
4424
+ 8, 37, 1, 38, 1, 38, 1, 38, 5, 38, 469, 8, 38, 10, 38, 12, 38, 472, 9, 38, 1, 38, 1, 38,
4425
+ 1, 38, 1, 38, 5, 38, 478, 8, 38, 10, 38, 12, 38, 481, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38,
4426
+ 1, 38, 1, 38, 1, 38, 5, 38, 490, 8, 38, 10, 38, 12, 38, 493, 9, 38, 3, 38, 495, 8, 38,
4427
+ 1, 39, 1, 39, 5, 39, 499, 8, 39, 10, 39, 12, 39, 502, 9, 39, 1, 40, 1, 40, 3, 40, 506,
4428
+ 8, 40, 1, 40, 1, 40, 3, 40, 510, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41,
4429
+ 518, 8, 41, 1, 42, 3, 42, 521, 8, 42, 1, 42, 1, 42, 4, 42, 525, 8, 42, 11, 42, 12, 42,
4430
+ 526, 1, 43, 3, 43, 530, 8, 43, 1, 43, 1, 43, 3, 43, 534, 8, 43, 1, 44, 1, 44, 1, 44, 1,
4431
+ 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 550, 8,
4432
+ 46, 11, 46, 12, 46, 551, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 560, 8, 47, 11,
4433
+ 47, 12, 47, 561, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 571, 8, 48, 1,
4434
+ 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 584, 8,
4435
+ 49, 11, 49, 12, 49, 585, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 4, 50, 594, 8, 50, 11,
4436
+ 50, 12, 50, 595, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 602, 8, 51, 1, 51, 1, 51, 1, 51, 1,
4437
+ 51, 1, 51, 1, 51, 3, 51, 610, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 616, 8, 51, 10,
4438
+ 51, 12, 51, 619, 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 626, 8, 51, 1, 52, 1,
4439
+ 52, 5, 52, 630, 8, 52, 10, 52, 12, 52, 633, 9, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1,
4440
+ 54, 1, 54, 1, 54, 1, 54, 5, 54, 644, 8, 54, 10, 54, 12, 54, 647, 9, 54, 3, 54, 649, 8,
4441
+ 54, 1, 55, 1, 55, 1, 55, 3, 55, 654, 8, 55, 1, 55, 3, 55, 657, 8, 55, 1, 56, 1, 56, 5, 56,
4442
+ 661, 8, 56, 10, 56, 12, 56, 664, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 670, 8, 57,
4443
+ 10, 57, 12, 57, 673, 9, 57, 5, 57, 675, 8, 57, 10, 57, 12, 57, 678, 9, 57, 1, 57, 1, 57,
4444
+ 1, 58, 1, 58, 1, 58, 3, 58, 685, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 690, 8, 59, 1, 59, 1,
4445
+ 59, 1, 59, 1, 59, 1, 59, 3, 59, 697, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5,
4446
+ 59, 705, 8, 59, 10, 59, 12, 59, 708, 9, 59, 1, 59, 3, 59, 711, 8, 59, 3, 59, 713, 8, 59,
4447
+ 1, 60, 1, 60, 5, 60, 717, 8, 60, 10, 60, 12, 60, 720, 9, 60, 1, 61, 1, 61, 1, 61, 1, 61,
4448
+ 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 731, 8, 62, 10, 62, 12, 62, 734, 9, 62, 1, 62,
4449
+ 3, 62, 737, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64,
4450
+ 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 758, 8, 66, 10, 66,
4451
+ 12, 66, 761, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67,
4452
+ 5, 67, 773, 8, 67, 10, 67, 12, 67, 776, 9, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69,
4453
+ 1, 69, 1, 69, 1, 69, 4, 69, 787, 8, 69, 11, 69, 12, 69, 788, 1, 69, 1, 69, 1, 70, 1, 70,
4454
+ 1, 70, 3, 70, 796, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71,
4455
+ 806, 8, 71, 10, 71, 12, 71, 809, 9, 71, 1, 71, 1, 71, 5, 71, 813, 8, 71, 10, 71, 12, 71,
4456
+ 816, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 823, 8, 71, 10, 71, 12, 71, 826,
4457
+ 9, 71, 3, 71, 828, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73,
4458
+ 5, 73, 839, 8, 73, 10, 73, 12, 73, 842, 9, 73, 1, 74, 1, 74, 1, 74, 1, 74, 0, 1, 64, 75,
4459
+ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44,
4460
+ 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88,
4461
+ 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124,
4462
+ 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 0, 16, 2, 0, 10, 10, 20,
4463
+ 22, 1, 0, 59, 60, 2, 0, 60, 60, 63, 63, 2, 0, 57, 57, 60, 60, 1, 0, 49, 53, 1, 0, 46, 48,
4464
+ 1, 0, 44, 45, 1, 0, 42, 43, 1, 0, 36, 41, 2, 0, 33, 33, 45, 45, 2, 0, 58, 58, 60, 64, 2,
4465
+ 0, 16, 16, 59, 59, 2, 0, 59, 60, 63, 63, 2, 0, 45, 45, 59, 59, 1, 0, 34, 35, 2, 0, 59, 60,
4466
+ 62, 64, 898, 0, 154, 1, 0, 0, 0, 2, 179, 1, 0, 0, 0, 4, 186, 1, 0, 0, 0, 6, 190, 1, 0, 0,
4467
+ 0, 8, 198, 1, 0, 0, 0, 10, 200, 1, 0, 0, 0, 12, 210, 1, 0, 0, 0, 14, 214, 1, 0, 0, 0, 16,
4468
+ 226, 1, 0, 0, 0, 18, 230, 1, 0, 0, 0, 20, 233, 1, 0, 0, 0, 22, 241, 1, 0, 0, 0, 24, 252,
4469
+ 1, 0, 0, 0, 26, 258, 1, 0, 0, 0, 28, 260, 1, 0, 0, 0, 30, 262, 1, 0, 0, 0, 32, 265, 1, 0,
4470
+ 0, 0, 34, 274, 1, 0, 0, 0, 36, 296, 1, 0, 0, 0, 38, 306, 1, 0, 0, 0, 40, 308, 1, 0, 0, 0,
4471
+ 42, 321, 1, 0, 0, 0, 44, 323, 1, 0, 0, 0, 46, 331, 1, 0, 0, 0, 48, 339, 1, 0, 0, 0, 50, 341,
4472
+ 1, 0, 0, 0, 52, 345, 1, 0, 0, 0, 54, 350, 1, 0, 0, 0, 56, 354, 1, 0, 0, 0, 58, 381, 1, 0,
4473
+ 0, 0, 60, 383, 1, 0, 0, 0, 62, 387, 1, 0, 0, 0, 64, 409, 1, 0, 0, 0, 66, 434, 1, 0, 0, 0,
4474
+ 68, 436, 1, 0, 0, 0, 70, 439, 1, 0, 0, 0, 72, 443, 1, 0, 0, 0, 74, 463, 1, 0, 0, 0, 76, 494,
4475
+ 1, 0, 0, 0, 78, 496, 1, 0, 0, 0, 80, 509, 1, 0, 0, 0, 82, 517, 1, 0, 0, 0, 84, 520, 1, 0,
4476
+ 0, 0, 86, 529, 1, 0, 0, 0, 88, 535, 1, 0, 0, 0, 90, 538, 1, 0, 0, 0, 92, 542, 1, 0, 0, 0,
4477
+ 94, 555, 1, 0, 0, 0, 96, 565, 1, 0, 0, 0, 98, 575, 1, 0, 0, 0, 100, 589, 1, 0, 0, 0, 102,
4478
+ 625, 1, 0, 0, 0, 104, 627, 1, 0, 0, 0, 106, 637, 1, 0, 0, 0, 108, 648, 1, 0, 0, 0, 110,
4479
+ 656, 1, 0, 0, 0, 112, 658, 1, 0, 0, 0, 114, 665, 1, 0, 0, 0, 116, 681, 1, 0, 0, 0, 118,
4480
+ 712, 1, 0, 0, 0, 120, 714, 1, 0, 0, 0, 122, 721, 1, 0, 0, 0, 124, 725, 1, 0, 0, 0, 126,
4481
+ 738, 1, 0, 0, 0, 128, 744, 1, 0, 0, 0, 130, 748, 1, 0, 0, 0, 132, 753, 1, 0, 0, 0, 134,
4482
+ 767, 1, 0, 0, 0, 136, 780, 1, 0, 0, 0, 138, 782, 1, 0, 0, 0, 140, 795, 1, 0, 0, 0, 142,
4483
+ 797, 1, 0, 0, 0, 144, 829, 1, 0, 0, 0, 146, 833, 1, 0, 0, 0, 148, 843, 1, 0, 0, 0, 150,
4484
+ 153, 3, 118, 59, 0, 151, 153, 5, 67, 0, 0, 152, 150, 1, 0, 0, 0, 152, 151, 1, 0, 0, 0,
4485
+ 153, 156, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 159, 1, 0, 0, 0,
4486
+ 156, 154, 1, 0, 0, 0, 157, 160, 3, 2, 1, 0, 158, 160, 5, 67, 0, 0, 159, 157, 1, 0, 0, 0,
4487
+ 159, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 159, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0,
4488
+ 162, 163, 1, 0, 0, 0, 163, 164, 5, 0, 0, 1, 164, 1, 1, 0, 0, 0, 165, 180, 3, 6, 3, 0, 166,
4489
+ 180, 3, 52, 26, 0, 167, 180, 3, 54, 27, 0, 168, 180, 3, 60, 30, 0, 169, 180, 3, 14, 7,
4490
+ 0, 170, 180, 3, 62, 31, 0, 171, 180, 3, 72, 36, 0, 172, 180, 3, 84, 42, 0, 173, 180,
4491
+ 3, 118, 59, 0, 174, 180, 3, 78, 39, 0, 175, 180, 3, 122, 61, 0, 176, 180, 3, 4, 2, 0,
4492
+ 177, 180, 3, 148, 74, 0, 178, 180, 3, 134, 67, 0, 179, 165, 1, 0, 0, 0, 179, 166, 1,
4493
+ 0, 0, 0, 179, 167, 1, 0, 0, 0, 179, 168, 1, 0, 0, 0, 179, 169, 1, 0, 0, 0, 179, 170, 1,
4494
+ 0, 0, 0, 179, 171, 1, 0, 0, 0, 179, 172, 1, 0, 0, 0, 179, 173, 1, 0, 0, 0, 179, 174, 1,
4495
+ 0, 0, 0, 179, 175, 1, 0, 0, 0, 179, 176, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 179, 178, 1,
4496
+ 0, 0, 0, 180, 3, 1, 0, 0, 0, 181, 187, 3, 124, 62, 0, 182, 187, 3, 130, 65, 0, 183, 187,
4497
+ 3, 132, 66, 0, 184, 187, 5, 9, 0, 0, 185, 187, 5, 30, 0, 0, 186, 181, 1, 0, 0, 0, 186,
4498
+ 182, 1, 0, 0, 0, 186, 183, 1, 0, 0, 0, 186, 184, 1, 0, 0, 0, 186, 185, 1, 0, 0, 0, 187,
4499
+ 5, 1, 0, 0, 0, 188, 191, 3, 8, 4, 0, 189, 191, 3, 12, 6, 0, 190, 188, 1, 0, 0, 0, 190, 189,
4500
+ 1, 0, 0, 0, 191, 7, 1, 0, 0, 0, 192, 199, 3, 24, 12, 0, 193, 199, 3, 32, 16, 0, 194, 199,
4501
+ 3, 30, 15, 0, 195, 199, 3, 40, 20, 0, 196, 199, 3, 112, 56, 0, 197, 199, 3, 116, 58,
4502
+ 0, 198, 192, 1, 0, 0, 0, 198, 193, 1, 0, 0, 0, 198, 194, 1, 0, 0, 0, 198, 195, 1, 0, 0,
4503
+ 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 9, 1, 0, 0, 0, 200, 201, 5, 67, 0, 0,
4504
+ 201, 204, 5, 69, 0, 0, 202, 205, 5, 67, 0, 0, 203, 205, 3, 2, 1, 0, 204, 202, 1, 0, 0,
4505
+ 0, 204, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0,
4506
+ 0, 207, 208, 1, 0, 0, 0, 208, 209, 5, 70, 0, 0, 209, 11, 1, 0, 0, 0, 210, 211, 7, 0, 0,
4507
+ 0, 211, 212, 5, 1, 0, 0, 212, 213, 3, 10, 5, 0, 213, 13, 1, 0, 0, 0, 214, 215, 3, 78, 39,
4508
+ 0, 215, 216, 5, 1, 0, 0, 216, 217, 5, 67, 0, 0, 217, 220, 5, 69, 0, 0, 218, 221, 5, 67,
4509
+ 0, 0, 219, 221, 3, 16, 8, 0, 220, 218, 1, 0, 0, 0, 220, 219, 1, 0, 0, 0, 221, 222, 1, 0,
4510
+ 0, 0, 222, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 225, 5, 70,
4511
+ 0, 0, 225, 15, 1, 0, 0, 0, 226, 227, 7, 1, 0, 0, 227, 228, 5, 1, 0, 0, 228, 229, 3, 70,
4512
+ 35, 0, 229, 17, 1, 0, 0, 0, 230, 231, 5, 16, 0, 0, 231, 232, 3, 64, 32, 0, 232, 19, 1,
4513
+ 0, 0, 0, 233, 234, 5, 59, 0, 0, 234, 237, 5, 1, 0, 0, 235, 238, 3, 70, 35, 0, 236, 238,
4514
+ 5, 59, 0, 0, 237, 235, 1, 0, 0, 0, 237, 236, 1, 0, 0, 0, 238, 21, 1, 0, 0, 0, 239, 242,
4515
+ 3, 64, 32, 0, 240, 242, 3, 52, 26, 0, 241, 239, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242,
4516
+ 246, 1, 0, 0, 0, 243, 245, 3, 20, 10, 0, 244, 243, 1, 0, 0, 0, 245, 248, 1, 0, 0, 0, 246,
4517
+ 244, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 250, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 249,
4518
+ 251, 3, 18, 9, 0, 250, 249, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 23, 1, 0, 0, 0, 252,
4519
+ 253, 5, 17, 0, 0, 253, 254, 3, 22, 11, 0, 254, 25, 1, 0, 0, 0, 255, 259, 3, 22, 11, 0,
4520
+ 256, 259, 3, 18, 9, 0, 257, 259, 5, 20, 0, 0, 258, 255, 1, 0, 0, 0, 258, 256, 1, 0, 0,
4521
+ 0, 258, 257, 1, 0, 0, 0, 259, 27, 1, 0, 0, 0, 260, 261, 7, 2, 0, 0, 261, 29, 1, 0, 0, 0,
4522
+ 262, 263, 5, 18, 0, 0, 263, 264, 3, 26, 13, 0, 264, 31, 1, 0, 0, 0, 265, 266, 5, 19, 0,
4523
+ 0, 266, 271, 3, 26, 13, 0, 267, 268, 5, 2, 0, 0, 268, 270, 3, 26, 13, 0, 269, 267, 1,
4524
+ 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 33, 1, 0,
4525
+ 0, 0, 273, 271, 1, 0, 0, 0, 274, 275, 5, 18, 0, 0, 275, 276, 3, 26, 13, 0, 276, 277, 5,
4526
+ 19, 0, 0, 277, 282, 3, 26, 13, 0, 278, 279, 5, 2, 0, 0, 279, 281, 3, 26, 13, 0, 280, 278,
4527
+ 1, 0, 0, 0, 281, 284, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 285,
4528
+ 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 285, 286, 5, 1, 0, 0, 286, 287, 5, 67, 0, 0, 287, 290,
4529
+ 5, 69, 0, 0, 288, 291, 5, 67, 0, 0, 289, 291, 3, 36, 18, 0, 290, 288, 1, 0, 0, 0, 290,
4530
+ 289, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293,
4531
+ 294, 1, 0, 0, 0, 294, 295, 5, 70, 0, 0, 295, 35, 1, 0, 0, 0, 296, 297, 3, 28, 14, 0, 297,
4532
+ 298, 5, 1, 0, 0, 298, 303, 3, 38, 19, 0, 299, 300, 5, 2, 0, 0, 300, 302, 3, 38, 19, 0,
4533
+ 301, 299, 1, 0, 0, 0, 302, 305, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0,
4534
+ 304, 37, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 306, 307, 7, 3, 0, 0, 307, 39, 1, 0, 0, 0, 308,
4535
+ 309, 3, 44, 22, 0, 309, 310, 5, 67, 0, 0, 310, 313, 5, 69, 0, 0, 311, 314, 5, 67, 0, 0,
4536
+ 312, 314, 3, 42, 21, 0, 313, 311, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0,
4537
+ 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 318, 5, 70, 0,
4538
+ 0, 318, 41, 1, 0, 0, 0, 319, 322, 3, 2, 1, 0, 320, 322, 3, 46, 23, 0, 321, 319, 1, 0, 0,
4539
+ 0, 321, 320, 1, 0, 0, 0, 322, 43, 1, 0, 0, 0, 323, 324, 3, 30, 15, 0, 324, 328, 5, 1, 0,
4540
+ 0, 325, 327, 3, 148, 74, 0, 326, 325, 1, 0, 0, 0, 327, 330, 1, 0, 0, 0, 328, 326, 1, 0,
4541
+ 0, 0, 328, 329, 1, 0, 0, 0, 329, 45, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 331, 332, 3, 28,
4542
+ 14, 0, 332, 335, 5, 1, 0, 0, 333, 336, 3, 48, 24, 0, 334, 336, 3, 50, 25, 0, 335, 333,
4543
+ 1, 0, 0, 0, 335, 334, 1, 0, 0, 0, 336, 47, 1, 0, 0, 0, 337, 340, 3, 2, 1, 0, 338, 340, 5,
4544
+ 57, 0, 0, 339, 337, 1, 0, 0, 0, 339, 338, 1, 0, 0, 0, 340, 49, 1, 0, 0, 0, 341, 342, 3,
4545
+ 10, 5, 0, 342, 51, 1, 0, 0, 0, 343, 346, 3, 78, 39, 0, 344, 346, 3, 84, 42, 0, 345, 343,
4546
+ 1, 0, 0, 0, 345, 344, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 348, 5, 3, 0, 0, 348, 349,
4547
+ 3, 64, 32, 0, 349, 53, 1, 0, 0, 0, 350, 351, 3, 78, 39, 0, 351, 352, 7, 4, 0, 0, 352, 353,
4548
+ 3, 64, 32, 0, 353, 55, 1, 0, 0, 0, 354, 355, 5, 59, 0, 0, 355, 356, 5, 3, 0, 0, 356, 357,
4549
+ 3, 64, 32, 0, 357, 57, 1, 0, 0, 0, 358, 363, 3, 64, 32, 0, 359, 360, 5, 2, 0, 0, 360, 362,
4550
+ 3, 64, 32, 0, 361, 359, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 364,
4551
+ 1, 0, 0, 0, 364, 370, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 366, 367, 5, 2, 0, 0, 367, 369,
4552
+ 3, 56, 28, 0, 368, 366, 1, 0, 0, 0, 369, 372, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 370, 371,
4553
+ 1, 0, 0, 0, 371, 382, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 373, 378, 3, 56, 28, 0, 374, 375,
4554
+ 5, 2, 0, 0, 375, 377, 3, 56, 28, 0, 376, 374, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0, 378, 376,
4555
+ 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 381, 358,
4556
+ 1, 0, 0, 0, 381, 373, 1, 0, 0, 0, 382, 59, 1, 0, 0, 0, 383, 384, 3, 78, 39, 0, 384, 385,
4557
+ 5, 3, 0, 0, 385, 386, 3, 64, 32, 0, 386, 61, 1, 0, 0, 0, 387, 388, 5, 4, 0, 0, 388, 389,
4558
+ 5, 59, 0, 0, 389, 390, 5, 3, 0, 0, 390, 391, 3, 64, 32, 0, 391, 63, 1, 0, 0, 0, 392, 393,
4559
+ 6, 32, -1, 0, 393, 394, 5, 55, 0, 0, 394, 395, 3, 64, 32, 0, 395, 396, 5, 56, 0, 0, 396,
4560
+ 410, 1, 0, 0, 0, 397, 400, 3, 70, 35, 0, 398, 400, 3, 78, 39, 0, 399, 397, 1, 0, 0, 0,
4561
+ 399, 398, 1, 0, 0, 0, 400, 410, 1, 0, 0, 0, 401, 402, 3, 68, 34, 0, 402, 403, 3, 64, 32,
4562
+ 11, 403, 410, 1, 0, 0, 0, 404, 410, 3, 92, 46, 0, 405, 410, 3, 96, 48, 0, 406, 410, 3,
4563
+ 98, 49, 0, 407, 410, 3, 84, 42, 0, 408, 410, 3, 114, 57, 0, 409, 392, 1, 0, 0, 0, 409,
4564
+ 399, 1, 0, 0, 0, 409, 401, 1, 0, 0, 0, 409, 404, 1, 0, 0, 0, 409, 405, 1, 0, 0, 0, 409,
4565
+ 406, 1, 0, 0, 0, 409, 407, 1, 0, 0, 0, 409, 408, 1, 0, 0, 0, 410, 431, 1, 0, 0, 0, 411,
4566
+ 412, 10, 10, 0, 0, 412, 413, 7, 5, 0, 0, 413, 430, 3, 64, 32, 11, 414, 415, 10, 9, 0,
4567
+ 0, 415, 416, 7, 6, 0, 0, 416, 430, 3, 64, 32, 10, 417, 418, 10, 8, 0, 0, 418, 419, 3,
4568
+ 66, 33, 0, 419, 420, 3, 64, 32, 9, 420, 430, 1, 0, 0, 0, 421, 422, 10, 7, 0, 0, 422, 423,
4569
+ 7, 7, 0, 0, 423, 430, 3, 64, 32, 8, 424, 425, 10, 1, 0, 0, 425, 426, 5, 5, 0, 0, 426, 427,
4570
+ 3, 64, 32, 0, 427, 428, 5, 6, 0, 0, 428, 430, 1, 0, 0, 0, 429, 411, 1, 0, 0, 0, 429, 414,
4571
+ 1, 0, 0, 0, 429, 417, 1, 0, 0, 0, 429, 421, 1, 0, 0, 0, 429, 424, 1, 0, 0, 0, 430, 433,
4572
+ 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 65, 1, 0, 0, 0, 433, 431, 1,
4573
+ 0, 0, 0, 434, 435, 7, 8, 0, 0, 435, 67, 1, 0, 0, 0, 436, 437, 7, 9, 0, 0, 437, 69, 1, 0,
4574
+ 0, 0, 438, 440, 5, 45, 0, 0, 439, 438, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0,
4575
+ 0, 0, 441, 442, 7, 10, 0, 0, 442, 71, 1, 0, 0, 0, 443, 444, 5, 24, 0, 0, 444, 445, 5, 59,
4576
+ 0, 0, 445, 447, 5, 55, 0, 0, 446, 448, 3, 76, 38, 0, 447, 446, 1, 0, 0, 0, 447, 448, 1,
4577
+ 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 450, 5, 56, 0, 0, 450, 451, 5, 1, 0, 0, 451, 452, 5,
4578
+ 67, 0, 0, 452, 455, 5, 69, 0, 0, 453, 456, 5, 67, 0, 0, 454, 456, 3, 74, 37, 0, 455, 453,
4579
+ 1, 0, 0, 0, 455, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 458,
4580
+ 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 460, 5, 70, 0, 0, 460, 73, 1, 0, 0, 0, 461, 464,
4581
+ 3, 2, 1, 0, 462, 464, 3, 88, 44, 0, 463, 461, 1, 0, 0, 0, 463, 462, 1, 0, 0, 0, 464, 75,
4582
+ 1, 0, 0, 0, 465, 470, 5, 59, 0, 0, 466, 467, 5, 2, 0, 0, 467, 469, 5, 59, 0, 0, 468, 466,
4583
+ 1, 0, 0, 0, 469, 472, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 479,
4584
+ 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 473, 474, 5, 2, 0, 0, 474, 475, 5, 59, 0, 0, 475, 476,
4585
+ 5, 3, 0, 0, 476, 478, 3, 70, 35, 0, 477, 473, 1, 0, 0, 0, 478, 481, 1, 0, 0, 0, 479, 477,
4586
+ 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 495, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 482, 483,
4587
+ 5, 59, 0, 0, 483, 484, 5, 3, 0, 0, 484, 491, 3, 70, 35, 0, 485, 486, 5, 2, 0, 0, 486, 487,
4588
+ 5, 59, 0, 0, 487, 488, 5, 3, 0, 0, 488, 490, 3, 70, 35, 0, 489, 485, 1, 0, 0, 0, 490, 493,
4589
+ 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 495, 1, 0, 0, 0, 493, 491,
4590
+ 1, 0, 0, 0, 494, 465, 1, 0, 0, 0, 494, 482, 1, 0, 0, 0, 495, 77, 1, 0, 0, 0, 496, 500, 5,
4591
+ 59, 0, 0, 497, 499, 3, 82, 41, 0, 498, 497, 1, 0, 0, 0, 499, 502, 1, 0, 0, 0, 500, 498,
4592
+ 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 79, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 503, 505, 5,
4593
+ 55, 0, 0, 504, 506, 3, 58, 29, 0, 505, 504, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 507,
4594
+ 1, 0, 0, 0, 507, 510, 5, 56, 0, 0, 508, 510, 3, 82, 41, 0, 509, 503, 1, 0, 0, 0, 509, 508,
4595
+ 1, 0, 0, 0, 510, 81, 1, 0, 0, 0, 511, 512, 5, 7, 0, 0, 512, 518, 5, 59, 0, 0, 513, 514,
4596
+ 5, 5, 0, 0, 514, 515, 3, 64, 32, 0, 515, 516, 5, 6, 0, 0, 516, 518, 1, 0, 0, 0, 517, 511,
4597
+ 1, 0, 0, 0, 517, 513, 1, 0, 0, 0, 518, 83, 1, 0, 0, 0, 519, 521, 3, 86, 43, 0, 520, 519,
4598
+ 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 524, 5, 59, 0, 0, 523, 525,
4599
+ 3, 80, 40, 0, 524, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527,
4600
+ 1, 0, 0, 0, 527, 85, 1, 0, 0, 0, 528, 530, 5, 44, 0, 0, 529, 528, 1, 0, 0, 0, 529, 530,
4601
+ 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 533, 5, 46, 0, 0, 532, 534, 3, 64, 32, 0, 533, 532,
4602
+ 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 87, 1, 0, 0, 0, 535, 536, 5, 23, 0, 0, 536, 537,
4603
+ 3, 64, 32, 0, 537, 89, 1, 0, 0, 0, 538, 539, 3, 106, 53, 0, 539, 540, 5, 1, 0, 0, 540,
4604
+ 541, 3, 10, 5, 0, 541, 91, 1, 0, 0, 0, 542, 543, 5, 11, 0, 0, 543, 544, 5, 12, 0, 0, 544,
4605
+ 545, 5, 1, 0, 0, 545, 546, 5, 67, 0, 0, 546, 549, 5, 69, 0, 0, 547, 550, 5, 67, 0, 0, 548,
4606
+ 550, 3, 104, 52, 0, 549, 547, 1, 0, 0, 0, 549, 548, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551,
4607
+ 549, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 5, 70, 0, 0, 554,
4608
+ 93, 1, 0, 0, 0, 555, 556, 5, 67, 0, 0, 556, 559, 5, 69, 0, 0, 557, 560, 5, 67, 0, 0, 558,
4609
+ 560, 3, 102, 51, 0, 559, 557, 1, 0, 0, 0, 559, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561,
4610
+ 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 5, 70, 0, 0, 564,
4611
+ 95, 1, 0, 0, 0, 565, 566, 5, 11, 0, 0, 566, 570, 5, 13, 0, 0, 567, 568, 5, 55, 0, 0, 568,
4612
+ 569, 5, 59, 0, 0, 569, 571, 5, 56, 0, 0, 570, 567, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571,
4613
+ 572, 1, 0, 0, 0, 572, 573, 5, 1, 0, 0, 573, 574, 3, 94, 47, 0, 574, 97, 1, 0, 0, 0, 575,
4614
+ 576, 5, 11, 0, 0, 576, 577, 5, 14, 0, 0, 577, 578, 5, 1, 0, 0, 578, 579, 5, 67, 0, 0, 579,
4615
+ 583, 5, 69, 0, 0, 580, 584, 5, 67, 0, 0, 581, 584, 3, 104, 52, 0, 582, 584, 3, 90, 45,
4616
+ 0, 583, 580, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 583, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0,
4617
+ 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 5, 70, 0,
4618
+ 0, 588, 99, 1, 0, 0, 0, 589, 590, 5, 67, 0, 0, 590, 593, 5, 69, 0, 0, 591, 594, 5, 67,
4619
+ 0, 0, 592, 594, 3, 104, 52, 0, 593, 591, 1, 0, 0, 0, 593, 592, 1, 0, 0, 0, 594, 595, 1,
4620
+ 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 5,
4621
+ 70, 0, 0, 598, 101, 1, 0, 0, 0, 599, 601, 7, 11, 0, 0, 600, 602, 5, 1, 0, 0, 601, 600,
4622
+ 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 609, 1, 0, 0, 0, 603, 610, 3, 58, 29, 0, 604, 605,
4623
+ 5, 55, 0, 0, 605, 606, 3, 58, 29, 0, 606, 607, 5, 56, 0, 0, 607, 610, 1, 0, 0, 0, 608,
4624
+ 610, 3, 100, 50, 0, 609, 603, 1, 0, 0, 0, 609, 604, 1, 0, 0, 0, 609, 608, 1, 0, 0, 0, 610,
4625
+ 626, 1, 0, 0, 0, 611, 612, 5, 27, 0, 0, 612, 617, 5, 59, 0, 0, 613, 614, 5, 2, 0, 0, 614,
4626
+ 616, 5, 59, 0, 0, 615, 613, 1, 0, 0, 0, 616, 619, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 617,
4627
+ 618, 1, 0, 0, 0, 618, 620, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 620, 621, 5, 28, 0, 0, 621,
4628
+ 622, 3, 64, 32, 0, 622, 623, 5, 1, 0, 0, 623, 624, 3, 94, 47, 0, 624, 626, 1, 0, 0, 0,
4629
+ 625, 599, 1, 0, 0, 0, 625, 611, 1, 0, 0, 0, 626, 103, 1, 0, 0, 0, 627, 631, 3, 106, 53,
4630
+ 0, 628, 630, 5, 63, 0, 0, 629, 628, 1, 0, 0, 0, 630, 633, 1, 0, 0, 0, 631, 629, 1, 0, 0,
4631
+ 0, 631, 632, 1, 0, 0, 0, 632, 634, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 634, 635, 5, 1, 0,
4632
+ 0, 635, 636, 3, 108, 54, 0, 636, 105, 1, 0, 0, 0, 637, 638, 7, 12, 0, 0, 638, 107, 1,
4633
+ 0, 0, 0, 639, 649, 3, 100, 50, 0, 640, 645, 3, 64, 32, 0, 641, 642, 5, 2, 0, 0, 642, 644,
4634
+ 3, 64, 32, 0, 643, 641, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 645, 646,
4635
+ 1, 0, 0, 0, 646, 649, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 639, 1, 0, 0, 0, 648, 640,
4636
+ 1, 0, 0, 0, 649, 109, 1, 0, 0, 0, 650, 653, 5, 59, 0, 0, 651, 654, 5, 60, 0, 0, 652, 654,
4637
+ 3, 64, 32, 0, 653, 651, 1, 0, 0, 0, 653, 652, 1, 0, 0, 0, 654, 657, 1, 0, 0, 0, 655, 657,
4638
+ 5, 59, 0, 0, 656, 650, 1, 0, 0, 0, 656, 655, 1, 0, 0, 0, 657, 111, 1, 0, 0, 0, 658, 662,
4639
+ 5, 15, 0, 0, 659, 661, 3, 110, 55, 0, 660, 659, 1, 0, 0, 0, 661, 664, 1, 0, 0, 0, 662,
4640
+ 660, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 113, 1, 0, 0, 0, 664, 662, 1, 0, 0, 0, 665,
4641
+ 676, 5, 5, 0, 0, 666, 671, 3, 64, 32, 0, 667, 668, 5, 2, 0, 0, 668, 670, 3, 64, 32, 0,
4642
+ 669, 667, 1, 0, 0, 0, 670, 673, 1, 0, 0, 0, 671, 669, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0,
4643
+ 672, 675, 1, 0, 0, 0, 673, 671, 1, 0, 0, 0, 674, 666, 1, 0, 0, 0, 675, 678, 1, 0, 0, 0,
4644
+ 676, 674, 1, 0, 0, 0, 676, 677, 1, 0, 0, 0, 677, 679, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0,
4645
+ 679, 680, 5, 6, 0, 0, 680, 115, 1, 0, 0, 0, 681, 684, 5, 20, 0, 0, 682, 685, 5, 59, 0,
4646
+ 0, 683, 685, 3, 64, 32, 0, 684, 682, 1, 0, 0, 0, 684, 683, 1, 0, 0, 0, 685, 117, 1, 0,
4647
+ 0, 0, 686, 687, 5, 25, 0, 0, 687, 689, 5, 59, 0, 0, 688, 690, 3, 120, 60, 0, 689, 688,
4648
+ 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 713, 1, 0, 0, 0, 691, 692, 5, 26, 0, 0, 692, 693,
4649
+ 5, 59, 0, 0, 693, 694, 5, 25, 0, 0, 694, 696, 5, 47, 0, 0, 695, 697, 3, 120, 60, 0, 696,
4650
+ 695, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 713, 1, 0, 0, 0, 698, 699, 5, 26, 0, 0, 699,
4651
+ 700, 5, 59, 0, 0, 700, 701, 5, 25, 0, 0, 701, 706, 5, 59, 0, 0, 702, 703, 5, 2, 0, 0, 703,
4652
+ 705, 5, 59, 0, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706,
4653
+ 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 711, 3, 120, 60, 0, 710,
4654
+ 709, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 713, 1, 0, 0, 0, 712, 686, 1, 0, 0, 0, 712,
4655
+ 691, 1, 0, 0, 0, 712, 698, 1, 0, 0, 0, 713, 119, 1, 0, 0, 0, 714, 718, 5, 54, 0, 0, 715,
4656
+ 717, 7, 13, 0, 0, 716, 715, 1, 0, 0, 0, 717, 720, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 718,
4657
+ 719, 1, 0, 0, 0, 719, 121, 1, 0, 0, 0, 720, 718, 1, 0, 0, 0, 721, 722, 7, 14, 0, 0, 722,
4658
+ 723, 5, 1, 0, 0, 723, 724, 3, 10, 5, 0, 724, 123, 1, 0, 0, 0, 725, 726, 5, 31, 0, 0, 726,
4659
+ 727, 3, 64, 32, 0, 727, 728, 5, 1, 0, 0, 728, 732, 3, 10, 5, 0, 729, 731, 3, 126, 63,
4660
+ 0, 730, 729, 1, 0, 0, 0, 731, 734, 1, 0, 0, 0, 732, 730, 1, 0, 0, 0, 732, 733, 1, 0, 0,
4661
+ 0, 733, 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 735, 737, 3, 128, 64, 0, 736, 735, 1, 0,
4662
+ 0, 0, 736, 737, 1, 0, 0, 0, 737, 125, 1, 0, 0, 0, 738, 739, 5, 32, 0, 0, 739, 740, 5, 31,
4663
+ 0, 0, 740, 741, 3, 64, 32, 0, 741, 742, 5, 1, 0, 0, 742, 743, 3, 10, 5, 0, 743, 127, 1,
4664
+ 0, 0, 0, 744, 745, 5, 32, 0, 0, 745, 746, 5, 1, 0, 0, 746, 747, 3, 10, 5, 0, 747, 129,
4665
+ 1, 0, 0, 0, 748, 749, 5, 29, 0, 0, 749, 750, 3, 64, 32, 0, 750, 751, 5, 1, 0, 0, 751, 752,
4666
+ 3, 10, 5, 0, 752, 131, 1, 0, 0, 0, 753, 754, 5, 27, 0, 0, 754, 759, 5, 59, 0, 0, 755, 756,
4667
+ 5, 2, 0, 0, 756, 758, 5, 59, 0, 0, 757, 755, 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759, 757,
4668
+ 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 759, 1, 0, 0, 0, 762, 763,
4669
+ 5, 28, 0, 0, 763, 764, 3, 64, 32, 0, 764, 765, 5, 1, 0, 0, 765, 766, 3, 10, 5, 0, 766,
4670
+ 133, 1, 0, 0, 0, 767, 768, 5, 8, 0, 0, 768, 769, 5, 1, 0, 0, 769, 774, 3, 64, 32, 0, 770,
4671
+ 771, 5, 2, 0, 0, 771, 773, 3, 64, 32, 0, 772, 770, 1, 0, 0, 0, 773, 776, 1, 0, 0, 0, 774,
4672
+ 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777, 1, 0, 0, 0, 776, 774, 1, 0, 0, 0, 777,
4673
+ 778, 5, 1, 0, 0, 778, 779, 3, 138, 69, 0, 779, 135, 1, 0, 0, 0, 780, 781, 7, 15, 0, 0,
4674
+ 781, 137, 1, 0, 0, 0, 782, 783, 5, 67, 0, 0, 783, 786, 5, 69, 0, 0, 784, 787, 5, 67, 0,
4675
+ 0, 785, 787, 3, 140, 70, 0, 786, 784, 1, 0, 0, 0, 786, 785, 1, 0, 0, 0, 787, 788, 1, 0,
4676
+ 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 5, 70,
4677
+ 0, 0, 791, 139, 1, 0, 0, 0, 792, 796, 3, 142, 71, 0, 793, 796, 3, 146, 73, 0, 794, 796,
4678
+ 3, 144, 72, 0, 795, 792, 1, 0, 0, 0, 795, 793, 1, 0, 0, 0, 795, 794, 1, 0, 0, 0, 796, 141,
4679
+ 1, 0, 0, 0, 797, 798, 3, 136, 68, 0, 798, 799, 5, 1, 0, 0, 799, 807, 3, 64, 32, 0, 800,
4680
+ 801, 5, 2, 0, 0, 801, 802, 3, 136, 68, 0, 802, 803, 5, 1, 0, 0, 803, 804, 3, 64, 32, 0,
4681
+ 804, 806, 1, 0, 0, 0, 805, 800, 1, 0, 0, 0, 806, 809, 1, 0, 0, 0, 807, 805, 1, 0, 0, 0,
4682
+ 807, 808, 1, 0, 0, 0, 808, 814, 1, 0, 0, 0, 809, 807, 1, 0, 0, 0, 810, 811, 5, 2, 0, 0,
4683
+ 811, 813, 3, 136, 68, 0, 812, 810, 1, 0, 0, 0, 813, 816, 1, 0, 0, 0, 814, 812, 1, 0, 0,
4684
+ 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, 0, 0, 0, 816, 814, 1, 0, 0, 0, 817, 827, 5, 1, 0,
4685
+ 0, 818, 828, 3, 138, 69, 0, 819, 824, 3, 64, 32, 0, 820, 821, 5, 2, 0, 0, 821, 823, 3,
4686
+ 64, 32, 0, 822, 820, 1, 0, 0, 0, 823, 826, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 825,
4687
+ 1, 0, 0, 0, 825, 828, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 827, 818, 1, 0, 0, 0, 827, 819,
4688
+ 1, 0, 0, 0, 828, 143, 1, 0, 0, 0, 829, 830, 3, 136, 68, 0, 830, 831, 5, 1, 0, 0, 831, 832,
4689
+ 3, 138, 69, 0, 832, 145, 1, 0, 0, 0, 833, 834, 3, 136, 68, 0, 834, 835, 5, 1, 0, 0, 835,
4690
+ 840, 3, 64, 32, 0, 836, 837, 5, 2, 0, 0, 837, 839, 3, 64, 32, 0, 838, 836, 1, 0, 0, 0,
4691
+ 839, 842, 1, 0, 0, 0, 840, 838, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 147, 1, 0, 0, 0,
4692
+ 842, 840, 1, 0, 0, 0, 843, 844, 5, 54, 0, 0, 844, 845, 5, 59, 0, 0, 845, 149, 1, 0, 0,
4693
+ 0, 94, 152, 154, 159, 161, 179, 186, 190, 198, 204, 206, 220, 222, 237, 241, 246,
4694
+ 250, 258, 271, 282, 290, 292, 303, 313, 315, 321, 328, 335, 339, 345, 363, 370,
4695
+ 378, 381, 399, 409, 429, 431, 439, 447, 455, 457, 463, 470, 479, 491, 494, 500,
4696
+ 505, 509, 517, 520, 526, 529, 533, 549, 551, 559, 561, 570, 583, 585, 593, 595,
4697
+ 601, 609, 617, 625, 631, 645, 648, 653, 656, 662, 671, 676, 684, 689, 696, 706,
4698
+ 710, 712, 718, 732, 736, 759, 774, 786, 788, 795, 807, 814, 824, 827, 840
4523
4699
  ];
4524
4700
  static __ATN;
4525
4701
  static get _ATN() {
@@ -6346,6 +6522,7 @@ export class GraphicForExprContext extends Graphic_exprContext {
6346
6522
  }
6347
6523
  }
6348
6524
  export class Property_exprContext extends antlr.ParserRuleContext {
6525
+ _extra;
6349
6526
  constructor(parent, invokingState) {
6350
6527
  super(parent, invokingState);
6351
6528
  }
@@ -6355,6 +6532,14 @@ export class Property_exprContext extends antlr.ParserRuleContext {
6355
6532
  property_value_expr() {
6356
6533
  return this.getRuleContext(0, Property_value_exprContext);
6357
6534
  }
6535
+ STRING_VALUE(i) {
6536
+ if (i === undefined) {
6537
+ return this.getTokens(CircuitScriptParser.STRING_VALUE);
6538
+ }
6539
+ else {
6540
+ return this.getToken(CircuitScriptParser.STRING_VALUE, i);
6541
+ }
6542
+ }
6358
6543
  get ruleIndex() {
6359
6544
  return CircuitScriptParser.RULE_property_expr;
6360
6545
  }
@@ -6567,18 +6752,130 @@ export class Import_exprContext extends antlr.ParserRuleContext {
6567
6752
  constructor(parent, invokingState) {
6568
6753
  super(parent, invokingState);
6569
6754
  }
6755
+ get ruleIndex() {
6756
+ return CircuitScriptParser.RULE_import_expr;
6757
+ }
6758
+ copyFrom(ctx) {
6759
+ super.copyFrom(ctx);
6760
+ }
6761
+ }
6762
+ export class Import_specificContext extends Import_exprContext {
6763
+ _moduleName;
6764
+ _ID;
6765
+ _funcNames = [];
6766
+ constructor(ctx) {
6767
+ super(ctx.parent, ctx.invokingState);
6768
+ super.copyFrom(ctx);
6769
+ }
6770
+ From() {
6771
+ return this.getToken(CircuitScriptParser.From, 0);
6772
+ }
6773
+ Import() {
6774
+ return this.getToken(CircuitScriptParser.Import, 0);
6775
+ }
6776
+ ID(i) {
6777
+ if (i === undefined) {
6778
+ return this.getTokens(CircuitScriptParser.ID);
6779
+ }
6780
+ else {
6781
+ return this.getToken(CircuitScriptParser.ID, i);
6782
+ }
6783
+ }
6784
+ import_annotation_expr() {
6785
+ return this.getRuleContext(0, Import_annotation_exprContext);
6786
+ }
6787
+ accept(visitor) {
6788
+ if (visitor.visitImport_specific) {
6789
+ return visitor.visitImport_specific(this);
6790
+ }
6791
+ else {
6792
+ return visitor.visitChildren(this);
6793
+ }
6794
+ }
6795
+ }
6796
+ export class Import_all_simpleContext extends Import_exprContext {
6797
+ _moduleName;
6798
+ constructor(ctx) {
6799
+ super(ctx.parent, ctx.invokingState);
6800
+ super.copyFrom(ctx);
6801
+ }
6802
+ From() {
6803
+ return this.getToken(CircuitScriptParser.From, 0);
6804
+ }
6805
+ Import() {
6806
+ return this.getToken(CircuitScriptParser.Import, 0);
6807
+ }
6808
+ Multiply() {
6809
+ return this.getToken(CircuitScriptParser.Multiply, 0);
6810
+ }
6811
+ ID() {
6812
+ return this.getToken(CircuitScriptParser.ID, 0);
6813
+ }
6814
+ import_annotation_expr() {
6815
+ return this.getRuleContext(0, Import_annotation_exprContext);
6816
+ }
6817
+ accept(visitor) {
6818
+ if (visitor.visitImport_all_simple) {
6819
+ return visitor.visitImport_all_simple(this);
6820
+ }
6821
+ else {
6822
+ return visitor.visitChildren(this);
6823
+ }
6824
+ }
6825
+ }
6826
+ export class Import_simpleContext extends Import_exprContext {
6827
+ _moduleName;
6828
+ constructor(ctx) {
6829
+ super(ctx.parent, ctx.invokingState);
6830
+ super.copyFrom(ctx);
6831
+ }
6570
6832
  Import() {
6571
6833
  return this.getToken(CircuitScriptParser.Import, 0);
6572
6834
  }
6573
6835
  ID() {
6574
6836
  return this.getToken(CircuitScriptParser.ID, 0);
6575
6837
  }
6838
+ import_annotation_expr() {
6839
+ return this.getRuleContext(0, Import_annotation_exprContext);
6840
+ }
6841
+ accept(visitor) {
6842
+ if (visitor.visitImport_simple) {
6843
+ return visitor.visitImport_simple(this);
6844
+ }
6845
+ else {
6846
+ return visitor.visitChildren(this);
6847
+ }
6848
+ }
6849
+ }
6850
+ export class Import_annotation_exprContext extends antlr.ParserRuleContext {
6851
+ constructor(parent, invokingState) {
6852
+ super(parent, invokingState);
6853
+ }
6854
+ ANNOTATION_START() {
6855
+ return this.getToken(CircuitScriptParser.ANNOTATION_START, 0);
6856
+ }
6857
+ ID(i) {
6858
+ if (i === undefined) {
6859
+ return this.getTokens(CircuitScriptParser.ID);
6860
+ }
6861
+ else {
6862
+ return this.getToken(CircuitScriptParser.ID, i);
6863
+ }
6864
+ }
6865
+ Minus(i) {
6866
+ if (i === undefined) {
6867
+ return this.getTokens(CircuitScriptParser.Minus);
6868
+ }
6869
+ else {
6870
+ return this.getToken(CircuitScriptParser.Minus, i);
6871
+ }
6872
+ }
6576
6873
  get ruleIndex() {
6577
- return CircuitScriptParser.RULE_import_expr;
6874
+ return CircuitScriptParser.RULE_import_annotation_expr;
6578
6875
  }
6579
6876
  accept(visitor) {
6580
- if (visitor.visitImport_expr) {
6581
- return visitor.visitImport_expr(this);
6877
+ if (visitor.visitImport_annotation_expr) {
6878
+ return visitor.visitImport_annotation_expr(this);
6582
6879
  }
6583
6880
  else {
6584
6881
  return visitor.visitChildren(this);