From 33d767e5635dee05053f556a1df65dda290e1516 Mon Sep 17 00:00:00 2001
From: abdullahtas0 <“dev.abdullahtas@gmail.com”>
Date: Sun, 1 Mar 2026 20:36:10 +0300
Subject: [PATCH 1/4] feat: migrate plugin to SonarQube Community Build v26
(MQR Mode)
- Update sonar-plugin-api from 7.9 to 13.4.3.4290
- Change API groupId to org.sonarsource.api.plugin
- Upgrade Java target from 1.9 to 17
- Migrate logging from deprecated sonar API to SLF4J
- Add MQR mode support: CleanCodeAttribute, SoftwareQuality, impact Severity
- Replace internal DefaultIssueLocation API with public NewIssue API
- Remove unused sslr-squid-bridge and sslr-core dependencies
- Replace Guava file operations with Java NIO
- Migrate commons-lang to commons-lang3
- Update sonar-packaging-maven-plugin to 1.23.0.740
- Update test dependencies and fix test compatibility
- All 33 tests passing
---
.../sonarqube/dart/lang/DartSensor.java | 6 +-
.../sonarqube/dart/lang/KeywordsProvider.java | 8 +-
.../sonarqube/dart/lang/PubSpecParser.java | 6 +-
.../dart/lang/SourceLinesProvider.java | 6 +-
.../antlr/CyclomaticComplexityVisitor.java | 6 +-
.../dart/lang/antlr/HighlighterVisitor.java | 6 +-
.../dart/lang/antlr/SourceLinesVisitor.java | 6 +-
.../dart/lang/issues/DartProfile.java | 6 +-
.../dart/lang/issues/RepositoryRule.java | 16 ++++
.../dartanalyzer/DartAnalyzerReportIssue.java | 12 ++-
.../DartAnalyzerRulesDefinition.java | 86 +++++++++++++++++--
.../dartanalyzer/DartAnalyzerSensor.java | 12 +--
.../executable/AnalyzerExecutable.java | 19 ++--
.../dart/lang/antlr/AntlrContextTest.java | 7 --
.../DartAnalyzerReportIssueTest.java | 43 ++++++----
.../DartAnalyzerRulesDefinitionTest.java | 27 +++++-
.../executable/AnalyzerExecutableTest.java | 2 +-
pom.xml | 73 +++++-----------
sonar-flutter-plugin/pom.xml | 4 +-
.../coverage/FlutterCoverageSensor.java | 6 +-
.../flutter/coverage/LCOVParser.java | 6 +-
.../tests/FlutterTestReportParser.java | 6 +-
.../flutter/tests/FlutterTestSensor.java | 6 +-
.../sonarqube/flutter/FlutterPluginTest.java | 2 +-
24 files changed, 232 insertions(+), 145 deletions(-)
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/DartSensor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/DartSensor.java
index 31a9a9f..99693c9 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/DartSensor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/DartSensor.java
@@ -31,15 +31,15 @@
import fr.insideapp.sonarqube.dart.lang.antlr.HighlighterVisitor;
import fr.insideapp.sonarqube.dart.lang.antlr.ParseTreeItemVisitor;
import fr.insideapp.sonarqube.dart.lang.antlr.SourceLinesVisitor;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.annotation.Nonnull;
import javax.annotation.ParametersAreNonnullByDefault;
public class DartSensor implements Sensor {
- private static final Logger LOGGER = Loggers.get(DartSensor.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(DartSensor.class);
@Override
public void describe(@Nonnull SensorDescriptor sensorDescriptor) {
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/KeywordsProvider.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/KeywordsProvider.java
index 600a2fb..a58e4a1 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/KeywordsProvider.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/KeywordsProvider.java
@@ -17,9 +17,9 @@
*/
package fr.insideapp.sonarqube.dart.lang;
-import org.apache.commons.lang.StringUtils;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.InputStream;
@@ -28,7 +28,7 @@
import java.util.List;
public class KeywordsProvider {
- private static final Logger LOGGER = Loggers.get(KeywordsProvider.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(KeywordsProvider.class);
private final List keywords = new ArrayList();
public KeywordsProvider() {
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java
index 4740618..44ca9ee 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java
@@ -18,8 +18,8 @@
package fr.insideapp.sonarqube.dart.lang;
import org.sonar.api.batch.sensor.SensorContext;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
import javax.annotation.Nonnull;
@@ -32,7 +32,7 @@
import java.util.Map;
public class PubSpecParser {
- private static final Logger LOGGER = Loggers.get(PubSpecParser.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(PubSpecParser.class);
private PubSpecParser() {
}
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/SourceLinesProvider.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/SourceLinesProvider.java
index 3869cc3..0bc0f18 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/SourceLinesProvider.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/SourceLinesProvider.java
@@ -18,8 +18,8 @@
package fr.insideapp.sonarqube.dart.lang;
import org.apache.commons.io.input.BOMInputStream;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.InputStream;
@@ -29,7 +29,7 @@
import java.util.List;
public class SourceLinesProvider {
- private static final Logger LOGGER = Loggers.get(SourceLinesProvider.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(SourceLinesProvider.class);
public SourceLine[] getLines(final InputStream inputStream, final Charset charset) {
if (inputStream == null) {
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java
index 1ad048d..122bea5 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java
@@ -24,12 +24,12 @@
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class CyclomaticComplexityVisitor implements ParseTreeItemVisitor {
- private static final Logger LOGGER = Loggers.get(CyclomaticComplexityVisitor.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(CyclomaticComplexityVisitor.class);
private int complexity = 0;
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/HighlighterVisitor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/HighlighterVisitor.java
index a9b2fa7..d957115 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/HighlighterVisitor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/HighlighterVisitor.java
@@ -27,14 +27,14 @@
import org.sonar.api.batch.sensor.cpd.NewCpdTokens;
import org.sonar.api.batch.sensor.highlighting.NewHighlighting;
import org.sonar.api.batch.sensor.highlighting.TypeOfText;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import static java.lang.String.format;
public class HighlighterVisitor implements ParseTreeItemVisitor {
- private static final Logger LOGGER = Loggers.get(HighlighterVisitor.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(HighlighterVisitor.class);
private final KeywordsProvider keywordsProvider = new KeywordsProvider();
@Override
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/SourceLinesVisitor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/SourceLinesVisitor.java
index 829d815..bb0c93f 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/SourceLinesVisitor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/SourceLinesVisitor.java
@@ -24,12 +24,12 @@
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class SourceLinesVisitor implements ParseTreeItemVisitor {
- private static final Logger LOGGER = Loggers.get(SourceLinesVisitor.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(SourceLinesVisitor.class);
private static int[] getLineAndColumn(final SourceLine[] lines, final int global) {
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java
index bb3c0ed..ed045d6 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java
@@ -20,15 +20,15 @@
import fr.insideapp.sonarqube.dart.lang.Dart;
import fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer.DartAnalyzerRulesDefinition;
import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.List;
public class DartProfile implements BuiltInQualityProfilesDefinition {
- private static final Logger LOGGER = Loggers.get(DartProfile.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(DartProfile.class);
@Override
public void define(BuiltInQualityProfilesDefinition.Context context) {
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/RepositoryRule.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/RepositoryRule.java
index c370e44..6d40ee1 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/RepositoryRule.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/RepositoryRule.java
@@ -19,6 +19,8 @@
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
public class RepositoryRule {
public enum Severity {
@@ -36,6 +38,14 @@ public enum Type {
SECURITY_HOTSPOT
}
+ public static class Impact {
+ @JsonProperty("softwareQuality")
+ public String softwareQuality;
+
+ @JsonProperty("severity")
+ public String severity;
+ }
+
@JsonProperty("key")
public String key;
@@ -56,4 +66,10 @@ public enum Type {
@JsonProperty("active")
public boolean active;
+
+ @JsonProperty("cleanCodeAttribute")
+ public String cleanCodeAttribute;
+
+ @JsonProperty("impacts")
+ public List impacts;
}
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerReportIssue.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerReportIssue.java
index ba405ac..07f0522 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerReportIssue.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerReportIssue.java
@@ -18,11 +18,9 @@
package fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer;
import org.sonar.api.batch.fs.InputFile;
+import org.sonar.api.batch.sensor.issue.NewIssue;
import org.sonar.api.batch.sensor.issue.NewIssueLocation;
-import org.sonar.api.batch.sensor.issue.internal.DefaultIssueLocation;
-import javax.annotation.Nonnull;
-import javax.annotation.ParametersAreNonnullByDefault;
import java.util.Objects;
public class DartAnalyzerReportIssue {
@@ -95,10 +93,10 @@ public int hashCode() {
return Objects.hash(ruleId, message, filePath, lineNumber, colNumber, length);
}
- @Nonnull
- @ParametersAreNonnullByDefault
- public NewIssueLocation toNewIssueLocationFor(final InputFile inputFile) {
- final NewIssueLocation location = new DefaultIssueLocation().on(inputFile).message(message);
+ public NewIssueLocation toNewIssueLocationFor(final NewIssue newIssue, final InputFile inputFile) {
+ final NewIssueLocation location = newIssue.newLocation()
+ .on(inputFile)
+ .message(message);
if (colNumber != null) {
// This is a machine readable issue with column and length information
// In Dart columns are 1-based but in Sonar they are 0-based, so need to subtract 1
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerRulesDefinition.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerRulesDefinition.java
index e7c8580..d20f3f8 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerRulesDefinition.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerRulesDefinition.java
@@ -20,16 +20,19 @@
import fr.insideapp.sonarqube.dart.lang.Dart;
import fr.insideapp.sonarqube.dart.lang.issues.RepositoryRule;
import fr.insideapp.sonarqube.dart.lang.issues.RepositoryRuleParser;
+import org.sonar.api.issue.impact.Severity;
+import org.sonar.api.issue.impact.SoftwareQuality;
+import org.sonar.api.rules.CleanCodeAttribute;
import org.sonar.api.rules.RuleType;
import org.sonar.api.server.rule.RulesDefinition;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.List;
public class DartAnalyzerRulesDefinition implements RulesDefinition {
- private static final Logger LOGGER = Loggers.get(DartAnalyzerRulesDefinition.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(DartAnalyzerRulesDefinition.class);
public static final String REPOSITORY_KEY = "dartanalyzer";
public static final String REPOSITORY_NAME = REPOSITORY_KEY;
public static final String RULES_FILE = "/dartanalyzer/rules.json";
@@ -43,7 +46,7 @@ public void define(Context context) {
List rules = repositoryRuleParser.parse(RULES_FILE);
for (RepositoryRule rule : rules) {
- if ( rule.name == null || rule.severity == null || rule.type == null || rule.description == null) {
+ if (rule.name == null || rule.severity == null || rule.type == null || rule.description == null) {
LOGGER.warn(String.format("Cannot load %s rule from dartanalyzer, rule data is missing in rules.json", rule.key));
} else {
RulesDefinition.NewRule newRule = repository.createRule(rule.key)
@@ -53,8 +56,39 @@ public void define(Context context) {
.setActivatedByDefault(rule.active)
.setHtmlDescription(rule.description);
newRule.setDebtRemediationFunction(newRule.debtRemediationFunctions().constantPerIssue(rule.debt));
- }
+ // MQR Mode: Set clean code attribute
+ if (rule.cleanCodeAttribute != null) {
+ try {
+ newRule.setCleanCodeAttribute(CleanCodeAttribute.valueOf(rule.cleanCodeAttribute));
+ } catch (IllegalArgumentException e) {
+ LOGGER.warn("Unknown CleanCodeAttribute '{}' for rule {}, using default", rule.cleanCodeAttribute, rule.key);
+ }
+ } else {
+ // Default based on type
+ newRule.setCleanCodeAttribute(mapTypeToCleanCodeAttribute(rule.type));
+ }
+
+ // MQR Mode: Set impacts
+ if (rule.impacts != null && !rule.impacts.isEmpty()) {
+ for (RepositoryRule.Impact impact : rule.impacts) {
+ try {
+ newRule.addDefaultImpact(
+ SoftwareQuality.valueOf(impact.softwareQuality),
+ Severity.valueOf(impact.severity)
+ );
+ } catch (IllegalArgumentException e) {
+ LOGGER.warn("Invalid impact definition for rule {}: {} / {}", rule.key, impact.softwareQuality, impact.severity);
+ }
+ }
+ } else {
+ // Auto-map from legacy type/severity
+ newRule.addDefaultImpact(
+ mapTypeToSoftwareQuality(rule.type),
+ mapSeverityToImpactSeverity(rule.severity)
+ );
+ }
+ }
}
} catch (IOException e) {
LOGGER.error("Failed to load dartanalyzer rules", e);
@@ -62,4 +96,46 @@ public void define(Context context) {
repository.done();
}
+
+ private static CleanCodeAttribute mapTypeToCleanCodeAttribute(RepositoryRule.Type type) {
+ switch (type) {
+ case BUG:
+ return CleanCodeAttribute.LOGICAL;
+ case VULNERABILITY:
+ case SECURITY_HOTSPOT:
+ return CleanCodeAttribute.TRUSTWORTHY;
+ case CODE_SMELL:
+ default:
+ return CleanCodeAttribute.CONVENTIONAL;
+ }
+ }
+
+ private static SoftwareQuality mapTypeToSoftwareQuality(RepositoryRule.Type type) {
+ switch (type) {
+ case BUG:
+ return SoftwareQuality.RELIABILITY;
+ case VULNERABILITY:
+ case SECURITY_HOTSPOT:
+ return SoftwareQuality.SECURITY;
+ case CODE_SMELL:
+ default:
+ return SoftwareQuality.MAINTAINABILITY;
+ }
+ }
+
+ private static Severity mapSeverityToImpactSeverity(RepositoryRule.Severity severity) {
+ switch (severity) {
+ case BLOCKER:
+ return Severity.BLOCKER;
+ case CRITICAL:
+ return Severity.HIGH;
+ case MAJOR:
+ return Severity.MEDIUM;
+ case MINOR:
+ return Severity.LOW;
+ case INFO:
+ default:
+ return Severity.INFO;
+ }
+ }
}
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerSensor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerSensor.java
index 8f43f66..ee6140e 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerSensor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/DartAnalyzerSensor.java
@@ -28,8 +28,8 @@
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.SensorDescriptor;
import org.sonar.api.rule.RuleKey;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.annotation.ParametersAreNonnullByDefault;
import java.io.File;
@@ -41,7 +41,7 @@
import static java.util.Arrays.asList;
public class DartAnalyzerSensor implements Sensor {
- private static final Logger LOGGER = Loggers.get(DartAnalyzerSensor.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(DartAnalyzerSensor.class);
public static final String ANALYZER_MODE = "sonar.dart.analyzer.mode";
public static final List ANALYZER_MODE_OPTIONS = asList(AnalyzerExecutable.Mode.values());
@@ -95,9 +95,9 @@ private void recordIssues(SensorContext sensorContext, Listcontact@insideapp.fr
true
- 1.9
+ 17
UTF-8
- 7.9
+ 13.4.3.4290
3.5.2
4.13.1
- 4.4.0
- 1.23
- 2.7.1.392
+ 5.11.0
1.6
3.5.2
2.2.3
@@ -81,9 +79,9 @@
- org.sonarsource.sonarqube
+ org.sonarsource.api.plugin
sonar-plugin-api
- ${sonar.version}
+ ${sonar.plugin.api.version}
provided
@@ -109,47 +107,23 @@
${jproc.version}
- org.sonarsource.sslr
- sslr-core
- ${sslr.version}
-
-
- org.sonarsource.sslr-squid-bridge
- sslr-squid-bridge
- ${sslr-squid-bridge.version}
-
-
- org.codehaus.sonar.sslr
- sslr-core
-
-
- org.codehaus.sonar.sslr
- sslr-xpath
-
-
- org.codehaus.sonar
- sonar-plugin-api
-
-
- org.picocontainer
- picocontainer
-
-
- org.slf4j
- slf4j-api
-
-
- org.slf4j
- jcl-over-slf4j
-
-
+ com.google.code.findbugs
+ jsr305
+ 3.0.2
+ provided
+
+ org.sonarsource.api.plugin
+ sonar-plugin-api-test-fixtures
+ ${sonar.plugin.api.version}
+ test
+
org.sonarsource.sonarqube
- sonar-testing-harness
- ${sonar.version}
+ sonar-plugin-api-impl
+ 10.3.0.82913
test
@@ -158,12 +132,6 @@
${junit.version}
test
-
- org.sonarsource.sslr
- sslr-testing-harness
- ${sslr.version}
- test
-
org.assertj
assertj-core
@@ -185,10 +153,9 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.8.1
+ 3.13.0
- ${jdk.min.version}
- ${jdk.min.version}
+ ${jdk.min.version}
-Xlint
@@ -198,7 +165,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.5
+ 0.8.12
**/generated/**
diff --git a/sonar-flutter-plugin/pom.xml b/sonar-flutter-plugin/pom.xml
index 35d0bdb..8bb2139 100644
--- a/sonar-flutter-plugin/pom.xml
+++ b/sonar-flutter-plugin/pom.xml
@@ -29,11 +29,13 @@
org.sonarsource.sonar-packaging-maven-plugin
sonar-packaging-maven-plugin
- 1.18.0.372
+ 1.23.0.740
true
fr.insideapp.sonarqube.flutter.FlutterPlugin
Flutter
+ 10.8
+ dart
diff --git a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/FlutterCoverageSensor.java b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/FlutterCoverageSensor.java
index b8f962f..2eb08bf 100644
--- a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/FlutterCoverageSensor.java
+++ b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/FlutterCoverageSensor.java
@@ -25,8 +25,8 @@
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.SensorDescriptor;
import org.sonar.api.batch.sensor.coverage.NewCoverage;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.annotation.CheckForNull;
import java.io.File;
@@ -35,7 +35,7 @@
import java.util.Map;
public class FlutterCoverageSensor implements Sensor {
- private static final Logger LOGGER = Loggers.get(FlutterCoverageSensor.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(FlutterCoverageSensor.class);
public static final String REPORT_PATH_KEY = "sonar.flutter.coverage.reportPath";
public static final String DEFAULT_REPORT_PATH = "coverage/lcov.info";
diff --git a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/LCOVParser.java b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/LCOVParser.java
index 49d0a25..cdb3990 100644
--- a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/LCOVParser.java
+++ b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/coverage/LCOVParser.java
@@ -20,8 +20,8 @@
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.coverage.NewCoverage;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.annotation.CheckForNull;
import java.io.File;
@@ -44,7 +44,7 @@ public class LCOVParser {
private final FileLocator fileLocator;
private int inconsistenciesCounter = 0;
- private static final Logger LOGGER = Loggers.get(LCOVParser.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(LCOVParser.class);
private LCOVParser(List lines, SensorContext context, FileLocator fileLocator) {
this.context = context;
diff --git a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestReportParser.java b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestReportParser.java
index f91a389..055cdf3 100644
--- a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestReportParser.java
+++ b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestReportParser.java
@@ -19,8 +19,8 @@
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@@ -35,7 +35,7 @@
* Test event types are based on https://github.com/dart-lang/test/blob/master/pkgs/test/doc/json_reporter.md
*/
public class FlutterTestReportParser {
- private static final Logger LOGGER = Loggers.get(FlutterTestReportParser.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(FlutterTestReportParser.class);
List parse(File reportFile) throws IOException {
if (reportFile.exists()) {
diff --git a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestSensor.java b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestSensor.java
index dc9b502..c364e92 100644
--- a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestSensor.java
+++ b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/tests/FlutterTestSensor.java
@@ -24,8 +24,8 @@
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.batch.sensor.SensorDescriptor;
import org.sonar.api.measures.CoreMetrics;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@@ -33,7 +33,7 @@
import java.util.List;
public class FlutterTestSensor implements Sensor {
- private static final Logger LOGGER = Loggers.get(FlutterTestSensor.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(FlutterTestSensor.class);
public static final String REPORT_PATH_KEY = "sonar.flutter.tests.reportPath";
public static final String DEFAULT_REPORT_PATH = "tests.output";
diff --git a/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java b/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java
index e9acdcc..5c28671 100644
--- a/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java
+++ b/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java
@@ -34,7 +34,7 @@ public class FlutterPluginTest {
@Test
public void define() {
- SonarRuntime sonarRuntime = SonarRuntimeImpl.forSonarQube(Version.create(7, 9), SonarQubeSide.SERVER, SonarEdition.COMMUNITY);
+ SonarRuntime sonarRuntime = SonarRuntimeImpl.forSonarQube(Version.create(10, 1), SonarQubeSide.SERVER, SonarEdition.COMMUNITY);
Plugin.Context context = new Plugin.Context(sonarRuntime);
From 3eea4897349efa1630521835ff4ca6cd6b35de8b Mon Sep 17 00:00:00 2001
From: abdullahtas0 <“dev.abdullahtas@gmail.com”>
Date: Sun, 1 Mar 2026 21:45:05 +0300
Subject: [PATCH 2/4] feat: add Dart 3.x support, state management rules, and
remove legacy dartanalyzer
- Add 14 new Dart 3.x linter rules (avoid_futureor_void, switch_on_type, etc.)
- Deactivate 13 deprecated/removed rules (package_api_docs, unsafe_html, etc.)
- Remove legacy dartanalyzer command (deprecated since Dart 2.18, removed in Dart 3)
- Update ANTLR grammar for Dart 3: sealed/base/final/interface class modifiers,
records, switch expressions, pattern matching, if-case, when guards
- Add state management detection (BLoC, Riverpod, Provider) via pubspec.yaml
- Add 24 state management rules (9 BLoC + 15 Riverpod) with MQR attributes
- Total rules: 305 dartanalyzer + 24 state management = 329
---
dart-lang/src/main/antlr/Dart2.g4 | 76 +-
.../sonarqube/dart/lang/PubSpec.java | 27 +-
.../sonarqube/dart/lang/PubSpecParser.java | 22 +-
.../antlr/CyclomaticComplexityVisitor.java | 3 +-
.../antlr/generated/Dart2BaseListener.java | 188 +-
.../antlr/generated/Dart2BaseVisitor.java | 118 +-
.../dart/lang/antlr/generated/Dart2Lexer.java | 817 +--
.../lang/antlr/generated/Dart2Listener.java | 160 +-
.../lang/antlr/generated/Dart2Parser.java | 6081 ++++++++++-------
.../lang/antlr/generated/Dart2Visitor.java | 104 +-
.../dart/lang/issues/DartProfile.java | 25 +-
.../executable/AnalyzerExecutable.java | 3 -
.../DartanalyzerAnalyzerExecutable.java | 48 -
...FlutterStateManagementRulesDefinition.java | 87 +
dart-lang/src/main/resources/dart.keywords | 3 +
.../dartanalyzer/analysis_options.yaml | 27 +-
.../main/resources/dartanalyzer/rules.json | 234 +-
.../flutter-state-management/rules.json | 386 ++
.../sonarqube/flutter/FlutterPlugin.java | 4 +
.../sonarqube/flutter/FlutterPluginTest.java | 2 +-
20 files changed, 5442 insertions(+), 2973 deletions(-)
delete mode 100644 dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/DartanalyzerAnalyzerExecutable.java
create mode 100644 dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/statemanagement/FlutterStateManagementRulesDefinition.java
create mode 100644 dart-lang/src/main/resources/flutter-state-management/rules.json
diff --git a/dart-lang/src/main/antlr/Dart2.g4 b/dart-lang/src/main/antlr/Dart2.g4
index f9432a0..fbbd5cb 100644
--- a/dart-lang/src/main/antlr/Dart2.g4
+++ b/dart-lang/src/main/antlr/Dart2.g4
@@ -137,9 +137,19 @@ defaultNamedParameter
| normalFormalParameter (':' expression)?
;
-// 10 Classes
+// 10 Classes (updated for Dart 3 class modifiers)
+classModifier
+ : 'sealed'
+ | 'base'
+ | 'final'
+ | 'interface'
+ | 'mixin'
+ ;
classDefinition
- : metadata 'abstract'? 'class' identifier typeParameters?
+ : metadata classModifier* 'abstract'? 'class' identifier typeParameters?
+ superclass? mixins? interfaces?
+ '{' (metadata classMemberDefinition)* '}'
+ | metadata 'abstract'? classModifier* 'class' identifier typeParameters?
superclass? mixins? interfaces?
'{' (metadata classMemberDefinition)* '}'
| metadata 'abstract'? 'class' mixinApplicationClass
@@ -297,9 +307,61 @@ primary
| identifier
| nayaExpression
| constObjectExpression
+ | recordLiteral
+ | switchExpression
| '(' expression ')'
;
+// Dart 3 Records
+recordLiteral
+ : '(' recordField ',' recordField (',' recordField)* ','? ')'
+ ;
+recordField
+ : (identifier ':')? expression
+ ;
+recordType
+ : '(' recordTypeField ',' recordTypeField (',' recordTypeField)* ','? ')'
+ ;
+recordTypeField
+ : (identifier ':')? dtype
+ ;
+
+// Dart 3 Switch Expressions
+switchExpression
+ : 'switch' '(' expression ')' '{' switchExpressionCase (',' switchExpressionCase)* ','? '}'
+ ;
+switchExpressionCase
+ : guardedPattern '=>' expression
+ ;
+guardedPattern
+ : pattern ('when' expression)?
+ ;
+pattern
+ : constantPattern
+ | typeTestPattern
+ | wildcardPattern
+ | variablePattern
+ | parenthesizedPattern
+ ;
+constantPattern
+ : literal
+ | identifier
+ | qualified
+ | constObjectExpression
+ ;
+typeTestPattern
+ : dtype identifier
+ ;
+wildcardPattern
+ : '_'
+ ;
+variablePattern
+ : ('var' | 'final' dtype? ) identifier
+ ;
+parenthesizedPattern
+ : '(' pattern ')'
+ ;
+
// 16.1 Constants
literal
@@ -702,9 +764,10 @@ localVariableDeclaration
localFunctionDeclaration
: functionSignature functionBody
;
-// 17.5 If
+// 17.5 If (updated for Dart 3 if-case)
ifStatement
: 'if' '(' expression ')' statement ('else' statement)?
+ | 'if' '(' expression 'case' pattern ('when' expression)? ')' statement ('else' statement)?
;
// 17.6 For for
@@ -730,12 +793,12 @@ whileStatement
doStatement
: 'do' statement 'while' '(' expression ')' ';'
;
-// 17.9 Switch
+// 17.9 Switch (updated for Dart 3 patterns and when guards)
switchStatement
: 'switch' '(' expression ')' '{' switchCase* defaultCase? '}'
;
switchCase
- : label* 'case' expression ':' statements
+ : label* 'case' expression ('when' expression)? ':' statements
;
defaultCase
: label* 'default' ':' statements
@@ -885,7 +948,8 @@ uriTest
// 19.1 Static Types
dtype
- : typeName typeArguments?
+ : typeName typeArguments? '?'?
+ | recordType '?'?
;
typeName
: qualified
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpec.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpec.java
index f716c04..88fc7cf 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpec.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpec.java
@@ -25,9 +25,18 @@ public class PubSpec {
private final String version;
- PubSpec(boolean flutter, String version) {
+ private final boolean usesBloc;
+
+ private final boolean usesRiverpod;
+
+ private final boolean usesProvider;
+
+ PubSpec(boolean flutter, String version, boolean usesBloc, boolean usesRiverpod, boolean usesProvider) {
this.flutter = flutter;
this.version = version;
+ this.usesBloc = usesBloc;
+ this.usesRiverpod = usesRiverpod;
+ this.usesProvider = usesProvider;
}
public boolean isFlutter() {
@@ -37,4 +46,20 @@ public boolean isFlutter() {
public String getProjectVersion() {
return version;
}
+
+ public boolean usesBloc() {
+ return usesBloc;
+ }
+
+ public boolean usesRiverpod() {
+ return usesRiverpod;
+ }
+
+ public boolean usesProvider() {
+ return usesProvider;
+ }
+
+ public boolean usesStateManagement() {
+ return usesBloc || usesRiverpod || usesProvider;
+ }
}
\ No newline at end of file
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java
index 44ca9ee..10fd03f 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/PubSpecParser.java
@@ -37,6 +37,14 @@ public class PubSpecParser {
private PubSpecParser() {
}
+ private static boolean containsAnyKey(Map map, String... keys) {
+ if (map == null) return false;
+ for (String key : keys) {
+ if (map.containsKey(key)) return true;
+ }
+ return false;
+ }
+
@Nonnull
@ParametersAreNonnullByDefault
public static PubSpec parse(SensorContext sensorContext) throws IOException {
@@ -58,9 +66,21 @@ public static PubSpec parse(SensorContext sensorContext) throws IOException {
final String projectVersion = ((String) data.get("version"));
final Map dependencies = ((Map) data.get("dependencies"));
+ final Map devDependencies = ((Map) data.get("dev_dependencies"));
final boolean flutter = dependencies != null && dependencies.containsKey("flutter");
+
+ // Detect state management libraries
+ final boolean usesBloc = containsAnyKey(dependencies, "flutter_bloc", "bloc") ||
+ containsAnyKey(devDependencies, "bloc_lint");
+ final boolean usesRiverpod = containsAnyKey(dependencies, "flutter_riverpod", "hooks_riverpod", "riverpod") ||
+ containsAnyKey(devDependencies, "riverpod_lint");
+ final boolean usesProvider = !usesRiverpod && containsAnyKey(dependencies, "provider");
+
LOGGER.info("Detected {} project with version {}", flutter ? "Flutter" : "Dart", projectVersion);
+ if (usesBloc) LOGGER.info("Detected BLoC state management");
+ if (usesRiverpod) LOGGER.info("Detected Riverpod state management");
+ if (usesProvider) LOGGER.info("Detected Provider state management");
- return new PubSpec(flutter, projectVersion);
+ return new PubSpec(flutter, projectVersion, usesBloc, usesRiverpod, usesProvider);
}
}
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java
index 122bea5..066c0ff 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/CyclomaticComplexityVisitor.java
@@ -44,7 +44,8 @@ public void apply(ParseTree tree) {
Dart2Parser.SwitchCaseContext.class.equals(classz) ||
Dart2Parser.DefaultCaseContext.class.equals(classz) ||
Dart2Parser.DoStatementContext.class.equals(classz) ||
- Dart2Parser.FunctionBodyContext.class.equals(classz)
+ Dart2Parser.FunctionBodyContext.class.equals(classz) ||
+ Dart2Parser.SwitchExpressionCaseContext.class.equals(classz)
) {
complexity++;
}
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseListener.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseListener.java
index 81b8eac..b5ddd7d 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseListener.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseListener.java
@@ -1,21 +1,5 @@
-/*
- * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
- * Copyright © 2020 inside|app (contact@insideapp.fr)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-package fr.insideapp.sonarqube.dart.lang.antlr.generated;// Generated from Dart2.g4 by ANTLR 4.8
+// Generated from dart-lang/src/main/antlr/Dart2.g4 by ANTLR 4.8
+package fr.insideapp.sonarqube.dart.lang.antlr.generated;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.tree.ErrorNode;
@@ -315,6 +299,18 @@ public class Dart2BaseListener implements Dart2Listener {
* The default implementation does nothing.
*/
@Override public void exitDefaultNamedParameter(Dart2Parser.DefaultNamedParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassModifier(Dart2Parser.ClassModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassModifier(Dart2Parser.ClassModifierContext ctx) { }
/**
* {@inheritDoc}
*
@@ -711,6 +707,162 @@ public class Dart2BaseListener implements Dart2Listener {
* The default implementation does nothing.
*/
@Override public void exitPrimary(Dart2Parser.PrimaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordLiteral(Dart2Parser.RecordLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordLiteral(Dart2Parser.RecordLiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordField(Dart2Parser.RecordFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordField(Dart2Parser.RecordFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordType(Dart2Parser.RecordTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordType(Dart2Parser.RecordTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRecordTypeField(Dart2Parser.RecordTypeFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRecordTypeField(Dart2Parser.RecordTypeFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchExpression(Dart2Parser.SwitchExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchExpression(Dart2Parser.SwitchExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchExpressionCase(Dart2Parser.SwitchExpressionCaseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchExpressionCase(Dart2Parser.SwitchExpressionCaseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGuardedPattern(Dart2Parser.GuardedPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGuardedPattern(Dart2Parser.GuardedPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPattern(Dart2Parser.PatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPattern(Dart2Parser.PatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstantPattern(Dart2Parser.ConstantPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstantPattern(Dart2Parser.ConstantPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeTestPattern(Dart2Parser.TypeTestPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeTestPattern(Dart2Parser.TypeTestPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWildcardPattern(Dart2Parser.WildcardPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWildcardPattern(Dart2Parser.WildcardPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariablePattern(Dart2Parser.VariablePatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariablePattern(Dart2Parser.VariablePatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterParenthesizedPattern(Dart2Parser.ParenthesizedPatternContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitParenthesizedPattern(Dart2Parser.ParenthesizedPatternContext ctx) { }
/**
* {@inheritDoc}
*
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseVisitor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseVisitor.java
index adc20b8..0672208 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseVisitor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2BaseVisitor.java
@@ -1,21 +1,5 @@
-/*
- * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
- * Copyright © 2020 inside|app (contact@insideapp.fr)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-package fr.insideapp.sonarqube.dart.lang.antlr.generated;// Generated from Dart2.g4 by ANTLR 4.8
+// Generated from dart-lang/src/main/antlr/Dart2.g4 by ANTLR 4.8
+package fr.insideapp.sonarqube.dart.lang.antlr.generated;
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
/**
@@ -195,6 +179,13 @@ public class Dart2BaseVisitor extends AbstractParseTreeVisitor implements
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitDefaultNamedParameter(Dart2Parser.DefaultNamedParameterContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitClassModifier(Dart2Parser.ClassModifierContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
@@ -426,6 +417,97 @@ public class Dart2BaseVisitor extends AbstractParseTreeVisitor implements
* {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitPrimary(Dart2Parser.PrimaryContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRecordLiteral(Dart2Parser.RecordLiteralContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRecordField(Dart2Parser.RecordFieldContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRecordType(Dart2Parser.RecordTypeContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitRecordTypeField(Dart2Parser.RecordTypeFieldContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSwitchExpression(Dart2Parser.SwitchExpressionContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitSwitchExpressionCase(Dart2Parser.SwitchExpressionCaseContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitGuardedPattern(Dart2Parser.GuardedPatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitPattern(Dart2Parser.PatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitConstantPattern(Dart2Parser.ConstantPatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitTypeTestPattern(Dart2Parser.TypeTestPatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitWildcardPattern(Dart2Parser.WildcardPatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitVariablePattern(Dart2Parser.VariablePatternContext ctx) { return visitChildren(ctx); }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitParenthesizedPattern(Dart2Parser.ParenthesizedPatternContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
*
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Lexer.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Lexer.java
index 4fa3f34..e39d3c7 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Lexer.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Lexer.java
@@ -1,28 +1,13 @@
-/*
- * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
- * Copyright © 2020 inside|app (contact@insideapp.fr)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-package fr.insideapp.sonarqube.dart.lang.antlr.generated;// Generated from Dart2.g4 by ANTLR 4.8
-
+// Generated from dart-lang/src/main/antlr/Dart2.g4 by ANTLR 4.8
+package fr.insideapp.sonarqube.dart.lang.antlr.generated;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.ATN;
-import org.antlr.v4.runtime.atn.ATNDeserializer;
-import org.antlr.v4.runtime.atn.LexerATNSimulator;
-import org.antlr.v4.runtime.atn.PredictionContextCache;
+import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class Dart2Lexer extends Lexer {
@@ -48,9 +33,10 @@ public class Dart2Lexer extends Lexer {
T__94=95, T__95=96, T__96=97, T__97=98, T__98=99, T__99=100, T__100=101,
T__101=102, T__102=103, T__103=104, T__104=105, T__105=106, T__106=107,
T__107=108, T__108=109, T__109=110, T__110=111, T__111=112, T__112=113,
- T__113=114, T__114=115, T__115=116, T__116=117, WHITESPACE=118, NUMBER=119,
- HEX_NUMBER=120, SingleLineString=121, MultiLineString=122, NEWLINE=123,
- IDENTIFIER=124, SINGLE_LINE_COMMENT=125, MULTI_LINE_COMMENT=126;
+ T__113=114, T__114=115, T__115=116, T__116=117, T__117=118, T__118=119,
+ T__119=120, T__120=121, T__121=122, T__122=123, WHITESPACE=124, NUMBER=125,
+ HEX_NUMBER=126, SingleLineString=127, MultiLineString=128, NEWLINE=129,
+ IDENTIFIER=130, SINGLE_LINE_COMMENT=131, MULTI_LINE_COMMENT=132;
public static String[] channelNames = {
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
};
@@ -75,12 +61,13 @@ private static String[] makeRuleNames() {
"T__89", "T__90", "T__91", "T__92", "T__93", "T__94", "T__95", "T__96",
"T__97", "T__98", "T__99", "T__100", "T__101", "T__102", "T__103", "T__104",
"T__105", "T__106", "T__107", "T__108", "T__109", "T__110", "T__111",
- "T__112", "T__113", "T__114", "T__115", "T__116", "WHITESPACE", "NUMBER",
- "EXPONENT", "HEX_NUMBER", "HEX_DIGIT", "SingleLineString", "StringContentDQ",
- "StringContentSQ", "MultiLineString", "StringContentTDQ", "StringContentTSQ",
- "NEWLINE", "IDENTIFIER_NO_DOLLAR", "IDENTIFIER", "IDENTIFIER_START",
- "IDENTIFIER_START_NO_DOLLAR", "IDENTIFIER_PART_NO_DOLLAR", "IDENTIFIER_PART",
- "LETTER", "DIGIT", "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+ "T__112", "T__113", "T__114", "T__115", "T__116", "T__117", "T__118",
+ "T__119", "T__120", "T__121", "T__122", "WHITESPACE", "NUMBER", "EXPONENT",
+ "HEX_NUMBER", "HEX_DIGIT", "SingleLineString", "StringContentDQ", "StringContentSQ",
+ "MultiLineString", "StringContentTDQ", "StringContentTSQ", "NEWLINE",
+ "IDENTIFIER_NO_DOLLAR", "IDENTIFIER", "IDENTIFIER_START", "IDENTIFIER_START_NO_DOLLAR",
+ "IDENTIFIER_PART_NO_DOLLAR", "IDENTIFIER_PART", "LETTER", "DIGIT", "SINGLE_LINE_COMMENT",
+ "MULTI_LINE_COMMENT"
};
}
public static final String[] ruleNames = makeRuleNames();
@@ -89,19 +76,20 @@ private static String[] makeLiteralNames() {
return new String[] {
null, "','", "'final'", "'const'", "'var'", "'='", "'void'", "'async'",
"'=>'", "';'", "'async*'", "'sync*'", "'{'", "'}'", "'('", "')'", "'['",
- "']'", "'covariant'", "'this'", "'.'", "':'", "'abstract'", "'class'",
- "'with'", "'static'", "'external'", "'operator'", "'~'", "'[]'", "'[]='",
- "'=='", "'get'", "'set'", "'super'", "'factory'", "'extends'", "'implements'",
- "'enum'", "'<'", "'>'", "'@'", "'null'", "'true'", "'false'", "'$'",
- "'${'", "'#'", "'throw'", "'new'", "'..'", "'*='", "'/='", "'~/='", "'%='",
- "'+='", "'<<='", "'>>='", "'>>>='", "'&='", "'^='", "'|='", "'??='",
- "'?'", "'??'", "'||'", "'&&'", "'!='", "'>='", "'<='", "'|'", "'^'",
- "'&'", "'<<'", "'>>'", "'>>>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~/'",
- "'!'", "'await'", "'++'", "'--'", "'?.'", "'is'", "'as'", "'if'", "'else'",
- "'for'", "'in'", "'while'", "'do'", "'switch'", "'case'", "'default'",
- "'rethrow'", "'try'", "'on'", "'catch'", "'finally'", "'return'", "'break'",
- "'continue'", "'yield'", "'yield*'", "'assert'", "'#!'", "'library'",
- "'import'", "'show'", "'hide'", "'export'", "'part'", "'of'", "'typedef'"
+ "']'", "'covariant'", "'this'", "'.'", "':'", "'sealed'", "'base'", "'interface'",
+ "'mixin'", "'abstract'", "'class'", "'with'", "'static'", "'external'",
+ "'operator'", "'~'", "'[]'", "'[]='", "'=='", "'get'", "'set'", "'super'",
+ "'factory'", "'extends'", "'implements'", "'enum'", "'<'", "'>'", "'@'",
+ "'switch'", "'when'", "'_'", "'null'", "'true'", "'false'", "'$'", "'${'",
+ "'#'", "'throw'", "'new'", "'..'", "'*='", "'/='", "'~/='", "'%='", "'+='",
+ "'<<='", "'>>='", "'>>>='", "'&='", "'^='", "'|='", "'??='", "'?'", "'??'",
+ "'||'", "'&&'", "'!='", "'>='", "'<='", "'|'", "'^'", "'&'", "'<<'",
+ "'>>'", "'>>>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~/'", "'!'", "'await'",
+ "'++'", "'--'", "'?.'", "'is'", "'as'", "'if'", "'else'", "'case'", "'for'",
+ "'in'", "'while'", "'do'", "'default'", "'rethrow'", "'try'", "'on'",
+ "'catch'", "'finally'", "'return'", "'break'", "'continue'", "'yield'",
+ "'yield*'", "'assert'", "'#!'", "'library'", "'import'", "'show'", "'hide'",
+ "'export'", "'part'", "'of'", "'typedef'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
@@ -116,9 +104,9 @@ private static String[] makeSymbolicNames() {
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, "WHITESPACE",
- "NUMBER", "HEX_NUMBER", "SingleLineString", "MultiLineString", "NEWLINE",
- "IDENTIFIER", "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, "WHITESPACE", "NUMBER", "HEX_NUMBER", "SingleLineString",
+ "MultiLineString", "NEWLINE", "IDENTIFIER", "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -180,7 +168,7 @@ public Dart2Lexer(CharStream input) {
public ATN getATN() { return _ATN; }
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u0080\u041a\b\1\4"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u0086\u0449\b\1\4"+
"\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n"+
"\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22"+
"\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31"+
@@ -196,359 +184,384 @@ public Dart2Lexer(CharStream input) {
"\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t"+
"\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084"+
"\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088\4\u0089"+
- "\t\u0089\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\3\2\3\2\3\3\3"+
- "\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\6\3\6\3\7"+
- "\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\13\3\13"+
- "\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\16\3\16\3"+
- "\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3"+
- "\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3"+
- "\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3"+
- "\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33\3\33\3"+
- "\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3"+
- "\34\3\34\3\35\3\35\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3 \3 \3 \3!\3!\3"+
- "!\3!\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3$\3%\3%\3"+
- "%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'"+
- "\3(\3(\3)\3)\3*\3*\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3-\3-\3-\3-\3-\3-\3."+
- "\3.\3/\3/\3/\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3"+
- "\62\3\63\3\63\3\63\3\64\3\64\3\64\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3"+
- "\67\3\67\3\67\38\38\38\39\39\39\39\3:\3:\3:\3:\3;\3;\3;\3;\3;\3<\3<\3"+
- "<\3=\3=\3=\3>\3>\3>\3?\3?\3?\3?\3@\3@\3A\3A\3A\3B\3B\3B\3C\3C\3C\3D\3"+
- "D\3D\3E\3E\3E\3F\3F\3F\3G\3G\3H\3H\3I\3I\3J\3J\3J\3K\3K\3K\3L\3L\3L\3"+
- "L\3M\3M\3N\3N\3O\3O\3P\3P\3Q\3Q\3R\3R\3R\3S\3S\3T\3T\3T\3T\3T\3T\3U\3"+
- "U\3U\3V\3V\3V\3W\3W\3W\3X\3X\3X\3Y\3Y\3Y\3Z\3Z\3Z\3[\3[\3[\3[\3[\3\\\3"+
- "\\\3\\\3\\\3]\3]\3]\3^\3^\3^\3^\3^\3^\3_\3_\3_\3`\3`\3`\3`\3`\3`\3`\3"+
- "a\3a\3a\3a\3a\3b\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3c\3d\3d\3"+
- "d\3d\3e\3e\3e\3f\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3"+
- "h\3h\3h\3i\3i\3i\3i\3i\3i\3j\3j\3j\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3"+
- "k\3l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3n\3n\3n\3o\3o\3o\3o\3o\3"+
- "o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3q\3q\3q\3q\3q\3r\3r\3r\3r\3r\3s\3s\3s\3"+
- "s\3s\3s\3s\3t\3t\3t\3t\3t\3u\3u\3u\3v\3v\3v\3v\3v\3v\3v\3v\3w\6w\u0314"+
- "\nw\rw\16w\u0315\3w\3w\3x\6x\u031b\nx\rx\16x\u031c\3x\3x\6x\u0321\nx\r"+
- "x\16x\u0322\5x\u0325\nx\3x\5x\u0328\nx\3x\3x\6x\u032c\nx\rx\16x\u032d"+
- "\3x\5x\u0331\nx\5x\u0333\nx\3y\3y\5y\u0337\ny\3y\6y\u033a\ny\ry\16y\u033b"+
- "\3z\3z\3z\3z\6z\u0342\nz\rz\16z\u0343\3z\3z\3z\3z\6z\u034a\nz\rz\16z\u034b"+
- "\5z\u034e\nz\3{\3{\5{\u0352\n{\3|\3|\7|\u0356\n|\f|\16|\u0359\13|\3|\3"+
- "|\3|\7|\u035e\n|\f|\16|\u0361\13|\3|\3|\3|\3|\3|\7|\u0368\n|\f|\16|\u036b"+
- "\13|\3|\3|\3|\3|\3|\7|\u0372\n|\f|\16|\u0375\13|\3|\5|\u0378\n|\3}\3}"+
- "\3}\5}\u037d\n}\3~\3~\3~\5~\u0382\n~\3\177\3\177\3\177\3\177\3\177\7\177"+
- "\u0389\n\177\f\177\16\177\u038c\13\177\3\177\3\177\3\177\3\177\3\177\3"+
- "\177\3\177\3\177\7\177\u0396\n\177\f\177\16\177\u0399\13\177\3\177\3\177"+
- "\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177"+
- "\3\177\7\177\u03aa\n\177\f\177\16\177\u03ad\13\177\3\177\3\177\3\177\3"+
- "\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177"+
- "\7\177\u03be\n\177\f\177\16\177\u03c1\13\177\3\177\3\177\3\177\5\177\u03c6"+
- "\n\177\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\5\u0080"+
- "\u03cf\n\u0080\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081"+
- "\5\u0081\u03d8\n\u0081\3\u0082\3\u0082\3\u0082\5\u0082\u03dd\n\u0082\3"+
- "\u0083\3\u0083\7\u0083\u03e1\n\u0083\f\u0083\16\u0083\u03e4\13\u0083\3"+
- "\u0084\3\u0084\7\u0084\u03e8\n\u0084\f\u0084\16\u0084\u03eb\13\u0084\3"+
- "\u0085\3\u0085\5\u0085\u03ef\n\u0085\3\u0086\3\u0086\5\u0086\u03f3\n\u0086"+
- "\3\u0087\3\u0087\5\u0087\u03f7\n\u0087\3\u0088\3\u0088\5\u0088\u03fb\n"+
- "\u0088\3\u0089\5\u0089\u03fe\n\u0089\3\u008a\3\u008a\3\u008b\3\u008b\3"+
- "\u008b\3\u008b\7\u008b\u0406\n\u008b\f\u008b\16\u008b\u0409\13\u008b\3"+
- "\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\7\u008c\u0411\n\u008c\f"+
- "\u008c\16\u008c\u0414\13\u008c\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c"+
- "\3\u0412\2\u008d\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31"+
- "\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65"+
- "\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64"+
- "g\65i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089"+
- "F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009d"+
- "P\u009fQ\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1"+
- "Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5"+
- "d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7m\u00d9"+
- "n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00ebw\u00ed"+
- "x\u00efy\u00f1\2\u00f3z\u00f5\2\u00f7{\u00f9\2\u00fb\2\u00fd|\u00ff\2"+
- "\u0101\2\u0103}\u0105\2\u0107~\u0109\2\u010b\2\u010d\2\u010f\2\u0111\2"+
- "\u0113\2\u0115\177\u0117\u0080\3\2\21\5\2\13\f\16\17\"\"\4\2GGgg\4\2-"+
- "-//\4\2CHch\5\2\f\f\17\17))\5\2\f\f\17\17$$\6\2\f\f\17\17$$^^\4\2\f\f"+
- "\17\17\6\2\f\f\17\17))^^\3\2$$\3\2))\4\2$$^^\4\2))^^\4\2C\\c|\3\2\62;"+
- "\2\u043b\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2"+
- "\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27"+
- "\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2"+
- "\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2"+
- "\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2"+
- "\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2"+
- "\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S"+
- "\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2"+
- "\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2"+
- "\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y"+
- "\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3"+
- "\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2"+
- "\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095"+
- "\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2"+
- "\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7"+
- "\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2"+
- "\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9"+
- "\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2"+
- "\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb"+
- "\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2"+
- "\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd"+
- "\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2"+
- "\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef"+
- "\3\2\2\2\2\u00f3\3\2\2\2\2\u00f7\3\2\2\2\2\u00fd\3\2\2\2\2\u0103\3\2\2"+
- "\2\2\u0107\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\3\u0119\3\2\2\2\5\u011b"+
- "\3\2\2\2\7\u0121\3\2\2\2\t\u0127\3\2\2\2\13\u012b\3\2\2\2\r\u012d\3\2"+
- "\2\2\17\u0132\3\2\2\2\21\u0138\3\2\2\2\23\u013b\3\2\2\2\25\u013d\3\2\2"+
- "\2\27\u0144\3\2\2\2\31\u014a\3\2\2\2\33\u014c\3\2\2\2\35\u014e\3\2\2\2"+
- "\37\u0150\3\2\2\2!\u0152\3\2\2\2#\u0154\3\2\2\2%\u0156\3\2\2\2\'\u0160"+
- "\3\2\2\2)\u0165\3\2\2\2+\u0167\3\2\2\2-\u0169\3\2\2\2/\u0172\3\2\2\2\61"+
- "\u0178\3\2\2\2\63\u017d\3\2\2\2\65\u0184\3\2\2\2\67\u018d\3\2\2\29\u0196"+
- "\3\2\2\2;\u0198\3\2\2\2=\u019b\3\2\2\2?\u019f\3\2\2\2A\u01a2\3\2\2\2C"+
- "\u01a6\3\2\2\2E\u01aa\3\2\2\2G\u01b0\3\2\2\2I\u01b8\3\2\2\2K\u01c0\3\2"+
- "\2\2M\u01cb\3\2\2\2O\u01d0\3\2\2\2Q\u01d2\3\2\2\2S\u01d4\3\2\2\2U\u01d6"+
- "\3\2\2\2W\u01db\3\2\2\2Y\u01e0\3\2\2\2[\u01e6\3\2\2\2]\u01e8\3\2\2\2_"+
- "\u01eb\3\2\2\2a\u01ed\3\2\2\2c\u01f3\3\2\2\2e\u01f7\3\2\2\2g\u01fa\3\2"+
- "\2\2i\u01fd\3\2\2\2k\u0200\3\2\2\2m\u0204\3\2\2\2o\u0207\3\2\2\2q\u020a"+
- "\3\2\2\2s\u020e\3\2\2\2u\u0212\3\2\2\2w\u0217\3\2\2\2y\u021a\3\2\2\2{"+
- "\u021d\3\2\2\2}\u0220\3\2\2\2\177\u0224\3\2\2\2\u0081\u0226\3\2\2\2\u0083"+
- "\u0229\3\2\2\2\u0085\u022c\3\2\2\2\u0087\u022f\3\2\2\2\u0089\u0232\3\2"+
- "\2\2\u008b\u0235\3\2\2\2\u008d\u0238\3\2\2\2\u008f\u023a\3\2\2\2\u0091"+
- "\u023c\3\2\2\2\u0093\u023e\3\2\2\2\u0095\u0241\3\2\2\2\u0097\u0244\3\2"+
- "\2\2\u0099\u0248\3\2\2\2\u009b\u024a\3\2\2\2\u009d\u024c\3\2\2\2\u009f"+
- "\u024e\3\2\2\2\u00a1\u0250\3\2\2\2\u00a3\u0252\3\2\2\2\u00a5\u0255\3\2"+
- "\2\2\u00a7\u0257\3\2\2\2\u00a9\u025d\3\2\2\2\u00ab\u0260\3\2\2\2\u00ad"+
- "\u0263\3\2\2\2\u00af\u0266\3\2\2\2\u00b1\u0269\3\2\2\2\u00b3\u026c\3\2"+
- "\2\2\u00b5\u026f\3\2\2\2\u00b7\u0274\3\2\2\2\u00b9\u0278\3\2\2\2\u00bb"+
- "\u027b\3\2\2\2\u00bd\u0281\3\2\2\2\u00bf\u0284\3\2\2\2\u00c1\u028b\3\2"+
- "\2\2\u00c3\u0290\3\2\2\2\u00c5\u0298\3\2\2\2\u00c7\u02a0\3\2\2\2\u00c9"+
- "\u02a4\3\2\2\2\u00cb\u02a7\3\2\2\2\u00cd\u02ad\3\2\2\2\u00cf\u02b5\3\2"+
- "\2\2\u00d1\u02bc\3\2\2\2\u00d3\u02c2\3\2\2\2\u00d5\u02cb\3\2\2\2\u00d7"+
- "\u02d1\3\2\2\2\u00d9\u02d8\3\2\2\2\u00db\u02df\3\2\2\2\u00dd\u02e2\3\2"+
- "\2\2\u00df\u02ea\3\2\2\2\u00e1\u02f1\3\2\2\2\u00e3\u02f6\3\2\2\2\u00e5"+
- "\u02fb\3\2\2\2\u00e7\u0302\3\2\2\2\u00e9\u0307\3\2\2\2\u00eb\u030a\3\2"+
- "\2\2\u00ed\u0313\3\2\2\2\u00ef\u0332\3\2\2\2\u00f1\u0334\3\2\2\2\u00f3"+
- "\u034d\3\2\2\2\u00f5\u0351\3\2\2\2\u00f7\u0377\3\2\2\2\u00f9\u037c\3\2"+
- "\2\2\u00fb\u0381\3\2\2\2\u00fd\u03c5\3\2\2\2\u00ff\u03ce\3\2\2\2\u0101"+
- "\u03d7\3\2\2\2\u0103\u03dc\3\2\2\2\u0105\u03de\3\2\2\2\u0107\u03e5\3\2"+
- "\2\2\u0109\u03ee\3\2\2\2\u010b\u03f2\3\2\2\2\u010d\u03f6\3\2\2\2\u010f"+
- "\u03fa\3\2\2\2\u0111\u03fd\3\2\2\2\u0113\u03ff\3\2\2\2\u0115\u0401\3\2"+
- "\2\2\u0117\u040c\3\2\2\2\u0119\u011a\7.\2\2\u011a\4\3\2\2\2\u011b\u011c"+
- "\7h\2\2\u011c\u011d\7k\2\2\u011d\u011e\7p\2\2\u011e\u011f\7c\2\2\u011f"+
- "\u0120\7n\2\2\u0120\6\3\2\2\2\u0121\u0122\7e\2\2\u0122\u0123\7q\2\2\u0123"+
- "\u0124\7p\2\2\u0124\u0125\7u\2\2\u0125\u0126\7v\2\2\u0126\b\3\2\2\2\u0127"+
- "\u0128\7x\2\2\u0128\u0129\7c\2\2\u0129\u012a\7t\2\2\u012a\n\3\2\2\2\u012b"+
- "\u012c\7?\2\2\u012c\f\3\2\2\2\u012d\u012e\7x\2\2\u012e\u012f\7q\2\2\u012f"+
- "\u0130\7k\2\2\u0130\u0131\7f\2\2\u0131\16\3\2\2\2\u0132\u0133\7c\2\2\u0133"+
- "\u0134\7u\2\2\u0134\u0135\7{\2\2\u0135\u0136\7p\2\2\u0136\u0137\7e\2\2"+
- "\u0137\20\3\2\2\2\u0138\u0139\7?\2\2\u0139\u013a\7@\2\2\u013a\22\3\2\2"+
- "\2\u013b\u013c\7=\2\2\u013c\24\3\2\2\2\u013d\u013e\7c\2\2\u013e\u013f"+
- "\7u\2\2\u013f\u0140\7{\2\2\u0140\u0141\7p\2\2\u0141\u0142\7e\2\2\u0142"+
- "\u0143\7,\2\2\u0143\26\3\2\2\2\u0144\u0145\7u\2\2\u0145\u0146\7{\2\2\u0146"+
- "\u0147\7p\2\2\u0147\u0148\7e\2\2\u0148\u0149\7,\2\2\u0149\30\3\2\2\2\u014a"+
- "\u014b\7}\2\2\u014b\32\3\2\2\2\u014c\u014d\7\177\2\2\u014d\34\3\2\2\2"+
- "\u014e\u014f\7*\2\2\u014f\36\3\2\2\2\u0150\u0151\7+\2\2\u0151 \3\2\2\2"+
- "\u0152\u0153\7]\2\2\u0153\"\3\2\2\2\u0154\u0155\7_\2\2\u0155$\3\2\2\2"+
- "\u0156\u0157\7e\2\2\u0157\u0158\7q\2\2\u0158\u0159\7x\2\2\u0159\u015a"+
- "\7c\2\2\u015a\u015b\7t\2\2\u015b\u015c\7k\2\2\u015c\u015d\7c\2\2\u015d"+
- "\u015e\7p\2\2\u015e\u015f\7v\2\2\u015f&\3\2\2\2\u0160\u0161\7v\2\2\u0161"+
- "\u0162\7j\2\2\u0162\u0163\7k\2\2\u0163\u0164\7u\2\2\u0164(\3\2\2\2\u0165"+
- "\u0166\7\60\2\2\u0166*\3\2\2\2\u0167\u0168\7<\2\2\u0168,\3\2\2\2\u0169"+
- "\u016a\7c\2\2\u016a\u016b\7d\2\2\u016b\u016c\7u\2\2\u016c\u016d\7v\2\2"+
- "\u016d\u016e\7t\2\2\u016e\u016f\7c\2\2\u016f\u0170\7e\2\2\u0170\u0171"+
- "\7v\2\2\u0171.\3\2\2\2\u0172\u0173\7e\2\2\u0173\u0174\7n\2\2\u0174\u0175"+
- "\7c\2\2\u0175\u0176\7u\2\2\u0176\u0177\7u\2\2\u0177\60\3\2\2\2\u0178\u0179"+
- "\7y\2\2\u0179\u017a\7k\2\2\u017a\u017b\7v\2\2\u017b\u017c\7j\2\2\u017c"+
- "\62\3\2\2\2\u017d\u017e\7u\2\2\u017e\u017f\7v\2\2\u017f\u0180\7c\2\2\u0180"+
- "\u0181\7v\2\2\u0181\u0182\7k\2\2\u0182\u0183\7e\2\2\u0183\64\3\2\2\2\u0184"+
- "\u0185\7g\2\2\u0185\u0186\7z\2\2\u0186\u0187\7v\2\2\u0187\u0188\7g\2\2"+
- "\u0188\u0189\7t\2\2\u0189\u018a\7p\2\2\u018a\u018b\7c\2\2\u018b\u018c"+
- "\7n\2\2\u018c\66\3\2\2\2\u018d\u018e\7q\2\2\u018e\u018f\7r\2\2\u018f\u0190"+
- "\7g\2\2\u0190\u0191\7t\2\2\u0191\u0192\7c\2\2\u0192\u0193\7v\2\2\u0193"+
- "\u0194\7q\2\2\u0194\u0195\7t\2\2\u01958\3\2\2\2\u0196\u0197\7\u0080\2"+
- "\2\u0197:\3\2\2\2\u0198\u0199\7]\2\2\u0199\u019a\7_\2\2\u019a<\3\2\2\2"+
- "\u019b\u019c\7]\2\2\u019c\u019d\7_\2\2\u019d\u019e\7?\2\2\u019e>\3\2\2"+
- "\2\u019f\u01a0\7?\2\2\u01a0\u01a1\7?\2\2\u01a1@\3\2\2\2\u01a2\u01a3\7"+
- "i\2\2\u01a3\u01a4\7g\2\2\u01a4\u01a5\7v\2\2\u01a5B\3\2\2\2\u01a6\u01a7"+
- "\7u\2\2\u01a7\u01a8\7g\2\2\u01a8\u01a9\7v\2\2\u01a9D\3\2\2\2\u01aa\u01ab"+
- "\7u\2\2\u01ab\u01ac\7w\2\2\u01ac\u01ad\7r\2\2\u01ad\u01ae\7g\2\2\u01ae"+
- "\u01af\7t\2\2\u01afF\3\2\2\2\u01b0\u01b1\7h\2\2\u01b1\u01b2\7c\2\2\u01b2"+
- "\u01b3\7e\2\2\u01b3\u01b4\7v\2\2\u01b4\u01b5\7q\2\2\u01b5\u01b6\7t\2\2"+
- "\u01b6\u01b7\7{\2\2\u01b7H\3\2\2\2\u01b8\u01b9\7g\2\2\u01b9\u01ba\7z\2"+
- "\2\u01ba\u01bb\7v\2\2\u01bb\u01bc\7g\2\2\u01bc\u01bd\7p\2\2\u01bd\u01be"+
- "\7f\2\2\u01be\u01bf\7u\2\2\u01bfJ\3\2\2\2\u01c0\u01c1\7k\2\2\u01c1\u01c2"+
- "\7o\2\2\u01c2\u01c3\7r\2\2\u01c3\u01c4\7n\2\2\u01c4\u01c5\7g\2\2\u01c5"+
- "\u01c6\7o\2\2\u01c6\u01c7\7g\2\2\u01c7\u01c8\7p\2\2\u01c8\u01c9\7v\2\2"+
- "\u01c9\u01ca\7u\2\2\u01caL\3\2\2\2\u01cb\u01cc\7g\2\2\u01cc\u01cd\7p\2"+
- "\2\u01cd\u01ce\7w\2\2\u01ce\u01cf\7o\2\2\u01cfN\3\2\2\2\u01d0\u01d1\7"+
- ">\2\2\u01d1P\3\2\2\2\u01d2\u01d3\7@\2\2\u01d3R\3\2\2\2\u01d4\u01d5\7B"+
- "\2\2\u01d5T\3\2\2\2\u01d6\u01d7\7p\2\2\u01d7\u01d8\7w\2\2\u01d8\u01d9"+
- "\7n\2\2\u01d9\u01da\7n\2\2\u01daV\3\2\2\2\u01db\u01dc\7v\2\2\u01dc\u01dd"+
- "\7t\2\2\u01dd\u01de\7w\2\2\u01de\u01df\7g\2\2\u01dfX\3\2\2\2\u01e0\u01e1"+
- "\7h\2\2\u01e1\u01e2\7c\2\2\u01e2\u01e3\7n\2\2\u01e3\u01e4\7u\2\2\u01e4"+
- "\u01e5\7g\2\2\u01e5Z\3\2\2\2\u01e6\u01e7\7&\2\2\u01e7\\\3\2\2\2\u01e8"+
- "\u01e9\7&\2\2\u01e9\u01ea\7}\2\2\u01ea^\3\2\2\2\u01eb\u01ec\7%\2\2\u01ec"+
- "`\3\2\2\2\u01ed\u01ee\7v\2\2\u01ee\u01ef\7j\2\2\u01ef\u01f0\7t\2\2\u01f0"+
- "\u01f1\7q\2\2\u01f1\u01f2\7y\2\2\u01f2b\3\2\2\2\u01f3\u01f4\7p\2\2\u01f4"+
- "\u01f5\7g\2\2\u01f5\u01f6\7y\2\2\u01f6d\3\2\2\2\u01f7\u01f8\7\60\2\2\u01f8"+
- "\u01f9\7\60\2\2\u01f9f\3\2\2\2\u01fa\u01fb\7,\2\2\u01fb\u01fc\7?\2\2\u01fc"+
- "h\3\2\2\2\u01fd\u01fe\7\61\2\2\u01fe\u01ff\7?\2\2\u01ffj\3\2\2\2\u0200"+
- "\u0201\7\u0080\2\2\u0201\u0202\7\61\2\2\u0202\u0203\7?\2\2\u0203l\3\2"+
- "\2\2\u0204\u0205\7\'\2\2\u0205\u0206\7?\2\2\u0206n\3\2\2\2\u0207\u0208"+
- "\7-\2\2\u0208\u0209\7?\2\2\u0209p\3\2\2\2\u020a\u020b\7>\2\2\u020b\u020c"+
- "\7>\2\2\u020c\u020d\7?\2\2\u020dr\3\2\2\2\u020e\u020f\7@\2\2\u020f\u0210"+
- "\7@\2\2\u0210\u0211\7?\2\2\u0211t\3\2\2\2\u0212\u0213\7@\2\2\u0213\u0214"+
- "\7@\2\2\u0214\u0215\7@\2\2\u0215\u0216\7?\2\2\u0216v\3\2\2\2\u0217\u0218"+
- "\7(\2\2\u0218\u0219\7?\2\2\u0219x\3\2\2\2\u021a\u021b\7`\2\2\u021b\u021c"+
- "\7?\2\2\u021cz\3\2\2\2\u021d\u021e\7~\2\2\u021e\u021f\7?\2\2\u021f|\3"+
- "\2\2\2\u0220\u0221\7A\2\2\u0221\u0222\7A\2\2\u0222\u0223\7?\2\2\u0223"+
- "~\3\2\2\2\u0224\u0225\7A\2\2\u0225\u0080\3\2\2\2\u0226\u0227\7A\2\2\u0227"+
- "\u0228\7A\2\2\u0228\u0082\3\2\2\2\u0229\u022a\7~\2\2\u022a\u022b\7~\2"+
- "\2\u022b\u0084\3\2\2\2\u022c\u022d\7(\2\2\u022d\u022e\7(\2\2\u022e\u0086"+
- "\3\2\2\2\u022f\u0230\7#\2\2\u0230\u0231\7?\2\2\u0231\u0088\3\2\2\2\u0232"+
- "\u0233\7@\2\2\u0233\u0234\7?\2\2\u0234\u008a\3\2\2\2\u0235\u0236\7>\2"+
- "\2\u0236\u0237\7?\2\2\u0237\u008c\3\2\2\2\u0238\u0239\7~\2\2\u0239\u008e"+
- "\3\2\2\2\u023a\u023b\7`\2\2\u023b\u0090\3\2\2\2\u023c\u023d\7(\2\2\u023d"+
- "\u0092\3\2\2\2\u023e\u023f\7>\2\2\u023f\u0240\7>\2\2\u0240\u0094\3\2\2"+
- "\2\u0241\u0242\7@\2\2\u0242\u0243\7@\2\2\u0243\u0096\3\2\2\2\u0244\u0245"+
- "\7@\2\2\u0245\u0246\7@\2\2\u0246\u0247\7@\2\2\u0247\u0098\3\2\2\2\u0248"+
- "\u0249\7-\2\2\u0249\u009a\3\2\2\2\u024a\u024b\7/\2\2\u024b\u009c\3\2\2"+
- "\2\u024c\u024d\7,\2\2\u024d\u009e\3\2\2\2\u024e\u024f\7\61\2\2\u024f\u00a0"+
- "\3\2\2\2\u0250\u0251\7\'\2\2\u0251\u00a2\3\2\2\2\u0252\u0253\7\u0080\2"+
- "\2\u0253\u0254\7\61\2\2\u0254\u00a4\3\2\2\2\u0255\u0256\7#\2\2\u0256\u00a6"+
- "\3\2\2\2\u0257\u0258\7c\2\2\u0258\u0259\7y\2\2\u0259\u025a\7c\2\2\u025a"+
- "\u025b\7k\2\2\u025b\u025c\7v\2\2\u025c\u00a8\3\2\2\2\u025d\u025e\7-\2"+
- "\2\u025e\u025f\7-\2\2\u025f\u00aa\3\2\2\2\u0260\u0261\7/\2\2\u0261\u0262"+
- "\7/\2\2\u0262\u00ac\3\2\2\2\u0263\u0264\7A\2\2\u0264\u0265\7\60\2\2\u0265"+
- "\u00ae\3\2\2\2\u0266\u0267\7k\2\2\u0267\u0268\7u\2\2\u0268\u00b0\3\2\2"+
- "\2\u0269\u026a\7c\2\2\u026a\u026b\7u\2\2\u026b\u00b2\3\2\2\2\u026c\u026d"+
- "\7k\2\2\u026d\u026e\7h\2\2\u026e\u00b4\3\2\2\2\u026f\u0270\7g\2\2\u0270"+
- "\u0271\7n\2\2\u0271\u0272\7u\2\2\u0272\u0273\7g\2\2\u0273\u00b6\3\2\2"+
- "\2\u0274\u0275\7h\2\2\u0275\u0276\7q\2\2\u0276\u0277\7t\2\2\u0277\u00b8"+
- "\3\2\2\2\u0278\u0279\7k\2\2\u0279\u027a\7p\2\2\u027a\u00ba\3\2\2\2\u027b"+
- "\u027c\7y\2\2\u027c\u027d\7j\2\2\u027d\u027e\7k\2\2\u027e\u027f\7n\2\2"+
- "\u027f\u0280\7g\2\2\u0280\u00bc\3\2\2\2\u0281\u0282\7f\2\2\u0282\u0283"+
- "\7q\2\2\u0283\u00be\3\2\2\2\u0284\u0285\7u\2\2\u0285\u0286\7y\2\2\u0286"+
- "\u0287\7k\2\2\u0287\u0288\7v\2\2\u0288\u0289\7e\2\2\u0289\u028a\7j\2\2"+
- "\u028a\u00c0\3\2\2\2\u028b\u028c\7e\2\2\u028c\u028d\7c\2\2\u028d\u028e"+
- "\7u\2\2\u028e\u028f\7g\2\2\u028f\u00c2\3\2\2\2\u0290\u0291\7f\2\2\u0291"+
- "\u0292\7g\2\2\u0292\u0293\7h\2\2\u0293\u0294\7c\2\2\u0294\u0295\7w\2\2"+
- "\u0295\u0296\7n\2\2\u0296\u0297\7v\2\2\u0297\u00c4\3\2\2\2\u0298\u0299"+
- "\7t\2\2\u0299\u029a\7g\2\2\u029a\u029b\7v\2\2\u029b\u029c\7j\2\2\u029c"+
- "\u029d\7t\2\2\u029d\u029e\7q\2\2\u029e\u029f\7y\2\2\u029f\u00c6\3\2\2"+
- "\2\u02a0\u02a1\7v\2\2\u02a1\u02a2\7t\2\2\u02a2\u02a3\7{\2\2\u02a3\u00c8"+
- "\3\2\2\2\u02a4\u02a5\7q\2\2\u02a5\u02a6\7p\2\2\u02a6\u00ca\3\2\2\2\u02a7"+
- "\u02a8\7e\2\2\u02a8\u02a9\7c\2\2\u02a9\u02aa\7v\2\2\u02aa\u02ab\7e\2\2"+
- "\u02ab\u02ac\7j\2\2\u02ac\u00cc\3\2\2\2\u02ad\u02ae\7h\2\2\u02ae\u02af"+
- "\7k\2\2\u02af\u02b0\7p\2\2\u02b0\u02b1\7c\2\2\u02b1\u02b2\7n\2\2\u02b2"+
- "\u02b3\7n\2\2\u02b3\u02b4\7{\2\2\u02b4\u00ce\3\2\2\2\u02b5\u02b6\7t\2"+
- "\2\u02b6\u02b7\7g\2\2\u02b7\u02b8\7v\2\2\u02b8\u02b9\7w\2\2\u02b9\u02ba"+
- "\7t\2\2\u02ba\u02bb\7p\2\2\u02bb\u00d0\3\2\2\2\u02bc\u02bd\7d\2\2\u02bd"+
- "\u02be\7t\2\2\u02be\u02bf\7g\2\2\u02bf\u02c0\7c\2\2\u02c0\u02c1\7m\2\2"+
- "\u02c1\u00d2\3\2\2\2\u02c2\u02c3\7e\2\2\u02c3\u02c4\7q\2\2\u02c4\u02c5"+
- "\7p\2\2\u02c5\u02c6\7v\2\2\u02c6\u02c7\7k\2\2\u02c7\u02c8\7p\2\2\u02c8"+
- "\u02c9\7w\2\2\u02c9\u02ca\7g\2\2\u02ca\u00d4\3\2\2\2\u02cb\u02cc\7{\2"+
- "\2\u02cc\u02cd\7k\2\2\u02cd\u02ce\7g\2\2\u02ce\u02cf\7n\2\2\u02cf\u02d0"+
- "\7f\2\2\u02d0\u00d6\3\2\2\2\u02d1\u02d2\7{\2\2\u02d2\u02d3\7k\2\2\u02d3"+
- "\u02d4\7g\2\2\u02d4\u02d5\7n\2\2\u02d5\u02d6\7f\2\2\u02d6\u02d7\7,\2\2"+
- "\u02d7\u00d8\3\2\2\2\u02d8\u02d9\7c\2\2\u02d9\u02da\7u\2\2\u02da\u02db"+
- "\7u\2\2\u02db\u02dc\7g\2\2\u02dc\u02dd\7t\2\2\u02dd\u02de\7v\2\2\u02de"+
- "\u00da\3\2\2\2\u02df\u02e0\7%\2\2\u02e0\u02e1\7#\2\2\u02e1\u00dc\3\2\2"+
- "\2\u02e2\u02e3\7n\2\2\u02e3\u02e4\7k\2\2\u02e4\u02e5\7d\2\2\u02e5\u02e6"+
- "\7t\2\2\u02e6\u02e7\7c\2\2\u02e7\u02e8\7t\2\2\u02e8\u02e9\7{\2\2\u02e9"+
- "\u00de\3\2\2\2\u02ea\u02eb\7k\2\2\u02eb\u02ec\7o\2\2\u02ec\u02ed\7r\2"+
- "\2\u02ed\u02ee\7q\2\2\u02ee\u02ef\7t\2\2\u02ef\u02f0\7v\2\2\u02f0\u00e0"+
- "\3\2\2\2\u02f1\u02f2\7u\2\2\u02f2\u02f3\7j\2\2\u02f3\u02f4\7q\2\2\u02f4"+
- "\u02f5\7y\2\2\u02f5\u00e2\3\2\2\2\u02f6\u02f7\7j\2\2\u02f7\u02f8\7k\2"+
- "\2\u02f8\u02f9\7f\2\2\u02f9\u02fa\7g\2\2\u02fa\u00e4\3\2\2\2\u02fb\u02fc"+
- "\7g\2\2\u02fc\u02fd\7z\2\2\u02fd\u02fe\7r\2\2\u02fe\u02ff\7q\2\2\u02ff"+
- "\u0300\7t\2\2\u0300\u0301\7v\2\2\u0301\u00e6\3\2\2\2\u0302\u0303\7r\2"+
- "\2\u0303\u0304\7c\2\2\u0304\u0305\7t\2\2\u0305\u0306\7v\2\2\u0306\u00e8"+
- "\3\2\2\2\u0307\u0308\7q\2\2\u0308\u0309\7h\2\2\u0309\u00ea\3\2\2\2\u030a"+
- "\u030b\7v\2\2\u030b\u030c\7{\2\2\u030c\u030d\7r\2\2\u030d\u030e\7g\2\2"+
- "\u030e\u030f\7f\2\2\u030f\u0310\7g\2\2\u0310\u0311\7h\2\2\u0311\u00ec"+
- "\3\2\2\2\u0312\u0314\t\2\2\2\u0313\u0312\3\2\2\2\u0314\u0315\3\2\2\2\u0315"+
- "\u0313\3\2\2\2\u0315\u0316\3\2\2\2\u0316\u0317\3\2\2\2\u0317\u0318\bw"+
- "\2\2\u0318\u00ee\3\2\2\2\u0319\u031b\5\u0113\u008a\2\u031a\u0319\3\2\2"+
- "\2\u031b\u031c\3\2\2\2\u031c\u031a\3\2\2\2\u031c\u031d\3\2\2\2\u031d\u0324"+
- "\3\2\2\2\u031e\u0320\7\60\2\2\u031f\u0321\5\u0113\u008a\2\u0320\u031f"+
- "\3\2\2\2\u0321\u0322\3\2\2\2\u0322\u0320\3\2\2\2\u0322\u0323\3\2\2\2\u0323"+
- "\u0325\3\2\2\2\u0324\u031e\3\2\2\2\u0324\u0325\3\2\2\2\u0325\u0327\3\2"+
- "\2\2\u0326\u0328\5\u00f1y\2\u0327\u0326\3\2\2\2\u0327\u0328\3\2\2\2\u0328"+
- "\u0333\3\2\2\2\u0329\u032b\7\60\2\2\u032a\u032c\5\u0113\u008a\2\u032b"+
- "\u032a\3\2\2\2\u032c\u032d\3\2\2\2\u032d\u032b\3\2\2\2\u032d\u032e\3\2"+
- "\2\2\u032e\u0330\3\2\2\2\u032f\u0331\5\u00f1y\2\u0330\u032f\3\2\2\2\u0330"+
- "\u0331\3\2\2\2\u0331\u0333\3\2\2\2\u0332\u031a\3\2\2\2\u0332\u0329\3\2"+
- "\2\2\u0333\u00f0\3\2\2\2\u0334\u0336\t\3\2\2\u0335\u0337\t\4\2\2\u0336"+
- "\u0335\3\2\2\2\u0336\u0337\3\2\2\2\u0337\u0339\3\2\2\2\u0338\u033a\5\u0113"+
- "\u008a\2\u0339\u0338\3\2\2\2\u033a\u033b\3\2\2\2\u033b\u0339\3\2\2\2\u033b"+
- "\u033c\3\2\2\2\u033c\u00f2\3\2\2\2\u033d\u033e\7\62\2\2\u033e\u033f\7"+
- "z\2\2\u033f\u0341\3\2\2\2\u0340\u0342\5\u00f5{\2\u0341\u0340\3\2\2\2\u0342"+
- "\u0343\3\2\2\2\u0343\u0341\3\2\2\2\u0343\u0344\3\2\2\2\u0344\u034e\3\2"+
- "\2\2\u0345\u0346\7\62\2\2\u0346\u0347\7Z\2\2\u0347\u0349\3\2\2\2\u0348"+
- "\u034a\5\u00f5{\2\u0349\u0348\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u0349"+
- "\3\2\2\2\u034b\u034c\3\2\2\2\u034c\u034e\3\2\2\2\u034d\u033d\3\2\2\2\u034d"+
- "\u0345\3\2\2\2\u034e\u00f4\3\2\2\2\u034f\u0352\t\5\2\2\u0350\u0352\5\u0113"+
- "\u008a\2\u0351\u034f\3\2\2\2\u0351\u0350\3\2\2\2\u0352\u00f6\3\2\2\2\u0353"+
- "\u0357\7$\2\2\u0354\u0356\5\u00f9}\2\u0355\u0354\3\2\2\2\u0356\u0359\3"+
- "\2\2\2\u0357\u0355\3\2\2\2\u0357\u0358\3\2\2\2\u0358\u035a\3\2\2\2\u0359"+
- "\u0357\3\2\2\2\u035a\u0378\7$\2\2\u035b\u035f\7)\2\2\u035c\u035e\5\u00fb"+
- "~\2\u035d\u035c\3\2\2\2\u035e\u0361\3\2\2\2\u035f\u035d\3\2\2\2\u035f"+
- "\u0360\3\2\2\2\u0360\u0362\3\2\2\2\u0361\u035f\3\2\2\2\u0362\u0378\7)"+
- "\2\2\u0363\u0364\7t\2\2\u0364\u0365\7)\2\2\u0365\u0369\3\2\2\2\u0366\u0368"+
- "\n\6\2\2\u0367\u0366\3\2\2\2\u0368\u036b\3\2\2\2\u0369\u0367\3\2\2\2\u0369"+
- "\u036a\3\2\2\2\u036a\u036c\3\2\2\2\u036b\u0369\3\2\2\2\u036c\u0378\7)"+
- "\2\2\u036d\u036e\7t\2\2\u036e\u036f\7$\2\2\u036f\u0373\3\2\2\2\u0370\u0372"+
- "\n\7\2\2\u0371\u0370\3\2\2\2\u0372\u0375\3\2\2\2\u0373\u0371\3\2\2\2\u0373"+
- "\u0374\3\2\2\2\u0374\u0376\3\2\2\2\u0375\u0373\3\2\2\2\u0376\u0378\7$"+
- "\2\2\u0377\u0353\3\2\2\2\u0377\u035b\3\2\2\2\u0377\u0363\3\2\2\2\u0377"+
- "\u036d\3\2\2\2\u0378\u00f8\3\2\2\2\u0379\u037d\n\b\2\2\u037a\u037b\7^"+
- "\2\2\u037b\u037d\n\t\2\2\u037c\u0379\3\2\2\2\u037c\u037a\3\2\2\2\u037d"+
- "\u00fa\3\2\2\2\u037e\u0382\n\n\2\2\u037f\u0380\7^\2\2\u0380\u0382\n\t"+
- "\2\2\u0381\u037e\3\2\2\2\u0381\u037f\3\2\2\2\u0382\u00fc\3\2\2\2\u0383"+
- "\u0384\7$\2\2\u0384\u0385\7$\2\2\u0385\u0386\7$\2\2\u0386\u038a\3\2\2"+
- "\2\u0387\u0389\5\u00ff\u0080\2\u0388\u0387\3\2\2\2\u0389\u038c\3\2\2\2"+
- "\u038a\u0388\3\2\2\2\u038a\u038b\3\2\2\2\u038b\u038d\3\2\2\2\u038c\u038a"+
- "\3\2\2\2\u038d\u038e\7$\2\2\u038e\u038f\7$\2\2\u038f\u03c6\7$\2\2\u0390"+
- "\u0391\7)\2\2\u0391\u0392\7)\2\2\u0392\u0393\7)\2\2\u0393\u0397\3\2\2"+
- "\2\u0394\u0396\5\u0101\u0081\2\u0395\u0394\3\2\2\2\u0396\u0399\3\2\2\2"+
- "\u0397\u0395\3\2\2\2\u0397\u0398\3\2\2\2\u0398\u039a\3\2\2\2\u0399\u0397"+
- "\3\2\2\2\u039a\u039b\7)\2\2\u039b\u039c\7)\2\2\u039c\u03c6\7)\2\2\u039d"+
- "\u039e\7t\2\2\u039e\u039f\7$\2\2\u039f\u03a0\7$\2\2\u03a0\u03a1\7$\2\2"+
- "\u03a1\u03ab\3\2\2\2\u03a2\u03aa\n\13\2\2\u03a3\u03a4\7$\2\2\u03a4\u03aa"+
- "\n\13\2\2\u03a5\u03a6\7$\2\2\u03a6\u03a7\7$\2\2\u03a7\u03a8\3\2\2\2\u03a8"+
- "\u03aa\n\13\2\2\u03a9\u03a2\3\2\2\2\u03a9\u03a3\3\2\2\2\u03a9\u03a5\3"+
- "\2\2\2\u03aa\u03ad\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ab\u03ac\3\2\2\2\u03ac"+
- "\u03ae\3\2\2\2\u03ad\u03ab\3\2\2\2\u03ae\u03af\7$\2\2\u03af\u03b0\7$\2"+
- "\2\u03b0\u03c6\7$\2\2\u03b1\u03b2\7t\2\2\u03b2\u03b3\7)\2\2\u03b3\u03b4"+
- "\7)\2\2\u03b4\u03b5\7)\2\2\u03b5\u03bf\3\2\2\2\u03b6\u03be\n\f\2\2\u03b7"+
- "\u03b8\7)\2\2\u03b8\u03be\n\f\2\2\u03b9\u03ba\7)\2\2\u03ba\u03bb\7)\2"+
- "\2\u03bb\u03bc\3\2\2\2\u03bc\u03be\n\f\2\2\u03bd\u03b6\3\2\2\2\u03bd\u03b7"+
- "\3\2\2\2\u03bd\u03b9\3\2\2\2\u03be\u03c1\3\2\2\2\u03bf\u03bd\3\2\2\2\u03bf"+
- "\u03c0\3\2\2\2\u03c0\u03c2\3\2\2\2\u03c1\u03bf\3\2\2\2\u03c2\u03c3\7)"+
- "\2\2\u03c3\u03c4\7)\2\2\u03c4\u03c6\7)\2\2\u03c5\u0383\3\2\2\2\u03c5\u0390"+
- "\3\2\2\2\u03c5\u039d\3\2\2\2\u03c5\u03b1\3\2\2\2\u03c6\u00fe\3\2\2\2\u03c7"+
- "\u03cf\n\r\2\2\u03c8\u03c9\7$\2\2\u03c9\u03cf\n\13\2\2\u03ca\u03cb\7$"+
- "\2\2\u03cb\u03cc\7$\2\2\u03cc\u03cd\3\2\2\2\u03cd\u03cf\n\13\2\2\u03ce"+
- "\u03c7\3\2\2\2\u03ce\u03c8\3\2\2\2\u03ce\u03ca\3\2\2\2\u03cf\u0100\3\2"+
- "\2\2\u03d0\u03d8\n\16\2\2\u03d1\u03d2\7)\2\2\u03d2\u03d8\n\f\2\2\u03d3"+
- "\u03d4\7)\2\2\u03d4\u03d5\7)\2\2\u03d5\u03d6\3\2\2\2\u03d6\u03d8\n\f\2"+
- "\2\u03d7\u03d0\3\2\2\2\u03d7\u03d1\3\2\2\2\u03d7\u03d3\3\2\2\2\u03d8\u0102"+
- "\3\2\2\2\u03d9\u03dd\t\t\2\2\u03da\u03db\7\17\2\2\u03db\u03dd\7\f\2\2"+
- "\u03dc\u03d9\3\2\2\2\u03dc\u03da\3\2\2\2\u03dd\u0104\3\2\2\2\u03de\u03e2"+
- "\5\u010b\u0086\2\u03df\u03e1\5\u010d\u0087\2\u03e0\u03df\3\2\2\2\u03e1"+
- "\u03e4\3\2\2\2\u03e2\u03e0\3\2\2\2\u03e2\u03e3\3\2\2\2\u03e3\u0106\3\2"+
- "\2\2\u03e4\u03e2\3\2\2\2\u03e5\u03e9\5\u0109\u0085\2\u03e6\u03e8\5\u010f"+
- "\u0088\2\u03e7\u03e6\3\2\2\2\u03e8\u03eb\3\2\2\2\u03e9\u03e7\3\2\2\2\u03e9"+
- "\u03ea\3\2\2\2\u03ea\u0108\3\2\2\2\u03eb\u03e9\3\2\2\2\u03ec\u03ef\5\u010b"+
- "\u0086\2\u03ed\u03ef\7&\2\2\u03ee\u03ec\3\2\2\2\u03ee\u03ed\3\2\2\2\u03ef"+
- "\u010a\3\2\2\2\u03f0\u03f3\5\u0111\u0089\2\u03f1\u03f3\7a\2\2\u03f2\u03f0"+
- "\3\2\2\2\u03f2\u03f1\3\2\2\2\u03f3\u010c\3\2\2\2\u03f4\u03f7\5\u010b\u0086"+
- "\2\u03f5\u03f7\5\u0113\u008a\2\u03f6\u03f4\3\2\2\2\u03f6\u03f5\3\2\2\2"+
- "\u03f7\u010e\3\2\2\2\u03f8\u03fb\5\u0109\u0085\2\u03f9\u03fb\5\u0113\u008a"+
- "\2\u03fa\u03f8\3\2\2\2\u03fa\u03f9\3\2\2\2\u03fb\u0110\3\2\2\2\u03fc\u03fe"+
- "\t\17\2\2\u03fd\u03fc\3\2\2\2\u03fe\u0112\3\2\2\2\u03ff\u0400\t\20\2\2"+
- "\u0400\u0114\3\2\2\2\u0401\u0402\7\61\2\2\u0402\u0403\7\61\2\2\u0403\u0407"+
- "\3\2\2\2\u0404\u0406\n\t\2\2\u0405\u0404\3\2\2\2\u0406\u0409\3\2\2\2\u0407"+
- "\u0405\3\2\2\2\u0407\u0408\3\2\2\2\u0408\u040a\3\2\2\2\u0409\u0407\3\2"+
- "\2\2\u040a\u040b\b\u008b\3\2\u040b\u0116\3\2\2\2\u040c\u040d\7\61\2\2"+
- "\u040d\u040e\7,\2\2\u040e\u0412\3\2\2\2\u040f\u0411\13\2\2\2\u0410\u040f"+
- "\3\2\2\2\u0411\u0414\3\2\2\2\u0412\u0413\3\2\2\2\u0412\u0410\3\2\2\2\u0413"+
- "\u0415\3\2\2\2\u0414\u0412\3\2\2\2\u0415\u0416\7,\2\2\u0416\u0417\7\61"+
- "\2\2\u0417\u0418\3\2\2\2\u0418\u0419\b\u008c\3\2\u0419\u0118\3\2\2\2+"+
- "\2\u0315\u031c\u0322\u0324\u0327\u032d\u0330\u0332\u0336\u033b\u0343\u034b"+
- "\u034d\u0351\u0357\u035f\u0369\u0373\u0377\u037c\u0381\u038a\u0397\u03a9"+
- "\u03ab\u03bd\u03bf\u03c5\u03ce\u03d7\u03dc\u03e2\u03e9\u03ee\u03f2\u03f6"+
- "\u03fa\u03fd\u0407\u0412\4\b\2\2\2\4\2";
+ "\t\u0089\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d"+
+ "\4\u008e\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092"+
+ "\t\u0092\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3"+
+ "\5\3\5\3\5\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t"+
+ "\3\t\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3"+
+ "\f\3\r\3\r\3\16\3\16\3\17\3\17\3\20\3\20\3\21\3\21\3\22\3\22\3\23\3\23"+
+ "\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\25"+
+ "\3\25\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30"+
+ "\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32"+
+ "\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34"+
+ "\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36"+
+ "\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3"+
+ " \3 \3 \3 \3 \3!\3!\3\"\3\"\3\"\3#\3#\3#\3#\3$\3$\3$\3%\3%\3%\3%\3&\3"+
+ "&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3"+
+ ")\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3,\3,\3-\3"+
+ "-\3.\3.\3/\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\62\3"+
+ "\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3\64\3"+
+ "\64\3\65\3\65\3\66\3\66\3\66\3\67\3\67\38\38\38\38\38\38\39\39\39\39\3"+
+ ":\3:\3:\3;\3;\3;\3<\3<\3<\3=\3=\3=\3=\3>\3>\3>\3?\3?\3?\3@\3@\3@\3@\3"+
+ "A\3A\3A\3A\3B\3B\3B\3B\3B\3C\3C\3C\3D\3D\3D\3E\3E\3E\3F\3F\3F\3F\3G\3"+
+ "G\3H\3H\3H\3I\3I\3I\3J\3J\3J\3K\3K\3K\3L\3L\3L\3M\3M\3M\3N\3N\3O\3O\3"+
+ "P\3P\3Q\3Q\3Q\3R\3R\3R\3S\3S\3S\3S\3T\3T\3U\3U\3V\3V\3W\3W\3X\3X\3Y\3"+
+ "Y\3Y\3Z\3Z\3[\3[\3[\3[\3[\3[\3\\\3\\\3\\\3]\3]\3]\3^\3^\3^\3_\3_\3_\3"+
+ "`\3`\3`\3a\3a\3a\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3d\3d\3d\3d\3e\3e\3e\3"+
+ "f\3f\3f\3f\3f\3f\3g\3g\3g\3h\3h\3h\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3i\3"+
+ "i\3i\3j\3j\3j\3j\3k\3k\3k\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3m\3"+
+ "n\3n\3n\3n\3n\3n\3n\3o\3o\3o\3o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3p\3p\3q\3"+
+ "q\3q\3q\3q\3q\3r\3r\3r\3r\3r\3r\3r\3s\3s\3s\3s\3s\3s\3s\3t\3t\3t\3u\3"+
+ "u\3u\3u\3u\3u\3u\3u\3v\3v\3v\3v\3v\3v\3v\3w\3w\3w\3w\3w\3x\3x\3x\3x\3"+
+ "x\3y\3y\3y\3y\3y\3y\3y\3z\3z\3z\3z\3z\3{\3{\3{\3|\3|\3|\3|\3|\3|\3|\3"+
+ "|\3}\6}\u0343\n}\r}\16}\u0344\3}\3}\3~\6~\u034a\n~\r~\16~\u034b\3~\3~"+
+ "\6~\u0350\n~\r~\16~\u0351\5~\u0354\n~\3~\5~\u0357\n~\3~\3~\6~\u035b\n"+
+ "~\r~\16~\u035c\3~\5~\u0360\n~\5~\u0362\n~\3\177\3\177\5\177\u0366\n\177"+
+ "\3\177\6\177\u0369\n\177\r\177\16\177\u036a\3\u0080\3\u0080\3\u0080\3"+
+ "\u0080\6\u0080\u0371\n\u0080\r\u0080\16\u0080\u0372\3\u0080\3\u0080\3"+
+ "\u0080\3\u0080\6\u0080\u0379\n\u0080\r\u0080\16\u0080\u037a\5\u0080\u037d"+
+ "\n\u0080\3\u0081\3\u0081\5\u0081\u0381\n\u0081\3\u0082\3\u0082\7\u0082"+
+ "\u0385\n\u0082\f\u0082\16\u0082\u0388\13\u0082\3\u0082\3\u0082\3\u0082"+
+ "\7\u0082\u038d\n\u0082\f\u0082\16\u0082\u0390\13\u0082\3\u0082\3\u0082"+
+ "\3\u0082\3\u0082\3\u0082\7\u0082\u0397\n\u0082\f\u0082\16\u0082\u039a"+
+ "\13\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\7\u0082\u03a1\n\u0082"+
+ "\f\u0082\16\u0082\u03a4\13\u0082\3\u0082\5\u0082\u03a7\n\u0082\3\u0083"+
+ "\3\u0083\3\u0083\5\u0083\u03ac\n\u0083\3\u0084\3\u0084\3\u0084\5\u0084"+
+ "\u03b1\n\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\7\u0085\u03b8\n"+
+ "\u0085\f\u0085\16\u0085\u03bb\13\u0085\3\u0085\3\u0085\3\u0085\3\u0085"+
+ "\3\u0085\3\u0085\3\u0085\3\u0085\7\u0085\u03c5\n\u0085\f\u0085\16\u0085"+
+ "\u03c8\13\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085"+
+ "\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\7\u0085"+
+ "\u03d9\n\u0085\f\u0085\16\u0085\u03dc\13\u0085\3\u0085\3\u0085\3\u0085"+
+ "\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085"+
+ "\3\u0085\3\u0085\3\u0085\7\u0085\u03ed\n\u0085\f\u0085\16\u0085\u03f0"+
+ "\13\u0085\3\u0085\3\u0085\3\u0085\5\u0085\u03f5\n\u0085\3\u0086\3\u0086"+
+ "\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\5\u0086\u03fe\n\u0086\3\u0087"+
+ "\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0407\n\u0087"+
+ "\3\u0088\3\u0088\3\u0088\5\u0088\u040c\n\u0088\3\u0089\3\u0089\7\u0089"+
+ "\u0410\n\u0089\f\u0089\16\u0089\u0413\13\u0089\3\u008a\3\u008a\7\u008a"+
+ "\u0417\n\u008a\f\u008a\16\u008a\u041a\13\u008a\3\u008b\3\u008b\5\u008b"+
+ "\u041e\n\u008b\3\u008c\3\u008c\5\u008c\u0422\n\u008c\3\u008d\3\u008d\5"+
+ "\u008d\u0426\n\u008d\3\u008e\3\u008e\5\u008e\u042a\n\u008e\3\u008f\5\u008f"+
+ "\u042d\n\u008f\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091\7\u0091"+
+ "\u0435\n\u0091\f\u0091\16\u0091\u0438\13\u0091\3\u0091\3\u0091\3\u0092"+
+ "\3\u0092\3\u0092\3\u0092\7\u0092\u0440\n\u0092\f\u0092\16\u0092\u0443"+
+ "\13\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0441\2\u0093\3\3"+
+ "\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21"+
+ "!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!"+
+ "A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s"+
+ ";u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008f"+
+ "I\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3"+
+ "S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1Z\u00b3[\u00b5\\\u00b7"+
+ "]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cb"+
+ "g\u00cdh\u00cfi\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00df"+
+ "q\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00ebw\u00edx\u00efy\u00f1z\u00f3"+
+ "{\u00f5|\u00f7}\u00f9~\u00fb\177\u00fd\2\u00ff\u0080\u0101\2\u0103\u0081"+
+ "\u0105\2\u0107\2\u0109\u0082\u010b\2\u010d\2\u010f\u0083\u0111\2\u0113"+
+ "\u0084\u0115\2\u0117\2\u0119\2\u011b\2\u011d\2\u011f\2\u0121\u0085\u0123"+
+ "\u0086\3\2\21\5\2\13\f\16\17\"\"\4\2GGgg\4\2--//\4\2CHch\5\2\f\f\17\17"+
+ "))\5\2\f\f\17\17$$\6\2\f\f\17\17$$^^\4\2\f\f\17\17\6\2\f\f\17\17))^^\3"+
+ "\2$$\3\2))\4\2$$^^\4\2))^^\4\2C\\c|\3\2\62;\2\u046a\2\3\3\2\2\2\2\5\3"+
+ "\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2"+
+ "\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3"+
+ "\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'"+
+ "\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63"+
+ "\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2"+
+ "?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3"+
+ "\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2"+
+ "\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2"+
+ "e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3"+
+ "\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2"+
+ "\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087"+
+ "\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f\3\2\2"+
+ "\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099"+
+ "\3\2\2\2\2\u009b\3\2\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2"+
+ "\2\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab"+
+ "\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2"+
+ "\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd"+
+ "\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2"+
+ "\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf"+
+ "\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2"+
+ "\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1"+
+ "\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2"+
+ "\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3"+
+ "\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2"+
+ "\2\2\u00ff\3\2\2\2\2\u0103\3\2\2\2\2\u0109\3\2\2\2\2\u010f\3\2\2\2\2\u0113"+
+ "\3\2\2\2\2\u0121\3\2\2\2\2\u0123\3\2\2\2\3\u0125\3\2\2\2\5\u0127\3\2\2"+
+ "\2\7\u012d\3\2\2\2\t\u0133\3\2\2\2\13\u0137\3\2\2\2\r\u0139\3\2\2\2\17"+
+ "\u013e\3\2\2\2\21\u0144\3\2\2\2\23\u0147\3\2\2\2\25\u0149\3\2\2\2\27\u0150"+
+ "\3\2\2\2\31\u0156\3\2\2\2\33\u0158\3\2\2\2\35\u015a\3\2\2\2\37\u015c\3"+
+ "\2\2\2!\u015e\3\2\2\2#\u0160\3\2\2\2%\u0162\3\2\2\2\'\u016c\3\2\2\2)\u0171"+
+ "\3\2\2\2+\u0173\3\2\2\2-\u0175\3\2\2\2/\u017c\3\2\2\2\61\u0181\3\2\2\2"+
+ "\63\u018b\3\2\2\2\65\u0191\3\2\2\2\67\u019a\3\2\2\29\u01a0\3\2\2\2;\u01a5"+
+ "\3\2\2\2=\u01ac\3\2\2\2?\u01b5\3\2\2\2A\u01be\3\2\2\2C\u01c0\3\2\2\2E"+
+ "\u01c3\3\2\2\2G\u01c7\3\2\2\2I\u01ca\3\2\2\2K\u01ce\3\2\2\2M\u01d2\3\2"+
+ "\2\2O\u01d8\3\2\2\2Q\u01e0\3\2\2\2S\u01e8\3\2\2\2U\u01f3\3\2\2\2W\u01f8"+
+ "\3\2\2\2Y\u01fa\3\2\2\2[\u01fc\3\2\2\2]\u01fe\3\2\2\2_\u0205\3\2\2\2a"+
+ "\u020a\3\2\2\2c\u020c\3\2\2\2e\u0211\3\2\2\2g\u0216\3\2\2\2i\u021c\3\2"+
+ "\2\2k\u021e\3\2\2\2m\u0221\3\2\2\2o\u0223\3\2\2\2q\u0229\3\2\2\2s\u022d"+
+ "\3\2\2\2u\u0230\3\2\2\2w\u0233\3\2\2\2y\u0236\3\2\2\2{\u023a\3\2\2\2}"+
+ "\u023d\3\2\2\2\177\u0240\3\2\2\2\u0081\u0244\3\2\2\2\u0083\u0248\3\2\2"+
+ "\2\u0085\u024d\3\2\2\2\u0087\u0250\3\2\2\2\u0089\u0253\3\2\2\2\u008b\u0256"+
+ "\3\2\2\2\u008d\u025a\3\2\2\2\u008f\u025c\3\2\2\2\u0091\u025f\3\2\2\2\u0093"+
+ "\u0262\3\2\2\2\u0095\u0265\3\2\2\2\u0097\u0268\3\2\2\2\u0099\u026b\3\2"+
+ "\2\2\u009b\u026e\3\2\2\2\u009d\u0270\3\2\2\2\u009f\u0272\3\2\2\2\u00a1"+
+ "\u0274\3\2\2\2\u00a3\u0277\3\2\2\2\u00a5\u027a\3\2\2\2\u00a7\u027e\3\2"+
+ "\2\2\u00a9\u0280\3\2\2\2\u00ab\u0282\3\2\2\2\u00ad\u0284\3\2\2\2\u00af"+
+ "\u0286\3\2\2\2\u00b1\u0288\3\2\2\2\u00b3\u028b\3\2\2\2\u00b5\u028d\3\2"+
+ "\2\2\u00b7\u0293\3\2\2\2\u00b9\u0296\3\2\2\2\u00bb\u0299\3\2\2\2\u00bd"+
+ "\u029c\3\2\2\2\u00bf\u029f\3\2\2\2\u00c1\u02a2\3\2\2\2\u00c3\u02a5\3\2"+
+ "\2\2\u00c5\u02aa\3\2\2\2\u00c7\u02af\3\2\2\2\u00c9\u02b3\3\2\2\2\u00cb"+
+ "\u02b6\3\2\2\2\u00cd\u02bc\3\2\2\2\u00cf\u02bf\3\2\2\2\u00d1\u02c7\3\2"+
+ "\2\2\u00d3\u02cf\3\2\2\2\u00d5\u02d3\3\2\2\2\u00d7\u02d6\3\2\2\2\u00d9"+
+ "\u02dc\3\2\2\2\u00db\u02e4\3\2\2\2\u00dd\u02eb\3\2\2\2\u00df\u02f1\3\2"+
+ "\2\2\u00e1\u02fa\3\2\2\2\u00e3\u0300\3\2\2\2\u00e5\u0307\3\2\2\2\u00e7"+
+ "\u030e\3\2\2\2\u00e9\u0311\3\2\2\2\u00eb\u0319\3\2\2\2\u00ed\u0320\3\2"+
+ "\2\2\u00ef\u0325\3\2\2\2\u00f1\u032a\3\2\2\2\u00f3\u0331\3\2\2\2\u00f5"+
+ "\u0336\3\2\2\2\u00f7\u0339\3\2\2\2\u00f9\u0342\3\2\2\2\u00fb\u0361\3\2"+
+ "\2\2\u00fd\u0363\3\2\2\2\u00ff\u037c\3\2\2\2\u0101\u0380\3\2\2\2\u0103"+
+ "\u03a6\3\2\2\2\u0105\u03ab\3\2\2\2\u0107\u03b0\3\2\2\2\u0109\u03f4\3\2"+
+ "\2\2\u010b\u03fd\3\2\2\2\u010d\u0406\3\2\2\2\u010f\u040b\3\2\2\2\u0111"+
+ "\u040d\3\2\2\2\u0113\u0414\3\2\2\2\u0115\u041d\3\2\2\2\u0117\u0421\3\2"+
+ "\2\2\u0119\u0425\3\2\2\2\u011b\u0429\3\2\2\2\u011d\u042c\3\2\2\2\u011f"+
+ "\u042e\3\2\2\2\u0121\u0430\3\2\2\2\u0123\u043b\3\2\2\2\u0125\u0126\7."+
+ "\2\2\u0126\4\3\2\2\2\u0127\u0128\7h\2\2\u0128\u0129\7k\2\2\u0129\u012a"+
+ "\7p\2\2\u012a\u012b\7c\2\2\u012b\u012c\7n\2\2\u012c\6\3\2\2\2\u012d\u012e"+
+ "\7e\2\2\u012e\u012f\7q\2\2\u012f\u0130\7p\2\2\u0130\u0131\7u\2\2\u0131"+
+ "\u0132\7v\2\2\u0132\b\3\2\2\2\u0133\u0134\7x\2\2\u0134\u0135\7c\2\2\u0135"+
+ "\u0136\7t\2\2\u0136\n\3\2\2\2\u0137\u0138\7?\2\2\u0138\f\3\2\2\2\u0139"+
+ "\u013a\7x\2\2\u013a\u013b\7q\2\2\u013b\u013c\7k\2\2\u013c\u013d\7f\2\2"+
+ "\u013d\16\3\2\2\2\u013e\u013f\7c\2\2\u013f\u0140\7u\2\2\u0140\u0141\7"+
+ "{\2\2\u0141\u0142\7p\2\2\u0142\u0143\7e\2\2\u0143\20\3\2\2\2\u0144\u0145"+
+ "\7?\2\2\u0145\u0146\7@\2\2\u0146\22\3\2\2\2\u0147\u0148\7=\2\2\u0148\24"+
+ "\3\2\2\2\u0149\u014a\7c\2\2\u014a\u014b\7u\2\2\u014b\u014c\7{\2\2\u014c"+
+ "\u014d\7p\2\2\u014d\u014e\7e\2\2\u014e\u014f\7,\2\2\u014f\26\3\2\2\2\u0150"+
+ "\u0151\7u\2\2\u0151\u0152\7{\2\2\u0152\u0153\7p\2\2\u0153\u0154\7e\2\2"+
+ "\u0154\u0155\7,\2\2\u0155\30\3\2\2\2\u0156\u0157\7}\2\2\u0157\32\3\2\2"+
+ "\2\u0158\u0159\7\177\2\2\u0159\34\3\2\2\2\u015a\u015b\7*\2\2\u015b\36"+
+ "\3\2\2\2\u015c\u015d\7+\2\2\u015d \3\2\2\2\u015e\u015f\7]\2\2\u015f\""+
+ "\3\2\2\2\u0160\u0161\7_\2\2\u0161$\3\2\2\2\u0162\u0163\7e\2\2\u0163\u0164"+
+ "\7q\2\2\u0164\u0165\7x\2\2\u0165\u0166\7c\2\2\u0166\u0167\7t\2\2\u0167"+
+ "\u0168\7k\2\2\u0168\u0169\7c\2\2\u0169\u016a\7p\2\2\u016a\u016b\7v\2\2"+
+ "\u016b&\3\2\2\2\u016c\u016d\7v\2\2\u016d\u016e\7j\2\2\u016e\u016f\7k\2"+
+ "\2\u016f\u0170\7u\2\2\u0170(\3\2\2\2\u0171\u0172\7\60\2\2\u0172*\3\2\2"+
+ "\2\u0173\u0174\7<\2\2\u0174,\3\2\2\2\u0175\u0176\7u\2\2\u0176\u0177\7"+
+ "g\2\2\u0177\u0178\7c\2\2\u0178\u0179\7n\2\2\u0179\u017a\7g\2\2\u017a\u017b"+
+ "\7f\2\2\u017b.\3\2\2\2\u017c\u017d\7d\2\2\u017d\u017e\7c\2\2\u017e\u017f"+
+ "\7u\2\2\u017f\u0180\7g\2\2\u0180\60\3\2\2\2\u0181\u0182\7k\2\2\u0182\u0183"+
+ "\7p\2\2\u0183\u0184\7v\2\2\u0184\u0185\7g\2\2\u0185\u0186\7t\2\2\u0186"+
+ "\u0187\7h\2\2\u0187\u0188\7c\2\2\u0188\u0189\7e\2\2\u0189\u018a\7g\2\2"+
+ "\u018a\62\3\2\2\2\u018b\u018c\7o\2\2\u018c\u018d\7k\2\2\u018d\u018e\7"+
+ "z\2\2\u018e\u018f\7k\2\2\u018f\u0190\7p\2\2\u0190\64\3\2\2\2\u0191\u0192"+
+ "\7c\2\2\u0192\u0193\7d\2\2\u0193\u0194\7u\2\2\u0194\u0195\7v\2\2\u0195"+
+ "\u0196\7t\2\2\u0196\u0197\7c\2\2\u0197\u0198\7e\2\2\u0198\u0199\7v\2\2"+
+ "\u0199\66\3\2\2\2\u019a\u019b\7e\2\2\u019b\u019c\7n\2\2\u019c\u019d\7"+
+ "c\2\2\u019d\u019e\7u\2\2\u019e\u019f\7u\2\2\u019f8\3\2\2\2\u01a0\u01a1"+
+ "\7y\2\2\u01a1\u01a2\7k\2\2\u01a2\u01a3\7v\2\2\u01a3\u01a4\7j\2\2\u01a4"+
+ ":\3\2\2\2\u01a5\u01a6\7u\2\2\u01a6\u01a7\7v\2\2\u01a7\u01a8\7c\2\2\u01a8"+
+ "\u01a9\7v\2\2\u01a9\u01aa\7k\2\2\u01aa\u01ab\7e\2\2\u01ab<\3\2\2\2\u01ac"+
+ "\u01ad\7g\2\2\u01ad\u01ae\7z\2\2\u01ae\u01af\7v\2\2\u01af\u01b0\7g\2\2"+
+ "\u01b0\u01b1\7t\2\2\u01b1\u01b2\7p\2\2\u01b2\u01b3\7c\2\2\u01b3\u01b4"+
+ "\7n\2\2\u01b4>\3\2\2\2\u01b5\u01b6\7q\2\2\u01b6\u01b7\7r\2\2\u01b7\u01b8"+
+ "\7g\2\2\u01b8\u01b9\7t\2\2\u01b9\u01ba\7c\2\2\u01ba\u01bb\7v\2\2\u01bb"+
+ "\u01bc\7q\2\2\u01bc\u01bd\7t\2\2\u01bd@\3\2\2\2\u01be\u01bf\7\u0080\2"+
+ "\2\u01bfB\3\2\2\2\u01c0\u01c1\7]\2\2\u01c1\u01c2\7_\2\2\u01c2D\3\2\2\2"+
+ "\u01c3\u01c4\7]\2\2\u01c4\u01c5\7_\2\2\u01c5\u01c6\7?\2\2\u01c6F\3\2\2"+
+ "\2\u01c7\u01c8\7?\2\2\u01c8\u01c9\7?\2\2\u01c9H\3\2\2\2\u01ca\u01cb\7"+
+ "i\2\2\u01cb\u01cc\7g\2\2\u01cc\u01cd\7v\2\2\u01cdJ\3\2\2\2\u01ce\u01cf"+
+ "\7u\2\2\u01cf\u01d0\7g\2\2\u01d0\u01d1\7v\2\2\u01d1L\3\2\2\2\u01d2\u01d3"+
+ "\7u\2\2\u01d3\u01d4\7w\2\2\u01d4\u01d5\7r\2\2\u01d5\u01d6\7g\2\2\u01d6"+
+ "\u01d7\7t\2\2\u01d7N\3\2\2\2\u01d8\u01d9\7h\2\2\u01d9\u01da\7c\2\2\u01da"+
+ "\u01db\7e\2\2\u01db\u01dc\7v\2\2\u01dc\u01dd\7q\2\2\u01dd\u01de\7t\2\2"+
+ "\u01de\u01df\7{\2\2\u01dfP\3\2\2\2\u01e0\u01e1\7g\2\2\u01e1\u01e2\7z\2"+
+ "\2\u01e2\u01e3\7v\2\2\u01e3\u01e4\7g\2\2\u01e4\u01e5\7p\2\2\u01e5\u01e6"+
+ "\7f\2\2\u01e6\u01e7\7u\2\2\u01e7R\3\2\2\2\u01e8\u01e9\7k\2\2\u01e9\u01ea"+
+ "\7o\2\2\u01ea\u01eb\7r\2\2\u01eb\u01ec\7n\2\2\u01ec\u01ed\7g\2\2\u01ed"+
+ "\u01ee\7o\2\2\u01ee\u01ef\7g\2\2\u01ef\u01f0\7p\2\2\u01f0\u01f1\7v\2\2"+
+ "\u01f1\u01f2\7u\2\2\u01f2T\3\2\2\2\u01f3\u01f4\7g\2\2\u01f4\u01f5\7p\2"+
+ "\2\u01f5\u01f6\7w\2\2\u01f6\u01f7\7o\2\2\u01f7V\3\2\2\2\u01f8\u01f9\7"+
+ ">\2\2\u01f9X\3\2\2\2\u01fa\u01fb\7@\2\2\u01fbZ\3\2\2\2\u01fc\u01fd\7B"+
+ "\2\2\u01fd\\\3\2\2\2\u01fe\u01ff\7u\2\2\u01ff\u0200\7y\2\2\u0200\u0201"+
+ "\7k\2\2\u0201\u0202\7v\2\2\u0202\u0203\7e\2\2\u0203\u0204\7j\2\2\u0204"+
+ "^\3\2\2\2\u0205\u0206\7y\2\2\u0206\u0207\7j\2\2\u0207\u0208\7g\2\2\u0208"+
+ "\u0209\7p\2\2\u0209`\3\2\2\2\u020a\u020b\7a\2\2\u020bb\3\2\2\2\u020c\u020d"+
+ "\7p\2\2\u020d\u020e\7w\2\2\u020e\u020f\7n\2\2\u020f\u0210\7n\2\2\u0210"+
+ "d\3\2\2\2\u0211\u0212\7v\2\2\u0212\u0213\7t\2\2\u0213\u0214\7w\2\2\u0214"+
+ "\u0215\7g\2\2\u0215f\3\2\2\2\u0216\u0217\7h\2\2\u0217\u0218\7c\2\2\u0218"+
+ "\u0219\7n\2\2\u0219\u021a\7u\2\2\u021a\u021b\7g\2\2\u021bh\3\2\2\2\u021c"+
+ "\u021d\7&\2\2\u021dj\3\2\2\2\u021e\u021f\7&\2\2\u021f\u0220\7}\2\2\u0220"+
+ "l\3\2\2\2\u0221\u0222\7%\2\2\u0222n\3\2\2\2\u0223\u0224\7v\2\2\u0224\u0225"+
+ "\7j\2\2\u0225\u0226\7t\2\2\u0226\u0227\7q\2\2\u0227\u0228\7y\2\2\u0228"+
+ "p\3\2\2\2\u0229\u022a\7p\2\2\u022a\u022b\7g\2\2\u022b\u022c\7y\2\2\u022c"+
+ "r\3\2\2\2\u022d\u022e\7\60\2\2\u022e\u022f\7\60\2\2\u022ft\3\2\2\2\u0230"+
+ "\u0231\7,\2\2\u0231\u0232\7?\2\2\u0232v\3\2\2\2\u0233\u0234\7\61\2\2\u0234"+
+ "\u0235\7?\2\2\u0235x\3\2\2\2\u0236\u0237\7\u0080\2\2\u0237\u0238\7\61"+
+ "\2\2\u0238\u0239\7?\2\2\u0239z\3\2\2\2\u023a\u023b\7\'\2\2\u023b\u023c"+
+ "\7?\2\2\u023c|\3\2\2\2\u023d\u023e\7-\2\2\u023e\u023f\7?\2\2\u023f~\3"+
+ "\2\2\2\u0240\u0241\7>\2\2\u0241\u0242\7>\2\2\u0242\u0243\7?\2\2\u0243"+
+ "\u0080\3\2\2\2\u0244\u0245\7@\2\2\u0245\u0246\7@\2\2\u0246\u0247\7?\2"+
+ "\2\u0247\u0082\3\2\2\2\u0248\u0249\7@\2\2\u0249\u024a\7@\2\2\u024a\u024b"+
+ "\7@\2\2\u024b\u024c\7?\2\2\u024c\u0084\3\2\2\2\u024d\u024e\7(\2\2\u024e"+
+ "\u024f\7?\2\2\u024f\u0086\3\2\2\2\u0250\u0251\7`\2\2\u0251\u0252\7?\2"+
+ "\2\u0252\u0088\3\2\2\2\u0253\u0254\7~\2\2\u0254\u0255\7?\2\2\u0255\u008a"+
+ "\3\2\2\2\u0256\u0257\7A\2\2\u0257\u0258\7A\2\2\u0258\u0259\7?\2\2\u0259"+
+ "\u008c\3\2\2\2\u025a\u025b\7A\2\2\u025b\u008e\3\2\2\2\u025c\u025d\7A\2"+
+ "\2\u025d\u025e\7A\2\2\u025e\u0090\3\2\2\2\u025f\u0260\7~\2\2\u0260\u0261"+
+ "\7~\2\2\u0261\u0092\3\2\2\2\u0262\u0263\7(\2\2\u0263\u0264\7(\2\2\u0264"+
+ "\u0094\3\2\2\2\u0265\u0266\7#\2\2\u0266\u0267\7?\2\2\u0267\u0096\3\2\2"+
+ "\2\u0268\u0269\7@\2\2\u0269\u026a\7?\2\2\u026a\u0098\3\2\2\2\u026b\u026c"+
+ "\7>\2\2\u026c\u026d\7?\2\2\u026d\u009a\3\2\2\2\u026e\u026f\7~\2\2\u026f"+
+ "\u009c\3\2\2\2\u0270\u0271\7`\2\2\u0271\u009e\3\2\2\2\u0272\u0273\7(\2"+
+ "\2\u0273\u00a0\3\2\2\2\u0274\u0275\7>\2\2\u0275\u0276\7>\2\2\u0276\u00a2"+
+ "\3\2\2\2\u0277\u0278\7@\2\2\u0278\u0279\7@\2\2\u0279\u00a4\3\2\2\2\u027a"+
+ "\u027b\7@\2\2\u027b\u027c\7@\2\2\u027c\u027d\7@\2\2\u027d\u00a6\3\2\2"+
+ "\2\u027e\u027f\7-\2\2\u027f\u00a8\3\2\2\2\u0280\u0281\7/\2\2\u0281\u00aa"+
+ "\3\2\2\2\u0282\u0283\7,\2\2\u0283\u00ac\3\2\2\2\u0284\u0285\7\61\2\2\u0285"+
+ "\u00ae\3\2\2\2\u0286\u0287\7\'\2\2\u0287\u00b0\3\2\2\2\u0288\u0289\7\u0080"+
+ "\2\2\u0289\u028a\7\61\2\2\u028a\u00b2\3\2\2\2\u028b\u028c\7#\2\2\u028c"+
+ "\u00b4\3\2\2\2\u028d\u028e\7c\2\2\u028e\u028f\7y\2\2\u028f\u0290\7c\2"+
+ "\2\u0290\u0291\7k\2\2\u0291\u0292\7v\2\2\u0292\u00b6\3\2\2\2\u0293\u0294"+
+ "\7-\2\2\u0294\u0295\7-\2\2\u0295\u00b8\3\2\2\2\u0296\u0297\7/\2\2\u0297"+
+ "\u0298\7/\2\2\u0298\u00ba\3\2\2\2\u0299\u029a\7A\2\2\u029a\u029b\7\60"+
+ "\2\2\u029b\u00bc\3\2\2\2\u029c\u029d\7k\2\2\u029d\u029e\7u\2\2\u029e\u00be"+
+ "\3\2\2\2\u029f\u02a0\7c\2\2\u02a0\u02a1\7u\2\2\u02a1\u00c0\3\2\2\2\u02a2"+
+ "\u02a3\7k\2\2\u02a3\u02a4\7h\2\2\u02a4\u00c2\3\2\2\2\u02a5\u02a6\7g\2"+
+ "\2\u02a6\u02a7\7n\2\2\u02a7\u02a8\7u\2\2\u02a8\u02a9\7g\2\2\u02a9\u00c4"+
+ "\3\2\2\2\u02aa\u02ab\7e\2\2\u02ab\u02ac\7c\2\2\u02ac\u02ad\7u\2\2\u02ad"+
+ "\u02ae\7g\2\2\u02ae\u00c6\3\2\2\2\u02af\u02b0\7h\2\2\u02b0\u02b1\7q\2"+
+ "\2\u02b1\u02b2\7t\2\2\u02b2\u00c8\3\2\2\2\u02b3\u02b4\7k\2\2\u02b4\u02b5"+
+ "\7p\2\2\u02b5\u00ca\3\2\2\2\u02b6\u02b7\7y\2\2\u02b7\u02b8\7j\2\2\u02b8"+
+ "\u02b9\7k\2\2\u02b9\u02ba\7n\2\2\u02ba\u02bb\7g\2\2\u02bb\u00cc\3\2\2"+
+ "\2\u02bc\u02bd\7f\2\2\u02bd\u02be\7q\2\2\u02be\u00ce\3\2\2\2\u02bf\u02c0"+
+ "\7f\2\2\u02c0\u02c1\7g\2\2\u02c1\u02c2\7h\2\2\u02c2\u02c3\7c\2\2\u02c3"+
+ "\u02c4\7w\2\2\u02c4\u02c5\7n\2\2\u02c5\u02c6\7v\2\2\u02c6\u00d0\3\2\2"+
+ "\2\u02c7\u02c8\7t\2\2\u02c8\u02c9\7g\2\2\u02c9\u02ca\7v\2\2\u02ca\u02cb"+
+ "\7j\2\2\u02cb\u02cc\7t\2\2\u02cc\u02cd\7q\2\2\u02cd\u02ce\7y\2\2\u02ce"+
+ "\u00d2\3\2\2\2\u02cf\u02d0\7v\2\2\u02d0\u02d1\7t\2\2\u02d1\u02d2\7{\2"+
+ "\2\u02d2\u00d4\3\2\2\2\u02d3\u02d4\7q\2\2\u02d4\u02d5\7p\2\2\u02d5\u00d6"+
+ "\3\2\2\2\u02d6\u02d7\7e\2\2\u02d7\u02d8\7c\2\2\u02d8\u02d9\7v\2\2\u02d9"+
+ "\u02da\7e\2\2\u02da\u02db\7j\2\2\u02db\u00d8\3\2\2\2\u02dc\u02dd\7h\2"+
+ "\2\u02dd\u02de\7k\2\2\u02de\u02df\7p\2\2\u02df\u02e0\7c\2\2\u02e0\u02e1"+
+ "\7n\2\2\u02e1\u02e2\7n\2\2\u02e2\u02e3\7{\2\2\u02e3\u00da\3\2\2\2\u02e4"+
+ "\u02e5\7t\2\2\u02e5\u02e6\7g\2\2\u02e6\u02e7\7v\2\2\u02e7\u02e8\7w\2\2"+
+ "\u02e8\u02e9\7t\2\2\u02e9\u02ea\7p\2\2\u02ea\u00dc\3\2\2\2\u02eb\u02ec"+
+ "\7d\2\2\u02ec\u02ed\7t\2\2\u02ed\u02ee\7g\2\2\u02ee\u02ef\7c\2\2\u02ef"+
+ "\u02f0\7m\2\2\u02f0\u00de\3\2\2\2\u02f1\u02f2\7e\2\2\u02f2\u02f3\7q\2"+
+ "\2\u02f3\u02f4\7p\2\2\u02f4\u02f5\7v\2\2\u02f5\u02f6\7k\2\2\u02f6\u02f7"+
+ "\7p\2\2\u02f7\u02f8\7w\2\2\u02f8\u02f9\7g\2\2\u02f9\u00e0\3\2\2\2\u02fa"+
+ "\u02fb\7{\2\2\u02fb\u02fc\7k\2\2\u02fc\u02fd\7g\2\2\u02fd\u02fe\7n\2\2"+
+ "\u02fe\u02ff\7f\2\2\u02ff\u00e2\3\2\2\2\u0300\u0301\7{\2\2\u0301\u0302"+
+ "\7k\2\2\u0302\u0303\7g\2\2\u0303\u0304\7n\2\2\u0304\u0305\7f\2\2\u0305"+
+ "\u0306\7,\2\2\u0306\u00e4\3\2\2\2\u0307\u0308\7c\2\2\u0308\u0309\7u\2"+
+ "\2\u0309\u030a\7u\2\2\u030a\u030b\7g\2\2\u030b\u030c\7t\2\2\u030c\u030d"+
+ "\7v\2\2\u030d\u00e6\3\2\2\2\u030e\u030f\7%\2\2\u030f\u0310\7#\2\2\u0310"+
+ "\u00e8\3\2\2\2\u0311\u0312\7n\2\2\u0312\u0313\7k\2\2\u0313\u0314\7d\2"+
+ "\2\u0314\u0315\7t\2\2\u0315\u0316\7c\2\2\u0316\u0317\7t\2\2\u0317\u0318"+
+ "\7{\2\2\u0318\u00ea\3\2\2\2\u0319\u031a\7k\2\2\u031a\u031b\7o\2\2\u031b"+
+ "\u031c\7r\2\2\u031c\u031d\7q\2\2\u031d\u031e\7t\2\2\u031e\u031f\7v\2\2"+
+ "\u031f\u00ec\3\2\2\2\u0320\u0321\7u\2\2\u0321\u0322\7j\2\2\u0322\u0323"+
+ "\7q\2\2\u0323\u0324\7y\2\2\u0324\u00ee\3\2\2\2\u0325\u0326\7j\2\2\u0326"+
+ "\u0327\7k\2\2\u0327\u0328\7f\2\2\u0328\u0329\7g\2\2\u0329\u00f0\3\2\2"+
+ "\2\u032a\u032b\7g\2\2\u032b\u032c\7z\2\2\u032c\u032d\7r\2\2\u032d\u032e"+
+ "\7q\2\2\u032e\u032f\7t\2\2\u032f\u0330\7v\2\2\u0330\u00f2\3\2\2\2\u0331"+
+ "\u0332\7r\2\2\u0332\u0333\7c\2\2\u0333\u0334\7t\2\2\u0334\u0335\7v\2\2"+
+ "\u0335\u00f4\3\2\2\2\u0336\u0337\7q\2\2\u0337\u0338\7h\2\2\u0338\u00f6"+
+ "\3\2\2\2\u0339\u033a\7v\2\2\u033a\u033b\7{\2\2\u033b\u033c\7r\2\2\u033c"+
+ "\u033d\7g\2\2\u033d\u033e\7f\2\2\u033e\u033f\7g\2\2\u033f\u0340\7h\2\2"+
+ "\u0340\u00f8\3\2\2\2\u0341\u0343\t\2\2\2\u0342\u0341\3\2\2\2\u0343\u0344"+
+ "\3\2\2\2\u0344\u0342\3\2\2\2\u0344\u0345\3\2\2\2\u0345\u0346\3\2\2\2\u0346"+
+ "\u0347\b}\2\2\u0347\u00fa\3\2\2\2\u0348\u034a\5\u011f\u0090\2\u0349\u0348"+
+ "\3\2\2\2\u034a\u034b\3\2\2\2\u034b\u0349\3\2\2\2\u034b\u034c\3\2\2\2\u034c"+
+ "\u0353\3\2\2\2\u034d\u034f\7\60\2\2\u034e\u0350\5\u011f\u0090\2\u034f"+
+ "\u034e\3\2\2\2\u0350\u0351\3\2\2\2\u0351\u034f\3\2\2\2\u0351\u0352\3\2"+
+ "\2\2\u0352\u0354\3\2\2\2\u0353\u034d\3\2\2\2\u0353\u0354\3\2\2\2\u0354"+
+ "\u0356\3\2\2\2\u0355\u0357\5\u00fd\177\2\u0356\u0355\3\2\2\2\u0356\u0357"+
+ "\3\2\2\2\u0357\u0362\3\2\2\2\u0358\u035a\7\60\2\2\u0359\u035b\5\u011f"+
+ "\u0090\2\u035a\u0359\3\2\2\2\u035b\u035c\3\2\2\2\u035c\u035a\3\2\2\2\u035c"+
+ "\u035d\3\2\2\2\u035d\u035f\3\2\2\2\u035e\u0360\5\u00fd\177\2\u035f\u035e"+
+ "\3\2\2\2\u035f\u0360\3\2\2\2\u0360\u0362\3\2\2\2\u0361\u0349\3\2\2\2\u0361"+
+ "\u0358\3\2\2\2\u0362\u00fc\3\2\2\2\u0363\u0365\t\3\2\2\u0364\u0366\t\4"+
+ "\2\2\u0365\u0364\3\2\2\2\u0365\u0366\3\2\2\2\u0366\u0368\3\2\2\2\u0367"+
+ "\u0369\5\u011f\u0090\2\u0368\u0367\3\2\2\2\u0369\u036a\3\2\2\2\u036a\u0368"+
+ "\3\2\2\2\u036a\u036b\3\2\2\2\u036b\u00fe\3\2\2\2\u036c\u036d\7\62\2\2"+
+ "\u036d\u036e\7z\2\2\u036e\u0370\3\2\2\2\u036f\u0371\5\u0101\u0081\2\u0370"+
+ "\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0370\3\2\2\2\u0372\u0373\3\2"+
+ "\2\2\u0373\u037d\3\2\2\2\u0374\u0375\7\62\2\2\u0375\u0376\7Z\2\2\u0376"+
+ "\u0378\3\2\2\2\u0377\u0379\5\u0101\u0081\2\u0378\u0377\3\2\2\2\u0379\u037a"+
+ "\3\2\2\2\u037a\u0378\3\2\2\2\u037a\u037b\3\2\2\2\u037b\u037d\3\2\2\2\u037c"+
+ "\u036c\3\2\2\2\u037c\u0374\3\2\2\2\u037d\u0100\3\2\2\2\u037e\u0381\t\5"+
+ "\2\2\u037f\u0381\5\u011f\u0090\2\u0380\u037e\3\2\2\2\u0380\u037f\3\2\2"+
+ "\2\u0381\u0102\3\2\2\2\u0382\u0386\7$\2\2\u0383\u0385\5\u0105\u0083\2"+
+ "\u0384\u0383\3\2\2\2\u0385\u0388\3\2\2\2\u0386\u0384\3\2\2\2\u0386\u0387"+
+ "\3\2\2\2\u0387\u0389\3\2\2\2\u0388\u0386\3\2\2\2\u0389\u03a7\7$\2\2\u038a"+
+ "\u038e\7)\2\2\u038b\u038d\5\u0107\u0084\2\u038c\u038b\3\2\2\2\u038d\u0390"+
+ "\3\2\2\2\u038e\u038c\3\2\2\2\u038e\u038f\3\2\2\2\u038f\u0391\3\2\2\2\u0390"+
+ "\u038e\3\2\2\2\u0391\u03a7\7)\2\2\u0392\u0393\7t\2\2\u0393\u0394\7)\2"+
+ "\2\u0394\u0398\3\2\2\2\u0395\u0397\n\6\2\2\u0396\u0395\3\2\2\2\u0397\u039a"+
+ "\3\2\2\2\u0398\u0396\3\2\2\2\u0398\u0399\3\2\2\2\u0399\u039b\3\2\2\2\u039a"+
+ "\u0398\3\2\2\2\u039b\u03a7\7)\2\2\u039c\u039d\7t\2\2\u039d\u039e\7$\2"+
+ "\2\u039e\u03a2\3\2\2\2\u039f\u03a1\n\7\2\2\u03a0\u039f\3\2\2\2\u03a1\u03a4"+
+ "\3\2\2\2\u03a2\u03a0\3\2\2\2\u03a2\u03a3\3\2\2\2\u03a3\u03a5\3\2\2\2\u03a4"+
+ "\u03a2\3\2\2\2\u03a5\u03a7\7$\2\2\u03a6\u0382\3\2\2\2\u03a6\u038a\3\2"+
+ "\2\2\u03a6\u0392\3\2\2\2\u03a6\u039c\3\2\2\2\u03a7\u0104\3\2\2\2\u03a8"+
+ "\u03ac\n\b\2\2\u03a9\u03aa\7^\2\2\u03aa\u03ac\n\t\2\2\u03ab\u03a8\3\2"+
+ "\2\2\u03ab\u03a9\3\2\2\2\u03ac\u0106\3\2\2\2\u03ad\u03b1\n\n\2\2\u03ae"+
+ "\u03af\7^\2\2\u03af\u03b1\n\t\2\2\u03b0\u03ad\3\2\2\2\u03b0\u03ae\3\2"+
+ "\2\2\u03b1\u0108\3\2\2\2\u03b2\u03b3\7$\2\2\u03b3\u03b4\7$\2\2\u03b4\u03b5"+
+ "\7$\2\2\u03b5\u03b9\3\2\2\2\u03b6\u03b8\5\u010b\u0086\2\u03b7\u03b6\3"+
+ "\2\2\2\u03b8\u03bb\3\2\2\2\u03b9\u03b7\3\2\2\2\u03b9\u03ba\3\2\2\2\u03ba"+
+ "\u03bc\3\2\2\2\u03bb\u03b9\3\2\2\2\u03bc\u03bd\7$\2\2\u03bd\u03be\7$\2"+
+ "\2\u03be\u03f5\7$\2\2\u03bf\u03c0\7)\2\2\u03c0\u03c1\7)\2\2\u03c1\u03c2"+
+ "\7)\2\2\u03c2\u03c6\3\2\2\2\u03c3\u03c5\5\u010d\u0087\2\u03c4\u03c3\3"+
+ "\2\2\2\u03c5\u03c8\3\2\2\2\u03c6\u03c4\3\2\2\2\u03c6\u03c7\3\2\2\2\u03c7"+
+ "\u03c9\3\2\2\2\u03c8\u03c6\3\2\2\2\u03c9\u03ca\7)\2\2\u03ca\u03cb\7)\2"+
+ "\2\u03cb\u03f5\7)\2\2\u03cc\u03cd\7t\2\2\u03cd\u03ce\7$\2\2\u03ce\u03cf"+
+ "\7$\2\2\u03cf\u03d0\7$\2\2\u03d0\u03da\3\2\2\2\u03d1\u03d9\n\13\2\2\u03d2"+
+ "\u03d3\7$\2\2\u03d3\u03d9\n\13\2\2\u03d4\u03d5\7$\2\2\u03d5\u03d6\7$\2"+
+ "\2\u03d6\u03d7\3\2\2\2\u03d7\u03d9\n\13\2\2\u03d8\u03d1\3\2\2\2\u03d8"+
+ "\u03d2\3\2\2\2\u03d8\u03d4\3\2\2\2\u03d9\u03dc\3\2\2\2\u03da\u03d8\3\2"+
+ "\2\2\u03da\u03db\3\2\2\2\u03db\u03dd\3\2\2\2\u03dc\u03da\3\2\2\2\u03dd"+
+ "\u03de\7$\2\2\u03de\u03df\7$\2\2\u03df\u03f5\7$\2\2\u03e0\u03e1\7t\2\2"+
+ "\u03e1\u03e2\7)\2\2\u03e2\u03e3\7)\2\2\u03e3\u03e4\7)\2\2\u03e4\u03ee"+
+ "\3\2\2\2\u03e5\u03ed\n\f\2\2\u03e6\u03e7\7)\2\2\u03e7\u03ed\n\f\2\2\u03e8"+
+ "\u03e9\7)\2\2\u03e9\u03ea\7)\2\2\u03ea\u03eb\3\2\2\2\u03eb\u03ed\n\f\2"+
+ "\2\u03ec\u03e5\3\2\2\2\u03ec\u03e6\3\2\2\2\u03ec\u03e8\3\2\2\2\u03ed\u03f0"+
+ "\3\2\2\2\u03ee\u03ec\3\2\2\2\u03ee\u03ef\3\2\2\2\u03ef\u03f1\3\2\2\2\u03f0"+
+ "\u03ee\3\2\2\2\u03f1\u03f2\7)\2\2\u03f2\u03f3\7)\2\2\u03f3\u03f5\7)\2"+
+ "\2\u03f4\u03b2\3\2\2\2\u03f4\u03bf\3\2\2\2\u03f4\u03cc\3\2\2\2\u03f4\u03e0"+
+ "\3\2\2\2\u03f5\u010a\3\2\2\2\u03f6\u03fe\n\r\2\2\u03f7\u03f8\7$\2\2\u03f8"+
+ "\u03fe\n\13\2\2\u03f9\u03fa\7$\2\2\u03fa\u03fb\7$\2\2\u03fb\u03fc\3\2"+
+ "\2\2\u03fc\u03fe\n\13\2\2\u03fd\u03f6\3\2\2\2\u03fd\u03f7\3\2\2\2\u03fd"+
+ "\u03f9\3\2\2\2\u03fe\u010c\3\2\2\2\u03ff\u0407\n\16\2\2\u0400\u0401\7"+
+ ")\2\2\u0401\u0407\n\f\2\2\u0402\u0403\7)\2\2\u0403\u0404\7)\2\2\u0404"+
+ "\u0405\3\2\2\2\u0405\u0407\n\f\2\2\u0406\u03ff\3\2\2\2\u0406\u0400\3\2"+
+ "\2\2\u0406\u0402\3\2\2\2\u0407\u010e\3\2\2\2\u0408\u040c\t\t\2\2\u0409"+
+ "\u040a\7\17\2\2\u040a\u040c\7\f\2\2\u040b\u0408\3\2\2\2\u040b\u0409\3"+
+ "\2\2\2\u040c\u0110\3\2\2\2\u040d\u0411\5\u0117\u008c\2\u040e\u0410\5\u0119"+
+ "\u008d\2\u040f\u040e\3\2\2\2\u0410\u0413\3\2\2\2\u0411\u040f\3\2\2\2\u0411"+
+ "\u0412\3\2\2\2\u0412\u0112\3\2\2\2\u0413\u0411\3\2\2\2\u0414\u0418\5\u0115"+
+ "\u008b\2\u0415\u0417\5\u011b\u008e\2\u0416\u0415\3\2\2\2\u0417\u041a\3"+
+ "\2\2\2\u0418\u0416\3\2\2\2\u0418\u0419\3\2\2\2\u0419\u0114\3\2\2\2\u041a"+
+ "\u0418\3\2\2\2\u041b\u041e\5\u0117\u008c\2\u041c\u041e\7&\2\2\u041d\u041b"+
+ "\3\2\2\2\u041d\u041c\3\2\2\2\u041e\u0116\3\2\2\2\u041f\u0422\5\u011d\u008f"+
+ "\2\u0420\u0422\7a\2\2\u0421\u041f\3\2\2\2\u0421\u0420\3\2\2\2\u0422\u0118"+
+ "\3\2\2\2\u0423\u0426\5\u0117\u008c\2\u0424\u0426\5\u011f\u0090\2\u0425"+
+ "\u0423\3\2\2\2\u0425\u0424\3\2\2\2\u0426\u011a\3\2\2\2\u0427\u042a\5\u0115"+
+ "\u008b\2\u0428\u042a\5\u011f\u0090\2\u0429\u0427\3\2\2\2\u0429\u0428\3"+
+ "\2\2\2\u042a\u011c\3\2\2\2\u042b\u042d\t\17\2\2\u042c\u042b\3\2\2\2\u042d"+
+ "\u011e\3\2\2\2\u042e\u042f\t\20\2\2\u042f\u0120\3\2\2\2\u0430\u0431\7"+
+ "\61\2\2\u0431\u0432\7\61\2\2\u0432\u0436\3\2\2\2\u0433\u0435\n\t\2\2\u0434"+
+ "\u0433\3\2\2\2\u0435\u0438\3\2\2\2\u0436\u0434\3\2\2\2\u0436\u0437\3\2"+
+ "\2\2\u0437\u0439\3\2\2\2\u0438\u0436\3\2\2\2\u0439\u043a\b\u0091\3\2\u043a"+
+ "\u0122\3\2\2\2\u043b\u043c\7\61\2\2\u043c\u043d\7,\2\2\u043d\u0441\3\2"+
+ "\2\2\u043e\u0440\13\2\2\2\u043f\u043e\3\2\2\2\u0440\u0443\3\2\2\2\u0441"+
+ "\u0442\3\2\2\2\u0441\u043f\3\2\2\2\u0442\u0444\3\2\2\2\u0443\u0441\3\2"+
+ "\2\2\u0444\u0445\7,\2\2\u0445\u0446\7\61\2\2\u0446\u0447\3\2\2\2\u0447"+
+ "\u0448\b\u0092\3\2\u0448\u0124\3\2\2\2+\2\u0344\u034b\u0351\u0353\u0356"+
+ "\u035c\u035f\u0361\u0365\u036a\u0372\u037a\u037c\u0380\u0386\u038e\u0398"+
+ "\u03a2\u03a6\u03ab\u03b0\u03b9\u03c6\u03d8\u03da\u03ec\u03ee\u03f4\u03fd"+
+ "\u0406\u040b\u0411\u0418\u041d\u0421\u0425\u0429\u042c\u0436\u0441\4\b"+
+ "\2\2\2\4\2";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Listener.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Listener.java
index 82fec15..d84e29c 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Listener.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Listener.java
@@ -1,21 +1,5 @@
-/*
- * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
- * Copyright © 2020 inside|app (contact@insideapp.fr)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-package fr.insideapp.sonarqube.dart.lang.antlr.generated;// Generated from Dart2.g4 by ANTLR 4.8
+// Generated from dart-lang/src/main/antlr/Dart2.g4 by ANTLR 4.8
+package fr.insideapp.sonarqube.dart.lang.antlr.generated;
import org.antlr.v4.runtime.tree.ParseTreeListener;
/**
@@ -263,6 +247,16 @@ public interface Dart2Listener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitDefaultNamedParameter(Dart2Parser.DefaultNamedParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#classModifier}.
+ * @param ctx the parse tree
+ */
+ void enterClassModifier(Dart2Parser.ClassModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#classModifier}.
+ * @param ctx the parse tree
+ */
+ void exitClassModifier(Dart2Parser.ClassModifierContext ctx);
/**
* Enter a parse tree produced by {@link Dart2Parser#classDefinition}.
* @param ctx the parse tree
@@ -593,6 +587,136 @@ public interface Dart2Listener extends ParseTreeListener {
* @param ctx the parse tree
*/
void exitPrimary(Dart2Parser.PrimaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#recordLiteral}.
+ * @param ctx the parse tree
+ */
+ void enterRecordLiteral(Dart2Parser.RecordLiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#recordLiteral}.
+ * @param ctx the parse tree
+ */
+ void exitRecordLiteral(Dart2Parser.RecordLiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#recordField}.
+ * @param ctx the parse tree
+ */
+ void enterRecordField(Dart2Parser.RecordFieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#recordField}.
+ * @param ctx the parse tree
+ */
+ void exitRecordField(Dart2Parser.RecordFieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#recordType}.
+ * @param ctx the parse tree
+ */
+ void enterRecordType(Dart2Parser.RecordTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#recordType}.
+ * @param ctx the parse tree
+ */
+ void exitRecordType(Dart2Parser.RecordTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#recordTypeField}.
+ * @param ctx the parse tree
+ */
+ void enterRecordTypeField(Dart2Parser.RecordTypeFieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#recordTypeField}.
+ * @param ctx the parse tree
+ */
+ void exitRecordTypeField(Dart2Parser.RecordTypeFieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#switchExpression}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchExpression(Dart2Parser.SwitchExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#switchExpression}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchExpression(Dart2Parser.SwitchExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#switchExpressionCase}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchExpressionCase(Dart2Parser.SwitchExpressionCaseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#switchExpressionCase}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchExpressionCase(Dart2Parser.SwitchExpressionCaseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#guardedPattern}.
+ * @param ctx the parse tree
+ */
+ void enterGuardedPattern(Dart2Parser.GuardedPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#guardedPattern}.
+ * @param ctx the parse tree
+ */
+ void exitGuardedPattern(Dart2Parser.GuardedPatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#pattern}.
+ * @param ctx the parse tree
+ */
+ void enterPattern(Dart2Parser.PatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#pattern}.
+ * @param ctx the parse tree
+ */
+ void exitPattern(Dart2Parser.PatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#constantPattern}.
+ * @param ctx the parse tree
+ */
+ void enterConstantPattern(Dart2Parser.ConstantPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#constantPattern}.
+ * @param ctx the parse tree
+ */
+ void exitConstantPattern(Dart2Parser.ConstantPatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#typeTestPattern}.
+ * @param ctx the parse tree
+ */
+ void enterTypeTestPattern(Dart2Parser.TypeTestPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#typeTestPattern}.
+ * @param ctx the parse tree
+ */
+ void exitTypeTestPattern(Dart2Parser.TypeTestPatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#wildcardPattern}.
+ * @param ctx the parse tree
+ */
+ void enterWildcardPattern(Dart2Parser.WildcardPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#wildcardPattern}.
+ * @param ctx the parse tree
+ */
+ void exitWildcardPattern(Dart2Parser.WildcardPatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#variablePattern}.
+ * @param ctx the parse tree
+ */
+ void enterVariablePattern(Dart2Parser.VariablePatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#variablePattern}.
+ * @param ctx the parse tree
+ */
+ void exitVariablePattern(Dart2Parser.VariablePatternContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Dart2Parser#parenthesizedPattern}.
+ * @param ctx the parse tree
+ */
+ void enterParenthesizedPattern(Dart2Parser.ParenthesizedPatternContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Dart2Parser#parenthesizedPattern}.
+ * @param ctx the parse tree
+ */
+ void exitParenthesizedPattern(Dart2Parser.ParenthesizedPatternContext ctx);
/**
* Enter a parse tree produced by {@link Dart2Parser#literal}.
* @param ctx the parse tree
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Parser.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Parser.java
index ef1d16d..145af76 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Parser.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Parser.java
@@ -1,33 +1,13 @@
-/*
- * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
- * Copyright © 2020 inside|app (contact@insideapp.fr)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-package fr.insideapp.sonarqube.dart.lang.antlr.generated;// Generated from Dart2.g4 by ANTLR 4.8
-
-import org.antlr.v4.runtime.*;
-import org.antlr.v4.runtime.atn.ATN;
-import org.antlr.v4.runtime.atn.ATNDeserializer;
-import org.antlr.v4.runtime.atn.ParserATNSimulator;
-import org.antlr.v4.runtime.atn.PredictionContextCache;
+// Generated from dart-lang/src/main/antlr/Dart2.g4 by ANTLR 4.8
+package fr.insideapp.sonarqube.dart.lang.antlr.generated;
+import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
-import org.antlr.v4.runtime.tree.ParseTreeListener;
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-import org.antlr.v4.runtime.tree.TerminalNode;
-
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class Dart2Parser extends Parser {
@@ -53,9 +33,10 @@ public class Dart2Parser extends Parser {
T__94=95, T__95=96, T__96=97, T__97=98, T__98=99, T__99=100, T__100=101,
T__101=102, T__102=103, T__103=104, T__104=105, T__105=106, T__106=107,
T__107=108, T__108=109, T__109=110, T__110=111, T__111=112, T__112=113,
- T__113=114, T__114=115, T__115=116, T__116=117, WHITESPACE=118, NUMBER=119,
- HEX_NUMBER=120, SingleLineString=121, MultiLineString=122, NEWLINE=123,
- IDENTIFIER=124, SINGLE_LINE_COMMENT=125, MULTI_LINE_COMMENT=126;
+ T__113=114, T__114=115, T__115=116, T__116=117, T__117=118, T__118=119,
+ T__119=120, T__120=121, T__121=122, T__122=123, WHITESPACE=124, NUMBER=125,
+ HEX_NUMBER=126, SingleLineString=127, MultiLineString=128, NEWLINE=129,
+ IDENTIFIER=130, SINGLE_LINE_COMMENT=131, MULTI_LINE_COMMENT=132;
public static final int
RULE_compilationUnit = 0, RULE_variableDeclaration = 1, RULE_declaredIdentifier = 2,
RULE_finalConstVarOrType = 3, RULE_varOrType = 4, RULE_initializedVariableDeclaration = 5,
@@ -65,56 +46,60 @@ public class Dart2Parser extends Parser {
RULE_optionalFormalParameters = 15, RULE_optionalPositionalFormalParameters = 16,
RULE_namedFormalParameters = 17, RULE_normalFormalParameter = 18, RULE_functionFormalParameter = 19,
RULE_simpleFormalParameter = 20, RULE_fieldFormalParameter = 21, RULE_defaultFormalParameter = 22,
- RULE_defaultNamedParameter = 23, RULE_classDefinition = 24, RULE_mixins = 25,
- RULE_classMemberDefinition = 26, RULE_methodSignature = 27, RULE_declaration = 28,
- RULE_staticFinalDeclarationList = 29, RULE_staticFinalDeclaration = 30,
- RULE_operatorSignature = 31, RULE_operator = 32, RULE_binaryOperator = 33,
- RULE_getterSignature = 34, RULE_setterSignature = 35, RULE_constructorSignature = 36,
- RULE_redirection = 37, RULE_initializers = 38, RULE_initializerListEntry = 39,
- RULE_fieldInitializer = 40, RULE_factoryConstructorSignature = 41, RULE_redirectingFactoryConstructorSignature = 42,
- RULE_constantConstructorSignature = 43, RULE_superclass = 44, RULE_interfaces = 45,
- RULE_mixinApplicationClass = 46, RULE_mixinApplication = 47, RULE_enumType = 48,
- RULE_enumEntry = 49, RULE_typeParameter = 50, RULE_typeParameters = 51,
- RULE_metadata = 52, RULE_expression = 53, RULE_expressionWithoutCascade = 54,
- RULE_expressionList = 55, RULE_primary = 56, RULE_literal = 57, RULE_nullLiteral = 58,
- RULE_numericLiteral = 59, RULE_booleanLiteral = 60, RULE_stringLiteral = 61,
- RULE_stringInterpolation = 62, RULE_symbolLiteral = 63, RULE_listLiteral = 64,
- RULE_mapLiteral = 65, RULE_mapLiteralEntry = 66, RULE_throwExpression = 67,
- RULE_throwExpressionWithoutCascade = 68, RULE_functionExpression = 69,
- RULE_thisExpression = 70, RULE_nayaExpression = 71, RULE_constObjectExpression = 72,
- RULE_arguments = 73, RULE_argumentList = 74, RULE_namedArgument = 75,
- RULE_cascadeSection = 76, RULE_cascadeSelector = 77, RULE_argumentPart = 78,
- RULE_assignmentOperator = 79, RULE_compoundAssignmentOperator = 80, RULE_conditionalExpression = 81,
- RULE_ifNullExpression = 82, RULE_logicalOrExpression = 83, RULE_logicalAndExpression = 84,
- RULE_equalityExpression = 85, RULE_equalityOperator = 86, RULE_relationalExpression = 87,
- RULE_relationalOperator = 88, RULE_bitwiseOrExpression = 89, RULE_bitwiseXorExpression = 90,
- RULE_bitwiseAndExpression = 91, RULE_bitwiseOperator = 92, RULE_shiftExpression = 93,
- RULE_shiftOperator = 94, RULE_additiveExpression = 95, RULE_additiveOperator = 96,
- RULE_multiplicativeExpression = 97, RULE_multiplicativeOperator = 98,
- RULE_unaryExpression = 99, RULE_prefixOperator = 100, RULE_minusOperator = 101,
- RULE_negationOperator = 102, RULE_tildeOperator = 103, RULE_awaitExpression = 104,
- RULE_postfixExpression = 105, RULE_postfixOperator = 106, RULE_selector = 107,
- RULE_incrementOperator = 108, RULE_assignableExpression = 109, RULE_unconditionalAssignableSelector = 110,
- RULE_assignableSelector = 111, RULE_identifier = 112, RULE_qualified = 113,
- RULE_typeTest = 114, RULE_isOperator = 115, RULE_typeCast = 116, RULE_asOperator = 117,
- RULE_statements = 118, RULE_statement = 119, RULE_nonLabledStatment = 120,
- RULE_expressionStatement = 121, RULE_localVariableDeclaration = 122, RULE_localFunctionDeclaration = 123,
- RULE_ifStatement = 124, RULE_forStatement = 125, RULE_forLoopParts = 126,
- RULE_forInitializerStatement = 127, RULE_whileStatement = 128, RULE_doStatement = 129,
- RULE_switchStatement = 130, RULE_switchCase = 131, RULE_defaultCase = 132,
- RULE_rethrowStatment = 133, RULE_tryStatement = 134, RULE_onPart = 135,
- RULE_catchPart = 136, RULE_finallyPart = 137, RULE_returnStatement = 138,
- RULE_label = 139, RULE_breakStatement = 140, RULE_continueStatement = 141,
- RULE_yieldStatement = 142, RULE_yieldEachStatement = 143, RULE_assertStatement = 144,
- RULE_assertion = 145, RULE_topLevelDefinition = 146, RULE_getOrSet = 147,
- RULE_libraryDefinition = 148, RULE_scriptTag = 149, RULE_libraryName = 150,
- RULE_importOrExport = 151, RULE_dottedIdentifierList = 152, RULE_libraryimport = 153,
- RULE_importSpecification = 154, RULE_combinator = 155, RULE_identifierList = 156,
- RULE_libraryExport = 157, RULE_partDirective = 158, RULE_partHeader = 159,
- RULE_partDeclaration = 160, RULE_uri = 161, RULE_configurableUri = 162,
- RULE_configurationUri = 163, RULE_uriTest = 164, RULE_dtype = 165, RULE_typeName = 166,
- RULE_typeArguments = 167, RULE_typeList = 168, RULE_typeAlias = 169, RULE_typeAliasBody = 170,
- RULE_functionTypeAlias = 171, RULE_functionPrefix = 172;
+ RULE_defaultNamedParameter = 23, RULE_classModifier = 24, RULE_classDefinition = 25,
+ RULE_mixins = 26, RULE_classMemberDefinition = 27, RULE_methodSignature = 28,
+ RULE_declaration = 29, RULE_staticFinalDeclarationList = 30, RULE_staticFinalDeclaration = 31,
+ RULE_operatorSignature = 32, RULE_operator = 33, RULE_binaryOperator = 34,
+ RULE_getterSignature = 35, RULE_setterSignature = 36, RULE_constructorSignature = 37,
+ RULE_redirection = 38, RULE_initializers = 39, RULE_initializerListEntry = 40,
+ RULE_fieldInitializer = 41, RULE_factoryConstructorSignature = 42, RULE_redirectingFactoryConstructorSignature = 43,
+ RULE_constantConstructorSignature = 44, RULE_superclass = 45, RULE_interfaces = 46,
+ RULE_mixinApplicationClass = 47, RULE_mixinApplication = 48, RULE_enumType = 49,
+ RULE_enumEntry = 50, RULE_typeParameter = 51, RULE_typeParameters = 52,
+ RULE_metadata = 53, RULE_expression = 54, RULE_expressionWithoutCascade = 55,
+ RULE_expressionList = 56, RULE_primary = 57, RULE_recordLiteral = 58,
+ RULE_recordField = 59, RULE_recordType = 60, RULE_recordTypeField = 61,
+ RULE_switchExpression = 62, RULE_switchExpressionCase = 63, RULE_guardedPattern = 64,
+ RULE_pattern = 65, RULE_constantPattern = 66, RULE_typeTestPattern = 67,
+ RULE_wildcardPattern = 68, RULE_variablePattern = 69, RULE_parenthesizedPattern = 70,
+ RULE_literal = 71, RULE_nullLiteral = 72, RULE_numericLiteral = 73, RULE_booleanLiteral = 74,
+ RULE_stringLiteral = 75, RULE_stringInterpolation = 76, RULE_symbolLiteral = 77,
+ RULE_listLiteral = 78, RULE_mapLiteral = 79, RULE_mapLiteralEntry = 80,
+ RULE_throwExpression = 81, RULE_throwExpressionWithoutCascade = 82, RULE_functionExpression = 83,
+ RULE_thisExpression = 84, RULE_nayaExpression = 85, RULE_constObjectExpression = 86,
+ RULE_arguments = 87, RULE_argumentList = 88, RULE_namedArgument = 89,
+ RULE_cascadeSection = 90, RULE_cascadeSelector = 91, RULE_argumentPart = 92,
+ RULE_assignmentOperator = 93, RULE_compoundAssignmentOperator = 94, RULE_conditionalExpression = 95,
+ RULE_ifNullExpression = 96, RULE_logicalOrExpression = 97, RULE_logicalAndExpression = 98,
+ RULE_equalityExpression = 99, RULE_equalityOperator = 100, RULE_relationalExpression = 101,
+ RULE_relationalOperator = 102, RULE_bitwiseOrExpression = 103, RULE_bitwiseXorExpression = 104,
+ RULE_bitwiseAndExpression = 105, RULE_bitwiseOperator = 106, RULE_shiftExpression = 107,
+ RULE_shiftOperator = 108, RULE_additiveExpression = 109, RULE_additiveOperator = 110,
+ RULE_multiplicativeExpression = 111, RULE_multiplicativeOperator = 112,
+ RULE_unaryExpression = 113, RULE_prefixOperator = 114, RULE_minusOperator = 115,
+ RULE_negationOperator = 116, RULE_tildeOperator = 117, RULE_awaitExpression = 118,
+ RULE_postfixExpression = 119, RULE_postfixOperator = 120, RULE_selector = 121,
+ RULE_incrementOperator = 122, RULE_assignableExpression = 123, RULE_unconditionalAssignableSelector = 124,
+ RULE_assignableSelector = 125, RULE_identifier = 126, RULE_qualified = 127,
+ RULE_typeTest = 128, RULE_isOperator = 129, RULE_typeCast = 130, RULE_asOperator = 131,
+ RULE_statements = 132, RULE_statement = 133, RULE_nonLabledStatment = 134,
+ RULE_expressionStatement = 135, RULE_localVariableDeclaration = 136, RULE_localFunctionDeclaration = 137,
+ RULE_ifStatement = 138, RULE_forStatement = 139, RULE_forLoopParts = 140,
+ RULE_forInitializerStatement = 141, RULE_whileStatement = 142, RULE_doStatement = 143,
+ RULE_switchStatement = 144, RULE_switchCase = 145, RULE_defaultCase = 146,
+ RULE_rethrowStatment = 147, RULE_tryStatement = 148, RULE_onPart = 149,
+ RULE_catchPart = 150, RULE_finallyPart = 151, RULE_returnStatement = 152,
+ RULE_label = 153, RULE_breakStatement = 154, RULE_continueStatement = 155,
+ RULE_yieldStatement = 156, RULE_yieldEachStatement = 157, RULE_assertStatement = 158,
+ RULE_assertion = 159, RULE_topLevelDefinition = 160, RULE_getOrSet = 161,
+ RULE_libraryDefinition = 162, RULE_scriptTag = 163, RULE_libraryName = 164,
+ RULE_importOrExport = 165, RULE_dottedIdentifierList = 166, RULE_libraryimport = 167,
+ RULE_importSpecification = 168, RULE_combinator = 169, RULE_identifierList = 170,
+ RULE_libraryExport = 171, RULE_partDirective = 172, RULE_partHeader = 173,
+ RULE_partDeclaration = 174, RULE_uri = 175, RULE_configurableUri = 176,
+ RULE_configurationUri = 177, RULE_uriTest = 178, RULE_dtype = 179, RULE_typeName = 180,
+ RULE_typeArguments = 181, RULE_typeList = 182, RULE_typeAlias = 183, RULE_typeAliasBody = 184,
+ RULE_functionTypeAlias = 185, RULE_functionPrefix = 186;
private static String[] makeRuleNames() {
return new String[] {
"compilationUnit", "variableDeclaration", "declaredIdentifier", "finalConstVarOrType",
@@ -124,8 +109,8 @@ private static String[] makeRuleNames() {
"optionalFormalParameters", "optionalPositionalFormalParameters", "namedFormalParameters",
"normalFormalParameter", "functionFormalParameter", "simpleFormalParameter",
"fieldFormalParameter", "defaultFormalParameter", "defaultNamedParameter",
- "classDefinition", "mixins", "classMemberDefinition", "methodSignature",
- "declaration", "staticFinalDeclarationList", "staticFinalDeclaration",
+ "classModifier", "classDefinition", "mixins", "classMemberDefinition",
+ "methodSignature", "declaration", "staticFinalDeclarationList", "staticFinalDeclaration",
"operatorSignature", "operator", "binaryOperator", "getterSignature",
"setterSignature", "constructorSignature", "redirection", "initializers",
"initializerListEntry", "fieldInitializer", "factoryConstructorSignature",
@@ -133,6 +118,9 @@ private static String[] makeRuleNames() {
"superclass", "interfaces", "mixinApplicationClass", "mixinApplication",
"enumType", "enumEntry", "typeParameter", "typeParameters", "metadata",
"expression", "expressionWithoutCascade", "expressionList", "primary",
+ "recordLiteral", "recordField", "recordType", "recordTypeField", "switchExpression",
+ "switchExpressionCase", "guardedPattern", "pattern", "constantPattern",
+ "typeTestPattern", "wildcardPattern", "variablePattern", "parenthesizedPattern",
"literal", "nullLiteral", "numericLiteral", "booleanLiteral", "stringLiteral",
"stringInterpolation", "symbolLiteral", "listLiteral", "mapLiteral",
"mapLiteralEntry", "throwExpression", "throwExpressionWithoutCascade",
@@ -168,19 +156,20 @@ private static String[] makeLiteralNames() {
return new String[] {
null, "','", "'final'", "'const'", "'var'", "'='", "'void'", "'async'",
"'=>'", "';'", "'async*'", "'sync*'", "'{'", "'}'", "'('", "')'", "'['",
- "']'", "'covariant'", "'this'", "'.'", "':'", "'abstract'", "'class'",
- "'with'", "'static'", "'external'", "'operator'", "'~'", "'[]'", "'[]='",
- "'=='", "'get'", "'set'", "'super'", "'factory'", "'extends'", "'implements'",
- "'enum'", "'<'", "'>'", "'@'", "'null'", "'true'", "'false'", "'$'",
- "'${'", "'#'", "'throw'", "'new'", "'..'", "'*='", "'/='", "'~/='", "'%='",
- "'+='", "'<<='", "'>>='", "'>>>='", "'&='", "'^='", "'|='", "'??='",
- "'?'", "'??'", "'||'", "'&&'", "'!='", "'>='", "'<='", "'|'", "'^'",
- "'&'", "'<<'", "'>>'", "'>>>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~/'",
- "'!'", "'await'", "'++'", "'--'", "'?.'", "'is'", "'as'", "'if'", "'else'",
- "'for'", "'in'", "'while'", "'do'", "'switch'", "'case'", "'default'",
- "'rethrow'", "'try'", "'on'", "'catch'", "'finally'", "'return'", "'break'",
- "'continue'", "'yield'", "'yield*'", "'assert'", "'#!'", "'library'",
- "'import'", "'show'", "'hide'", "'export'", "'part'", "'of'", "'typedef'"
+ "']'", "'covariant'", "'this'", "'.'", "':'", "'sealed'", "'base'", "'interface'",
+ "'mixin'", "'abstract'", "'class'", "'with'", "'static'", "'external'",
+ "'operator'", "'~'", "'[]'", "'[]='", "'=='", "'get'", "'set'", "'super'",
+ "'factory'", "'extends'", "'implements'", "'enum'", "'<'", "'>'", "'@'",
+ "'switch'", "'when'", "'_'", "'null'", "'true'", "'false'", "'$'", "'${'",
+ "'#'", "'throw'", "'new'", "'..'", "'*='", "'/='", "'~/='", "'%='", "'+='",
+ "'<<='", "'>>='", "'>>>='", "'&='", "'^='", "'|='", "'??='", "'?'", "'??'",
+ "'||'", "'&&'", "'!='", "'>='", "'<='", "'|'", "'^'", "'&'", "'<<'",
+ "'>>'", "'>>>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~/'", "'!'", "'await'",
+ "'++'", "'--'", "'?.'", "'is'", "'as'", "'if'", "'else'", "'case'", "'for'",
+ "'in'", "'while'", "'do'", "'default'", "'rethrow'", "'try'", "'on'",
+ "'catch'", "'finally'", "'return'", "'break'", "'continue'", "'yield'",
+ "'yield*'", "'assert'", "'#!'", "'library'", "'import'", "'show'", "'hide'",
+ "'export'", "'part'", "'of'", "'typedef'"
};
}
private static final String[] _LITERAL_NAMES = makeLiteralNames();
@@ -195,9 +184,9 @@ private static String[] makeSymbolicNames() {
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null, "WHITESPACE",
- "NUMBER", "HEX_NUMBER", "SingleLineString", "MultiLineString", "NEWLINE",
- "IDENTIFIER", "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, "WHITESPACE", "NUMBER", "HEX_NUMBER", "SingleLineString",
+ "MultiLineString", "NEWLINE", "IDENTIFIER", "SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
};
}
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
@@ -281,20 +270,20 @@ public final CompilationUnitContext compilationUnit() throws RecognitionExceptio
CompilationUnitContext _localctx = new CompilationUnitContext(_ctx, getState());
enterRule(_localctx, 0, RULE_compilationUnit);
try {
- setState(348);
+ setState(376);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(346);
+ setState(374);
libraryDefinition();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(347);
+ setState(375);
partDeclaration();
}
break;
@@ -347,21 +336,21 @@ public final VariableDeclarationContext variableDeclaration() throws Recognition
try {
enterOuterAlt(_localctx, 1);
{
- setState(350);
+ setState(378);
declaredIdentifier();
- setState(355);
+ setState(383);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(351);
+ setState(379);
match(T__0);
- setState(352);
+ setState(380);
identifier();
}
}
- setState(357);
+ setState(385);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -413,11 +402,11 @@ public final DeclaredIdentifierContext declaredIdentifier() throws RecognitionEx
try {
enterOuterAlt(_localctx, 1);
{
- setState(358);
+ setState(386);
metadata();
- setState(359);
+ setState(387);
finalConstVarOrType();
- setState(360);
+ setState(388);
identifier();
}
}
@@ -462,20 +451,20 @@ public final FinalConstVarOrTypeContext finalConstVarOrType() throws Recognition
FinalConstVarOrTypeContext _localctx = new FinalConstVarOrTypeContext(_ctx, getState());
enterRule(_localctx, 6, RULE_finalConstVarOrType);
try {
- setState(371);
+ setState(399);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__1:
enterOuterAlt(_localctx, 1);
{
- setState(362);
+ setState(390);
match(T__1);
- setState(364);
+ setState(392);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
case 1:
{
- setState(363);
+ setState(391);
dtype();
}
break;
@@ -485,14 +474,14 @@ public final FinalConstVarOrTypeContext finalConstVarOrType() throws Recognition
case T__2:
enterOuterAlt(_localctx, 2);
{
- setState(366);
+ setState(394);
match(T__2);
- setState(368);
+ setState(396);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
case 1:
{
- setState(367);
+ setState(395);
dtype();
}
break;
@@ -501,10 +490,11 @@ public final FinalConstVarOrTypeContext finalConstVarOrType() throws Recognition
break;
case T__3:
case T__5:
+ case T__13:
case IDENTIFIER:
enterOuterAlt(_localctx, 3);
{
- setState(370);
+ setState(398);
varOrType();
}
break;
@@ -550,21 +540,22 @@ public final VarOrTypeContext varOrType() throws RecognitionException {
VarOrTypeContext _localctx = new VarOrTypeContext(_ctx, getState());
enterRule(_localctx, 8, RULE_varOrType);
try {
- setState(375);
+ setState(403);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__3:
enterOuterAlt(_localctx, 1);
{
- setState(373);
+ setState(401);
match(T__3);
}
break;
case T__5:
+ case T__13:
case IDENTIFIER:
enterOuterAlt(_localctx, 2);
{
- setState(374);
+ setState(402);
dtype();
}
break;
@@ -622,33 +613,33 @@ public final InitializedVariableDeclarationContext initializedVariableDeclaratio
try {
enterOuterAlt(_localctx, 1);
{
- setState(377);
+ setState(405);
declaredIdentifier();
- setState(380);
+ setState(408);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__4) {
{
- setState(378);
+ setState(406);
match(T__4);
- setState(379);
+ setState(407);
expression();
}
}
- setState(386);
+ setState(414);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(382);
+ setState(410);
match(T__0);
- setState(383);
+ setState(411);
initializedIdentifier();
}
}
- setState(388);
+ setState(416);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -698,16 +689,16 @@ public final InitializedIdentifierContext initializedIdentifier() throws Recogni
try {
enterOuterAlt(_localctx, 1);
{
- setState(389);
+ setState(417);
identifier();
- setState(392);
+ setState(420);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__4) {
{
- setState(390);
+ setState(418);
match(T__4);
- setState(391);
+ setState(419);
expression();
}
}
@@ -758,21 +749,21 @@ public final InitializedIdentifierListContext initializedIdentifierList() throws
try {
enterOuterAlt(_localctx, 1);
{
- setState(394);
+ setState(422);
initializedIdentifier();
- setState(399);
+ setState(427);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(395);
+ setState(423);
match(T__0);
- setState(396);
+ setState(424);
initializedIdentifier();
}
}
- setState(401);
+ setState(429);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -827,21 +818,21 @@ public final FunctionSignatureContext functionSignature() throws RecognitionExce
try {
enterOuterAlt(_localctx, 1);
{
- setState(402);
+ setState(430);
metadata();
- setState(404);
+ setState(432);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
case 1:
{
- setState(403);
+ setState(431);
returnType();
}
break;
}
- setState(406);
+ setState(434);
identifier();
- setState(407);
+ setState(435);
formalParameterPart();
}
}
@@ -889,17 +880,17 @@ public final FormalParameterPartContext formalParameterPart() throws Recognition
try {
enterOuterAlt(_localctx, 1);
{
- setState(410);
+ setState(438);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__38) {
+ if (_la==T__42) {
{
- setState(409);
+ setState(437);
typeParameters();
}
}
- setState(412);
+ setState(440);
formalParameterList();
}
}
@@ -941,20 +932,20 @@ public final ReturnTypeContext returnType() throws RecognitionException {
ReturnTypeContext _localctx = new ReturnTypeContext(_ctx, getState());
enterRule(_localctx, 20, RULE_returnType);
try {
- setState(416);
+ setState(444);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(414);
+ setState(442);
match(T__5);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(415);
+ setState(443);
dtype();
}
break;
@@ -1002,39 +993,39 @@ public final FunctionBodyContext functionBody() throws RecognitionException {
enterRule(_localctx, 22, RULE_functionBody);
int _la;
try {
- setState(429);
+ setState(457);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(419);
+ setState(447);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__6) {
{
- setState(418);
+ setState(446);
match(T__6);
}
}
- setState(421);
+ setState(449);
match(T__7);
- setState(422);
+ setState(450);
expression();
- setState(423);
+ setState(451);
match(T__8);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(426);
+ setState(454);
_errHandler.sync(this);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__6) | (1L << T__9) | (1L << T__10))) != 0)) {
{
- setState(425);
+ setState(453);
_la = _input.LA(1);
if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__6) | (1L << T__9) | (1L << T__10))) != 0)) ) {
_errHandler.recoverInline(this);
@@ -1047,7 +1038,7 @@ public final FunctionBodyContext functionBody() throws RecognitionException {
}
}
- setState(428);
+ setState(456);
block();
}
break;
@@ -1093,11 +1084,11 @@ public final BlockContext block() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(431);
+ setState(459);
match(T__11);
- setState(432);
+ setState(460);
statements();
- setState(433);
+ setState(461);
match(T__12);
}
}
@@ -1143,60 +1134,60 @@ public final FormalParameterListContext formalParameterList() throws Recognition
enterRule(_localctx, 26, RULE_formalParameterList);
int _la;
try {
- setState(453);
+ setState(481);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(435);
+ setState(463);
match(T__13);
- setState(436);
+ setState(464);
match(T__14);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(437);
+ setState(465);
match(T__13);
- setState(438);
+ setState(466);
normalFormalParameters();
- setState(439);
+ setState(467);
match(T__14);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(441);
+ setState(469);
match(T__13);
- setState(442);
+ setState(470);
normalFormalParameters();
- setState(445);
+ setState(473);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(443);
+ setState(471);
match(T__0);
- setState(444);
+ setState(472);
optionalFormalParameters();
}
}
- setState(447);
+ setState(475);
match(T__14);
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(449);
+ setState(477);
match(T__13);
- setState(450);
+ setState(478);
optionalFormalParameters();
- setState(451);
+ setState(479);
match(T__14);
}
break;
@@ -1246,23 +1237,23 @@ public final NormalFormalParametersContext normalFormalParameters() throws Recog
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(455);
+ setState(483);
normalFormalParameter();
- setState(460);
+ setState(488);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,18,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(456);
+ setState(484);
match(T__0);
- setState(457);
+ setState(485);
normalFormalParameter();
}
- }
+ }
}
- setState(462);
+ setState(490);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,18,_ctx);
}
@@ -1309,20 +1300,20 @@ public final OptionalFormalParametersContext optionalFormalParameters() throws R
OptionalFormalParametersContext _localctx = new OptionalFormalParametersContext(_ctx, getState());
enterRule(_localctx, 30, RULE_optionalFormalParameters);
try {
- setState(465);
+ setState(493);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__15:
enterOuterAlt(_localctx, 1);
{
- setState(463);
+ setState(491);
optionalPositionalFormalParameters();
}
break;
case T__11:
enterOuterAlt(_localctx, 2);
{
- setState(464);
+ setState(492);
namedFormalParameters();
}
break;
@@ -1375,39 +1366,39 @@ public final OptionalPositionalFormalParametersContext optionalPositionalFormalP
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(467);
+ setState(495);
match(T__15);
- setState(468);
+ setState(496);
defaultFormalParameter();
- setState(473);
+ setState(501);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(469);
+ setState(497);
match(T__0);
- setState(470);
+ setState(498);
defaultFormalParameter();
}
- }
+ }
}
- setState(475);
+ setState(503);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
}
- setState(477);
+ setState(505);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(476);
+ setState(504);
match(T__0);
}
}
- setState(479);
+ setState(507);
match(T__16);
}
}
@@ -1456,39 +1447,39 @@ public final NamedFormalParametersContext namedFormalParameters() throws Recogni
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(481);
+ setState(509);
match(T__11);
- setState(482);
+ setState(510);
defaultNamedParameter();
- setState(487);
+ setState(515);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(483);
+ setState(511);
match(T__0);
- setState(484);
+ setState(512);
defaultNamedParameter();
}
- }
+ }
}
- setState(489);
+ setState(517);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,22,_ctx);
}
- setState(491);
+ setState(519);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(490);
+ setState(518);
match(T__0);
}
}
- setState(493);
+ setState(521);
match(T__12);
}
}
@@ -1536,27 +1527,27 @@ public final NormalFormalParameterContext normalFormalParameter() throws Recogni
NormalFormalParameterContext _localctx = new NormalFormalParameterContext(_ctx, getState());
enterRule(_localctx, 36, RULE_normalFormalParameter);
try {
- setState(498);
+ setState(526);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(495);
+ setState(523);
functionFormalParameter();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(496);
+ setState(524);
fieldFormalParameter();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(497);
+ setState(525);
simpleFormalParameter();
}
break;
@@ -1612,31 +1603,31 @@ public final FunctionFormalParameterContext functionFormalParameter() throws Rec
try {
enterOuterAlt(_localctx, 1);
{
- setState(500);
+ setState(528);
metadata();
- setState(502);
+ setState(530);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__17) {
{
- setState(501);
+ setState(529);
match(T__17);
}
}
- setState(505);
+ setState(533);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
case 1:
{
- setState(504);
+ setState(532);
returnType();
}
break;
}
- setState(507);
+ setState(535);
identifier();
- setState(508);
+ setState(536);
formalParameterPart();
}
}
@@ -1685,32 +1676,32 @@ public final SimpleFormalParameterContext simpleFormalParameter() throws Recogni
enterRule(_localctx, 40, RULE_simpleFormalParameter);
int _la;
try {
- setState(517);
+ setState(545);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(510);
+ setState(538);
declaredIdentifier();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(511);
+ setState(539);
metadata();
- setState(513);
+ setState(541);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__17) {
{
- setState(512);
+ setState(540);
match(T__17);
}
}
- setState(515);
+ setState(543);
identifier();
}
break;
@@ -1766,30 +1757,30 @@ public final FieldFormalParameterContext fieldFormalParameter() throws Recogniti
try {
enterOuterAlt(_localctx, 1);
{
- setState(519);
+ setState(547);
metadata();
- setState(521);
+ setState(549);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5))) != 0) || _la==IDENTIFIER) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__13))) != 0) || _la==IDENTIFIER) {
{
- setState(520);
+ setState(548);
finalConstVarOrType();
}
}
- setState(523);
+ setState(551);
match(T__18);
- setState(524);
+ setState(552);
match(T__19);
- setState(525);
+ setState(553);
identifier();
- setState(527);
+ setState(555);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__13 || _la==T__38) {
+ if (_la==T__13 || _la==T__42) {
{
- setState(526);
+ setState(554);
formalParameterPart();
}
}
@@ -1840,16 +1831,16 @@ public final DefaultFormalParameterContext defaultFormalParameter() throws Recog
try {
enterOuterAlt(_localctx, 1);
{
- setState(529);
+ setState(557);
normalFormalParameter();
- setState(532);
+ setState(560);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__4) {
{
- setState(530);
+ setState(558);
match(T__4);
- setState(531);
+ setState(559);
expression();
}
}
@@ -1898,22 +1889,22 @@ public final DefaultNamedParameterContext defaultNamedParameter() throws Recogni
enterRule(_localctx, 46, RULE_defaultNamedParameter);
int _la;
try {
- setState(544);
+ setState(572);
_errHandler.sync(this);
switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(534);
+ setState(562);
normalFormalParameter();
- setState(537);
+ setState(565);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__4) {
{
- setState(535);
+ setState(563);
match(T__4);
- setState(536);
+ setState(564);
expression();
}
}
@@ -1923,16 +1914,16 @@ public final DefaultNamedParameterContext defaultNamedParameter() throws Recogni
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(539);
+ setState(567);
normalFormalParameter();
- setState(542);
+ setState(570);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__20) {
{
- setState(540);
+ setState(568);
match(T__20);
- setState(541);
+ setState(569);
expression();
}
}
@@ -1952,6 +1943,56 @@ public final DefaultNamedParameterContext defaultNamedParameter() throws Recogni
return _localctx;
}
+ public static class ClassModifierContext extends ParserRuleContext {
+ public ClassModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterClassModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitClassModifier(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitClassModifier(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ClassModifierContext classModifier() throws RecognitionException {
+ ClassModifierContext _localctx = new ClassModifierContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_classModifier);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(574);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24))) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
public static class ClassDefinitionContext extends ParserRuleContext {
public List metadata() {
return getRuleContexts(MetadataContext.class);
@@ -1962,6 +2003,12 @@ public MetadataContext metadata(int i) {
public IdentifierContext identifier() {
return getRuleContext(IdentifierContext.class,0);
}
+ public List classModifier() {
+ return getRuleContexts(ClassModifierContext.class);
+ }
+ public ClassModifierContext classModifier(int i) {
+ return getRuleContext(ClassModifierContext.class,i);
+ }
public TypeParametersContext typeParameters() {
return getRuleContext(TypeParametersContext.class,0);
}
@@ -2004,111 +2051,220 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ClassDefinitionContext classDefinition() throws RecognitionException {
ClassDefinitionContext _localctx = new ClassDefinitionContext(_ctx, getState());
- enterRule(_localctx, 48, RULE_classDefinition);
+ enterRule(_localctx, 50, RULE_classDefinition);
int _la;
try {
- setState(582);
+ setState(653);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(546);
+ setState(576);
metadata();
- setState(548);
+ setState(580);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24))) != 0)) {
+ {
+ {
+ setState(577);
+ classModifier();
+ }
+ }
+ setState(582);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(584);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__21) {
+ if (_la==T__25) {
{
- setState(547);
- match(T__21);
+ setState(583);
+ match(T__25);
}
}
- setState(550);
- match(T__22);
- setState(551);
+ setState(586);
+ match(T__26);
+ setState(587);
identifier();
- setState(553);
+ setState(589);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__38) {
+ if (_la==T__42) {
{
- setState(552);
+ setState(588);
typeParameters();
}
}
- setState(556);
+ setState(592);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__35) {
+ if (_la==T__39) {
{
- setState(555);
+ setState(591);
superclass();
}
}
- setState(559);
+ setState(595);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__23) {
+ if (_la==T__27) {
{
- setState(558);
+ setState(594);
mixins();
}
}
- setState(562);
+ setState(598);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__36) {
+ if (_la==T__40) {
{
- setState(561);
+ setState(597);
interfaces();
}
}
- setState(564);
+ setState(600);
match(T__11);
- setState(570);
+ setState(606);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__17) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__31) | (1L << T__32) | (1L << T__34) | (1L << T__40))) != 0) || _la==IDENTIFIER) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__13) | (1L << T__17) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << T__35) | (1L << T__36) | (1L << T__38) | (1L << T__44))) != 0) || _la==IDENTIFIER) {
{
{
- setState(565);
+ setState(601);
metadata();
- setState(566);
+ setState(602);
classMemberDefinition();
}
}
- setState(572);
+ setState(608);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(573);
+ setState(609);
match(T__12);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(575);
+ setState(611);
metadata();
- setState(577);
+ setState(613);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__21) {
+ if (_la==T__25) {
{
- setState(576);
- match(T__21);
+ setState(612);
+ match(T__25);
}
}
- setState(579);
- match(T__22);
- setState(580);
+ setState(618);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24))) != 0)) {
+ {
+ {
+ setState(615);
+ classModifier();
+ }
+ }
+ setState(620);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(621);
+ match(T__26);
+ setState(622);
+ identifier();
+ setState(624);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__42) {
+ {
+ setState(623);
+ typeParameters();
+ }
+ }
+
+ setState(627);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__39) {
+ {
+ setState(626);
+ superclass();
+ }
+ }
+
+ setState(630);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__27) {
+ {
+ setState(629);
+ mixins();
+ }
+ }
+
+ setState(633);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__40) {
+ {
+ setState(632);
+ interfaces();
+ }
+ }
+
+ setState(635);
+ match(T__11);
+ setState(641);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__13) | (1L << T__17) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << T__35) | (1L << T__36) | (1L << T__38) | (1L << T__44))) != 0) || _la==IDENTIFIER) {
+ {
+ {
+ setState(636);
+ metadata();
+ setState(637);
+ classMemberDefinition();
+ }
+ }
+ setState(643);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(644);
+ match(T__12);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(646);
+ metadata();
+ setState(648);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__25) {
+ {
+ setState(647);
+ match(T__25);
+ }
+ }
+
+ setState(650);
+ match(T__26);
+ setState(651);
mixinApplicationClass();
}
break;
@@ -2150,13 +2306,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MixinsContext mixins() throws RecognitionException {
MixinsContext _localctx = new MixinsContext(_ctx, getState());
- enterRule(_localctx, 50, RULE_mixins);
+ enterRule(_localctx, 52, RULE_mixins);
try {
enterOuterAlt(_localctx, 1);
{
- setState(584);
- match(T__23);
- setState(585);
+ setState(655);
+ match(T__27);
+ setState(656);
typeList();
}
}
@@ -2202,26 +2358,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ClassMemberDefinitionContext classMemberDefinition() throws RecognitionException {
ClassMemberDefinitionContext _localctx = new ClassMemberDefinitionContext(_ctx, getState());
- enterRule(_localctx, 52, RULE_classMemberDefinition);
+ enterRule(_localctx, 54, RULE_classMemberDefinition);
try {
- setState(593);
+ setState(664);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(587);
+ setState(658);
declaration();
- setState(588);
+ setState(659);
match(T__8);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(590);
+ setState(661);
methodSignature();
- setState(591);
+ setState(662);
functionBody();
}
break;
@@ -2281,23 +2437,23 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MethodSignatureContext methodSignature() throws RecognitionException {
MethodSignatureContext _localctx = new MethodSignatureContext(_ctx, getState());
- enterRule(_localctx, 54, RULE_methodSignature);
+ enterRule(_localctx, 56, RULE_methodSignature);
int _la;
try {
- setState(613);
+ setState(684);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(595);
+ setState(666);
constructorSignature();
- setState(597);
+ setState(668);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__20) {
{
- setState(596);
+ setState(667);
initializers();
}
}
@@ -2307,65 +2463,65 @@ public final MethodSignatureContext methodSignature() throws RecognitionExceptio
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(599);
+ setState(670);
factoryConstructorSignature();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(601);
+ setState(672);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__24) {
+ if (_la==T__28) {
{
- setState(600);
- match(T__24);
+ setState(671);
+ match(T__28);
}
}
- setState(603);
+ setState(674);
functionSignature();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(605);
+ setState(676);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__24) {
+ if (_la==T__28) {
{
- setState(604);
- match(T__24);
+ setState(675);
+ match(T__28);
}
}
- setState(607);
+ setState(678);
getterSignature();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(609);
+ setState(680);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__24) {
+ if (_la==T__28) {
{
- setState(608);
- match(T__24);
+ setState(679);
+ match(T__28);
}
}
- setState(611);
+ setState(682);
setterSignature();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(612);
+ setState(683);
operatorSignature();
}
break;
@@ -2437,29 +2593,29 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final DeclarationContext declaration() throws RecognitionException {
DeclarationContext _localctx = new DeclarationContext(_ctx, getState());
- enterRule(_localctx, 56, RULE_declaration);
+ enterRule(_localctx, 58, RULE_declaration);
int _la;
try {
- setState(673);
+ setState(744);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(615);
+ setState(686);
constantConstructorSignature();
- setState(618);
+ setState(689);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,49,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,57,_ctx) ) {
case 1:
{
- setState(616);
+ setState(687);
redirection();
}
break;
case 2:
{
- setState(617);
+ setState(688);
initializers();
}
break;
@@ -2469,20 +2625,20 @@ public final DeclarationContext declaration() throws RecognitionException {
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(620);
+ setState(691);
constructorSignature();
- setState(623);
+ setState(694);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
case 1:
{
- setState(621);
+ setState(692);
redirection();
}
break;
case 2:
{
- setState(622);
+ setState(693);
initializers();
}
break;
@@ -2492,125 +2648,125 @@ public final DeclarationContext declaration() throws RecognitionException {
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(625);
- match(T__25);
- setState(626);
+ setState(696);
+ match(T__29);
+ setState(697);
constantConstructorSignature();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(627);
- match(T__25);
- setState(628);
+ setState(698);
+ match(T__29);
+ setState(699);
constructorSignature();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(633);
+ setState(704);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__25) {
+ if (_la==T__29) {
{
- setState(629);
- match(T__25);
- setState(631);
+ setState(700);
+ match(T__29);
+ setState(702);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__24) {
+ if (_la==T__28) {
{
- setState(630);
- match(T__24);
+ setState(701);
+ match(T__28);
}
}
}
}
- setState(635);
+ setState(706);
getterSignature();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(640);
+ setState(711);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__25) {
+ if (_la==T__29) {
{
- setState(636);
- match(T__25);
- setState(638);
+ setState(707);
+ match(T__29);
+ setState(709);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__24) {
+ if (_la==T__28) {
{
- setState(637);
- match(T__24);
+ setState(708);
+ match(T__28);
}
}
}
}
- setState(642);
+ setState(713);
setterSignature();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(644);
+ setState(715);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__25) {
+ if (_la==T__29) {
{
- setState(643);
- match(T__25);
+ setState(714);
+ match(T__29);
}
}
- setState(646);
+ setState(717);
operatorSignature();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
- setState(651);
+ setState(722);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__25) {
+ if (_la==T__29) {
{
- setState(647);
- match(T__25);
- setState(649);
+ setState(718);
+ match(T__29);
+ setState(720);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__24) {
+ if (_la==T__28) {
{
- setState(648);
- match(T__24);
+ setState(719);
+ match(T__28);
}
}
}
}
- setState(653);
+ setState(724);
functionSignature();
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
- setState(654);
- match(T__24);
- setState(655);
+ setState(725);
+ match(T__28);
+ setState(726);
_la = _input.LA(1);
if ( !(_la==T__1 || _la==T__2) ) {
_errHandler.recoverInline(this);
@@ -2620,50 +2776,50 @@ public final DeclarationContext declaration() throws RecognitionException {
_errHandler.reportMatch(this);
consume();
}
- setState(657);
+ setState(728);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) {
case 1:
{
- setState(656);
+ setState(727);
dtype();
}
break;
}
- setState(659);
+ setState(730);
staticFinalDeclarationList();
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
- setState(660);
+ setState(731);
match(T__1);
- setState(662);
+ setState(733);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
case 1:
{
- setState(661);
+ setState(732);
dtype();
}
break;
}
- setState(664);
+ setState(735);
initializedIdentifierList();
}
break;
case 11:
enterOuterAlt(_localctx, 11);
{
- setState(666);
+ setState(737);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__17 || _la==T__24) {
+ if (_la==T__17 || _la==T__28) {
{
- setState(665);
+ setState(736);
_la = _input.LA(1);
- if ( !(_la==T__17 || _la==T__24) ) {
+ if ( !(_la==T__17 || _la==T__28) ) {
_errHandler.recoverInline(this);
}
else {
@@ -2674,26 +2830,27 @@ public final DeclarationContext declaration() throws RecognitionException {
}
}
- setState(670);
+ setState(741);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__3:
{
- setState(668);
+ setState(739);
match(T__3);
}
break;
case T__5:
+ case T__13:
case IDENTIFIER:
{
- setState(669);
+ setState(740);
dtype();
}
break;
default:
throw new NoViableAltException(this);
}
- setState(672);
+ setState(743);
initializedIdentifierList();
}
break;
@@ -2738,26 +2895,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StaticFinalDeclarationListContext staticFinalDeclarationList() throws RecognitionException {
StaticFinalDeclarationListContext _localctx = new StaticFinalDeclarationListContext(_ctx, getState());
- enterRule(_localctx, 58, RULE_staticFinalDeclarationList);
+ enterRule(_localctx, 60, RULE_staticFinalDeclarationList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(675);
+ setState(746);
staticFinalDeclaration();
- setState(680);
+ setState(751);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(676);
+ setState(747);
match(T__0);
- setState(677);
+ setState(748);
staticFinalDeclaration();
}
}
- setState(682);
+ setState(753);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -2802,15 +2959,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StaticFinalDeclarationContext staticFinalDeclaration() throws RecognitionException {
StaticFinalDeclarationContext _localctx = new StaticFinalDeclarationContext(_ctx, getState());
- enterRule(_localctx, 60, RULE_staticFinalDeclaration);
+ enterRule(_localctx, 62, RULE_staticFinalDeclaration);
try {
enterOuterAlt(_localctx, 1);
{
- setState(683);
+ setState(754);
identifier();
- setState(684);
+ setState(755);
match(T__4);
- setState(685);
+ setState(756);
expression();
}
}
@@ -2856,26 +3013,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final OperatorSignatureContext operatorSignature() throws RecognitionException {
OperatorSignatureContext _localctx = new OperatorSignatureContext(_ctx, getState());
- enterRule(_localctx, 62, RULE_operatorSignature);
+ enterRule(_localctx, 64, RULE_operatorSignature);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(688);
+ setState(759);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__5 || _la==IDENTIFIER) {
+ if (_la==T__5 || _la==T__13 || _la==IDENTIFIER) {
{
- setState(687);
+ setState(758);
returnType();
}
}
- setState(690);
- match(T__26);
- setState(691);
+ setState(761);
+ match(T__30);
+ setState(762);
operator();
- setState(692);
+ setState(763);
formalParameterList();
}
}
@@ -2915,28 +3072,21 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final OperatorContext operator() throws RecognitionException {
OperatorContext _localctx = new OperatorContext(_ctx, getState());
- enterRule(_localctx, 64, RULE_operator);
+ enterRule(_localctx, 66, RULE_operator);
try {
- setState(698);
+ setState(769);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__27:
+ case T__31:
enterOuterAlt(_localctx, 1);
{
- setState(694);
- match(T__27);
+ setState(765);
+ match(T__31);
}
break;
- case T__30:
- case T__38:
- case T__39:
- case T__67:
- case T__68:
- case T__69:
- case T__70:
- case T__71:
- case T__72:
- case T__73:
+ case T__34:
+ case T__42:
+ case T__43:
case T__74:
case T__75:
case T__76:
@@ -2944,24 +3094,31 @@ public final OperatorContext operator() throws RecognitionException {
case T__78:
case T__79:
case T__80:
+ case T__81:
+ case T__82:
+ case T__83:
+ case T__84:
+ case T__85:
+ case T__86:
+ case T__87:
enterOuterAlt(_localctx, 2);
{
- setState(695);
+ setState(766);
binaryOperator();
}
break;
- case T__28:
+ case T__32:
enterOuterAlt(_localctx, 3);
{
- setState(696);
- match(T__28);
+ setState(767);
+ match(T__32);
}
break;
- case T__29:
+ case T__33:
enterOuterAlt(_localctx, 4);
{
- setState(697);
- match(T__29);
+ setState(768);
+ match(T__33);
}
break;
default:
@@ -3016,61 +3173,61 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BinaryOperatorContext binaryOperator() throws RecognitionException {
BinaryOperatorContext _localctx = new BinaryOperatorContext(_ctx, getState());
- enterRule(_localctx, 66, RULE_binaryOperator);
+ enterRule(_localctx, 68, RULE_binaryOperator);
try {
- setState(706);
+ setState(777);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__77:
- case T__78:
- case T__79:
- case T__80:
+ case T__84:
+ case T__85:
+ case T__86:
+ case T__87:
enterOuterAlt(_localctx, 1);
{
- setState(700);
+ setState(771);
multiplicativeOperator();
}
break;
- case T__75:
- case T__76:
+ case T__82:
+ case T__83:
enterOuterAlt(_localctx, 2);
{
- setState(701);
+ setState(772);
additiveOperator();
}
break;
- case T__72:
- case T__73:
- case T__74:
+ case T__79:
+ case T__80:
+ case T__81:
enterOuterAlt(_localctx, 3);
{
- setState(702);
+ setState(773);
shiftOperator();
}
break;
- case T__38:
- case T__39:
- case T__67:
- case T__68:
+ case T__42:
+ case T__43:
+ case T__74:
+ case T__75:
enterOuterAlt(_localctx, 4);
{
- setState(703);
+ setState(774);
relationalOperator();
}
break;
- case T__30:
+ case T__34:
enterOuterAlt(_localctx, 5);
{
- setState(704);
- match(T__30);
+ setState(775);
+ match(T__34);
}
break;
- case T__69:
- case T__70:
- case T__71:
+ case T__76:
+ case T__77:
+ case T__78:
enterOuterAlt(_localctx, 6);
{
- setState(705);
+ setState(776);
bitwiseOperator();
}
break;
@@ -3117,24 +3274,24 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final GetterSignatureContext getterSignature() throws RecognitionException {
GetterSignatureContext _localctx = new GetterSignatureContext(_ctx, getState());
- enterRule(_localctx, 68, RULE_getterSignature);
+ enterRule(_localctx, 70, RULE_getterSignature);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(709);
+ setState(780);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__5 || _la==IDENTIFIER) {
+ if (_la==T__5 || _la==T__13 || _la==IDENTIFIER) {
{
- setState(708);
+ setState(779);
returnType();
}
}
- setState(711);
- match(T__31);
- setState(712);
+ setState(782);
+ match(T__35);
+ setState(783);
identifier();
}
}
@@ -3180,26 +3337,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SetterSignatureContext setterSignature() throws RecognitionException {
SetterSignatureContext _localctx = new SetterSignatureContext(_ctx, getState());
- enterRule(_localctx, 70, RULE_setterSignature);
+ enterRule(_localctx, 72, RULE_setterSignature);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(715);
+ setState(786);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__5 || _la==IDENTIFIER) {
+ if (_la==T__5 || _la==T__13 || _la==IDENTIFIER) {
{
- setState(714);
+ setState(785);
returnType();
}
}
- setState(717);
- match(T__32);
- setState(718);
+ setState(788);
+ match(T__36);
+ setState(789);
identifier();
- setState(719);
+ setState(790);
formalParameterList();
}
}
@@ -3245,26 +3402,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ConstructorSignatureContext constructorSignature() throws RecognitionException {
ConstructorSignatureContext _localctx = new ConstructorSignatureContext(_ctx, getState());
- enterRule(_localctx, 72, RULE_constructorSignature);
+ enterRule(_localctx, 74, RULE_constructorSignature);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(721);
+ setState(792);
identifier();
- setState(724);
+ setState(795);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(722);
+ setState(793);
match(T__19);
- setState(723);
+ setState(794);
identifier();
}
}
- setState(726);
+ setState(797);
formalParameterList();
}
}
@@ -3307,28 +3464,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final RedirectionContext redirection() throws RecognitionException {
RedirectionContext _localctx = new RedirectionContext(_ctx, getState());
- enterRule(_localctx, 74, RULE_redirection);
+ enterRule(_localctx, 76, RULE_redirection);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(728);
+ setState(799);
match(T__20);
- setState(729);
+ setState(800);
match(T__18);
- setState(732);
+ setState(803);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(730);
+ setState(801);
match(T__19);
- setState(731);
+ setState(802);
identifier();
}
}
- setState(734);
+ setState(805);
arguments();
}
}
@@ -3371,28 +3528,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final InitializersContext initializers() throws RecognitionException {
InitializersContext _localctx = new InitializersContext(_ctx, getState());
- enterRule(_localctx, 76, RULE_initializers);
+ enterRule(_localctx, 78, RULE_initializers);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(736);
+ setState(807);
match(T__20);
- setState(737);
+ setState(808);
initializerListEntry();
- setState(742);
+ setState(813);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(738);
+ setState(809);
match(T__0);
- setState(739);
+ setState(810);
initializerListEntry();
}
}
- setState(744);
+ setState(815);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -3443,44 +3600,44 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final InitializerListEntryContext initializerListEntry() throws RecognitionException {
InitializerListEntryContext _localctx = new InitializerListEntryContext(_ctx, getState());
- enterRule(_localctx, 78, RULE_initializerListEntry);
+ enterRule(_localctx, 80, RULE_initializerListEntry);
try {
- setState(754);
+ setState(825);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,80,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(745);
- match(T__33);
- setState(746);
+ setState(816);
+ match(T__37);
+ setState(817);
arguments();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(747);
- match(T__33);
- setState(748);
+ setState(818);
+ match(T__37);
+ setState(819);
match(T__19);
- setState(749);
+ setState(820);
identifier();
- setState(750);
+ setState(821);
arguments();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(752);
+ setState(823);
fieldInitializer();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(753);
+ setState(824);
assertion();
}
break;
@@ -3531,40 +3688,40 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FieldInitializerContext fieldInitializer() throws RecognitionException {
FieldInitializerContext _localctx = new FieldInitializerContext(_ctx, getState());
- enterRule(_localctx, 80, RULE_fieldInitializer);
+ enterRule(_localctx, 82, RULE_fieldInitializer);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(758);
+ setState(829);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__18) {
{
- setState(756);
+ setState(827);
match(T__18);
- setState(757);
+ setState(828);
match(T__19);
}
}
- setState(760);
+ setState(831);
identifier();
- setState(761);
+ setState(832);
match(T__4);
- setState(762);
+ setState(833);
conditionalExpression();
- setState(766);
+ setState(837);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__49) {
+ while (_la==T__56) {
{
{
- setState(763);
+ setState(834);
cascadeSection();
}
}
- setState(768);
+ setState(839);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -3612,28 +3769,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FactoryConstructorSignatureContext factoryConstructorSignature() throws RecognitionException {
FactoryConstructorSignatureContext _localctx = new FactoryConstructorSignatureContext(_ctx, getState());
- enterRule(_localctx, 82, RULE_factoryConstructorSignature);
+ enterRule(_localctx, 84, RULE_factoryConstructorSignature);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(769);
- match(T__34);
- setState(770);
+ setState(840);
+ match(T__38);
+ setState(841);
identifier();
- setState(773);
+ setState(844);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(771);
+ setState(842);
match(T__19);
- setState(772);
+ setState(843);
identifier();
}
}
- setState(775);
+ setState(846);
formalParameterList();
}
}
@@ -3682,51 +3839,51 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final RedirectingFactoryConstructorSignatureContext redirectingFactoryConstructorSignature() throws RecognitionException {
RedirectingFactoryConstructorSignatureContext _localctx = new RedirectingFactoryConstructorSignatureContext(_ctx, getState());
- enterRule(_localctx, 84, RULE_redirectingFactoryConstructorSignature);
+ enterRule(_localctx, 86, RULE_redirectingFactoryConstructorSignature);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(778);
+ setState(849);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__2) {
{
- setState(777);
+ setState(848);
match(T__2);
}
}
- setState(780);
- match(T__34);
- setState(781);
+ setState(851);
+ match(T__38);
+ setState(852);
identifier();
- setState(784);
+ setState(855);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(782);
+ setState(853);
match(T__19);
- setState(783);
+ setState(854);
identifier();
}
}
- setState(786);
+ setState(857);
formalParameterList();
- setState(787);
+ setState(858);
match(T__4);
- setState(788);
+ setState(859);
dtype();
- setState(791);
+ setState(862);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(789);
+ setState(860);
match(T__19);
- setState(790);
+ setState(861);
identifier();
}
}
@@ -3772,15 +3929,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ConstantConstructorSignatureContext constantConstructorSignature() throws RecognitionException {
ConstantConstructorSignatureContext _localctx = new ConstantConstructorSignatureContext(_ctx, getState());
- enterRule(_localctx, 86, RULE_constantConstructorSignature);
+ enterRule(_localctx, 88, RULE_constantConstructorSignature);
try {
enterOuterAlt(_localctx, 1);
{
- setState(793);
+ setState(864);
match(T__2);
- setState(794);
+ setState(865);
qualified();
- setState(795);
+ setState(866);
formalParameterList();
}
}
@@ -3820,13 +3977,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SuperclassContext superclass() throws RecognitionException {
SuperclassContext _localctx = new SuperclassContext(_ctx, getState());
- enterRule(_localctx, 88, RULE_superclass);
+ enterRule(_localctx, 90, RULE_superclass);
try {
enterOuterAlt(_localctx, 1);
{
- setState(797);
- match(T__35);
- setState(798);
+ setState(868);
+ match(T__39);
+ setState(869);
dtype();
}
}
@@ -3866,13 +4023,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final InterfacesContext interfaces() throws RecognitionException {
InterfacesContext _localctx = new InterfacesContext(_ctx, getState());
- enterRule(_localctx, 90, RULE_interfaces);
+ enterRule(_localctx, 92, RULE_interfaces);
try {
enterOuterAlt(_localctx, 1);
{
- setState(800);
- match(T__36);
- setState(801);
+ setState(871);
+ match(T__40);
+ setState(872);
typeList();
}
}
@@ -3918,28 +4075,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MixinApplicationClassContext mixinApplicationClass() throws RecognitionException {
MixinApplicationClassContext _localctx = new MixinApplicationClassContext(_ctx, getState());
- enterRule(_localctx, 92, RULE_mixinApplicationClass);
+ enterRule(_localctx, 94, RULE_mixinApplicationClass);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(803);
+ setState(874);
identifier();
- setState(805);
+ setState(876);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__38) {
+ if (_la==T__42) {
{
- setState(804);
+ setState(875);
typeParameters();
}
}
- setState(807);
+ setState(878);
match(T__4);
- setState(808);
+ setState(879);
mixinApplication();
- setState(809);
+ setState(880);
match(T__8);
}
}
@@ -3985,21 +4142,21 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MixinApplicationContext mixinApplication() throws RecognitionException {
MixinApplicationContext _localctx = new MixinApplicationContext(_ctx, getState());
- enterRule(_localctx, 94, RULE_mixinApplication);
+ enterRule(_localctx, 96, RULE_mixinApplication);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(811);
+ setState(882);
dtype();
- setState(812);
+ setState(883);
mixins();
- setState(814);
+ setState(885);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__36) {
+ if (_la==T__40) {
{
- setState(813);
+ setState(884);
interfaces();
}
}
@@ -4051,51 +4208,51 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final EnumTypeContext enumType() throws RecognitionException {
EnumTypeContext _localctx = new EnumTypeContext(_ctx, getState());
- enterRule(_localctx, 96, RULE_enumType);
+ enterRule(_localctx, 98, RULE_enumType);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(816);
+ setState(887);
metadata();
- setState(817);
- match(T__37);
- setState(818);
+ setState(888);
+ match(T__41);
+ setState(889);
identifier();
- setState(819);
+ setState(890);
match(T__11);
- setState(820);
+ setState(891);
enumEntry();
- setState(825);
+ setState(896);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,81,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,89,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(821);
+ setState(892);
match(T__0);
- setState(822);
+ setState(893);
enumEntry();
}
- }
+ }
}
- setState(827);
+ setState(898);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,81,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,89,_ctx);
}
- setState(829);
+ setState(900);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(828);
+ setState(899);
match(T__0);
}
}
- setState(831);
+ setState(902);
match(T__12);
}
}
@@ -4138,13 +4295,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final EnumEntryContext enumEntry() throws RecognitionException {
EnumEntryContext _localctx = new EnumEntryContext(_ctx, getState());
- enterRule(_localctx, 98, RULE_enumEntry);
+ enterRule(_localctx, 100, RULE_enumEntry);
try {
enterOuterAlt(_localctx, 1);
{
- setState(833);
+ setState(904);
metadata();
- setState(834);
+ setState(905);
identifier();
}
}
@@ -4190,23 +4347,23 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeParameterContext typeParameter() throws RecognitionException {
TypeParameterContext _localctx = new TypeParameterContext(_ctx, getState());
- enterRule(_localctx, 100, RULE_typeParameter);
+ enterRule(_localctx, 102, RULE_typeParameter);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(836);
+ setState(907);
metadata();
- setState(837);
+ setState(908);
identifier();
- setState(840);
+ setState(911);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__35) {
+ if (_la==T__39) {
{
- setState(838);
- match(T__35);
- setState(839);
+ setState(909);
+ match(T__39);
+ setState(910);
dtype();
}
}
@@ -4252,33 +4409,33 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeParametersContext typeParameters() throws RecognitionException {
TypeParametersContext _localctx = new TypeParametersContext(_ctx, getState());
- enterRule(_localctx, 102, RULE_typeParameters);
+ enterRule(_localctx, 104, RULE_typeParameters);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(842);
- match(T__38);
- setState(843);
+ setState(913);
+ match(T__42);
+ setState(914);
typeParameter();
- setState(848);
+ setState(919);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(844);
+ setState(915);
match(T__0);
- setState(845);
+ setState(916);
typeParameter();
}
}
- setState(850);
+ setState(921);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(851);
- match(T__39);
+ setState(922);
+ match(T__43);
}
}
catch (RecognitionException re) {
@@ -4332,51 +4489,51 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MetadataContext metadata() throws RecognitionException {
MetadataContext _localctx = new MetadataContext(_ctx, getState());
- enterRule(_localctx, 104, RULE_metadata);
+ enterRule(_localctx, 106, RULE_metadata);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(864);
+ setState(935);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,87,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,95,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(853);
- match(T__40);
- setState(854);
+ setState(924);
+ match(T__44);
+ setState(925);
qualified();
- setState(857);
+ setState(928);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(855);
+ setState(926);
match(T__19);
- setState(856);
+ setState(927);
identifier();
}
}
- setState(860);
+ setState(931);
_errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==T__13) {
+ switch ( getInterpreter().adaptivePredict(_input,94,_ctx) ) {
+ case 1:
{
- setState(859);
+ setState(930);
arguments();
}
- }
-
+ break;
}
}
+ }
}
- setState(866);
+ setState(937);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,87,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,95,_ctx);
}
}
}
@@ -4434,39 +4591,39 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ExpressionContext expression() throws RecognitionException {
ExpressionContext _localctx = new ExpressionContext(_ctx, getState());
- enterRule(_localctx, 106, RULE_expression);
+ enterRule(_localctx, 108, RULE_expression);
int _la;
try {
- setState(879);
+ setState(950);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,89,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(867);
+ setState(938);
assignableExpression();
- setState(868);
+ setState(939);
assignmentOperator();
- setState(869);
+ setState(940);
expression();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(871);
+ setState(942);
conditionalExpression();
- setState(875);
+ setState(946);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__49) {
+ while (_la==T__56) {
{
{
- setState(872);
+ setState(943);
cascadeSection();
}
}
- setState(877);
+ setState(948);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -4475,7 +4632,7 @@ public final ExpressionContext expression() throws RecognitionException {
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(878);
+ setState(949);
throwExpression();
}
break;
@@ -4529,33 +4686,33 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ExpressionWithoutCascadeContext expressionWithoutCascade() throws RecognitionException {
ExpressionWithoutCascadeContext _localctx = new ExpressionWithoutCascadeContext(_ctx, getState());
- enterRule(_localctx, 108, RULE_expressionWithoutCascade);
+ enterRule(_localctx, 110, RULE_expressionWithoutCascade);
try {
- setState(887);
+ setState(958);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,98,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(881);
+ setState(952);
assignableExpression();
- setState(882);
+ setState(953);
assignmentOperator();
- setState(883);
+ setState(954);
expressionWithoutCascade();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(885);
+ setState(956);
conditionalExpression();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(886);
+ setState(957);
throwExpressionWithoutCascade();
}
break;
@@ -4600,30 +4757,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ExpressionListContext expressionList() throws RecognitionException {
ExpressionListContext _localctx = new ExpressionListContext(_ctx, getState());
- enterRule(_localctx, 110, RULE_expressionList);
+ enterRule(_localctx, 112, RULE_expressionList);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(889);
+ setState(960);
expression();
- setState(894);
+ setState(965);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,91,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,99,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(890);
+ setState(961);
match(T__0);
- setState(891);
+ setState(962);
expression();
}
- }
+ }
}
- setState(896);
+ setState(967);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,91,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,99,_ctx);
}
}
}
@@ -4660,6 +4817,12 @@ public NayaExpressionContext nayaExpression() {
public ConstObjectExpressionContext constObjectExpression() {
return getRuleContext(ConstObjectExpressionContext.class,0);
}
+ public RecordLiteralContext recordLiteral() {
+ return getRuleContext(RecordLiteralContext.class,0);
+ }
+ public SwitchExpressionContext switchExpression() {
+ return getRuleContext(SwitchExpressionContext.class,0);
+ }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
@@ -4684,70 +4847,84 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PrimaryContext primary() throws RecognitionException {
PrimaryContext _localctx = new PrimaryContext(_ctx, getState());
- enterRule(_localctx, 112, RULE_primary);
+ enterRule(_localctx, 114, RULE_primary);
try {
- setState(909);
+ setState(982);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(897);
+ setState(968);
thisExpression();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(898);
- match(T__33);
- setState(899);
+ setState(969);
+ match(T__37);
+ setState(970);
unconditionalAssignableSelector();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(900);
+ setState(971);
functionExpression();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(901);
+ setState(972);
literal();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(902);
+ setState(973);
identifier();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(903);
+ setState(974);
nayaExpression();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(904);
+ setState(975);
constObjectExpression();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
- setState(905);
+ setState(976);
+ recordLiteral();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(977);
+ switchExpression();
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(978);
match(T__13);
- setState(906);
+ setState(979);
expression();
- setState(907);
+ setState(980);
match(T__14);
}
break;
@@ -4764,100 +4941,974 @@ public final PrimaryContext primary() throws RecognitionException {
return _localctx;
}
- public static class LiteralContext extends ParserRuleContext {
- public NullLiteralContext nullLiteral() {
- return getRuleContext(NullLiteralContext.class,0);
+ public static class RecordLiteralContext extends ParserRuleContext {
+ public List recordField() {
+ return getRuleContexts(RecordFieldContext.class);
}
- public BooleanLiteralContext booleanLiteral() {
- return getRuleContext(BooleanLiteralContext.class,0);
+ public RecordFieldContext recordField(int i) {
+ return getRuleContext(RecordFieldContext.class,i);
}
- public NumericLiteralContext numericLiteral() {
- return getRuleContext(NumericLiteralContext.class,0);
+ public RecordLiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
}
- public StringLiteralContext stringLiteral() {
- return getRuleContext(StringLiteralContext.class,0);
+ @Override public int getRuleIndex() { return RULE_recordLiteral; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterRecordLiteral(this);
}
- public SymbolLiteralContext symbolLiteral() {
- return getRuleContext(SymbolLiteralContext.class,0);
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitRecordLiteral(this);
}
- public MapLiteralContext mapLiteral() {
- return getRuleContext(MapLiteralContext.class,0);
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitRecordLiteral(this);
+ else return visitor.visitChildren(this);
}
- public ListLiteralContext listLiteral() {
- return getRuleContext(ListLiteralContext.class,0);
+ }
+
+ public final RecordLiteralContext recordLiteral() throws RecognitionException {
+ RecordLiteralContext _localctx = new RecordLiteralContext(_ctx, getState());
+ enterRule(_localctx, 116, RULE_recordLiteral);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(984);
+ match(T__13);
+ setState(985);
+ recordField();
+ setState(986);
+ match(T__0);
+ setState(987);
+ recordField();
+ setState(992);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,101,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(988);
+ match(T__0);
+ setState(989);
+ recordField();
+ }
+ }
+ }
+ setState(994);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,101,_ctx);
+ }
+ setState(996);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(995);
+ match(T__0);
+ }
+ }
+
+ setState(998);
+ match(T__14);
+ }
}
- public LiteralContext(ParserRuleContext parent, int invokingState) {
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class RecordFieldContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public RecordFieldContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
- @Override public int getRuleIndex() { return RULE_literal; }
+ @Override public int getRuleIndex() { return RULE_recordField; }
@Override
public void enterRule(ParseTreeListener listener) {
- if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterLiteral(this);
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterRecordField(this);
}
@Override
public void exitRule(ParseTreeListener listener) {
- if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitLiteral(this);
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitRecordField(this);
}
@Override
public T accept(ParseTreeVisitor extends T> visitor) {
- if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitLiteral(this);
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitRecordField(this);
else return visitor.visitChildren(this);
}
}
- public final LiteralContext literal() throws RecognitionException {
- LiteralContext _localctx = new LiteralContext(_ctx, getState());
- enterRule(_localctx, 114, RULE_literal);
+ public final RecordFieldContext recordField() throws RecognitionException {
+ RecordFieldContext _localctx = new RecordFieldContext(_ctx, getState());
+ enterRule(_localctx, 118, RULE_recordField);
try {
- setState(918);
- _errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
- case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1003);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
+ case 1:
+ {
+ setState(1000);
+ identifier();
+ setState(1001);
+ match(T__20);
+ }
+ break;
+ }
+ setState(1005);
+ expression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class RecordTypeContext extends ParserRuleContext {
+ public List recordTypeField() {
+ return getRuleContexts(RecordTypeFieldContext.class);
+ }
+ public RecordTypeFieldContext recordTypeField(int i) {
+ return getRuleContext(RecordTypeFieldContext.class,i);
+ }
+ public RecordTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_recordType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterRecordType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitRecordType(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitRecordType(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final RecordTypeContext recordType() throws RecognitionException {
+ RecordTypeContext _localctx = new RecordTypeContext(_ctx, getState());
+ enterRule(_localctx, 120, RULE_recordType);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1007);
+ match(T__13);
+ setState(1008);
+ recordTypeField();
+ setState(1009);
+ match(T__0);
+ setState(1010);
+ recordTypeField();
+ setState(1015);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,104,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1011);
+ match(T__0);
+ setState(1012);
+ recordTypeField();
+ }
+ }
+ }
+ setState(1017);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,104,_ctx);
+ }
+ setState(1019);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(1018);
+ match(T__0);
+ }
+ }
+
+ setState(1021);
+ match(T__14);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class RecordTypeFieldContext extends ParserRuleContext {
+ public DtypeContext dtype() {
+ return getRuleContext(DtypeContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public RecordTypeFieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_recordTypeField; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterRecordTypeField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitRecordTypeField(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitRecordTypeField(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final RecordTypeFieldContext recordTypeField() throws RecognitionException {
+ RecordTypeFieldContext _localctx = new RecordTypeFieldContext(_ctx, getState());
+ enterRule(_localctx, 122, RULE_recordTypeField);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1026);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,106,_ctx) ) {
+ case 1:
+ {
+ setState(1023);
+ identifier();
+ setState(1024);
+ match(T__20);
+ }
+ break;
+ }
+ setState(1028);
+ dtype();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SwitchExpressionContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List switchExpressionCase() {
+ return getRuleContexts(SwitchExpressionCaseContext.class);
+ }
+ public SwitchExpressionCaseContext switchExpressionCase(int i) {
+ return getRuleContext(SwitchExpressionCaseContext.class,i);
+ }
+ public SwitchExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterSwitchExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitSwitchExpression(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitSwitchExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SwitchExpressionContext switchExpression() throws RecognitionException {
+ SwitchExpressionContext _localctx = new SwitchExpressionContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_switchExpression);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1030);
+ match(T__45);
+ setState(1031);
+ match(T__13);
+ setState(1032);
+ expression();
+ setState(1033);
+ match(T__14);
+ setState(1034);
+ match(T__11);
+ setState(1035);
+ switchExpressionCase();
+ setState(1040);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,107,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1036);
+ match(T__0);
+ setState(1037);
+ switchExpressionCase();
+ }
+ }
+ }
+ setState(1042);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,107,_ctx);
+ }
+ setState(1044);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(1043);
+ match(T__0);
+ }
+ }
+
+ setState(1046);
+ match(T__12);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class SwitchExpressionCaseContext extends ParserRuleContext {
+ public GuardedPatternContext guardedPattern() {
+ return getRuleContext(GuardedPatternContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public SwitchExpressionCaseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchExpressionCase; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterSwitchExpressionCase(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitSwitchExpressionCase(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitSwitchExpressionCase(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final SwitchExpressionCaseContext switchExpressionCase() throws RecognitionException {
+ SwitchExpressionCaseContext _localctx = new SwitchExpressionCaseContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_switchExpressionCase);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1048);
+ guardedPattern();
+ setState(1049);
+ match(T__7);
+ setState(1050);
+ expression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class GuardedPatternContext extends ParserRuleContext {
+ public PatternContext pattern() {
+ return getRuleContext(PatternContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public GuardedPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_guardedPattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterGuardedPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitGuardedPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitGuardedPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final GuardedPatternContext guardedPattern() throws RecognitionException {
+ GuardedPatternContext _localctx = new GuardedPatternContext(_ctx, getState());
+ enterRule(_localctx, 128, RULE_guardedPattern);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1052);
+ pattern();
+ setState(1055);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__46) {
+ {
+ setState(1053);
+ match(T__46);
+ setState(1054);
+ expression();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class PatternContext extends ParserRuleContext {
+ public ConstantPatternContext constantPattern() {
+ return getRuleContext(ConstantPatternContext.class,0);
+ }
+ public TypeTestPatternContext typeTestPattern() {
+ return getRuleContext(TypeTestPatternContext.class,0);
+ }
+ public WildcardPatternContext wildcardPattern() {
+ return getRuleContext(WildcardPatternContext.class,0);
+ }
+ public VariablePatternContext variablePattern() {
+ return getRuleContext(VariablePatternContext.class,0);
+ }
+ public ParenthesizedPatternContext parenthesizedPattern() {
+ return getRuleContext(ParenthesizedPatternContext.class,0);
+ }
+ public PatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_pattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final PatternContext pattern() throws RecognitionException {
+ PatternContext _localctx = new PatternContext(_ctx, getState());
+ enterRule(_localctx, 130, RULE_pattern);
+ try {
+ setState(1062);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1057);
+ constantPattern();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1058);
+ typeTestPattern();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1059);
+ wildcardPattern();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1060);
+ variablePattern();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1061);
+ parenthesizedPattern();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ConstantPatternContext extends ParserRuleContext {
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public QualifiedContext qualified() {
+ return getRuleContext(QualifiedContext.class,0);
+ }
+ public ConstObjectExpressionContext constObjectExpression() {
+ return getRuleContext(ConstObjectExpressionContext.class,0);
+ }
+ public ConstantPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constantPattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterConstantPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitConstantPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitConstantPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ConstantPatternContext constantPattern() throws RecognitionException {
+ ConstantPatternContext _localctx = new ConstantPatternContext(_ctx, getState());
+ enterRule(_localctx, 132, RULE_constantPattern);
+ try {
+ setState(1068);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,111,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1064);
+ literal();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1065);
+ identifier();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1066);
+ qualified();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1067);
+ constObjectExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class TypeTestPatternContext extends ParserRuleContext {
+ public DtypeContext dtype() {
+ return getRuleContext(DtypeContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public TypeTestPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeTestPattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterTypeTestPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitTypeTestPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitTypeTestPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final TypeTestPatternContext typeTestPattern() throws RecognitionException {
+ TypeTestPatternContext _localctx = new TypeTestPatternContext(_ctx, getState());
+ enterRule(_localctx, 134, RULE_typeTestPattern);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1070);
+ dtype();
+ setState(1071);
+ identifier();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class WildcardPatternContext extends ParserRuleContext {
+ public WildcardPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_wildcardPattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterWildcardPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitWildcardPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitWildcardPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final WildcardPatternContext wildcardPattern() throws RecognitionException {
+ WildcardPatternContext _localctx = new WildcardPatternContext(_ctx, getState());
+ enterRule(_localctx, 136, RULE_wildcardPattern);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1073);
+ match(T__47);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class VariablePatternContext extends ParserRuleContext {
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public DtypeContext dtype() {
+ return getRuleContext(DtypeContext.class,0);
+ }
+ public VariablePatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variablePattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterVariablePattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitVariablePattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitVariablePattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final VariablePatternContext variablePattern() throws RecognitionException {
+ VariablePatternContext _localctx = new VariablePatternContext(_ctx, getState());
+ enterRule(_localctx, 138, RULE_variablePattern);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1080);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__3:
+ {
+ setState(1075);
+ match(T__3);
+ }
+ break;
+ case T__1:
+ {
+ setState(1076);
+ match(T__1);
+ setState(1078);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,112,_ctx) ) {
+ case 1:
+ {
+ setState(1077);
+ dtype();
+ }
+ break;
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(1082);
+ identifier();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ParenthesizedPatternContext extends ParserRuleContext {
+ public PatternContext pattern() {
+ return getRuleContext(PatternContext.class,0);
+ }
+ public ParenthesizedPatternContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_parenthesizedPattern; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterParenthesizedPattern(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitParenthesizedPattern(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitParenthesizedPattern(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ParenthesizedPatternContext parenthesizedPattern() throws RecognitionException {
+ ParenthesizedPatternContext _localctx = new ParenthesizedPatternContext(_ctx, getState());
+ enterRule(_localctx, 140, RULE_parenthesizedPattern);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1084);
+ match(T__13);
+ setState(1085);
+ pattern();
+ setState(1086);
+ match(T__14);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class LiteralContext extends ParserRuleContext {
+ public NullLiteralContext nullLiteral() {
+ return getRuleContext(NullLiteralContext.class,0);
+ }
+ public BooleanLiteralContext booleanLiteral() {
+ return getRuleContext(BooleanLiteralContext.class,0);
+ }
+ public NumericLiteralContext numericLiteral() {
+ return getRuleContext(NumericLiteralContext.class,0);
+ }
+ public StringLiteralContext stringLiteral() {
+ return getRuleContext(StringLiteralContext.class,0);
+ }
+ public SymbolLiteralContext symbolLiteral() {
+ return getRuleContext(SymbolLiteralContext.class,0);
+ }
+ public MapLiteralContext mapLiteral() {
+ return getRuleContext(MapLiteralContext.class,0);
+ }
+ public ListLiteralContext listLiteral() {
+ return getRuleContext(ListLiteralContext.class,0);
+ }
+ public LiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_literal; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).enterLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Dart2Listener ) ((Dart2Listener)listener).exitLiteral(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof Dart2Visitor ) return ((Dart2Visitor extends T>)visitor).visitLiteral(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final LiteralContext literal() throws RecognitionException {
+ LiteralContext _localctx = new LiteralContext(_ctx, getState());
+ enterRule(_localctx, 142, RULE_literal);
+ try {
+ setState(1095);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,114,_ctx) ) {
+ case 1:
enterOuterAlt(_localctx, 1);
{
- setState(911);
+ setState(1088);
nullLiteral();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(912);
+ setState(1089);
booleanLiteral();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(913);
+ setState(1090);
numericLiteral();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(914);
+ setState(1091);
stringLiteral();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(915);
+ setState(1092);
symbolLiteral();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(916);
+ setState(1093);
mapLiteral();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(917);
+ setState(1094);
listLiteral();
}
break;
@@ -4896,12 +5947,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NullLiteralContext nullLiteral() throws RecognitionException {
NullLiteralContext _localctx = new NullLiteralContext(_ctx, getState());
- enterRule(_localctx, 116, RULE_nullLiteral);
+ enterRule(_localctx, 144, RULE_nullLiteral);
try {
enterOuterAlt(_localctx, 1);
{
- setState(920);
- match(T__41);
+ setState(1097);
+ match(T__48);
}
}
catch (RecognitionException re) {
@@ -4939,12 +5990,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NumericLiteralContext numericLiteral() throws RecognitionException {
NumericLiteralContext _localctx = new NumericLiteralContext(_ctx, getState());
- enterRule(_localctx, 118, RULE_numericLiteral);
+ enterRule(_localctx, 146, RULE_numericLiteral);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(922);
+ setState(1099);
_la = _input.LA(1);
if ( !(_la==NUMBER || _la==HEX_NUMBER) ) {
_errHandler.recoverInline(this);
@@ -4989,14 +6040,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BooleanLiteralContext booleanLiteral() throws RecognitionException {
BooleanLiteralContext _localctx = new BooleanLiteralContext(_ctx, getState());
- enterRule(_localctx, 120, RULE_booleanLiteral);
+ enterRule(_localctx, 148, RULE_booleanLiteral);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(924);
+ setState(1101);
_la = _input.LA(1);
- if ( !(_la==T__42 || _la==T__43) ) {
+ if ( !(_la==T__49 || _la==T__50) ) {
_errHandler.recoverInline(this);
}
else {
@@ -5047,18 +6098,18 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StringLiteralContext stringLiteral() throws RecognitionException {
StringLiteralContext _localctx = new StringLiteralContext(_ctx, getState());
- enterRule(_localctx, 122, RULE_stringLiteral);
+ enterRule(_localctx, 150, RULE_stringLiteral);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(927);
+ setState(1104);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(926);
+ setState(1103);
_la = _input.LA(1);
if ( !(_la==SingleLineString || _la==MultiLineString) ) {
_errHandler.recoverInline(this);
@@ -5070,7 +6121,7 @@ public final StringLiteralContext stringLiteral() throws RecognitionException {
}
}
}
- setState(929);
+ setState(1106);
_errHandler.sync(this);
_la = _input.LA(1);
} while ( _la==SingleLineString || _la==MultiLineString );
@@ -5115,28 +6166,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StringInterpolationContext stringInterpolation() throws RecognitionException {
StringInterpolationContext _localctx = new StringInterpolationContext(_ctx, getState());
- enterRule(_localctx, 124, RULE_stringInterpolation);
+ enterRule(_localctx, 152, RULE_stringInterpolation);
try {
- setState(937);
+ setState(1114);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__44:
+ case T__51:
enterOuterAlt(_localctx, 1);
{
- setState(931);
- match(T__44);
- setState(932);
+ setState(1108);
+ match(T__51);
+ setState(1109);
identifier();
}
break;
- case T__45:
+ case T__52:
enterOuterAlt(_localctx, 2);
{
- setState(933);
- match(T__45);
- setState(934);
+ setState(1110);
+ match(T__52);
+ setState(1111);
expression();
- setState(935);
+ setState(1112);
match(T__12);
}
break;
@@ -5186,29 +6237,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SymbolLiteralContext symbolLiteral() throws RecognitionException {
SymbolLiteralContext _localctx = new SymbolLiteralContext(_ctx, getState());
- enterRule(_localctx, 126, RULE_symbolLiteral);
+ enterRule(_localctx, 154, RULE_symbolLiteral);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(939);
- match(T__46);
- setState(949);
+ setState(1116);
+ match(T__53);
+ setState(1126);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__27:
- case T__28:
- case T__29:
- case T__30:
- case T__38:
- case T__39:
- case T__67:
- case T__68:
- case T__69:
- case T__70:
- case T__71:
- case T__72:
- case T__73:
+ case T__31:
+ case T__32:
+ case T__33:
+ case T__34:
+ case T__42:
+ case T__43:
case T__74:
case T__75:
case T__76:
@@ -5216,33 +6260,40 @@ public final SymbolLiteralContext symbolLiteral() throws RecognitionException {
case T__78:
case T__79:
case T__80:
+ case T__81:
+ case T__82:
+ case T__83:
+ case T__84:
+ case T__85:
+ case T__86:
+ case T__87:
{
- setState(940);
+ setState(1117);
operator();
}
break;
case IDENTIFIER:
{
{
- setState(941);
+ setState(1118);
identifier();
- setState(946);
+ setState(1123);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,96,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,117,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(942);
+ setState(1119);
match(T__0);
- setState(943);
+ setState(1120);
identifier();
}
- }
+ }
}
- setState(948);
+ setState(1125);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,96,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,117,_ctx);
}
}
}
@@ -5291,46 +6342,46 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ListLiteralContext listLiteral() throws RecognitionException {
ListLiteralContext _localctx = new ListLiteralContext(_ctx, getState());
- enterRule(_localctx, 128, RULE_listLiteral);
+ enterRule(_localctx, 156, RULE_listLiteral);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(952);
+ setState(1129);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__2) {
{
- setState(951);
+ setState(1128);
match(T__2);
}
}
- setState(955);
+ setState(1132);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__38) {
+ if (_la==T__42) {
{
- setState(954);
+ setState(1131);
typeArguments();
}
}
- setState(957);
+ setState(1134);
match(T__15);
- setState(962);
+ setState(1139);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(958);
+ setState(1135);
expressionList();
- setState(960);
+ setState(1137);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(959);
+ setState(1136);
match(T__0);
}
}
@@ -5338,7 +6389,7 @@ public final ListLiteralContext listLiteral() throws RecognitionException {
}
}
- setState(964);
+ setState(1141);
match(T__16);
}
}
@@ -5384,65 +6435,65 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MapLiteralContext mapLiteral() throws RecognitionException {
MapLiteralContext _localctx = new MapLiteralContext(_ctx, getState());
- enterRule(_localctx, 130, RULE_mapLiteral);
+ enterRule(_localctx, 158, RULE_mapLiteral);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(967);
+ setState(1144);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__2) {
{
- setState(966);
+ setState(1143);
match(T__2);
}
}
- setState(970);
+ setState(1147);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__38) {
+ if (_la==T__42) {
{
- setState(969);
+ setState(1146);
typeArguments();
}
}
- setState(972);
+ setState(1149);
match(T__11);
- setState(984);
+ setState(1161);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(973);
+ setState(1150);
mapLiteralEntry();
- setState(978);
+ setState(1155);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,104,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,125,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(974);
+ setState(1151);
match(T__0);
- setState(975);
+ setState(1152);
mapLiteralEntry();
}
- }
+ }
}
- setState(980);
+ setState(1157);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,104,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,125,_ctx);
}
- setState(982);
+ setState(1159);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(981);
+ setState(1158);
match(T__0);
}
}
@@ -5450,7 +6501,7 @@ public final MapLiteralContext mapLiteral() throws RecognitionException {
}
}
- setState(986);
+ setState(1163);
match(T__12);
}
}
@@ -5493,15 +6544,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MapLiteralEntryContext mapLiteralEntry() throws RecognitionException {
MapLiteralEntryContext _localctx = new MapLiteralEntryContext(_ctx, getState());
- enterRule(_localctx, 132, RULE_mapLiteralEntry);
+ enterRule(_localctx, 160, RULE_mapLiteralEntry);
try {
enterOuterAlt(_localctx, 1);
{
- setState(988);
+ setState(1165);
expression();
- setState(989);
+ setState(1166);
match(T__20);
- setState(990);
+ setState(1167);
expression();
}
}
@@ -5541,13 +6592,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ThrowExpressionContext throwExpression() throws RecognitionException {
ThrowExpressionContext _localctx = new ThrowExpressionContext(_ctx, getState());
- enterRule(_localctx, 134, RULE_throwExpression);
+ enterRule(_localctx, 162, RULE_throwExpression);
try {
enterOuterAlt(_localctx, 1);
{
- setState(992);
- match(T__47);
- setState(993);
+ setState(1169);
+ match(T__54);
+ setState(1170);
expression();
}
}
@@ -5587,13 +6638,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ThrowExpressionWithoutCascadeContext throwExpressionWithoutCascade() throws RecognitionException {
ThrowExpressionWithoutCascadeContext _localctx = new ThrowExpressionWithoutCascadeContext(_ctx, getState());
- enterRule(_localctx, 136, RULE_throwExpressionWithoutCascade);
+ enterRule(_localctx, 164, RULE_throwExpressionWithoutCascade);
try {
enterOuterAlt(_localctx, 1);
{
- setState(995);
- match(T__47);
- setState(996);
+ setState(1172);
+ match(T__54);
+ setState(1173);
expressionWithoutCascade();
}
}
@@ -5636,13 +6687,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FunctionExpressionContext functionExpression() throws RecognitionException {
FunctionExpressionContext _localctx = new FunctionExpressionContext(_ctx, getState());
- enterRule(_localctx, 138, RULE_functionExpression);
+ enterRule(_localctx, 166, RULE_functionExpression);
try {
enterOuterAlt(_localctx, 1);
{
- setState(998);
+ setState(1175);
formalParameterPart();
- setState(999);
+ setState(1176);
functionBody();
}
}
@@ -5679,11 +6730,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ThisExpressionContext thisExpression() throws RecognitionException {
ThisExpressionContext _localctx = new ThisExpressionContext(_ctx, getState());
- enterRule(_localctx, 140, RULE_thisExpression);
+ enterRule(_localctx, 168, RULE_thisExpression);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1001);
+ setState(1178);
match(T__18);
}
}
@@ -5729,28 +6780,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NayaExpressionContext nayaExpression() throws RecognitionException {
NayaExpressionContext _localctx = new NayaExpressionContext(_ctx, getState());
- enterRule(_localctx, 142, RULE_nayaExpression);
+ enterRule(_localctx, 170, RULE_nayaExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1003);
- match(T__48);
- setState(1004);
+ setState(1180);
+ match(T__55);
+ setState(1181);
dtype();
- setState(1007);
+ setState(1184);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(1005);
+ setState(1182);
match(T__19);
- setState(1006);
+ setState(1183);
identifier();
}
}
- setState(1009);
+ setState(1186);
arguments();
}
}
@@ -5796,28 +6847,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ConstObjectExpressionContext constObjectExpression() throws RecognitionException {
ConstObjectExpressionContext _localctx = new ConstObjectExpressionContext(_ctx, getState());
- enterRule(_localctx, 144, RULE_constObjectExpression);
+ enterRule(_localctx, 172, RULE_constObjectExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1011);
+ setState(1188);
match(T__2);
- setState(1012);
+ setState(1189);
dtype();
- setState(1015);
+ setState(1192);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__19) {
{
- setState(1013);
+ setState(1190);
match(T__19);
- setState(1014);
+ setState(1191);
identifier();
}
}
- setState(1017);
+ setState(1194);
arguments();
}
}
@@ -5857,26 +6908,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArgumentsContext arguments() throws RecognitionException {
ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState());
- enterRule(_localctx, 146, RULE_arguments);
+ enterRule(_localctx, 174, RULE_arguments);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1019);
+ setState(1196);
match(T__13);
- setState(1024);
+ setState(1201);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(1020);
+ setState(1197);
argumentList();
- setState(1022);
+ setState(1199);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(1021);
+ setState(1198);
match(T__0);
}
}
@@ -5884,7 +6935,7 @@ public final ArgumentsContext arguments() throws RecognitionException {
}
}
- setState(1026);
+ setState(1203);
match(T__14);
}
}
@@ -5930,59 +6981,59 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArgumentListContext argumentList() throws RecognitionException {
ArgumentListContext _localctx = new ArgumentListContext(_ctx, getState());
- enterRule(_localctx, 148, RULE_argumentList);
+ enterRule(_localctx, 176, RULE_argumentList);
try {
int _alt;
- setState(1044);
+ setState(1221);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1028);
+ setState(1205);
namedArgument();
- setState(1033);
+ setState(1210);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,111,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,132,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1029);
+ setState(1206);
match(T__0);
- setState(1030);
+ setState(1207);
namedArgument();
}
- }
+ }
}
- setState(1035);
+ setState(1212);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,111,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,132,_ctx);
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1036);
+ setState(1213);
expressionList();
- setState(1041);
+ setState(1218);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,112,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,133,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1037);
+ setState(1214);
match(T__0);
- setState(1038);
+ setState(1215);
namedArgument();
}
- }
+ }
}
- setState(1043);
+ setState(1220);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,112,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,133,_ctx);
}
}
break;
@@ -6027,13 +7078,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NamedArgumentContext namedArgument() throws RecognitionException {
NamedArgumentContext _localctx = new NamedArgumentContext(_ctx, getState());
- enterRule(_localctx, 150, RULE_namedArgument);
+ enterRule(_localctx, 178, RULE_namedArgument);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1046);
+ setState(1223);
label();
- setState(1047);
+ setState(1224);
expression();
}
}
@@ -6091,67 +7142,67 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final CascadeSectionContext cascadeSection() throws RecognitionException {
CascadeSectionContext _localctx = new CascadeSectionContext(_ctx, getState());
- enterRule(_localctx, 152, RULE_cascadeSection);
+ enterRule(_localctx, 180, RULE_cascadeSection);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1049);
- match(T__49);
+ setState(1226);
+ match(T__56);
{
- setState(1050);
+ setState(1227);
cascadeSelector();
- setState(1054);
+ setState(1231);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__13 || _la==T__38) {
+ while (_la==T__13 || _la==T__42) {
{
{
- setState(1051);
+ setState(1228);
argumentPart();
}
}
- setState(1056);
+ setState(1233);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
- setState(1066);
+ setState(1243);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__15 || _la==T__19 || _la==T__85) {
+ while (_la==T__15 || _la==T__19 || _la==T__92) {
{
{
- setState(1057);
+ setState(1234);
assignableSelector();
- setState(1061);
+ setState(1238);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__13 || _la==T__38) {
+ while (_la==T__13 || _la==T__42) {
{
{
- setState(1058);
+ setState(1235);
argumentPart();
}
}
- setState(1063);
+ setState(1240);
_errHandler.sync(this);
_la = _input.LA(1);
}
}
}
- setState(1068);
+ setState(1245);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1072);
+ setState(1249);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__4) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << T__57) | (1L << T__58) | (1L << T__59) | (1L << T__60) | (1L << T__61))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__4) | (1L << T__57) | (1L << T__58) | (1L << T__59) | (1L << T__60) | (1L << T__61) | (1L << T__62))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (T__63 - 64)) | (1L << (T__64 - 64)) | (1L << (T__65 - 64)) | (1L << (T__66 - 64)) | (1L << (T__67 - 64)) | (1L << (T__68 - 64)))) != 0)) {
{
- setState(1069);
+ setState(1246);
assignmentOperator();
- setState(1070);
+ setState(1247);
expressionWithoutCascade();
}
}
@@ -6197,26 +7248,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final CascadeSelectorContext cascadeSelector() throws RecognitionException {
CascadeSelectorContext _localctx = new CascadeSelectorContext(_ctx, getState());
- enterRule(_localctx, 154, RULE_cascadeSelector);
+ enterRule(_localctx, 182, RULE_cascadeSelector);
try {
- setState(1079);
+ setState(1256);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__15:
enterOuterAlt(_localctx, 1);
{
- setState(1074);
+ setState(1251);
match(T__15);
- setState(1075);
+ setState(1252);
expression();
- setState(1076);
+ setState(1253);
match(T__16);
}
break;
case IDENTIFIER:
enterOuterAlt(_localctx, 2);
{
- setState(1078);
+ setState(1255);
identifier();
}
break;
@@ -6263,22 +7314,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArgumentPartContext argumentPart() throws RecognitionException {
ArgumentPartContext _localctx = new ArgumentPartContext(_ctx, getState());
- enterRule(_localctx, 156, RULE_argumentPart);
+ enterRule(_localctx, 184, RULE_argumentPart);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1082);
+ setState(1259);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__38) {
+ if (_la==T__42) {
{
- setState(1081);
+ setState(1258);
typeArguments();
}
}
- setState(1084);
+ setState(1261);
arguments();
}
}
@@ -6318,33 +7369,33 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AssignmentOperatorContext assignmentOperator() throws RecognitionException {
AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState());
- enterRule(_localctx, 158, RULE_assignmentOperator);
+ enterRule(_localctx, 186, RULE_assignmentOperator);
try {
- setState(1088);
+ setState(1265);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__4:
enterOuterAlt(_localctx, 1);
{
- setState(1086);
+ setState(1263);
match(T__4);
}
break;
- case T__50:
- case T__51:
- case T__52:
- case T__53:
- case T__54:
- case T__55:
- case T__56:
case T__57:
case T__58:
case T__59:
case T__60:
case T__61:
+ case T__62:
+ case T__63:
+ case T__64:
+ case T__65:
+ case T__66:
+ case T__67:
+ case T__68:
enterOuterAlt(_localctx, 2);
{
- setState(1087);
+ setState(1264);
compoundAssignmentOperator();
}
break;
@@ -6385,14 +7436,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final CompoundAssignmentOperatorContext compoundAssignmentOperator() throws RecognitionException {
CompoundAssignmentOperatorContext _localctx = new CompoundAssignmentOperatorContext(_ctx, getState());
- enterRule(_localctx, 160, RULE_compoundAssignmentOperator);
+ enterRule(_localctx, 188, RULE_compoundAssignmentOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1090);
+ setState(1267);
_la = _input.LA(1);
- if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << T__57) | (1L << T__58) | (1L << T__59) | (1L << T__60) | (1L << T__61))) != 0)) ) {
+ if ( !(((((_la - 58)) & ~0x3f) == 0 && ((1L << (_la - 58)) & ((1L << (T__57 - 58)) | (1L << (T__58 - 58)) | (1L << (T__59 - 58)) | (1L << (T__60 - 58)) | (1L << (T__61 - 58)) | (1L << (T__62 - 58)) | (1L << (T__63 - 58)) | (1L << (T__64 - 58)) | (1L << (T__65 - 58)) | (1L << (T__66 - 58)) | (1L << (T__67 - 58)) | (1L << (T__68 - 58)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -6444,25 +7495,25 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ConditionalExpressionContext conditionalExpression() throws RecognitionException {
ConditionalExpressionContext _localctx = new ConditionalExpressionContext(_ctx, getState());
- enterRule(_localctx, 162, RULE_conditionalExpression);
+ enterRule(_localctx, 190, RULE_conditionalExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1092);
+ setState(1269);
ifNullExpression();
- setState(1098);
+ setState(1275);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__62) {
+ if (_la==T__69) {
{
- setState(1093);
- match(T__62);
- setState(1094);
+ setState(1270);
+ match(T__69);
+ setState(1271);
expressionWithoutCascade();
- setState(1095);
+ setState(1272);
match(T__20);
- setState(1096);
+ setState(1273);
expressionWithoutCascade();
}
}
@@ -6508,26 +7559,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IfNullExpressionContext ifNullExpression() throws RecognitionException {
IfNullExpressionContext _localctx = new IfNullExpressionContext(_ctx, getState());
- enterRule(_localctx, 164, RULE_ifNullExpression);
+ enterRule(_localctx, 192, RULE_ifNullExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1100);
+ setState(1277);
logicalOrExpression();
- setState(1105);
+ setState(1282);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__63) {
+ while (_la==T__70) {
{
{
- setState(1101);
- match(T__63);
- setState(1102);
+ setState(1278);
+ match(T__70);
+ setState(1279);
logicalOrExpression();
}
}
- setState(1107);
+ setState(1284);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -6572,26 +7623,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LogicalOrExpressionContext logicalOrExpression() throws RecognitionException {
LogicalOrExpressionContext _localctx = new LogicalOrExpressionContext(_ctx, getState());
- enterRule(_localctx, 166, RULE_logicalOrExpression);
+ enterRule(_localctx, 194, RULE_logicalOrExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1108);
+ setState(1285);
logicalAndExpression();
- setState(1113);
+ setState(1290);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__64) {
+ while (_la==T__71) {
{
{
- setState(1109);
- match(T__64);
- setState(1110);
+ setState(1286);
+ match(T__71);
+ setState(1287);
logicalAndExpression();
}
}
- setState(1115);
+ setState(1292);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -6636,26 +7687,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LogicalAndExpressionContext logicalAndExpression() throws RecognitionException {
LogicalAndExpressionContext _localctx = new LogicalAndExpressionContext(_ctx, getState());
- enterRule(_localctx, 168, RULE_logicalAndExpression);
+ enterRule(_localctx, 196, RULE_logicalAndExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1116);
+ setState(1293);
equalityExpression();
- setState(1121);
+ setState(1298);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__65) {
+ while (_la==T__72) {
{
{
- setState(1117);
- match(T__65);
- setState(1118);
+ setState(1294);
+ match(T__72);
+ setState(1295);
equalityExpression();
}
}
- setState(1123);
+ setState(1300);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -6703,25 +7754,25 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final EqualityExpressionContext equalityExpression() throws RecognitionException {
EqualityExpressionContext _localctx = new EqualityExpressionContext(_ctx, getState());
- enterRule(_localctx, 170, RULE_equalityExpression);
+ enterRule(_localctx, 198, RULE_equalityExpression);
int _la;
try {
- setState(1134);
+ setState(1311);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,147,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1124);
+ setState(1301);
relationalExpression();
- setState(1128);
+ setState(1305);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__30 || _la==T__66) {
+ if (_la==T__34 || _la==T__73) {
{
- setState(1125);
+ setState(1302);
equalityOperator();
- setState(1126);
+ setState(1303);
relationalExpression();
}
}
@@ -6731,11 +7782,11 @@ public final EqualityExpressionContext equalityExpression() throws RecognitionEx
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1130);
- match(T__33);
- setState(1131);
+ setState(1307);
+ match(T__37);
+ setState(1308);
equalityOperator();
- setState(1132);
+ setState(1309);
relationalExpression();
}
break;
@@ -6774,14 +7825,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final EqualityOperatorContext equalityOperator() throws RecognitionException {
EqualityOperatorContext _localctx = new EqualityOperatorContext(_ctx, getState());
- enterRule(_localctx, 172, RULE_equalityOperator);
+ enterRule(_localctx, 200, RULE_equalityOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1136);
+ setState(1313);
_la = _input.LA(1);
- if ( !(_la==T__30 || _la==T__66) ) {
+ if ( !(_la==T__34 || _la==T__73) ) {
_errHandler.recoverInline(this);
}
else {
@@ -6839,39 +7890,39 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final RelationalExpressionContext relationalExpression() throws RecognitionException {
RelationalExpressionContext _localctx = new RelationalExpressionContext(_ctx, getState());
- enterRule(_localctx, 174, RULE_relationalExpression);
+ enterRule(_localctx, 202, RULE_relationalExpression);
try {
- setState(1150);
+ setState(1327);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,128,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,149,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1138);
+ setState(1315);
bitwiseOrExpression();
- setState(1144);
+ setState(1321);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__86:
+ case T__93:
{
- setState(1139);
+ setState(1316);
typeTest();
}
break;
- case T__87:
+ case T__94:
{
- setState(1140);
+ setState(1317);
typeCast();
}
break;
- case T__38:
- case T__39:
- case T__67:
- case T__68:
+ case T__42:
+ case T__43:
+ case T__74:
+ case T__75:
{
- setState(1141);
+ setState(1318);
relationalOperator();
- setState(1142);
+ setState(1319);
bitwiseOrExpression();
}
break;
@@ -6886,13 +7937,15 @@ public final RelationalExpressionContext relationalExpression() throws Recogniti
case T__14:
case T__16:
case T__20:
- case T__30:
- case T__49:
- case T__62:
- case T__63:
- case T__64:
- case T__65:
- case T__66:
+ case T__34:
+ case T__46:
+ case T__56:
+ case T__69:
+ case T__70:
+ case T__71:
+ case T__72:
+ case T__73:
+ case T__97:
break;
default:
break;
@@ -6902,11 +7955,11 @@ public final RelationalExpressionContext relationalExpression() throws Recogniti
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1146);
- match(T__33);
- setState(1147);
+ setState(1323);
+ match(T__37);
+ setState(1324);
relationalOperator();
- setState(1148);
+ setState(1325);
bitwiseOrExpression();
}
break;
@@ -6945,14 +7998,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final RelationalOperatorContext relationalOperator() throws RecognitionException {
RelationalOperatorContext _localctx = new RelationalOperatorContext(_ctx, getState());
- enterRule(_localctx, 176, RULE_relationalOperator);
+ enterRule(_localctx, 204, RULE_relationalOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1152);
+ setState(1329);
_la = _input.LA(1);
- if ( !(((((_la - 39)) & ~0x3f) == 0 && ((1L << (_la - 39)) & ((1L << (T__38 - 39)) | (1L << (T__39 - 39)) | (1L << (T__67 - 39)) | (1L << (T__68 - 39)))) != 0)) ) {
+ if ( !(((((_la - 43)) & ~0x3f) == 0 && ((1L << (_la - 43)) & ((1L << (T__42 - 43)) | (1L << (T__43 - 43)) | (1L << (T__74 - 43)) | (1L << (T__75 - 43)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -7007,43 +8060,43 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BitwiseOrExpressionContext bitwiseOrExpression() throws RecognitionException {
BitwiseOrExpressionContext _localctx = new BitwiseOrExpressionContext(_ctx, getState());
- enterRule(_localctx, 178, RULE_bitwiseOrExpression);
+ enterRule(_localctx, 206, RULE_bitwiseOrExpression);
try {
int _alt;
- setState(1169);
+ setState(1346);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,131,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,152,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1154);
+ setState(1331);
bitwiseXorExpression();
- setState(1159);
+ setState(1336);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,129,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,150,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1155);
- match(T__69);
- setState(1156);
+ setState(1332);
+ match(T__76);
+ setState(1333);
bitwiseXorExpression();
}
- }
+ }
}
- setState(1161);
+ setState(1338);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,129,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,150,_ctx);
}
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1162);
- match(T__33);
- setState(1165);
+ setState(1339);
+ match(T__37);
+ setState(1342);
_errHandler.sync(this);
_alt = 1;
do {
@@ -7051,9 +8104,9 @@ public final BitwiseOrExpressionContext bitwiseOrExpression() throws Recognition
case 1:
{
{
- setState(1163);
- match(T__69);
- setState(1164);
+ setState(1340);
+ match(T__76);
+ setState(1341);
bitwiseOrExpression();
}
}
@@ -7061,10 +8114,10 @@ public final BitwiseOrExpressionContext bitwiseOrExpression() throws Recognition
default:
throw new NoViableAltException(this);
}
- setState(1167);
+ setState(1344);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,130,_ctx);
- } while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER );
+ _alt = getInterpreter().adaptivePredict(_input,151,_ctx);
+ } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
}
break;
}
@@ -7108,30 +8161,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BitwiseXorExpressionContext bitwiseXorExpression() throws RecognitionException {
BitwiseXorExpressionContext _localctx = new BitwiseXorExpressionContext(_ctx, getState());
- enterRule(_localctx, 180, RULE_bitwiseXorExpression);
+ enterRule(_localctx, 208, RULE_bitwiseXorExpression);
int _la;
try {
- setState(1186);
+ setState(1363);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,134,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,155,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1171);
+ setState(1348);
bitwiseAndExpression();
- setState(1176);
+ setState(1353);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__70) {
+ while (_la==T__77) {
{
{
- setState(1172);
- match(T__70);
- setState(1173);
+ setState(1349);
+ match(T__77);
+ setState(1350);
bitwiseAndExpression();
}
}
- setState(1178);
+ setState(1355);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -7140,24 +8193,24 @@ public final BitwiseXorExpressionContext bitwiseXorExpression() throws Recogniti
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1179);
- match(T__33);
- setState(1182);
+ setState(1356);
+ match(T__37);
+ setState(1359);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(1180);
- match(T__70);
- setState(1181);
+ setState(1357);
+ match(T__77);
+ setState(1358);
bitwiseAndExpression();
}
}
- setState(1184);
+ setState(1361);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( _la==T__70 );
+ } while ( _la==T__77 );
}
break;
}
@@ -7201,30 +8254,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BitwiseAndExpressionContext bitwiseAndExpression() throws RecognitionException {
BitwiseAndExpressionContext _localctx = new BitwiseAndExpressionContext(_ctx, getState());
- enterRule(_localctx, 182, RULE_bitwiseAndExpression);
+ enterRule(_localctx, 210, RULE_bitwiseAndExpression);
int _la;
try {
- setState(1203);
+ setState(1380);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,137,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1188);
+ setState(1365);
shiftExpression();
- setState(1193);
+ setState(1370);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__71) {
+ while (_la==T__78) {
{
{
- setState(1189);
- match(T__71);
- setState(1190);
+ setState(1366);
+ match(T__78);
+ setState(1367);
shiftExpression();
}
}
- setState(1195);
+ setState(1372);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -7233,24 +8286,24 @@ public final BitwiseAndExpressionContext bitwiseAndExpression() throws Recogniti
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1196);
- match(T__33);
- setState(1199);
+ setState(1373);
+ match(T__37);
+ setState(1376);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(1197);
- match(T__71);
- setState(1198);
+ setState(1374);
+ match(T__78);
+ setState(1375);
shiftExpression();
}
}
- setState(1201);
+ setState(1378);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( _la==T__71 );
+ } while ( _la==T__78 );
}
break;
}
@@ -7288,14 +8341,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BitwiseOperatorContext bitwiseOperator() throws RecognitionException {
BitwiseOperatorContext _localctx = new BitwiseOperatorContext(_ctx, getState());
- enterRule(_localctx, 184, RULE_bitwiseOperator);
+ enterRule(_localctx, 212, RULE_bitwiseOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1205);
+ setState(1382);
_la = _input.LA(1);
- if ( !(((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (T__69 - 70)) | (1L << (T__70 - 70)) | (1L << (T__71 - 70)))) != 0)) ) {
+ if ( !(((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__77 - 77)) | (1L << (T__78 - 77)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -7350,30 +8403,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ShiftExpressionContext shiftExpression() throws RecognitionException {
ShiftExpressionContext _localctx = new ShiftExpressionContext(_ctx, getState());
- enterRule(_localctx, 186, RULE_shiftExpression);
+ enterRule(_localctx, 214, RULE_shiftExpression);
int _la;
try {
- setState(1224);
+ setState(1401);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,140,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1207);
+ setState(1384);
additiveExpression();
- setState(1213);
+ setState(1390);
_errHandler.sync(this);
_la = _input.LA(1);
- while (((((_la - 73)) & ~0x3f) == 0 && ((1L << (_la - 73)) & ((1L << (T__72 - 73)) | (1L << (T__73 - 73)) | (1L << (T__74 - 73)))) != 0)) {
+ while (((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (T__79 - 80)) | (1L << (T__80 - 80)) | (1L << (T__81 - 80)))) != 0)) {
{
{
- setState(1208);
+ setState(1385);
shiftOperator();
- setState(1209);
+ setState(1386);
additiveExpression();
}
}
- setState(1215);
+ setState(1392);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -7382,24 +8435,24 @@ public final ShiftExpressionContext shiftExpression() throws RecognitionExceptio
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1216);
- match(T__33);
- setState(1220);
+ setState(1393);
+ match(T__37);
+ setState(1397);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(1217);
+ setState(1394);
shiftOperator();
- setState(1218);
+ setState(1395);
additiveExpression();
}
}
- setState(1222);
+ setState(1399);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( ((((_la - 73)) & ~0x3f) == 0 && ((1L << (_la - 73)) & ((1L << (T__72 - 73)) | (1L << (T__73 - 73)) | (1L << (T__74 - 73)))) != 0) );
+ } while ( ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (T__79 - 80)) | (1L << (T__80 - 80)) | (1L << (T__81 - 80)))) != 0) );
}
break;
}
@@ -7437,14 +8490,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ShiftOperatorContext shiftOperator() throws RecognitionException {
ShiftOperatorContext _localctx = new ShiftOperatorContext(_ctx, getState());
- enterRule(_localctx, 188, RULE_shiftOperator);
+ enterRule(_localctx, 216, RULE_shiftOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1226);
+ setState(1403);
_la = _input.LA(1);
- if ( !(((((_la - 73)) & ~0x3f) == 0 && ((1L << (_la - 73)) & ((1L << (T__72 - 73)) | (1L << (T__73 - 73)) | (1L << (T__74 - 73)))) != 0)) ) {
+ if ( !(((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (T__79 - 80)) | (1L << (T__80 - 80)) | (1L << (T__81 - 80)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -7499,30 +8552,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AdditiveExpressionContext additiveExpression() throws RecognitionException {
AdditiveExpressionContext _localctx = new AdditiveExpressionContext(_ctx, getState());
- enterRule(_localctx, 190, RULE_additiveExpression);
+ enterRule(_localctx, 218, RULE_additiveExpression);
int _la;
try {
- setState(1245);
+ setState(1422);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,143,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1228);
+ setState(1405);
multiplicativeExpression();
- setState(1234);
+ setState(1411);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__75 || _la==T__76) {
+ while (_la==T__82 || _la==T__83) {
{
{
- setState(1229);
+ setState(1406);
additiveOperator();
- setState(1230);
+ setState(1407);
multiplicativeExpression();
}
}
- setState(1236);
+ setState(1413);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -7531,24 +8584,24 @@ public final AdditiveExpressionContext additiveExpression() throws RecognitionEx
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1237);
- match(T__33);
- setState(1241);
+ setState(1414);
+ match(T__37);
+ setState(1418);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(1238);
+ setState(1415);
additiveOperator();
- setState(1239);
+ setState(1416);
multiplicativeExpression();
}
}
- setState(1243);
+ setState(1420);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( _la==T__75 || _la==T__76 );
+ } while ( _la==T__82 || _la==T__83 );
}
break;
}
@@ -7586,14 +8639,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AdditiveOperatorContext additiveOperator() throws RecognitionException {
AdditiveOperatorContext _localctx = new AdditiveOperatorContext(_ctx, getState());
- enterRule(_localctx, 192, RULE_additiveOperator);
+ enterRule(_localctx, 220, RULE_additiveOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1247);
+ setState(1424);
_la = _input.LA(1);
- if ( !(_la==T__75 || _la==T__76) ) {
+ if ( !(_la==T__82 || _la==T__83) ) {
_errHandler.recoverInline(this);
}
else {
@@ -7648,30 +8701,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MultiplicativeExpressionContext multiplicativeExpression() throws RecognitionException {
MultiplicativeExpressionContext _localctx = new MultiplicativeExpressionContext(_ctx, getState());
- enterRule(_localctx, 194, RULE_multiplicativeExpression);
+ enterRule(_localctx, 222, RULE_multiplicativeExpression);
int _la;
try {
- setState(1266);
+ setState(1443);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,167,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1249);
+ setState(1426);
unaryExpression();
- setState(1255);
+ setState(1432);
_errHandler.sync(this);
_la = _input.LA(1);
- while (((((_la - 78)) & ~0x3f) == 0 && ((1L << (_la - 78)) & ((1L << (T__77 - 78)) | (1L << (T__78 - 78)) | (1L << (T__79 - 78)) | (1L << (T__80 - 78)))) != 0)) {
+ while (((((_la - 85)) & ~0x3f) == 0 && ((1L << (_la - 85)) & ((1L << (T__84 - 85)) | (1L << (T__85 - 85)) | (1L << (T__86 - 85)) | (1L << (T__87 - 85)))) != 0)) {
{
{
- setState(1250);
+ setState(1427);
multiplicativeOperator();
- setState(1251);
+ setState(1428);
unaryExpression();
}
}
- setState(1257);
+ setState(1434);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -7680,24 +8733,24 @@ public final MultiplicativeExpressionContext multiplicativeExpression() throws R
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1258);
- match(T__33);
- setState(1262);
+ setState(1435);
+ match(T__37);
+ setState(1439);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(1259);
+ setState(1436);
multiplicativeOperator();
- setState(1260);
+ setState(1437);
unaryExpression();
}
}
- setState(1264);
+ setState(1441);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( ((((_la - 78)) & ~0x3f) == 0 && ((1L << (_la - 78)) & ((1L << (T__77 - 78)) | (1L << (T__78 - 78)) | (1L << (T__79 - 78)) | (1L << (T__80 - 78)))) != 0) );
+ } while ( ((((_la - 85)) & ~0x3f) == 0 && ((1L << (_la - 85)) & ((1L << (T__84 - 85)) | (1L << (T__85 - 85)) | (1L << (T__86 - 85)) | (1L << (T__87 - 85)))) != 0) );
}
break;
}
@@ -7735,14 +8788,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MultiplicativeOperatorContext multiplicativeOperator() throws RecognitionException {
MultiplicativeOperatorContext _localctx = new MultiplicativeOperatorContext(_ctx, getState());
- enterRule(_localctx, 196, RULE_multiplicativeOperator);
+ enterRule(_localctx, 224, RULE_multiplicativeOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1268);
+ setState(1445);
_la = _input.LA(1);
- if ( !(((((_la - 78)) & ~0x3f) == 0 && ((1L << (_la - 78)) & ((1L << (T__77 - 78)) | (1L << (T__78 - 78)) | (1L << (T__79 - 78)) | (1L << (T__80 - 78)))) != 0)) ) {
+ if ( !(((((_la - 85)) & ~0x3f) == 0 && ((1L << (_la - 85)) & ((1L << (T__84 - 85)) | (1L << (T__85 - 85)) | (1L << (T__86 - 85)) | (1L << (T__87 - 85)))) != 0)) ) {
_errHandler.recoverInline(this);
}
else {
@@ -7809,65 +8862,65 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final UnaryExpressionContext unaryExpression() throws RecognitionException {
UnaryExpressionContext _localctx = new UnaryExpressionContext(_ctx, getState());
- enterRule(_localctx, 198, RULE_unaryExpression);
+ enterRule(_localctx, 226, RULE_unaryExpression);
try {
- setState(1284);
+ setState(1461);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,148,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1270);
+ setState(1447);
prefixOperator();
- setState(1271);
+ setState(1448);
unaryExpression();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1273);
+ setState(1450);
awaitExpression();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(1274);
+ setState(1451);
postfixExpression();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(1277);
+ setState(1454);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__76:
+ case T__83:
{
- setState(1275);
+ setState(1452);
minusOperator();
}
break;
- case T__27:
+ case T__31:
{
- setState(1276);
+ setState(1453);
tildeOperator();
}
break;
default:
throw new NoViableAltException(this);
}
- setState(1279);
- match(T__33);
+ setState(1456);
+ match(T__37);
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(1281);
+ setState(1458);
incrementOperator();
- setState(1282);
+ setState(1459);
assignableExpression();
}
break;
@@ -7915,29 +8968,29 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PrefixOperatorContext prefixOperator() throws RecognitionException {
PrefixOperatorContext _localctx = new PrefixOperatorContext(_ctx, getState());
- enterRule(_localctx, 200, RULE_prefixOperator);
+ enterRule(_localctx, 228, RULE_prefixOperator);
try {
- setState(1289);
+ setState(1466);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__76:
+ case T__83:
enterOuterAlt(_localctx, 1);
{
- setState(1286);
+ setState(1463);
minusOperator();
}
break;
- case T__81:
+ case T__88:
enterOuterAlt(_localctx, 2);
{
- setState(1287);
+ setState(1464);
negationOperator();
}
break;
- case T__27:
+ case T__31:
enterOuterAlt(_localctx, 3);
{
- setState(1288);
+ setState(1465);
tildeOperator();
}
break;
@@ -7978,12 +9031,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final MinusOperatorContext minusOperator() throws RecognitionException {
MinusOperatorContext _localctx = new MinusOperatorContext(_ctx, getState());
- enterRule(_localctx, 202, RULE_minusOperator);
+ enterRule(_localctx, 230, RULE_minusOperator);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1291);
- match(T__76);
+ setState(1468);
+ match(T__83);
}
}
catch (RecognitionException re) {
@@ -8019,12 +9072,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NegationOperatorContext negationOperator() throws RecognitionException {
NegationOperatorContext _localctx = new NegationOperatorContext(_ctx, getState());
- enterRule(_localctx, 204, RULE_negationOperator);
+ enterRule(_localctx, 232, RULE_negationOperator);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1293);
- match(T__81);
+ setState(1470);
+ match(T__88);
}
}
catch (RecognitionException re) {
@@ -8060,12 +9113,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TildeOperatorContext tildeOperator() throws RecognitionException {
TildeOperatorContext _localctx = new TildeOperatorContext(_ctx, getState());
- enterRule(_localctx, 206, RULE_tildeOperator);
+ enterRule(_localctx, 234, RULE_tildeOperator);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1295);
- match(T__27);
+ setState(1472);
+ match(T__31);
}
}
catch (RecognitionException re) {
@@ -8104,13 +9157,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AwaitExpressionContext awaitExpression() throws RecognitionException {
AwaitExpressionContext _localctx = new AwaitExpressionContext(_ctx, getState());
- enterRule(_localctx, 208, RULE_awaitExpression);
+ enterRule(_localctx, 236, RULE_awaitExpression);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1297);
- match(T__82);
- setState(1298);
+ setState(1474);
+ match(T__89);
+ setState(1475);
unaryExpression();
}
}
@@ -8162,41 +9215,41 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PostfixExpressionContext postfixExpression() throws RecognitionException {
PostfixExpressionContext _localctx = new PostfixExpressionContext(_ctx, getState());
- enterRule(_localctx, 210, RULE_postfixExpression);
+ enterRule(_localctx, 238, RULE_postfixExpression);
try {
int _alt;
- setState(1310);
+ setState(1487);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,151,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1300);
+ setState(1477);
assignableExpression();
- setState(1301);
+ setState(1478);
postfixOperator();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1303);
+ setState(1480);
primary();
- setState(1307);
+ setState(1484);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,150,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,171,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1304);
+ setState(1481);
selector();
}
- }
+ }
}
- setState(1309);
+ setState(1486);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,150,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,171,_ctx);
}
}
break;
@@ -8238,11 +9291,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PostfixOperatorContext postfixOperator() throws RecognitionException {
PostfixOperatorContext _localctx = new PostfixOperatorContext(_ctx, getState());
- enterRule(_localctx, 212, RULE_postfixOperator);
+ enterRule(_localctx, 240, RULE_postfixOperator);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1312);
+ setState(1489);
incrementOperator();
}
}
@@ -8285,25 +9338,25 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SelectorContext selector() throws RecognitionException {
SelectorContext _localctx = new SelectorContext(_ctx, getState());
- enterRule(_localctx, 214, RULE_selector);
+ enterRule(_localctx, 242, RULE_selector);
try {
- setState(1316);
+ setState(1493);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__15:
case T__19:
- case T__85:
+ case T__92:
enterOuterAlt(_localctx, 1);
{
- setState(1314);
+ setState(1491);
assignableSelector();
}
break;
case T__13:
- case T__38:
+ case T__42:
enterOuterAlt(_localctx, 2);
{
- setState(1315);
+ setState(1492);
argumentPart();
}
break;
@@ -8344,14 +9397,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IncrementOperatorContext incrementOperator() throws RecognitionException {
IncrementOperatorContext _localctx = new IncrementOperatorContext(_ctx, getState());
- enterRule(_localctx, 216, RULE_incrementOperator);
+ enterRule(_localctx, 244, RULE_incrementOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1318);
+ setState(1495);
_la = _input.LA(1);
- if ( !(_la==T__83 || _la==T__84) ) {
+ if ( !(_la==T__90 || _la==T__91) ) {
_errHandler.recoverInline(this);
}
else {
@@ -8412,37 +9465,37 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AssignableExpressionContext assignableExpression() throws RecognitionException {
AssignableExpressionContext _localctx = new AssignableExpressionContext(_ctx, getState());
- enterRule(_localctx, 218, RULE_assignableExpression);
+ enterRule(_localctx, 246, RULE_assignableExpression);
int _la;
try {
- setState(1334);
+ setState(1511);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,155,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,176,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1320);
+ setState(1497);
primary();
- setState(1328);
+ setState(1505);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,154,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,175,_ctx) ) {
case 1:
{
- setState(1324);
+ setState(1501);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__13 || _la==T__38) {
+ while (_la==T__13 || _la==T__42) {
{
{
- setState(1321);
+ setState(1498);
argumentPart();
}
}
- setState(1326);
+ setState(1503);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1327);
+ setState(1504);
assignableSelector();
}
break;
@@ -8452,11 +9505,11 @@ public final AssignableExpressionContext assignableExpression() throws Recogniti
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1330);
- match(T__33);
- setState(1331);
+ setState(1507);
+ match(T__37);
+ setState(1508);
unconditionalAssignableSelector();
- setState(1332);
+ setState(1509);
identifier();
}
break;
@@ -8501,28 +9554,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final UnconditionalAssignableSelectorContext unconditionalAssignableSelector() throws RecognitionException {
UnconditionalAssignableSelectorContext _localctx = new UnconditionalAssignableSelectorContext(_ctx, getState());
- enterRule(_localctx, 220, RULE_unconditionalAssignableSelector);
+ enterRule(_localctx, 248, RULE_unconditionalAssignableSelector);
try {
- setState(1342);
+ setState(1519);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__15:
enterOuterAlt(_localctx, 1);
{
- setState(1336);
+ setState(1513);
match(T__15);
- setState(1337);
+ setState(1514);
expression();
- setState(1338);
+ setState(1515);
match(T__16);
}
break;
case T__19:
enterOuterAlt(_localctx, 2);
{
- setState(1340);
+ setState(1517);
match(T__19);
- setState(1341);
+ setState(1518);
identifier();
}
break;
@@ -8569,25 +9622,25 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AssignableSelectorContext assignableSelector() throws RecognitionException {
AssignableSelectorContext _localctx = new AssignableSelectorContext(_ctx, getState());
- enterRule(_localctx, 222, RULE_assignableSelector);
+ enterRule(_localctx, 250, RULE_assignableSelector);
try {
- setState(1347);
+ setState(1524);
_errHandler.sync(this);
switch (_input.LA(1)) {
case T__15:
case T__19:
enterOuterAlt(_localctx, 1);
{
- setState(1344);
+ setState(1521);
unconditionalAssignableSelector();
}
break;
- case T__85:
+ case T__92:
enterOuterAlt(_localctx, 2);
{
- setState(1345);
- match(T__85);
- setState(1346);
+ setState(1522);
+ match(T__92);
+ setState(1523);
identifier();
}
break;
@@ -8629,11 +9682,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IdentifierContext identifier() throws RecognitionException {
IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
- enterRule(_localctx, 224, RULE_identifier);
+ enterRule(_localctx, 252, RULE_identifier);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1349);
+ setState(1526);
match(IDENTIFIER);
}
}
@@ -8676,20 +9729,20 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final QualifiedContext qualified() throws RecognitionException {
QualifiedContext _localctx = new QualifiedContext(_ctx, getState());
- enterRule(_localctx, 226, RULE_qualified);
+ enterRule(_localctx, 254, RULE_qualified);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1351);
+ setState(1528);
identifier();
- setState(1354);
+ setState(1531);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,179,_ctx) ) {
case 1:
{
- setState(1352);
+ setState(1529);
match(T__19);
- setState(1353);
+ setState(1530);
identifier();
}
break;
@@ -8735,13 +9788,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeTestContext typeTest() throws RecognitionException {
TypeTestContext _localctx = new TypeTestContext(_ctx, getState());
- enterRule(_localctx, 228, RULE_typeTest);
+ enterRule(_localctx, 256, RULE_typeTest);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1356);
+ setState(1533);
isOperator();
- setState(1357);
+ setState(1534);
dtype();
}
}
@@ -8778,20 +9831,20 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IsOperatorContext isOperator() throws RecognitionException {
IsOperatorContext _localctx = new IsOperatorContext(_ctx, getState());
- enterRule(_localctx, 230, RULE_isOperator);
+ enterRule(_localctx, 258, RULE_isOperator);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1359);
- match(T__86);
- setState(1361);
+ setState(1536);
+ match(T__93);
+ setState(1538);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__81) {
+ if (_la==T__88) {
{
- setState(1360);
- match(T__81);
+ setState(1537);
+ match(T__88);
}
}
@@ -8836,13 +9889,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeCastContext typeCast() throws RecognitionException {
TypeCastContext _localctx = new TypeCastContext(_ctx, getState());
- enterRule(_localctx, 232, RULE_typeCast);
+ enterRule(_localctx, 260, RULE_typeCast);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1363);
+ setState(1540);
asOperator();
- setState(1364);
+ setState(1541);
dtype();
}
}
@@ -8879,12 +9932,12 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AsOperatorContext asOperator() throws RecognitionException {
AsOperatorContext _localctx = new AsOperatorContext(_ctx, getState());
- enterRule(_localctx, 234, RULE_asOperator);
+ enterRule(_localctx, 262, RULE_asOperator);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1366);
- match(T__87);
+ setState(1543);
+ match(T__94);
}
}
catch (RecognitionException re) {
@@ -8926,26 +9979,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StatementsContext statements() throws RecognitionException {
StatementsContext _localctx = new StatementsContext(_ctx, getState());
- enterRule(_localctx, 236, RULE_statements);
+ enterRule(_localctx, 264, RULE_statements);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(1371);
+ setState(1548);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,160,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,181,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1368);
+ setState(1545);
statement();
}
- }
+ }
}
- setState(1373);
+ setState(1550);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,160,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,181,_ctx);
}
}
}
@@ -8991,28 +10044,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StatementContext statement() throws RecognitionException {
StatementContext _localctx = new StatementContext(_ctx, getState());
- enterRule(_localctx, 238, RULE_statement);
+ enterRule(_localctx, 266, RULE_statement);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(1377);
+ setState(1554);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,161,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,182,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1374);
+ setState(1551);
label();
}
- }
+ }
}
- setState(1379);
+ setState(1556);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,161,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,182,_ctx);
}
- setState(1380);
+ setState(1557);
nonLabledStatment();
}
}
@@ -9100,127 +10153,127 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NonLabledStatmentContext nonLabledStatment() throws RecognitionException {
NonLabledStatmentContext _localctx = new NonLabledStatmentContext(_ctx, getState());
- enterRule(_localctx, 240, RULE_nonLabledStatment);
+ enterRule(_localctx, 268, RULE_nonLabledStatment);
try {
- setState(1399);
+ setState(1576);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,162,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,183,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1382);
+ setState(1559);
block();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1383);
+ setState(1560);
localVariableDeclaration();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(1384);
+ setState(1561);
forStatement();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(1385);
+ setState(1562);
whileStatement();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(1386);
+ setState(1563);
doStatement();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(1387);
+ setState(1564);
switchStatement();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(1388);
+ setState(1565);
ifStatement();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
- setState(1389);
+ setState(1566);
rethrowStatment();
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
- setState(1390);
+ setState(1567);
tryStatement();
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
- setState(1391);
+ setState(1568);
breakStatement();
}
break;
case 11:
enterOuterAlt(_localctx, 11);
{
- setState(1392);
+ setState(1569);
continueStatement();
}
break;
case 12:
enterOuterAlt(_localctx, 12);
{
- setState(1393);
+ setState(1570);
returnStatement();
}
break;
case 13:
enterOuterAlt(_localctx, 13);
{
- setState(1394);
+ setState(1571);
yieldStatement();
}
break;
case 14:
enterOuterAlt(_localctx, 14);
{
- setState(1395);
+ setState(1572);
yieldEachStatement();
}
break;
case 15:
enterOuterAlt(_localctx, 15);
{
- setState(1396);
+ setState(1573);
expressionStatement();
}
break;
case 16:
enterOuterAlt(_localctx, 16);
{
- setState(1397);
+ setState(1574);
assertStatement();
}
break;
case 17:
enterOuterAlt(_localctx, 17);
{
- setState(1398);
+ setState(1575);
localFunctionDeclaration();
}
break;
@@ -9262,22 +10315,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ExpressionStatementContext expressionStatement() throws RecognitionException {
ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState());
- enterRule(_localctx, 242, RULE_expressionStatement);
+ enterRule(_localctx, 270, RULE_expressionStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1402);
+ setState(1579);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(1401);
+ setState(1578);
expression();
}
}
- setState(1404);
+ setState(1581);
match(T__8);
}
}
@@ -9317,13 +10370,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LocalVariableDeclarationContext localVariableDeclaration() throws RecognitionException {
LocalVariableDeclarationContext _localctx = new LocalVariableDeclarationContext(_ctx, getState());
- enterRule(_localctx, 244, RULE_localVariableDeclaration);
+ enterRule(_localctx, 272, RULE_localVariableDeclaration);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1406);
+ setState(1583);
initializedVariableDeclaration();
- setState(1407);
+ setState(1584);
match(T__8);
}
}
@@ -9366,13 +10419,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LocalFunctionDeclarationContext localFunctionDeclaration() throws RecognitionException {
LocalFunctionDeclarationContext _localctx = new LocalFunctionDeclarationContext(_ctx, getState());
- enterRule(_localctx, 246, RULE_localFunctionDeclaration);
+ enterRule(_localctx, 274, RULE_localFunctionDeclaration);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1409);
+ setState(1586);
functionSignature();
- setState(1410);
+ setState(1587);
functionBody();
}
}
@@ -9388,8 +10441,11 @@ public final LocalFunctionDeclarationContext localFunctionDeclaration() throws R
}
public static class IfStatementContext extends ParserRuleContext {
- public ExpressionContext expression() {
- return getRuleContext(ExpressionContext.class,0);
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
}
public List statement() {
return getRuleContexts(StatementContext.class);
@@ -9397,6 +10453,9 @@ public List statement() {
public StatementContext statement(int i) {
return getRuleContext(StatementContext.class,i);
}
+ public PatternContext pattern() {
+ return getRuleContext(PatternContext.class,0);
+ }
public IfStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -9418,33 +10477,83 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IfStatementContext ifStatement() throws RecognitionException {
IfStatementContext _localctx = new IfStatementContext(_ctx, getState());
- enterRule(_localctx, 248, RULE_ifStatement);
+ enterRule(_localctx, 276, RULE_ifStatement);
+ int _la;
try {
- enterOuterAlt(_localctx, 1);
- {
- setState(1412);
- match(T__88);
- setState(1413);
- match(T__13);
- setState(1414);
- expression();
- setState(1415);
- match(T__14);
- setState(1416);
- statement();
- setState(1419);
+ setState(1613);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,188,_ctx) ) {
case 1:
+ enterOuterAlt(_localctx, 1);
{
- setState(1417);
- match(T__89);
- setState(1418);
+ setState(1589);
+ match(T__95);
+ setState(1590);
+ match(T__13);
+ setState(1591);
+ expression();
+ setState(1592);
+ match(T__14);
+ setState(1593);
+ statement();
+ setState(1596);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,185,_ctx) ) {
+ case 1:
+ {
+ setState(1594);
+ match(T__96);
+ setState(1595);
+ statement();
+ }
+ break;
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1598);
+ match(T__95);
+ setState(1599);
+ match(T__13);
+ setState(1600);
+ expression();
+ setState(1601);
+ match(T__97);
+ setState(1602);
+ pattern();
+ setState(1605);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__46) {
+ {
+ setState(1603);
+ match(T__46);
+ setState(1604);
+ expression();
+ }
+ }
+
+ setState(1607);
+ match(T__14);
+ setState(1608);
statement();
+ setState(1611);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,187,_ctx) ) {
+ case 1:
+ {
+ setState(1609);
+ match(T__96);
+ setState(1610);
+ statement();
+ }
+ break;
+ }
}
break;
}
- }
}
catch (RecognitionException re) {
_localctx.exception = re;
@@ -9485,30 +10594,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ForStatementContext forStatement() throws RecognitionException {
ForStatementContext _localctx = new ForStatementContext(_ctx, getState());
- enterRule(_localctx, 250, RULE_forStatement);
+ enterRule(_localctx, 278, RULE_forStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1422);
+ setState(1616);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__82) {
+ if (_la==T__89) {
{
- setState(1421);
- match(T__82);
+ setState(1615);
+ match(T__89);
}
}
- setState(1424);
- match(T__90);
- setState(1425);
+ setState(1618);
+ match(T__98);
+ setState(1619);
match(T__13);
- setState(1426);
+ setState(1620);
forLoopParts();
- setState(1427);
+ setState(1621);
match(T__14);
- setState(1428);
+ setState(1622);
statement();
}
}
@@ -9560,35 +10669,35 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ForLoopPartsContext forLoopParts() throws RecognitionException {
ForLoopPartsContext _localctx = new ForLoopPartsContext(_ctx, getState());
- enterRule(_localctx, 252, RULE_forLoopParts);
+ enterRule(_localctx, 280, RULE_forLoopParts);
int _la;
try {
- setState(1446);
+ setState(1640);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,168,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,192,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1430);
+ setState(1624);
forInitializerStatement();
- setState(1432);
+ setState(1626);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(1431);
+ setState(1625);
expression();
}
}
- setState(1434);
+ setState(1628);
match(T__8);
- setState(1436);
+ setState(1630);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(1435);
+ setState(1629);
expressionList();
}
}
@@ -9598,22 +10707,22 @@ public final ForLoopPartsContext forLoopParts() throws RecognitionException {
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1438);
+ setState(1632);
declaredIdentifier();
- setState(1439);
- match(T__91);
- setState(1440);
+ setState(1633);
+ match(T__99);
+ setState(1634);
expression();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(1442);
+ setState(1636);
identifier();
- setState(1443);
- match(T__91);
- setState(1444);
+ setState(1637);
+ match(T__99);
+ setState(1638);
expression();
}
break;
@@ -9658,33 +10767,33 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ForInitializerStatementContext forInitializerStatement() throws RecognitionException {
ForInitializerStatementContext _localctx = new ForInitializerStatementContext(_ctx, getState());
- enterRule(_localctx, 254, RULE_forInitializerStatement);
+ enterRule(_localctx, 282, RULE_forInitializerStatement);
int _la;
try {
- setState(1453);
+ setState(1647);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,170,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1448);
+ setState(1642);
localVariableDeclaration();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1450);
+ setState(1644);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(1449);
+ setState(1643);
expression();
}
}
- setState(1452);
+ setState(1646);
match(T__8);
}
break;
@@ -9729,19 +10838,19 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final WhileStatementContext whileStatement() throws RecognitionException {
WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState());
- enterRule(_localctx, 256, RULE_whileStatement);
+ enterRule(_localctx, 284, RULE_whileStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1455);
- match(T__92);
- setState(1456);
+ setState(1649);
+ match(T__100);
+ setState(1650);
match(T__13);
- setState(1457);
+ setState(1651);
expression();
- setState(1458);
+ setState(1652);
match(T__14);
- setState(1459);
+ setState(1653);
statement();
}
}
@@ -9784,23 +10893,23 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final DoStatementContext doStatement() throws RecognitionException {
DoStatementContext _localctx = new DoStatementContext(_ctx, getState());
- enterRule(_localctx, 258, RULE_doStatement);
+ enterRule(_localctx, 286, RULE_doStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1461);
- match(T__93);
- setState(1462);
+ setState(1655);
+ match(T__101);
+ setState(1656);
statement();
- setState(1463);
- match(T__92);
- setState(1464);
+ setState(1657);
+ match(T__100);
+ setState(1658);
match(T__13);
- setState(1465);
+ setState(1659);
expression();
- setState(1466);
+ setState(1660);
match(T__14);
- setState(1467);
+ setState(1661);
match(T__8);
}
}
@@ -9849,49 +10958,49 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SwitchStatementContext switchStatement() throws RecognitionException {
SwitchStatementContext _localctx = new SwitchStatementContext(_ctx, getState());
- enterRule(_localctx, 260, RULE_switchStatement);
+ enterRule(_localctx, 288, RULE_switchStatement);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(1469);
- match(T__94);
- setState(1470);
+ setState(1663);
+ match(T__45);
+ setState(1664);
match(T__13);
- setState(1471);
+ setState(1665);
expression();
- setState(1472);
+ setState(1666);
match(T__14);
- setState(1473);
+ setState(1667);
match(T__11);
- setState(1477);
+ setState(1671);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,171,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,195,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1474);
+ setState(1668);
switchCase();
}
- }
+ }
}
- setState(1479);
+ setState(1673);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,171,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,195,_ctx);
}
- setState(1481);
+ setState(1675);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__96 || _la==IDENTIFIER) {
+ if (_la==T__102 || _la==IDENTIFIER) {
{
- setState(1480);
+ setState(1674);
defaultCase();
}
}
- setState(1483);
+ setState(1677);
match(T__12);
}
}
@@ -9907,8 +11016,11 @@ public final SwitchStatementContext switchStatement() throws RecognitionExceptio
}
public static class SwitchCaseContext extends ParserRuleContext {
- public ExpressionContext expression() {
- return getRuleContext(ExpressionContext.class,0);
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
}
public StatementsContext statements() {
return getRuleContext(StatementsContext.class,0);
@@ -9940,32 +11052,44 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SwitchCaseContext switchCase() throws RecognitionException {
SwitchCaseContext _localctx = new SwitchCaseContext(_ctx, getState());
- enterRule(_localctx, 262, RULE_switchCase);
+ enterRule(_localctx, 290, RULE_switchCase);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1488);
+ setState(1682);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==IDENTIFIER) {
{
{
- setState(1485);
+ setState(1679);
label();
}
}
- setState(1490);
+ setState(1684);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1491);
- match(T__95);
- setState(1492);
+ setState(1685);
+ match(T__97);
+ setState(1686);
expression();
- setState(1493);
+ setState(1689);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__46) {
+ {
+ setState(1687);
+ match(T__46);
+ setState(1688);
+ expression();
+ }
+ }
+
+ setState(1691);
match(T__20);
- setState(1494);
+ setState(1692);
statements();
}
}
@@ -10011,30 +11135,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final DefaultCaseContext defaultCase() throws RecognitionException {
DefaultCaseContext _localctx = new DefaultCaseContext(_ctx, getState());
- enterRule(_localctx, 264, RULE_defaultCase);
+ enterRule(_localctx, 292, RULE_defaultCase);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1499);
+ setState(1697);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==IDENTIFIER) {
{
{
- setState(1496);
+ setState(1694);
label();
}
}
- setState(1501);
+ setState(1699);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1502);
- match(T__96);
- setState(1503);
+ setState(1700);
+ match(T__102);
+ setState(1701);
match(T__20);
- setState(1504);
+ setState(1702);
statements();
}
}
@@ -10071,13 +11195,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final RethrowStatmentContext rethrowStatment() throws RecognitionException {
RethrowStatmentContext _localctx = new RethrowStatmentContext(_ctx, getState());
- enterRule(_localctx, 266, RULE_rethrowStatment);
+ enterRule(_localctx, 294, RULE_rethrowStatment);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1506);
- match(T__97);
- setState(1507);
+ setState(1704);
+ match(T__103);
+ setState(1705);
match(T__8);
}
}
@@ -10126,50 +11250,50 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TryStatementContext tryStatement() throws RecognitionException {
TryStatementContext _localctx = new TryStatementContext(_ctx, getState());
- enterRule(_localctx, 268, RULE_tryStatement);
+ enterRule(_localctx, 296, RULE_tryStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1509);
- match(T__98);
- setState(1510);
+ setState(1707);
+ match(T__104);
+ setState(1708);
block();
- setState(1520);
+ setState(1718);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__99:
- case T__100:
+ case T__105:
+ case T__106:
{
- setState(1512);
+ setState(1710);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(1511);
+ setState(1709);
onPart();
}
}
- setState(1514);
+ setState(1712);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( _la==T__99 || _la==T__100 );
- setState(1517);
+ } while ( _la==T__105 || _la==T__106 );
+ setState(1715);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__101) {
+ if (_la==T__107) {
{
- setState(1516);
+ setState(1714);
finallyPart();
}
}
}
break;
- case T__101:
+ case T__107:
{
- setState(1519);
+ setState(1717);
finallyPart();
}
break;
@@ -10220,39 +11344,39 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final OnPartContext onPart() throws RecognitionException {
OnPartContext _localctx = new OnPartContext(_ctx, getState());
- enterRule(_localctx, 270, RULE_onPart);
+ enterRule(_localctx, 298, RULE_onPart);
int _la;
try {
- setState(1532);
+ setState(1730);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__100:
+ case T__106:
enterOuterAlt(_localctx, 1);
{
- setState(1522);
+ setState(1720);
catchPart();
- setState(1523);
+ setState(1721);
block();
}
break;
- case T__99:
+ case T__105:
enterOuterAlt(_localctx, 2);
{
- setState(1525);
- match(T__99);
- setState(1526);
+ setState(1723);
+ match(T__105);
+ setState(1724);
dtype();
- setState(1528);
+ setState(1726);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__100) {
+ if (_la==T__106) {
{
- setState(1527);
+ setState(1725);
catchPart();
}
}
- setState(1530);
+ setState(1728);
block();
}
break;
@@ -10299,30 +11423,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final CatchPartContext catchPart() throws RecognitionException {
CatchPartContext _localctx = new CatchPartContext(_ctx, getState());
- enterRule(_localctx, 272, RULE_catchPart);
+ enterRule(_localctx, 300, RULE_catchPart);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1534);
- match(T__100);
- setState(1535);
+ setState(1732);
+ match(T__106);
+ setState(1733);
match(T__13);
- setState(1536);
+ setState(1734);
identifier();
- setState(1539);
+ setState(1737);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(1537);
+ setState(1735);
match(T__0);
- setState(1538);
+ setState(1736);
identifier();
}
}
- setState(1541);
+ setState(1739);
match(T__14);
}
}
@@ -10362,13 +11486,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FinallyPartContext finallyPart() throws RecognitionException {
FinallyPartContext _localctx = new FinallyPartContext(_ctx, getState());
- enterRule(_localctx, 274, RULE_finallyPart);
+ enterRule(_localctx, 302, RULE_finallyPart);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1543);
- match(T__101);
- setState(1544);
+ setState(1741);
+ match(T__107);
+ setState(1742);
block();
}
}
@@ -10408,24 +11532,24 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ReturnStatementContext returnStatement() throws RecognitionException {
ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState());
- enterRule(_localctx, 276, RULE_returnStatement);
+ enterRule(_localctx, 304, RULE_returnStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1546);
- match(T__102);
- setState(1548);
+ setState(1744);
+ match(T__108);
+ setState(1746);
_errHandler.sync(this);
_la = _input.LA(1);
- if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__27) | (1L << T__33) | (1L << T__38) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__46) | (1L << T__47) | (1L << T__48))) != 0) || ((((_la - 77)) & ~0x3f) == 0 && ((1L << (_la - 77)) & ((1L << (T__76 - 77)) | (1L << (T__81 - 77)) | (1L << (T__82 - 77)) | (1L << (T__83 - 77)) | (1L << (T__84 - 77)) | (1L << (NUMBER - 77)) | (1L << (HEX_NUMBER - 77)) | (1L << (SingleLineString - 77)) | (1L << (MultiLineString - 77)) | (1L << (IDENTIFIER - 77)))) != 0)) {
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__11) | (1L << T__13) | (1L << T__15) | (1L << T__18) | (1L << T__31) | (1L << T__37) | (1L << T__42) | (1L << T__45) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__53) | (1L << T__54) | (1L << T__55))) != 0) || ((((_la - 84)) & ~0x3f) == 0 && ((1L << (_la - 84)) & ((1L << (T__83 - 84)) | (1L << (T__88 - 84)) | (1L << (T__89 - 84)) | (1L << (T__90 - 84)) | (1L << (T__91 - 84)) | (1L << (NUMBER - 84)) | (1L << (HEX_NUMBER - 84)) | (1L << (SingleLineString - 84)) | (1L << (MultiLineString - 84)) | (1L << (IDENTIFIER - 84)))) != 0)) {
{
- setState(1547);
+ setState(1745);
expression();
}
}
- setState(1550);
+ setState(1748);
match(T__8);
}
}
@@ -10465,13 +11589,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LabelContext label() throws RecognitionException {
LabelContext _localctx = new LabelContext(_ctx, getState());
- enterRule(_localctx, 278, RULE_label);
+ enterRule(_localctx, 306, RULE_label);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1552);
+ setState(1750);
identifier();
- setState(1553);
+ setState(1751);
match(T__20);
}
}
@@ -10511,24 +11635,24 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BreakStatementContext breakStatement() throws RecognitionException {
BreakStatementContext _localctx = new BreakStatementContext(_ctx, getState());
- enterRule(_localctx, 280, RULE_breakStatement);
+ enterRule(_localctx, 308, RULE_breakStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1555);
- match(T__103);
- setState(1557);
+ setState(1753);
+ match(T__109);
+ setState(1755);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IDENTIFIER) {
{
- setState(1556);
+ setState(1754);
identifier();
}
}
- setState(1559);
+ setState(1757);
match(T__8);
}
}
@@ -10568,24 +11692,24 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ContinueStatementContext continueStatement() throws RecognitionException {
ContinueStatementContext _localctx = new ContinueStatementContext(_ctx, getState());
- enterRule(_localctx, 282, RULE_continueStatement);
+ enterRule(_localctx, 310, RULE_continueStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1561);
- match(T__104);
- setState(1563);
+ setState(1759);
+ match(T__110);
+ setState(1761);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==IDENTIFIER) {
{
- setState(1562);
+ setState(1760);
identifier();
}
}
- setState(1565);
+ setState(1763);
match(T__8);
}
}
@@ -10625,15 +11749,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final YieldStatementContext yieldStatement() throws RecognitionException {
YieldStatementContext _localctx = new YieldStatementContext(_ctx, getState());
- enterRule(_localctx, 284, RULE_yieldStatement);
+ enterRule(_localctx, 312, RULE_yieldStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1567);
- match(T__105);
- setState(1568);
+ setState(1765);
+ match(T__111);
+ setState(1766);
expression();
- setState(1569);
+ setState(1767);
match(T__8);
}
}
@@ -10673,15 +11797,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final YieldEachStatementContext yieldEachStatement() throws RecognitionException {
YieldEachStatementContext _localctx = new YieldEachStatementContext(_ctx, getState());
- enterRule(_localctx, 286, RULE_yieldEachStatement);
+ enterRule(_localctx, 314, RULE_yieldEachStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1571);
- match(T__106);
- setState(1572);
+ setState(1769);
+ match(T__112);
+ setState(1770);
expression();
- setState(1573);
+ setState(1771);
match(T__8);
}
}
@@ -10721,13 +11845,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AssertStatementContext assertStatement() throws RecognitionException {
AssertStatementContext _localctx = new AssertStatementContext(_ctx, getState());
- enterRule(_localctx, 288, RULE_assertStatement);
+ enterRule(_localctx, 316, RULE_assertStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1575);
+ setState(1773);
assertion();
- setState(1576);
+ setState(1774);
match(T__8);
}
}
@@ -10770,40 +11894,40 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AssertionContext assertion() throws RecognitionException {
AssertionContext _localctx = new AssertionContext(_ctx, getState());
- enterRule(_localctx, 290, RULE_assertion);
+ enterRule(_localctx, 318, RULE_assertion);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1578);
- match(T__107);
- setState(1579);
+ setState(1776);
+ match(T__113);
+ setState(1777);
match(T__13);
- setState(1580);
+ setState(1778);
expression();
- setState(1583);
+ setState(1781);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,184,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,209,_ctx) ) {
case 1:
{
- setState(1581);
+ setState(1779);
match(T__0);
- setState(1582);
+ setState(1780);
expression();
}
break;
}
- setState(1586);
+ setState(1784);
_errHandler.sync(this);
_la = _input.LA(1);
if (_la==T__0) {
{
- setState(1585);
+ setState(1783);
match(T__0);
}
}
- setState(1588);
+ setState(1786);
match(T__14);
}
}
@@ -10879,147 +12003,147 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TopLevelDefinitionContext topLevelDefinition() throws RecognitionException {
TopLevelDefinitionContext _localctx = new TopLevelDefinitionContext(_ctx, getState());
- enterRule(_localctx, 292, RULE_topLevelDefinition);
+ enterRule(_localctx, 320, RULE_topLevelDefinition);
int _la;
try {
- setState(1639);
+ setState(1837);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,192,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,217,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1590);
+ setState(1788);
classDefinition();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1591);
+ setState(1789);
enumType();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(1592);
+ setState(1790);
typeAlias();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(1594);
+ setState(1792);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__25) {
+ if (_la==T__29) {
{
- setState(1593);
- match(T__25);
+ setState(1791);
+ match(T__29);
}
}
- setState(1596);
+ setState(1794);
functionSignature();
- setState(1597);
+ setState(1795);
match(T__8);
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(1600);
+ setState(1798);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__25) {
+ if (_la==T__29) {
{
- setState(1599);
- match(T__25);
+ setState(1797);
+ match(T__29);
}
}
- setState(1602);
+ setState(1800);
getterSignature();
- setState(1603);
+ setState(1801);
match(T__8);
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(1606);
+ setState(1804);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__25) {
+ if (_la==T__29) {
{
- setState(1605);
- match(T__25);
+ setState(1803);
+ match(T__29);
}
}
- setState(1608);
+ setState(1806);
setterSignature();
- setState(1609);
+ setState(1807);
match(T__8);
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(1611);
+ setState(1809);
functionSignature();
- setState(1612);
+ setState(1810);
functionBody();
}
break;
case 8:
enterOuterAlt(_localctx, 8);
{
- setState(1615);
+ setState(1813);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__5 || _la==IDENTIFIER) {
+ if (_la==T__5 || _la==T__13 || _la==IDENTIFIER) {
{
- setState(1614);
+ setState(1812);
returnType();
}
}
- setState(1617);
- match(T__31);
- setState(1618);
+ setState(1815);
+ match(T__35);
+ setState(1816);
identifier();
- setState(1619);
+ setState(1817);
functionBody();
}
break;
case 9:
enterOuterAlt(_localctx, 9);
{
- setState(1622);
+ setState(1820);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__5 || _la==IDENTIFIER) {
+ if (_la==T__5 || _la==T__13 || _la==IDENTIFIER) {
{
- setState(1621);
+ setState(1819);
returnType();
}
}
- setState(1624);
- match(T__32);
- setState(1625);
+ setState(1822);
+ match(T__36);
+ setState(1823);
identifier();
- setState(1626);
+ setState(1824);
formalParameterList();
- setState(1627);
+ setState(1825);
functionBody();
}
break;
case 10:
enterOuterAlt(_localctx, 10);
{
- setState(1629);
+ setState(1827);
_la = _input.LA(1);
if ( !(_la==T__1 || _la==T__2) ) {
_errHandler.recoverInline(this);
@@ -11029,28 +12153,28 @@ public final TopLevelDefinitionContext topLevelDefinition() throws RecognitionEx
_errHandler.reportMatch(this);
consume();
}
- setState(1631);
+ setState(1829);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,216,_ctx) ) {
case 1:
{
- setState(1630);
+ setState(1828);
dtype();
}
break;
}
- setState(1633);
+ setState(1831);
staticFinalDeclarationList();
- setState(1634);
+ setState(1832);
match(T__8);
}
break;
case 11:
enterOuterAlt(_localctx, 11);
{
- setState(1636);
+ setState(1834);
variableDeclaration();
- setState(1637);
+ setState(1835);
match(T__8);
}
break;
@@ -11089,14 +12213,14 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final GetOrSetContext getOrSet() throws RecognitionException {
GetOrSetContext _localctx = new GetOrSetContext(_ctx, getState());
- enterRule(_localctx, 294, RULE_getOrSet);
+ enterRule(_localctx, 322, RULE_getOrSet);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1641);
+ setState(1839);
_la = _input.LA(1);
- if ( !(_la==T__31 || _la==T__32) ) {
+ if ( !(_la==T__35 || _la==T__36) ) {
_errHandler.recoverInline(this);
}
else {
@@ -11163,75 +12287,75 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LibraryDefinitionContext libraryDefinition() throws RecognitionException {
LibraryDefinitionContext _localctx = new LibraryDefinitionContext(_ctx, getState());
- enterRule(_localctx, 296, RULE_libraryDefinition);
+ enterRule(_localctx, 324, RULE_libraryDefinition);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(1644);
+ setState(1842);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__108) {
+ if (_la==T__114) {
{
- setState(1643);
+ setState(1841);
scriptTag();
}
}
- setState(1647);
+ setState(1845);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,219,_ctx) ) {
case 1:
{
- setState(1646);
+ setState(1844);
libraryName();
}
break;
}
- setState(1652);
+ setState(1850);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,195,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,220,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1649);
+ setState(1847);
importOrExport();
}
- }
+ }
}
- setState(1654);
+ setState(1852);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,195,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,220,_ctx);
}
- setState(1658);
+ setState(1856);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,196,_ctx);
- while ( _alt!=2 && _alt!= ATN.INVALID_ALT_NUMBER ) {
+ _alt = getInterpreter().adaptivePredict(_input,221,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
if ( _alt==1 ) {
{
{
- setState(1655);
+ setState(1853);
partDirective();
}
}
}
- setState(1660);
+ setState(1858);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,196,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,221,_ctx);
}
- setState(1664);
+ setState(1862);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__21) | (1L << T__22) | (1L << T__25) | (1L << T__31) | (1L << T__32) | (1L << T__37) | (1L << T__40))) != 0) || _la==T__116 || _la==IDENTIFIER) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__13) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__29) | (1L << T__35) | (1L << T__36) | (1L << T__41) | (1L << T__44))) != 0) || _la==T__122 || _la==IDENTIFIER) {
{
{
- setState(1661);
+ setState(1859);
topLevelDefinition();
}
}
- setState(1666);
+ setState(1864);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -11274,20 +12398,20 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ScriptTagContext scriptTag() throws RecognitionException {
ScriptTagContext _localctx = new ScriptTagContext(_ctx, getState());
- enterRule(_localctx, 298, RULE_scriptTag);
+ enterRule(_localctx, 326, RULE_scriptTag);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1667);
- match(T__108);
- setState(1671);
+ setState(1865);
+ match(T__114);
+ setState(1869);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << T__31) | (1L << T__32) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__40) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__44) | (1L << T__45) | (1L << T__46) | (1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << T__57) | (1L << T__58) | (1L << T__59) | (1L << T__60) | (1L << T__61) | (1L << T__62))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (T__63 - 64)) | (1L << (T__64 - 64)) | (1L << (T__65 - 64)) | (1L << (T__66 - 64)) | (1L << (T__67 - 64)) | (1L << (T__68 - 64)) | (1L << (T__69 - 64)) | (1L << (T__70 - 64)) | (1L << (T__71 - 64)) | (1L << (T__72 - 64)) | (1L << (T__73 - 64)) | (1L << (T__74 - 64)) | (1L << (T__75 - 64)) | (1L << (T__76 - 64)) | (1L << (T__77 - 64)) | (1L << (T__78 - 64)) | (1L << (T__79 - 64)) | (1L << (T__80 - 64)) | (1L << (T__81 - 64)) | (1L << (T__82 - 64)) | (1L << (T__83 - 64)) | (1L << (T__84 - 64)) | (1L << (T__85 - 64)) | (1L << (T__86 - 64)) | (1L << (T__87 - 64)) | (1L << (T__88 - 64)) | (1L << (T__89 - 64)) | (1L << (T__90 - 64)) | (1L << (T__91 - 64)) | (1L << (T__92 - 64)) | (1L << (T__93 - 64)) | (1L << (T__94 - 64)) | (1L << (T__95 - 64)) | (1L << (T__96 - 64)) | (1L << (T__97 - 64)) | (1L << (T__98 - 64)) | (1L << (T__99 - 64)) | (1L << (T__100 - 64)) | (1L << (T__101 - 64)) | (1L << (T__102 - 64)) | (1L << (T__103 - 64)) | (1L << (T__104 - 64)) | (1L << (T__105 - 64)) | (1L << (T__106 - 64)) | (1L << (T__107 - 64)) | (1L << (T__108 - 64)) | (1L << (T__109 - 64)) | (1L << (T__110 - 64)) | (1L << (T__111 - 64)) | (1L << (T__112 - 64)) | (1L << (T__113 - 64)) | (1L << (T__114 - 64)) | (1L << (T__115 - 64)) | (1L << (T__116 - 64)) | (1L << (WHITESPACE - 64)) | (1L << (NUMBER - 64)) | (1L << (HEX_NUMBER - 64)) | (1L << (SingleLineString - 64)) | (1L << (MultiLineString - 64)) | (1L << (IDENTIFIER - 64)) | (1L << (SINGLE_LINE_COMMENT - 64)) | (1L << (MULTI_LINE_COMMENT - 64)))) != 0)) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17) | (1L << T__18) | (1L << T__19) | (1L << T__20) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << T__31) | (1L << T__32) | (1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__40) | (1L << T__41) | (1L << T__42) | (1L << T__43) | (1L << T__44) | (1L << T__45) | (1L << T__46) | (1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << T__57) | (1L << T__58) | (1L << T__59) | (1L << T__60) | (1L << T__61) | (1L << T__62))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (T__63 - 64)) | (1L << (T__64 - 64)) | (1L << (T__65 - 64)) | (1L << (T__66 - 64)) | (1L << (T__67 - 64)) | (1L << (T__68 - 64)) | (1L << (T__69 - 64)) | (1L << (T__70 - 64)) | (1L << (T__71 - 64)) | (1L << (T__72 - 64)) | (1L << (T__73 - 64)) | (1L << (T__74 - 64)) | (1L << (T__75 - 64)) | (1L << (T__76 - 64)) | (1L << (T__77 - 64)) | (1L << (T__78 - 64)) | (1L << (T__79 - 64)) | (1L << (T__80 - 64)) | (1L << (T__81 - 64)) | (1L << (T__82 - 64)) | (1L << (T__83 - 64)) | (1L << (T__84 - 64)) | (1L << (T__85 - 64)) | (1L << (T__86 - 64)) | (1L << (T__87 - 64)) | (1L << (T__88 - 64)) | (1L << (T__89 - 64)) | (1L << (T__90 - 64)) | (1L << (T__91 - 64)) | (1L << (T__92 - 64)) | (1L << (T__93 - 64)) | (1L << (T__94 - 64)) | (1L << (T__95 - 64)) | (1L << (T__96 - 64)) | (1L << (T__97 - 64)) | (1L << (T__98 - 64)) | (1L << (T__99 - 64)) | (1L << (T__100 - 64)) | (1L << (T__101 - 64)) | (1L << (T__102 - 64)) | (1L << (T__103 - 64)) | (1L << (T__104 - 64)) | (1L << (T__105 - 64)) | (1L << (T__106 - 64)) | (1L << (T__107 - 64)) | (1L << (T__108 - 64)) | (1L << (T__109 - 64)) | (1L << (T__110 - 64)) | (1L << (T__111 - 64)) | (1L << (T__112 - 64)) | (1L << (T__113 - 64)) | (1L << (T__114 - 64)) | (1L << (T__115 - 64)) | (1L << (T__116 - 64)) | (1L << (T__117 - 64)) | (1L << (T__118 - 64)) | (1L << (T__119 - 64)) | (1L << (T__120 - 64)) | (1L << (T__121 - 64)) | (1L << (T__122 - 64)) | (1L << (WHITESPACE - 64)) | (1L << (NUMBER - 64)) | (1L << (HEX_NUMBER - 64)) | (1L << (SingleLineString - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (MultiLineString - 128)) | (1L << (IDENTIFIER - 128)) | (1L << (SINGLE_LINE_COMMENT - 128)) | (1L << (MULTI_LINE_COMMENT - 128)))) != 0)) {
{
{
- setState(1668);
+ setState(1866);
_la = _input.LA(1);
if ( _la <= 0 || (_la==NEWLINE) ) {
_errHandler.recoverInline(this);
@@ -11299,11 +12423,11 @@ public final ScriptTagContext scriptTag() throws RecognitionException {
}
}
}
- setState(1673);
+ setState(1871);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1674);
+ setState(1872);
match(NEWLINE);
}
}
@@ -11346,17 +12470,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LibraryNameContext libraryName() throws RecognitionException {
LibraryNameContext _localctx = new LibraryNameContext(_ctx, getState());
- enterRule(_localctx, 300, RULE_libraryName);
+ enterRule(_localctx, 328, RULE_libraryName);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1676);
+ setState(1874);
metadata();
- setState(1677);
- match(T__109);
- setState(1678);
+ setState(1875);
+ match(T__115);
+ setState(1876);
dottedIdentifierList();
- setState(1679);
+ setState(1877);
match(T__8);
}
}
@@ -11399,22 +12523,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ImportOrExportContext importOrExport() throws RecognitionException {
ImportOrExportContext _localctx = new ImportOrExportContext(_ctx, getState());
- enterRule(_localctx, 302, RULE_importOrExport);
+ enterRule(_localctx, 330, RULE_importOrExport);
try {
- setState(1683);
+ setState(1881);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,224,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(1681);
+ setState(1879);
libraryimport();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(1682);
+ setState(1880);
libraryExport();
}
break;
@@ -11459,26 +12583,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final DottedIdentifierListContext dottedIdentifierList() throws RecognitionException {
DottedIdentifierListContext _localctx = new DottedIdentifierListContext(_ctx, getState());
- enterRule(_localctx, 304, RULE_dottedIdentifierList);
+ enterRule(_localctx, 332, RULE_dottedIdentifierList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1685);
+ setState(1883);
identifier();
- setState(1690);
+ setState(1888);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(1686);
+ setState(1884);
match(T__0);
- setState(1687);
+ setState(1885);
identifier();
}
}
- setState(1692);
+ setState(1890);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -11523,13 +12647,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LibraryimportContext libraryimport() throws RecognitionException {
LibraryimportContext _localctx = new LibraryimportContext(_ctx, getState());
- enterRule(_localctx, 306, RULE_libraryimport);
+ enterRule(_localctx, 334, RULE_libraryimport);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1693);
+ setState(1891);
metadata();
- setState(1694);
+ setState(1892);
importSpecification();
}
}
@@ -11578,42 +12702,42 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ImportSpecificationContext importSpecification() throws RecognitionException {
ImportSpecificationContext _localctx = new ImportSpecificationContext(_ctx, getState());
- enterRule(_localctx, 308, RULE_importSpecification);
+ enterRule(_localctx, 336, RULE_importSpecification);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1696);
- match(T__110);
- setState(1697);
+ setState(1894);
+ match(T__116);
+ setState(1895);
configurableUri();
- setState(1700);
+ setState(1898);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__87) {
+ if (_la==T__94) {
{
- setState(1698);
- match(T__87);
- setState(1699);
+ setState(1896);
+ match(T__94);
+ setState(1897);
identifier();
}
}
- setState(1705);
+ setState(1903);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__111 || _la==T__112) {
+ while (_la==T__117 || _la==T__118) {
{
{
- setState(1702);
+ setState(1900);
combinator();
}
}
- setState(1707);
+ setState(1905);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1708);
+ setState(1906);
match(T__8);
}
}
@@ -11653,26 +12777,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final CombinatorContext combinator() throws RecognitionException {
CombinatorContext _localctx = new CombinatorContext(_ctx, getState());
- enterRule(_localctx, 310, RULE_combinator);
+ enterRule(_localctx, 338, RULE_combinator);
try {
- setState(1714);
+ setState(1912);
_errHandler.sync(this);
switch (_input.LA(1)) {
- case T__111:
+ case T__117:
enterOuterAlt(_localctx, 1);
{
- setState(1710);
- match(T__111);
- setState(1711);
+ setState(1908);
+ match(T__117);
+ setState(1909);
identifierList();
}
break;
- case T__112:
+ case T__118:
enterOuterAlt(_localctx, 2);
{
- setState(1712);
- match(T__112);
- setState(1713);
+ setState(1910);
+ match(T__118);
+ setState(1911);
identifierList();
}
break;
@@ -11719,26 +12843,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IdentifierListContext identifierList() throws RecognitionException {
IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState());
- enterRule(_localctx, 312, RULE_identifierList);
+ enterRule(_localctx, 340, RULE_identifierList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1716);
+ setState(1914);
identifier();
- setState(1721);
+ setState(1919);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(1717);
+ setState(1915);
match(T__0);
- setState(1718);
+ setState(1916);
identifier();
}
}
- setState(1723);
+ setState(1921);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -11789,32 +12913,32 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final LibraryExportContext libraryExport() throws RecognitionException {
LibraryExportContext _localctx = new LibraryExportContext(_ctx, getState());
- enterRule(_localctx, 314, RULE_libraryExport);
+ enterRule(_localctx, 342, RULE_libraryExport);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1724);
+ setState(1922);
metadata();
- setState(1725);
- match(T__113);
- setState(1726);
+ setState(1923);
+ match(T__119);
+ setState(1924);
configurableUri();
- setState(1730);
+ setState(1928);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__111 || _la==T__112) {
+ while (_la==T__117 || _la==T__118) {
{
{
- setState(1727);
+ setState(1925);
combinator();
}
}
- setState(1732);
+ setState(1930);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1733);
+ setState(1931);
match(T__8);
}
}
@@ -11857,17 +12981,17 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PartDirectiveContext partDirective() throws RecognitionException {
PartDirectiveContext _localctx = new PartDirectiveContext(_ctx, getState());
- enterRule(_localctx, 316, RULE_partDirective);
+ enterRule(_localctx, 344, RULE_partDirective);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1735);
+ setState(1933);
metadata();
- setState(1736);
- match(T__114);
- setState(1737);
+ setState(1934);
+ match(T__120);
+ setState(1935);
uri();
- setState(1738);
+ setState(1936);
match(T__8);
}
}
@@ -11913,36 +13037,36 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PartHeaderContext partHeader() throws RecognitionException {
PartHeaderContext _localctx = new PartHeaderContext(_ctx, getState());
- enterRule(_localctx, 318, RULE_partHeader);
+ enterRule(_localctx, 346, RULE_partHeader);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1740);
+ setState(1938);
metadata();
- setState(1741);
- match(T__114);
- setState(1742);
- match(T__115);
- setState(1743);
+ setState(1939);
+ match(T__120);
+ setState(1940);
+ match(T__121);
+ setState(1941);
identifier();
- setState(1748);
+ setState(1946);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__19) {
{
{
- setState(1744);
+ setState(1942);
match(T__19);
- setState(1745);
+ setState(1943);
identifier();
}
}
- setState(1750);
+ setState(1948);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1751);
+ setState(1949);
match(T__8);
}
}
@@ -11989,28 +13113,28 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PartDeclarationContext partDeclaration() throws RecognitionException {
PartDeclarationContext _localctx = new PartDeclarationContext(_ctx, getState());
- enterRule(_localctx, 320, RULE_partDeclaration);
+ enterRule(_localctx, 348, RULE_partDeclaration);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1753);
+ setState(1951);
partHeader();
- setState(1757);
+ setState(1955);
_errHandler.sync(this);
_la = _input.LA(1);
- while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__21) | (1L << T__22) | (1L << T__25) | (1L << T__31) | (1L << T__32) | (1L << T__37) | (1L << T__40))) != 0) || _la==T__116 || _la==IDENTIFIER) {
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__5) | (1L << T__13) | (1L << T__21) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__29) | (1L << T__35) | (1L << T__36) | (1L << T__41) | (1L << T__44))) != 0) || _la==T__122 || _la==IDENTIFIER) {
{
{
- setState(1754);
+ setState(1952);
topLevelDefinition();
}
}
- setState(1759);
+ setState(1957);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(1760);
+ setState(1958);
match(EOF);
}
}
@@ -12050,11 +13174,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final UriContext uri() throws RecognitionException {
UriContext _localctx = new UriContext(_ctx, getState());
- enterRule(_localctx, 322, RULE_uri);
+ enterRule(_localctx, 350, RULE_uri);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1762);
+ setState(1960);
stringLiteral();
}
}
@@ -12100,24 +13224,24 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ConfigurableUriContext configurableUri() throws RecognitionException {
ConfigurableUriContext _localctx = new ConfigurableUriContext(_ctx, getState());
- enterRule(_localctx, 324, RULE_configurableUri);
+ enterRule(_localctx, 352, RULE_configurableUri);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1764);
+ setState(1962);
uri();
- setState(1768);
+ setState(1966);
_errHandler.sync(this);
_la = _input.LA(1);
- while (_la==T__88) {
+ while (_la==T__95) {
{
{
- setState(1765);
+ setState(1963);
configurationUri();
}
}
- setState(1770);
+ setState(1968);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -12162,19 +13286,19 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ConfigurationUriContext configurationUri() throws RecognitionException {
ConfigurationUriContext _localctx = new ConfigurationUriContext(_ctx, getState());
- enterRule(_localctx, 326, RULE_configurationUri);
+ enterRule(_localctx, 354, RULE_configurationUri);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1771);
- match(T__88);
- setState(1772);
+ setState(1969);
+ match(T__95);
+ setState(1970);
match(T__13);
- setState(1773);
+ setState(1971);
uriTest();
- setState(1774);
+ setState(1972);
match(T__14);
- setState(1775);
+ setState(1973);
uri();
}
}
@@ -12217,21 +13341,21 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final UriTestContext uriTest() throws RecognitionException {
UriTestContext _localctx = new UriTestContext(_ctx, getState());
- enterRule(_localctx, 328, RULE_uriTest);
+ enterRule(_localctx, 356, RULE_uriTest);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1777);
+ setState(1975);
dottedIdentifierList();
- setState(1780);
+ setState(1978);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__30) {
+ if (_la==T__34) {
{
- setState(1778);
- match(T__30);
- setState(1779);
+ setState(1976);
+ match(T__34);
+ setState(1977);
stringLiteral();
}
}
@@ -12256,6 +13380,9 @@ public TypeNameContext typeName() {
public TypeArgumentsContext typeArguments() {
return getRuleContext(TypeArgumentsContext.class,0);
}
+ public RecordTypeContext recordType() {
+ return getRuleContext(RecordTypeContext.class,0);
+ }
public DtypeContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -12277,23 +13404,59 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final DtypeContext dtype() throws RecognitionException {
DtypeContext _localctx = new DtypeContext(_ctx, getState());
- enterRule(_localctx, 330, RULE_dtype);
+ enterRule(_localctx, 358, RULE_dtype);
int _la;
try {
- enterOuterAlt(_localctx, 1);
- {
- setState(1782);
- typeName();
- setState(1784);
+ setState(1991);
_errHandler.sync(this);
- _la = _input.LA(1);
- if (_la==T__38) {
+ switch (_input.LA(1)) {
+ case T__5:
+ case IDENTIFIER:
+ enterOuterAlt(_localctx, 1);
{
- setState(1783);
- typeArguments();
+ setState(1980);
+ typeName();
+ setState(1982);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__42) {
+ {
+ setState(1981);
+ typeArguments();
+ }
}
- }
+ setState(1985);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,236,_ctx) ) {
+ case 1:
+ {
+ setState(1984);
+ match(T__69);
+ }
+ break;
+ }
+ }
+ break;
+ case T__13:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1987);
+ recordType();
+ setState(1989);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,237,_ctx) ) {
+ case 1:
+ {
+ setState(1988);
+ match(T__69);
+ }
+ break;
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
}
}
catch (RecognitionException re) {
@@ -12332,22 +13495,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeNameContext typeName() throws RecognitionException {
TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
- enterRule(_localctx, 332, RULE_typeName);
+ enterRule(_localctx, 360, RULE_typeName);
try {
- setState(1788);
+ setState(1995);
_errHandler.sync(this);
switch (_input.LA(1)) {
case IDENTIFIER:
enterOuterAlt(_localctx, 1);
{
- setState(1786);
+ setState(1993);
qualified();
}
break;
case T__5:
enterOuterAlt(_localctx, 2);
{
- setState(1787);
+ setState(1994);
match(T__5);
}
break;
@@ -12391,16 +13554,16 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeArgumentsContext typeArguments() throws RecognitionException {
TypeArgumentsContext _localctx = new TypeArgumentsContext(_ctx, getState());
- enterRule(_localctx, 334, RULE_typeArguments);
+ enterRule(_localctx, 362, RULE_typeArguments);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1790);
- match(T__38);
- setState(1791);
+ setState(1997);
+ match(T__42);
+ setState(1998);
typeList();
- setState(1792);
- match(T__39);
+ setState(1999);
+ match(T__43);
}
}
catch (RecognitionException re) {
@@ -12442,26 +13605,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeListContext typeList() throws RecognitionException {
TypeListContext _localctx = new TypeListContext(_ctx, getState());
- enterRule(_localctx, 336, RULE_typeList);
+ enterRule(_localctx, 364, RULE_typeList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1794);
+ setState(2001);
dtype();
- setState(1799);
+ setState(2006);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==T__0) {
{
{
- setState(1795);
+ setState(2002);
match(T__0);
- setState(1796);
+ setState(2003);
dtype();
}
}
- setState(1801);
+ setState(2008);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -12506,15 +13669,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeAliasContext typeAlias() throws RecognitionException {
TypeAliasContext _localctx = new TypeAliasContext(_ctx, getState());
- enterRule(_localctx, 338, RULE_typeAlias);
+ enterRule(_localctx, 366, RULE_typeAlias);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1802);
+ setState(2009);
metadata();
- setState(1803);
- match(T__116);
- setState(1804);
+ setState(2010);
+ match(T__122);
+ setState(2011);
typeAliasBody();
}
}
@@ -12554,11 +13717,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeAliasBodyContext typeAliasBody() throws RecognitionException {
TypeAliasBodyContext _localctx = new TypeAliasBodyContext(_ctx, getState());
- enterRule(_localctx, 340, RULE_typeAliasBody);
+ enterRule(_localctx, 368, RULE_typeAliasBody);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1806);
+ setState(2013);
functionTypeAlias();
}
}
@@ -12604,26 +13767,26 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FunctionTypeAliasContext functionTypeAlias() throws RecognitionException {
FunctionTypeAliasContext _localctx = new FunctionTypeAliasContext(_ctx, getState());
- enterRule(_localctx, 342, RULE_functionTypeAlias);
+ enterRule(_localctx, 370, RULE_functionTypeAlias);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(1808);
+ setState(2015);
functionPrefix();
- setState(1810);
+ setState(2017);
_errHandler.sync(this);
_la = _input.LA(1);
- if (_la==T__38) {
+ if (_la==T__42) {
{
- setState(1809);
+ setState(2016);
typeParameters();
}
}
- setState(1812);
+ setState(2019);
formalParameterList();
- setState(1813);
+ setState(2020);
match(T__8);
}
}
@@ -12666,21 +13829,21 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FunctionPrefixContext functionPrefix() throws RecognitionException {
FunctionPrefixContext _localctx = new FunctionPrefixContext(_ctx, getState());
- enterRule(_localctx, 344, RULE_functionPrefix);
+ enterRule(_localctx, 372, RULE_functionPrefix);
try {
enterOuterAlt(_localctx, 1);
{
- setState(1816);
+ setState(2023);
_errHandler.sync(this);
- switch ( getInterpreter().adaptivePredict(_input,214,_ctx) ) {
+ switch ( getInterpreter().adaptivePredict(_input,242,_ctx) ) {
case 1:
{
- setState(1815);
+ setState(2022);
returnType();
}
break;
}
- setState(1818);
+ setState(2025);
identifier();
}
}
@@ -12696,7 +13859,7 @@ public final FunctionPrefixContext functionPrefix() throws RecognitionException
}
public static final String _serializedATN =
- "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0080\u071f\4\2\t"+
+ "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0086\u07ee\4\2\t"+
"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
@@ -12720,721 +13883,817 @@ public final FunctionPrefixContext functionPrefix() throws RecognitionException
"\t\u00a0\4\u00a1\t\u00a1\4\u00a2\t\u00a2\4\u00a3\t\u00a3\4\u00a4\t\u00a4"+
"\4\u00a5\t\u00a5\4\u00a6\t\u00a6\4\u00a7\t\u00a7\4\u00a8\t\u00a8\4\u00a9"+
"\t\u00a9\4\u00aa\t\u00aa\4\u00ab\t\u00ab\4\u00ac\t\u00ac\4\u00ad\t\u00ad"+
- "\4\u00ae\t\u00ae\3\2\3\2\5\2\u015f\n\2\3\3\3\3\3\3\7\3\u0164\n\3\f\3\16"+
- "\3\u0167\13\3\3\4\3\4\3\4\3\4\3\5\3\5\5\5\u016f\n\5\3\5\3\5\5\5\u0173"+
- "\n\5\3\5\5\5\u0176\n\5\3\6\3\6\5\6\u017a\n\6\3\7\3\7\3\7\5\7\u017f\n\7"+
- "\3\7\3\7\7\7\u0183\n\7\f\7\16\7\u0186\13\7\3\b\3\b\3\b\5\b\u018b\n\b\3"+
- "\t\3\t\3\t\7\t\u0190\n\t\f\t\16\t\u0193\13\t\3\n\3\n\5\n\u0197\n\n\3\n"+
- "\3\n\3\n\3\13\5\13\u019d\n\13\3\13\3\13\3\f\3\f\5\f\u01a3\n\f\3\r\5\r"+
- "\u01a6\n\r\3\r\3\r\3\r\3\r\3\r\5\r\u01ad\n\r\3\r\5\r\u01b0\n\r\3\16\3"+
- "\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u01c0"+
- "\n\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u01c8\n\17\3\20\3\20\3\20\7\20"+
- "\u01cd\n\20\f\20\16\20\u01d0\13\20\3\21\3\21\5\21\u01d4\n\21\3\22\3\22"+
- "\3\22\3\22\7\22\u01da\n\22\f\22\16\22\u01dd\13\22\3\22\5\22\u01e0\n\22"+
- "\3\22\3\22\3\23\3\23\3\23\3\23\7\23\u01e8\n\23\f\23\16\23\u01eb\13\23"+
- "\3\23\5\23\u01ee\n\23\3\23\3\23\3\24\3\24\3\24\5\24\u01f5\n\24\3\25\3"+
- "\25\5\25\u01f9\n\25\3\25\5\25\u01fc\n\25\3\25\3\25\3\25\3\26\3\26\3\26"+
- "\5\26\u0204\n\26\3\26\3\26\5\26\u0208\n\26\3\27\3\27\5\27\u020c\n\27\3"+
- "\27\3\27\3\27\3\27\5\27\u0212\n\27\3\30\3\30\3\30\5\30\u0217\n\30\3\31"+
- "\3\31\3\31\5\31\u021c\n\31\3\31\3\31\3\31\5\31\u0221\n\31\5\31\u0223\n"+
- "\31\3\32\3\32\5\32\u0227\n\32\3\32\3\32\3\32\5\32\u022c\n\32\3\32\5\32"+
- "\u022f\n\32\3\32\5\32\u0232\n\32\3\32\5\32\u0235\n\32\3\32\3\32\3\32\3"+
- "\32\7\32\u023b\n\32\f\32\16\32\u023e\13\32\3\32\3\32\3\32\3\32\5\32\u0244"+
- "\n\32\3\32\3\32\3\32\5\32\u0249\n\32\3\33\3\33\3\33\3\34\3\34\3\34\3\34"+
- "\3\34\3\34\5\34\u0254\n\34\3\35\3\35\5\35\u0258\n\35\3\35\3\35\5\35\u025c"+
- "\n\35\3\35\3\35\5\35\u0260\n\35\3\35\3\35\5\35\u0264\n\35\3\35\3\35\5"+
- "\35\u0268\n\35\3\36\3\36\3\36\5\36\u026d\n\36\3\36\3\36\3\36\5\36\u0272"+
- "\n\36\3\36\3\36\3\36\3\36\3\36\3\36\5\36\u027a\n\36\5\36\u027c\n\36\3"+
- "\36\3\36\3\36\5\36\u0281\n\36\5\36\u0283\n\36\3\36\3\36\5\36\u0287\n\36"+
- "\3\36\3\36\3\36\5\36\u028c\n\36\5\36\u028e\n\36\3\36\3\36\3\36\3\36\5"+
- "\36\u0294\n\36\3\36\3\36\3\36\5\36\u0299\n\36\3\36\3\36\5\36\u029d\n\36"+
- "\3\36\3\36\5\36\u02a1\n\36\3\36\5\36\u02a4\n\36\3\37\3\37\3\37\7\37\u02a9"+
- "\n\37\f\37\16\37\u02ac\13\37\3 \3 \3 \3 \3!\5!\u02b3\n!\3!\3!\3!\3!\3"+
- "\"\3\"\3\"\3\"\5\"\u02bd\n\"\3#\3#\3#\3#\3#\3#\5#\u02c5\n#\3$\5$\u02c8"+
- "\n$\3$\3$\3$\3%\5%\u02ce\n%\3%\3%\3%\3%\3&\3&\3&\5&\u02d7\n&\3&\3&\3\'"+
- "\3\'\3\'\3\'\5\'\u02df\n\'\3\'\3\'\3(\3(\3(\3(\7(\u02e7\n(\f(\16(\u02ea"+
- "\13(\3)\3)\3)\3)\3)\3)\3)\3)\3)\5)\u02f5\n)\3*\3*\5*\u02f9\n*\3*\3*\3"+
- "*\3*\7*\u02ff\n*\f*\16*\u0302\13*\3+\3+\3+\3+\5+\u0308\n+\3+\3+\3,\5,"+
- "\u030d\n,\3,\3,\3,\3,\5,\u0313\n,\3,\3,\3,\3,\3,\5,\u031a\n,\3-\3-\3-"+
- "\3-\3.\3.\3.\3/\3/\3/\3\60\3\60\5\60\u0328\n\60\3\60\3\60\3\60\3\60\3"+
- "\61\3\61\3\61\5\61\u0331\n\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\7\62"+
- "\u033a\n\62\f\62\16\62\u033d\13\62\3\62\5\62\u0340\n\62\3\62\3\62\3\63"+
- "\3\63\3\63\3\64\3\64\3\64\3\64\5\64\u034b\n\64\3\65\3\65\3\65\3\65\7\65"+
- "\u0351\n\65\f\65\16\65\u0354\13\65\3\65\3\65\3\66\3\66\3\66\3\66\5\66"+
- "\u035c\n\66\3\66\5\66\u035f\n\66\7\66\u0361\n\66\f\66\16\66\u0364\13\66"+
- "\3\67\3\67\3\67\3\67\3\67\3\67\7\67\u036c\n\67\f\67\16\67\u036f\13\67"+
- "\3\67\5\67\u0372\n\67\38\38\38\38\38\38\58\u037a\n8\39\39\39\79\u037f"+
- "\n9\f9\169\u0382\139\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\5:\u0390\n:\3"+
- ";\3;\3;\3;\3;\3;\3;\5;\u0399\n;\3<\3<\3=\3=\3>\3>\3?\6?\u03a2\n?\r?\16"+
- "?\u03a3\3@\3@\3@\3@\3@\3@\5@\u03ac\n@\3A\3A\3A\3A\3A\7A\u03b3\nA\fA\16"+
- "A\u03b6\13A\5A\u03b8\nA\3B\5B\u03bb\nB\3B\5B\u03be\nB\3B\3B\3B\5B\u03c3"+
- "\nB\5B\u03c5\nB\3B\3B\3C\5C\u03ca\nC\3C\5C\u03cd\nC\3C\3C\3C\3C\7C\u03d3"+
- "\nC\fC\16C\u03d6\13C\3C\5C\u03d9\nC\5C\u03db\nC\3C\3C\3D\3D\3D\3D\3E\3"+
- "E\3E\3F\3F\3F\3G\3G\3G\3H\3H\3I\3I\3I\3I\5I\u03f2\nI\3I\3I\3J\3J\3J\3"+
- "J\5J\u03fa\nJ\3J\3J\3K\3K\3K\5K\u0401\nK\5K\u0403\nK\3K\3K\3L\3L\3L\7"+
- "L\u040a\nL\fL\16L\u040d\13L\3L\3L\3L\7L\u0412\nL\fL\16L\u0415\13L\5L\u0417"+
- "\nL\3M\3M\3M\3N\3N\3N\7N\u041f\nN\fN\16N\u0422\13N\3N\3N\7N\u0426\nN\f"+
- "N\16N\u0429\13N\7N\u042b\nN\fN\16N\u042e\13N\3N\3N\3N\5N\u0433\nN\3O\3"+
- "O\3O\3O\3O\5O\u043a\nO\3P\5P\u043d\nP\3P\3P\3Q\3Q\5Q\u0443\nQ\3R\3R\3"+
- "S\3S\3S\3S\3S\3S\5S\u044d\nS\3T\3T\3T\7T\u0452\nT\fT\16T\u0455\13T\3U"+
- "\3U\3U\7U\u045a\nU\fU\16U\u045d\13U\3V\3V\3V\7V\u0462\nV\fV\16V\u0465"+
- "\13V\3W\3W\3W\3W\5W\u046b\nW\3W\3W\3W\3W\5W\u0471\nW\3X\3X\3Y\3Y\3Y\3"+
- "Y\3Y\3Y\5Y\u047b\nY\3Y\3Y\3Y\3Y\5Y\u0481\nY\3Z\3Z\3[\3[\3[\7[\u0488\n"+
- "[\f[\16[\u048b\13[\3[\3[\3[\6[\u0490\n[\r[\16[\u0491\5[\u0494\n[\3\\\3"+
- "\\\3\\\7\\\u0499\n\\\f\\\16\\\u049c\13\\\3\\\3\\\3\\\6\\\u04a1\n\\\r\\"+
- "\16\\\u04a2\5\\\u04a5\n\\\3]\3]\3]\7]\u04aa\n]\f]\16]\u04ad\13]\3]\3]"+
- "\3]\6]\u04b2\n]\r]\16]\u04b3\5]\u04b6\n]\3^\3^\3_\3_\3_\3_\7_\u04be\n"+
- "_\f_\16_\u04c1\13_\3_\3_\3_\3_\6_\u04c7\n_\r_\16_\u04c8\5_\u04cb\n_\3"+
- "`\3`\3a\3a\3a\3a\7a\u04d3\na\fa\16a\u04d6\13a\3a\3a\3a\3a\6a\u04dc\na"+
- "\ra\16a\u04dd\5a\u04e0\na\3b\3b\3c\3c\3c\3c\7c\u04e8\nc\fc\16c\u04eb\13"+
- "c\3c\3c\3c\3c\6c\u04f1\nc\rc\16c\u04f2\5c\u04f5\nc\3d\3d\3e\3e\3e\3e\3"+
- "e\3e\3e\5e\u0500\ne\3e\3e\3e\3e\3e\5e\u0507\ne\3f\3f\3f\5f\u050c\nf\3"+
- "g\3g\3h\3h\3i\3i\3j\3j\3j\3k\3k\3k\3k\3k\7k\u051c\nk\fk\16k\u051f\13k"+
- "\5k\u0521\nk\3l\3l\3m\3m\5m\u0527\nm\3n\3n\3o\3o\7o\u052d\no\fo\16o\u0530"+
- "\13o\3o\5o\u0533\no\3o\3o\3o\3o\5o\u0539\no\3p\3p\3p\3p\3p\3p\5p\u0541"+
- "\np\3q\3q\3q\5q\u0546\nq\3r\3r\3s\3s\3s\5s\u054d\ns\3t\3t\3t\3u\3u\5u"+
- "\u0554\nu\3v\3v\3v\3w\3w\3x\7x\u055c\nx\fx\16x\u055f\13x\3y\7y\u0562\n"+
- "y\fy\16y\u0565\13y\3y\3y\3z\3z\3z\3z\3z\3z\3z\3z\3z\3z\3z\3z\3z\3z\3z"+
- "\3z\3z\5z\u057a\nz\3{\5{\u057d\n{\3{\3{\3|\3|\3|\3}\3}\3}\3~\3~\3~\3~"+
- "\3~\3~\3~\5~\u058e\n~\3\177\5\177\u0591\n\177\3\177\3\177\3\177\3\177"+
- "\3\177\3\177\3\u0080\3\u0080\5\u0080\u059b\n\u0080\3\u0080\3\u0080\5\u0080"+
- "\u059f\n\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080"+
- "\3\u0080\5\u0080\u05a9\n\u0080\3\u0081\3\u0081\5\u0081\u05ad\n\u0081\3"+
- "\u0081\5\u0081\u05b0\n\u0081\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3"+
- "\u0082\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083"+
- "\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\7\u0084\u05c6\n\u0084"+
- "\f\u0084\16\u0084\u05c9\13\u0084\3\u0084\5\u0084\u05cc\n\u0084\3\u0084"+
- "\3\u0084\3\u0085\7\u0085\u05d1\n\u0085\f\u0085\16\u0085\u05d4\13\u0085"+
- "\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085\3\u0086\7\u0086\u05dc\n\u0086"+
- "\f\u0086\16\u0086\u05df\13\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0087"+
- "\3\u0087\3\u0087\3\u0088\3\u0088\3\u0088\6\u0088\u05eb\n\u0088\r\u0088"+
- "\16\u0088\u05ec\3\u0088\5\u0088\u05f0\n\u0088\3\u0088\5\u0088\u05f3\n"+
- "\u0088\3\u0089\3\u0089\3\u0089\3\u0089\3\u0089\3\u0089\5\u0089\u05fb\n"+
- "\u0089\3\u0089\3\u0089\5\u0089\u05ff\n\u0089\3\u008a\3\u008a\3\u008a\3"+
- "\u008a\3\u008a\5\u008a\u0606\n\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3"+
- "\u008b\3\u008c\3\u008c\5\u008c\u060f\n\u008c\3\u008c\3\u008c\3\u008d\3"+
- "\u008d\3\u008d\3\u008e\3\u008e\5\u008e\u0618\n\u008e\3\u008e\3\u008e\3"+
- "\u008f\3\u008f\5\u008f\u061e\n\u008f\3\u008f\3\u008f\3\u0090\3\u0090\3"+
- "\u0090\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092"+
- "\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\5\u0093\u0632\n\u0093\3\u0093"+
- "\5\u0093\u0635\n\u0093\3\u0093\3\u0093\3\u0094\3\u0094\3\u0094\3\u0094"+
- "\5\u0094\u063d\n\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0643\n"+
- "\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0649\n\u0094\3\u0094\3"+
- "\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0652\n\u0094\3"+
- "\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0659\n\u0094\3\u0094\3"+
- "\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u0662\n\u0094\3"+
- "\u0094\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094\5\u0094\u066a\n\u0094\3"+
- "\u0095\3\u0095\3\u0096\5\u0096\u066f\n\u0096\3\u0096\5\u0096\u0672\n\u0096"+
- "\3\u0096\7\u0096\u0675\n\u0096\f\u0096\16\u0096\u0678\13\u0096\3\u0096"+
- "\7\u0096\u067b\n\u0096\f\u0096\16\u0096\u067e\13\u0096\3\u0096\7\u0096"+
- "\u0681\n\u0096\f\u0096\16\u0096\u0684\13\u0096\3\u0097\3\u0097\7\u0097"+
- "\u0688\n\u0097\f\u0097\16\u0097\u068b\13\u0097\3\u0097\3\u0097\3\u0098"+
- "\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099\3\u0099\5\u0099\u0696\n\u0099"+
- "\3\u009a\3\u009a\3\u009a\7\u009a\u069b\n\u009a\f\u009a\16\u009a\u069e"+
- "\13\u009a\3\u009b\3\u009b\3\u009b\3\u009c\3\u009c\3\u009c\3\u009c\5\u009c"+
- "\u06a7\n\u009c\3\u009c\7\u009c\u06aa\n\u009c\f\u009c\16\u009c\u06ad\13"+
- "\u009c\3\u009c\3\u009c\3\u009d\3\u009d\3\u009d\3\u009d\5\u009d\u06b5\n"+
- "\u009d\3\u009e\3\u009e\3\u009e\7\u009e\u06ba\n\u009e\f\u009e\16\u009e"+
- "\u06bd\13\u009e\3\u009f\3\u009f\3\u009f\3\u009f\7\u009f\u06c3\n\u009f"+
- "\f\u009f\16\u009f\u06c6\13\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0"+
- "\3\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\7\u00a1"+
- "\u06d5\n\u00a1\f\u00a1\16\u00a1\u06d8\13\u00a1\3\u00a1\3\u00a1\3\u00a2"+
- "\3\u00a2\7\u00a2\u06de\n\u00a2\f\u00a2\16\u00a2\u06e1\13\u00a2\3\u00a2"+
- "\3\u00a2\3\u00a3\3\u00a3\3\u00a4\3\u00a4\7\u00a4\u06e9\n\u00a4\f\u00a4"+
- "\16\u00a4\u06ec\13\u00a4\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5\3\u00a5"+
- "\3\u00a6\3\u00a6\3\u00a6\5\u00a6\u06f7\n\u00a6\3\u00a7\3\u00a7\5\u00a7"+
- "\u06fb\n\u00a7\3\u00a8\3\u00a8\5\u00a8\u06ff\n\u00a8\3\u00a9\3\u00a9\3"+
- "\u00a9\3\u00a9\3\u00aa\3\u00aa\3\u00aa\7\u00aa\u0708\n\u00aa\f\u00aa\16"+
- "\u00aa\u070b\13\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ac\3\u00ac"+
- "\3\u00ad\3\u00ad\5\u00ad\u0715\n\u00ad\3\u00ad\3\u00ad\3\u00ad\3\u00ae"+
- "\5\u00ae\u071b\n\u00ae\3\u00ae\3\u00ae\3\u00ae\2\2\u00af\2\4\6\b\n\f\16"+
- "\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bd"+
- "fhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092"+
- "\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa"+
- "\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2"+
- "\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da"+
- "\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2"+
- "\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a"+
- "\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122"+
- "\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a"+
- "\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152"+
- "\u0154\u0156\u0158\u015a\2\22\4\2\t\t\f\r\3\2\4\5\4\2\24\24\33\33\3\2"+
- "yz\3\2-.\3\2{|\3\2\65@\4\2!!EE\4\2)*FG\3\2HJ\3\2KM\3\2NO\3\2PS\3\2VW\3"+
- "\2\"#\3\2}}\2\u078f\2\u015e\3\2\2\2\4\u0160\3\2\2\2\6\u0168\3\2\2\2\b"+
- "\u0175\3\2\2\2\n\u0179\3\2\2\2\f\u017b\3\2\2\2\16\u0187\3\2\2\2\20\u018c"+
- "\3\2\2\2\22\u0194\3\2\2\2\24\u019c\3\2\2\2\26\u01a2\3\2\2\2\30\u01af\3"+
- "\2\2\2\32\u01b1\3\2\2\2\34\u01c7\3\2\2\2\36\u01c9\3\2\2\2 \u01d3\3\2\2"+
- "\2\"\u01d5\3\2\2\2$\u01e3\3\2\2\2&\u01f4\3\2\2\2(\u01f6\3\2\2\2*\u0207"+
- "\3\2\2\2,\u0209\3\2\2\2.\u0213\3\2\2\2\60\u0222\3\2\2\2\62\u0248\3\2\2"+
- "\2\64\u024a\3\2\2\2\66\u0253\3\2\2\28\u0267\3\2\2\2:\u02a3\3\2\2\2<\u02a5"+
- "\3\2\2\2>\u02ad\3\2\2\2@\u02b2\3\2\2\2B\u02bc\3\2\2\2D\u02c4\3\2\2\2F"+
- "\u02c7\3\2\2\2H\u02cd\3\2\2\2J\u02d3\3\2\2\2L\u02da\3\2\2\2N\u02e2\3\2"+
- "\2\2P\u02f4\3\2\2\2R\u02f8\3\2\2\2T\u0303\3\2\2\2V\u030c\3\2\2\2X\u031b"+
- "\3\2\2\2Z\u031f\3\2\2\2\\\u0322\3\2\2\2^\u0325\3\2\2\2`\u032d\3\2\2\2"+
- "b\u0332\3\2\2\2d\u0343\3\2\2\2f\u0346\3\2\2\2h\u034c\3\2\2\2j\u0362\3"+
- "\2\2\2l\u0371\3\2\2\2n\u0379\3\2\2\2p\u037b\3\2\2\2r\u038f\3\2\2\2t\u0398"+
- "\3\2\2\2v\u039a\3\2\2\2x\u039c\3\2\2\2z\u039e\3\2\2\2|\u03a1\3\2\2\2~"+
- "\u03ab\3\2\2\2\u0080\u03ad\3\2\2\2\u0082\u03ba\3\2\2\2\u0084\u03c9\3\2"+
- "\2\2\u0086\u03de\3\2\2\2\u0088\u03e2\3\2\2\2\u008a\u03e5\3\2\2\2\u008c"+
- "\u03e8\3\2\2\2\u008e\u03eb\3\2\2\2\u0090\u03ed\3\2\2\2\u0092\u03f5\3\2"+
- "\2\2\u0094\u03fd\3\2\2\2\u0096\u0416\3\2\2\2\u0098\u0418\3\2\2\2\u009a"+
- "\u041b\3\2\2\2\u009c\u0439\3\2\2\2\u009e\u043c\3\2\2\2\u00a0\u0442\3\2"+
- "\2\2\u00a2\u0444\3\2\2\2\u00a4\u0446\3\2\2\2\u00a6\u044e\3\2\2\2\u00a8"+
- "\u0456\3\2\2\2\u00aa\u045e\3\2\2\2\u00ac\u0470\3\2\2\2\u00ae\u0472\3\2"+
- "\2\2\u00b0\u0480\3\2\2\2\u00b2\u0482\3\2\2\2\u00b4\u0493\3\2\2\2\u00b6"+
- "\u04a4\3\2\2\2\u00b8\u04b5\3\2\2\2\u00ba\u04b7\3\2\2\2\u00bc\u04ca\3\2"+
- "\2\2\u00be\u04cc\3\2\2\2\u00c0\u04df\3\2\2\2\u00c2\u04e1\3\2\2\2\u00c4"+
- "\u04f4\3\2\2\2\u00c6\u04f6\3\2\2\2\u00c8\u0506\3\2\2\2\u00ca\u050b\3\2"+
- "\2\2\u00cc\u050d\3\2\2\2\u00ce\u050f\3\2\2\2\u00d0\u0511\3\2\2\2\u00d2"+
- "\u0513\3\2\2\2\u00d4\u0520\3\2\2\2\u00d6\u0522\3\2\2\2\u00d8\u0526\3\2"+
- "\2\2\u00da\u0528\3\2\2\2\u00dc\u0538\3\2\2\2\u00de\u0540\3\2\2\2\u00e0"+
- "\u0545\3\2\2\2\u00e2\u0547\3\2\2\2\u00e4\u0549\3\2\2\2\u00e6\u054e\3\2"+
- "\2\2\u00e8\u0551\3\2\2\2\u00ea\u0555\3\2\2\2\u00ec\u0558\3\2\2\2\u00ee"+
- "\u055d\3\2\2\2\u00f0\u0563\3\2\2\2\u00f2\u0579\3\2\2\2\u00f4\u057c\3\2"+
- "\2\2\u00f6\u0580\3\2\2\2\u00f8\u0583\3\2\2\2\u00fa\u0586\3\2\2\2\u00fc"+
- "\u0590\3\2\2\2\u00fe\u05a8\3\2\2\2\u0100\u05af\3\2\2\2\u0102\u05b1\3\2"+
- "\2\2\u0104\u05b7\3\2\2\2\u0106\u05bf\3\2\2\2\u0108\u05d2\3\2\2\2\u010a"+
- "\u05dd\3\2\2\2\u010c\u05e4\3\2\2\2\u010e\u05e7\3\2\2\2\u0110\u05fe\3\2"+
- "\2\2\u0112\u0600\3\2\2\2\u0114\u0609\3\2\2\2\u0116\u060c\3\2\2\2\u0118"+
- "\u0612\3\2\2\2\u011a\u0615\3\2\2\2\u011c\u061b\3\2\2\2\u011e\u0621\3\2"+
- "\2\2\u0120\u0625\3\2\2\2\u0122\u0629\3\2\2\2\u0124\u062c\3\2\2\2\u0126"+
- "\u0669\3\2\2\2\u0128\u066b\3\2\2\2\u012a\u066e\3\2\2\2\u012c\u0685\3\2"+
- "\2\2\u012e\u068e\3\2\2\2\u0130\u0695\3\2\2\2\u0132\u0697\3\2\2\2\u0134"+
- "\u069f\3\2\2\2\u0136\u06a2\3\2\2\2\u0138\u06b4\3\2\2\2\u013a\u06b6\3\2"+
- "\2\2\u013c\u06be\3\2\2\2\u013e\u06c9\3\2\2\2\u0140\u06ce\3\2\2\2\u0142"+
- "\u06db\3\2\2\2\u0144\u06e4\3\2\2\2\u0146\u06e6\3\2\2\2\u0148\u06ed\3\2"+
- "\2\2\u014a\u06f3\3\2\2\2\u014c\u06f8\3\2\2\2\u014e\u06fe\3\2\2\2\u0150"+
- "\u0700\3\2\2\2\u0152\u0704\3\2\2\2\u0154\u070c\3\2\2\2\u0156\u0710\3\2"+
- "\2\2\u0158\u0712\3\2\2\2\u015a\u071a\3\2\2\2\u015c\u015f\5\u012a\u0096"+
- "\2\u015d\u015f\5\u0142\u00a2\2\u015e\u015c\3\2\2\2\u015e\u015d\3\2\2\2"+
- "\u015f\3\3\2\2\2\u0160\u0165\5\6\4\2\u0161\u0162\7\3\2\2\u0162\u0164\5"+
- "\u00e2r\2\u0163\u0161\3\2\2\2\u0164\u0167\3\2\2\2\u0165\u0163\3\2\2\2"+
- "\u0165\u0166\3\2\2\2\u0166\5\3\2\2\2\u0167\u0165\3\2\2\2\u0168\u0169\5"+
- "j\66\2\u0169\u016a\5\b\5\2\u016a\u016b\5\u00e2r\2\u016b\7\3\2\2\2\u016c"+
- "\u016e\7\4\2\2\u016d\u016f\5\u014c\u00a7\2\u016e\u016d\3\2\2\2\u016e\u016f"+
- "\3\2\2\2\u016f\u0176\3\2\2\2\u0170\u0172\7\5\2\2\u0171\u0173\5\u014c\u00a7"+
- "\2\u0172\u0171\3\2\2\2\u0172\u0173\3\2\2\2\u0173\u0176\3\2\2\2\u0174\u0176"+
- "\5\n\6\2\u0175\u016c\3\2\2\2\u0175\u0170\3\2\2\2\u0175\u0174\3\2\2\2\u0176"+
- "\t\3\2\2\2\u0177\u017a\7\6\2\2\u0178\u017a\5\u014c\u00a7\2\u0179\u0177"+
- "\3\2\2\2\u0179\u0178\3\2\2\2\u017a\13\3\2\2\2\u017b\u017e\5\6\4\2\u017c"+
- "\u017d\7\7\2\2\u017d\u017f\5l\67\2\u017e\u017c\3\2\2\2\u017e\u017f\3\2"+
- "\2\2\u017f\u0184\3\2\2\2\u0180\u0181\7\3\2\2\u0181\u0183\5\16\b\2\u0182"+
- "\u0180\3\2\2\2\u0183\u0186\3\2\2\2\u0184\u0182\3\2\2\2\u0184\u0185\3\2"+
- "\2\2\u0185\r\3\2\2\2\u0186\u0184\3\2\2\2\u0187\u018a\5\u00e2r\2\u0188"+
- "\u0189\7\7\2\2\u0189\u018b\5l\67\2\u018a\u0188\3\2\2\2\u018a\u018b\3\2"+
- "\2\2\u018b\17\3\2\2\2\u018c\u0191\5\16\b\2\u018d\u018e\7\3\2\2\u018e\u0190"+
- "\5\16\b\2\u018f\u018d\3\2\2\2\u0190\u0193\3\2\2\2\u0191\u018f\3\2\2\2"+
- "\u0191\u0192\3\2\2\2\u0192\21\3\2\2\2\u0193\u0191\3\2\2\2\u0194\u0196"+
- "\5j\66\2\u0195\u0197\5\26\f\2\u0196\u0195\3\2\2\2\u0196\u0197\3\2\2\2"+
- "\u0197\u0198\3\2\2\2\u0198\u0199\5\u00e2r\2\u0199\u019a\5\24\13\2\u019a"+
- "\23\3\2\2\2\u019b\u019d\5h\65\2\u019c\u019b\3\2\2\2\u019c\u019d\3\2\2"+
- "\2\u019d\u019e\3\2\2\2\u019e\u019f\5\34\17\2\u019f\25\3\2\2\2\u01a0\u01a3"+
- "\7\b\2\2\u01a1\u01a3\5\u014c\u00a7\2\u01a2\u01a0\3\2\2\2\u01a2\u01a1\3"+
- "\2\2\2\u01a3\27\3\2\2\2\u01a4\u01a6\7\t\2\2\u01a5\u01a4\3\2\2\2\u01a5"+
- "\u01a6\3\2\2\2\u01a6\u01a7\3\2\2\2\u01a7\u01a8\7\n\2\2\u01a8\u01a9\5l"+
- "\67\2\u01a9\u01aa\7\13\2\2\u01aa\u01b0\3\2\2\2\u01ab\u01ad\t\2\2\2\u01ac"+
- "\u01ab\3\2\2\2\u01ac\u01ad\3\2\2\2\u01ad\u01ae\3\2\2\2\u01ae\u01b0\5\32"+
- "\16\2\u01af\u01a5\3\2\2\2\u01af\u01ac\3\2\2\2\u01b0\31\3\2\2\2\u01b1\u01b2"+
- "\7\16\2\2\u01b2\u01b3\5\u00eex\2\u01b3\u01b4\7\17\2\2\u01b4\33\3\2\2\2"+
- "\u01b5\u01b6\7\20\2\2\u01b6\u01c8\7\21\2\2\u01b7\u01b8\7\20\2\2\u01b8"+
- "\u01b9\5\36\20\2\u01b9\u01ba\7\21\2\2\u01ba\u01c8\3\2\2\2\u01bb\u01bc"+
- "\7\20\2\2\u01bc\u01bf\5\36\20\2\u01bd\u01be\7\3\2\2\u01be\u01c0\5 \21"+
- "\2\u01bf\u01bd\3\2\2\2\u01bf\u01c0\3\2\2\2\u01c0\u01c1\3\2\2\2\u01c1\u01c2"+
- "\7\21\2\2\u01c2\u01c8\3\2\2\2\u01c3\u01c4\7\20\2\2\u01c4\u01c5\5 \21\2"+
- "\u01c5\u01c6\7\21\2\2\u01c6\u01c8\3\2\2\2\u01c7\u01b5\3\2\2\2\u01c7\u01b7"+
- "\3\2\2\2\u01c7\u01bb\3\2\2\2\u01c7\u01c3\3\2\2\2\u01c8\35\3\2\2\2\u01c9"+
- "\u01ce\5&\24\2\u01ca\u01cb\7\3\2\2\u01cb\u01cd\5&\24\2\u01cc\u01ca\3\2"+
- "\2\2\u01cd\u01d0\3\2\2\2\u01ce\u01cc\3\2\2\2\u01ce\u01cf\3\2\2\2\u01cf"+
- "\37\3\2\2\2\u01d0\u01ce\3\2\2\2\u01d1\u01d4\5\"\22\2\u01d2\u01d4\5$\23"+
- "\2\u01d3\u01d1\3\2\2\2\u01d3\u01d2\3\2\2\2\u01d4!\3\2\2\2\u01d5\u01d6"+
- "\7\22\2\2\u01d6\u01db\5.\30\2\u01d7\u01d8\7\3\2\2\u01d8\u01da\5.\30\2"+
- "\u01d9\u01d7\3\2\2\2\u01da\u01dd\3\2\2\2\u01db\u01d9\3\2\2\2\u01db\u01dc"+
- "\3\2\2\2\u01dc\u01df\3\2\2\2\u01dd\u01db\3\2\2\2\u01de\u01e0\7\3\2\2\u01df"+
- "\u01de\3\2\2\2\u01df\u01e0\3\2\2\2\u01e0\u01e1\3\2\2\2\u01e1\u01e2\7\23"+
- "\2\2\u01e2#\3\2\2\2\u01e3\u01e4\7\16\2\2\u01e4\u01e9\5\60\31\2\u01e5\u01e6"+
- "\7\3\2\2\u01e6\u01e8\5\60\31\2\u01e7\u01e5\3\2\2\2\u01e8\u01eb\3\2\2\2"+
- "\u01e9\u01e7\3\2\2\2\u01e9\u01ea\3\2\2\2\u01ea\u01ed\3\2\2\2\u01eb\u01e9"+
- "\3\2\2\2\u01ec\u01ee\7\3\2\2\u01ed\u01ec\3\2\2\2\u01ed\u01ee\3\2\2\2\u01ee"+
- "\u01ef\3\2\2\2\u01ef\u01f0\7\17\2\2\u01f0%\3\2\2\2\u01f1\u01f5\5(\25\2"+
- "\u01f2\u01f5\5,\27\2\u01f3\u01f5\5*\26\2\u01f4\u01f1\3\2\2\2\u01f4\u01f2"+
- "\3\2\2\2\u01f4\u01f3\3\2\2\2\u01f5\'\3\2\2\2\u01f6\u01f8\5j\66\2\u01f7"+
- "\u01f9\7\24\2\2\u01f8\u01f7\3\2\2\2\u01f8\u01f9\3\2\2\2\u01f9\u01fb\3"+
- "\2\2\2\u01fa\u01fc\5\26\f\2\u01fb\u01fa\3\2\2\2\u01fb\u01fc\3\2\2\2\u01fc"+
- "\u01fd\3\2\2\2\u01fd\u01fe\5\u00e2r\2\u01fe\u01ff\5\24\13\2\u01ff)\3\2"+
- "\2\2\u0200\u0208\5\6\4\2\u0201\u0203\5j\66\2\u0202\u0204\7\24\2\2\u0203"+
- "\u0202\3\2\2\2\u0203\u0204\3\2\2\2\u0204\u0205\3\2\2\2\u0205\u0206\5\u00e2"+
- "r\2\u0206\u0208\3\2\2\2\u0207\u0200\3\2\2\2\u0207\u0201\3\2\2\2\u0208"+
- "+\3\2\2\2\u0209\u020b\5j\66\2\u020a\u020c\5\b\5\2\u020b\u020a\3\2\2\2"+
- "\u020b\u020c\3\2\2\2\u020c\u020d\3\2\2\2\u020d\u020e\7\25\2\2\u020e\u020f"+
- "\7\26\2\2\u020f\u0211\5\u00e2r\2\u0210\u0212\5\24\13\2\u0211\u0210\3\2"+
- "\2\2\u0211\u0212\3\2\2\2\u0212-\3\2\2\2\u0213\u0216\5&\24\2\u0214\u0215"+
- "\7\7\2\2\u0215\u0217\5l\67\2\u0216\u0214\3\2\2\2\u0216\u0217\3\2\2\2\u0217"+
- "/\3\2\2\2\u0218\u021b\5&\24\2\u0219\u021a\7\7\2\2\u021a\u021c\5l\67\2"+
- "\u021b\u0219\3\2\2\2\u021b\u021c\3\2\2\2\u021c\u0223\3\2\2\2\u021d\u0220"+
- "\5&\24\2\u021e\u021f\7\27\2\2\u021f\u0221\5l\67\2\u0220\u021e\3\2\2\2"+
- "\u0220\u0221\3\2\2\2\u0221\u0223\3\2\2\2\u0222\u0218\3\2\2\2\u0222\u021d"+
- "\3\2\2\2\u0223\61\3\2\2\2\u0224\u0226\5j\66\2\u0225\u0227\7\30\2\2\u0226"+
- "\u0225\3\2\2\2\u0226\u0227\3\2\2\2\u0227\u0228\3\2\2\2\u0228\u0229\7\31"+
- "\2\2\u0229\u022b\5\u00e2r\2\u022a\u022c\5h\65\2\u022b\u022a\3\2\2\2\u022b"+
- "\u022c\3\2\2\2\u022c\u022e\3\2\2\2\u022d\u022f\5Z.\2\u022e\u022d\3\2\2"+
- "\2\u022e\u022f\3\2\2\2\u022f\u0231\3\2\2\2\u0230\u0232\5\64\33\2\u0231"+
- "\u0230\3\2\2\2\u0231\u0232\3\2\2\2\u0232\u0234\3\2\2\2\u0233\u0235\5\\"+
- "/\2\u0234\u0233\3\2\2\2\u0234\u0235\3\2\2\2\u0235\u0236\3\2\2\2\u0236"+
- "\u023c\7\16\2\2\u0237\u0238\5j\66\2\u0238\u0239\5\66\34\2\u0239\u023b"+
- "\3\2\2\2\u023a\u0237\3\2\2\2\u023b\u023e\3\2\2\2\u023c\u023a\3\2\2\2\u023c"+
- "\u023d\3\2\2\2\u023d\u023f\3\2\2\2\u023e\u023c\3\2\2\2\u023f\u0240\7\17"+
- "\2\2\u0240\u0249\3\2\2\2\u0241\u0243\5j\66\2\u0242\u0244\7\30\2\2\u0243"+
- "\u0242\3\2\2\2\u0243\u0244\3\2\2\2\u0244\u0245\3\2\2\2\u0245\u0246\7\31"+
- "\2\2\u0246\u0247\5^\60\2\u0247\u0249\3\2\2\2\u0248\u0224\3\2\2\2\u0248"+
- "\u0241\3\2\2\2\u0249\63\3\2\2\2\u024a\u024b\7\32\2\2\u024b\u024c\5\u0152"+
- "\u00aa\2\u024c\65\3\2\2\2\u024d\u024e\5:\36\2\u024e\u024f\7\13\2\2\u024f"+
- "\u0254\3\2\2\2\u0250\u0251\58\35\2\u0251\u0252\5\30\r\2\u0252\u0254\3"+
- "\2\2\2\u0253\u024d\3\2\2\2\u0253\u0250\3\2\2\2\u0254\67\3\2\2\2\u0255"+
- "\u0257\5J&\2\u0256\u0258\5N(\2\u0257\u0256\3\2\2\2\u0257\u0258\3\2\2\2"+
- "\u0258\u0268\3\2\2\2\u0259\u0268\5T+\2\u025a\u025c\7\33\2\2\u025b\u025a"+
- "\3\2\2\2\u025b\u025c\3\2\2\2\u025c\u025d\3\2\2\2\u025d\u0268\5\22\n\2"+
- "\u025e\u0260\7\33\2\2\u025f\u025e\3\2\2\2\u025f\u0260\3\2\2\2\u0260\u0261"+
- "\3\2\2\2\u0261\u0268\5F$\2\u0262\u0264\7\33\2\2\u0263\u0262\3\2\2\2\u0263"+
- "\u0264\3\2\2\2\u0264\u0265\3\2\2\2\u0265\u0268\5H%\2\u0266\u0268\5@!\2"+
- "\u0267\u0255\3\2\2\2\u0267\u0259\3\2\2\2\u0267\u025b\3\2\2\2\u0267\u025f"+
- "\3\2\2\2\u0267\u0263\3\2\2\2\u0267\u0266\3\2\2\2\u02689\3\2\2\2\u0269"+
- "\u026c\5X-\2\u026a\u026d\5L\'\2\u026b\u026d\5N(\2\u026c\u026a\3\2\2\2"+
- "\u026c\u026b\3\2\2\2\u026c\u026d\3\2\2\2\u026d\u02a4\3\2\2\2\u026e\u0271"+
- "\5J&\2\u026f\u0272\5L\'\2\u0270\u0272\5N(\2\u0271\u026f\3\2\2\2\u0271"+
- "\u0270\3\2\2\2\u0271\u0272\3\2\2\2\u0272\u02a4\3\2\2\2\u0273\u0274\7\34"+
- "\2\2\u0274\u02a4\5X-\2\u0275\u0276\7\34\2\2\u0276\u02a4\5J&\2\u0277\u0279"+
- "\7\34\2\2\u0278\u027a\7\33\2\2\u0279\u0278\3\2\2\2\u0279\u027a\3\2\2\2"+
- "\u027a\u027c\3\2\2\2\u027b\u0277\3\2\2\2\u027b\u027c\3\2\2\2\u027c\u027d"+
- "\3\2\2\2\u027d\u02a4\5F$\2\u027e\u0280\7\34\2\2\u027f\u0281\7\33\2\2\u0280"+
- "\u027f\3\2\2\2\u0280\u0281\3\2\2\2\u0281\u0283\3\2\2\2\u0282\u027e\3\2"+
- "\2\2\u0282\u0283\3\2\2\2\u0283\u0284\3\2\2\2\u0284\u02a4\5H%\2\u0285\u0287"+
- "\7\34\2\2\u0286\u0285\3\2\2\2\u0286\u0287\3\2\2\2\u0287\u0288\3\2\2\2"+
- "\u0288\u02a4\5@!\2\u0289\u028b\7\34\2\2\u028a\u028c\7\33\2\2\u028b\u028a"+
- "\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028e\3\2\2\2\u028d\u0289\3\2\2\2\u028d"+
- "\u028e\3\2\2\2\u028e\u028f\3\2\2\2\u028f\u02a4\5\22\n\2\u0290\u0291\7"+
- "\33\2\2\u0291\u0293\t\3\2\2\u0292\u0294\5\u014c\u00a7\2\u0293\u0292\3"+
- "\2\2\2\u0293\u0294\3\2\2\2\u0294\u0295\3\2\2\2\u0295\u02a4\5<\37\2\u0296"+
- "\u0298\7\4\2\2\u0297\u0299\5\u014c\u00a7\2\u0298\u0297\3\2\2\2\u0298\u0299"+
- "\3\2\2\2\u0299\u029a\3\2\2\2\u029a\u02a4\5\20\t\2\u029b\u029d\t\4\2\2"+
- "\u029c\u029b\3\2\2\2\u029c\u029d\3\2\2\2\u029d\u02a0\3\2\2\2\u029e\u02a1"+
- "\7\6\2\2\u029f\u02a1\5\u014c\u00a7\2\u02a0\u029e\3\2\2\2\u02a0\u029f\3"+
- "\2\2\2\u02a1\u02a2\3\2\2\2\u02a2\u02a4\5\20\t\2\u02a3\u0269\3\2\2\2\u02a3"+
- "\u026e\3\2\2\2\u02a3\u0273\3\2\2\2\u02a3\u0275\3\2\2\2\u02a3\u027b\3\2"+
- "\2\2\u02a3\u0282\3\2\2\2\u02a3\u0286\3\2\2\2\u02a3\u028d\3\2\2\2\u02a3"+
- "\u0290\3\2\2\2\u02a3\u0296\3\2\2\2\u02a3\u029c\3\2\2\2\u02a4;\3\2\2\2"+
- "\u02a5\u02aa\5> \2\u02a6\u02a7\7\3\2\2\u02a7\u02a9\5> \2\u02a8\u02a6\3"+
- "\2\2\2\u02a9\u02ac\3\2\2\2\u02aa\u02a8\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab"+
- "=\3\2\2\2\u02ac\u02aa\3\2\2\2\u02ad\u02ae\5\u00e2r\2\u02ae\u02af\7\7\2"+
- "\2\u02af\u02b0\5l\67\2\u02b0?\3\2\2\2\u02b1\u02b3\5\26\f\2\u02b2\u02b1"+
- "\3\2\2\2\u02b2\u02b3\3\2\2\2\u02b3\u02b4\3\2\2\2\u02b4\u02b5\7\35\2\2"+
- "\u02b5\u02b6\5B\"\2\u02b6\u02b7\5\34\17\2\u02b7A\3\2\2\2\u02b8\u02bd\7"+
- "\36\2\2\u02b9\u02bd\5D#\2\u02ba\u02bd\7\37\2\2\u02bb\u02bd\7 \2\2\u02bc"+
- "\u02b8\3\2\2\2\u02bc\u02b9\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bc\u02bb\3\2"+
- "\2\2\u02bdC\3\2\2\2\u02be\u02c5\5\u00c6d\2\u02bf\u02c5\5\u00c2b\2\u02c0"+
- "\u02c5\5\u00be`\2\u02c1\u02c5\5\u00b2Z\2\u02c2\u02c5\7!\2\2\u02c3\u02c5"+
- "\5\u00ba^\2\u02c4\u02be\3\2\2\2\u02c4\u02bf\3\2\2\2\u02c4\u02c0\3\2\2"+
- "\2\u02c4\u02c1\3\2\2\2\u02c4\u02c2\3\2\2\2\u02c4\u02c3\3\2\2\2\u02c5E"+
- "\3\2\2\2\u02c6\u02c8\5\26\f\2\u02c7\u02c6\3\2\2\2\u02c7\u02c8\3\2\2\2"+
- "\u02c8\u02c9\3\2\2\2\u02c9\u02ca\7\"\2\2\u02ca\u02cb\5\u00e2r\2\u02cb"+
- "G\3\2\2\2\u02cc\u02ce\5\26\f\2\u02cd\u02cc\3\2\2\2\u02cd\u02ce\3\2\2\2"+
- "\u02ce\u02cf\3\2\2\2\u02cf\u02d0\7#\2\2\u02d0\u02d1\5\u00e2r\2\u02d1\u02d2"+
- "\5\34\17\2\u02d2I\3\2\2\2\u02d3\u02d6\5\u00e2r\2\u02d4\u02d5\7\26\2\2"+
- "\u02d5\u02d7\5\u00e2r\2\u02d6\u02d4\3\2\2\2\u02d6\u02d7\3\2\2\2\u02d7"+
- "\u02d8\3\2\2\2\u02d8\u02d9\5\34\17\2\u02d9K\3\2\2\2\u02da\u02db\7\27\2"+
- "\2\u02db\u02de\7\25\2\2\u02dc\u02dd\7\26\2\2\u02dd\u02df\5\u00e2r\2\u02de"+
- "\u02dc\3\2\2\2\u02de\u02df\3\2\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\5\u0094"+
- "K\2\u02e1M\3\2\2\2\u02e2\u02e3\7\27\2\2\u02e3\u02e8\5P)\2\u02e4\u02e5"+
- "\7\3\2\2\u02e5\u02e7\5P)\2\u02e6\u02e4\3\2\2\2\u02e7\u02ea\3\2\2\2\u02e8"+
- "\u02e6\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e9O\3\2\2\2\u02ea\u02e8\3\2\2\2"+
- "\u02eb\u02ec\7$\2\2\u02ec\u02f5\5\u0094K\2\u02ed\u02ee\7$\2\2\u02ee\u02ef"+
- "\7\26\2\2\u02ef\u02f0\5\u00e2r\2\u02f0\u02f1\5\u0094K\2\u02f1\u02f5\3"+
- "\2\2\2\u02f2\u02f5\5R*\2\u02f3\u02f5\5\u0124\u0093\2\u02f4\u02eb\3\2\2"+
- "\2\u02f4\u02ed\3\2\2\2\u02f4\u02f2\3\2\2\2\u02f4\u02f3\3\2\2\2\u02f5Q"+
- "\3\2\2\2\u02f6\u02f7\7\25\2\2\u02f7\u02f9\7\26\2\2\u02f8\u02f6\3\2\2\2"+
- "\u02f8\u02f9\3\2\2\2\u02f9\u02fa\3\2\2\2\u02fa\u02fb\5\u00e2r\2\u02fb"+
- "\u02fc\7\7\2\2\u02fc\u0300\5\u00a4S\2\u02fd\u02ff\5\u009aN\2\u02fe\u02fd"+
- "\3\2\2\2\u02ff\u0302\3\2\2\2\u0300\u02fe\3\2\2\2\u0300\u0301\3\2\2\2\u0301"+
- "S\3\2\2\2\u0302\u0300\3\2\2\2\u0303\u0304\7%\2\2\u0304\u0307\5\u00e2r"+
- "\2\u0305\u0306\7\26\2\2\u0306\u0308\5\u00e2r\2\u0307\u0305\3\2\2\2\u0307"+
- "\u0308\3\2\2\2\u0308\u0309\3\2\2\2\u0309\u030a\5\34\17\2\u030aU\3\2\2"+
- "\2\u030b\u030d\7\5\2\2\u030c\u030b\3\2\2\2\u030c\u030d\3\2\2\2\u030d\u030e"+
- "\3\2\2\2\u030e\u030f\7%\2\2\u030f\u0312\5\u00e2r\2\u0310\u0311\7\26\2"+
- "\2\u0311\u0313\5\u00e2r\2\u0312\u0310\3\2\2\2\u0312\u0313\3\2\2\2\u0313"+
- "\u0314\3\2\2\2\u0314\u0315\5\34\17\2\u0315\u0316\7\7\2\2\u0316\u0319\5"+
- "\u014c\u00a7\2\u0317\u0318\7\26\2\2\u0318\u031a\5\u00e2r\2\u0319\u0317"+
- "\3\2\2\2\u0319\u031a\3\2\2\2\u031aW\3\2\2\2\u031b\u031c\7\5\2\2\u031c"+
- "\u031d\5\u00e4s\2\u031d\u031e\5\34\17\2\u031eY\3\2\2\2\u031f\u0320\7&"+
- "\2\2\u0320\u0321\5\u014c\u00a7\2\u0321[\3\2\2\2\u0322\u0323\7\'\2\2\u0323"+
- "\u0324\5\u0152\u00aa\2\u0324]\3\2\2\2\u0325\u0327\5\u00e2r\2\u0326\u0328"+
- "\5h\65\2\u0327\u0326\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u0329\3\2\2\2\u0329"+
- "\u032a\7\7\2\2\u032a\u032b\5`\61\2\u032b\u032c\7\13\2\2\u032c_\3\2\2\2"+
- "\u032d\u032e\5\u014c\u00a7\2\u032e\u0330\5\64\33\2\u032f\u0331\5\\/\2"+
- "\u0330\u032f\3\2\2\2\u0330\u0331\3\2\2\2\u0331a\3\2\2\2\u0332\u0333\5"+
- "j\66\2\u0333\u0334\7(\2\2\u0334\u0335\5\u00e2r\2\u0335\u0336\7\16\2\2"+
- "\u0336\u033b\5d\63\2\u0337\u0338\7\3\2\2\u0338\u033a\5d\63\2\u0339\u0337"+
- "\3\2\2\2\u033a\u033d\3\2\2\2\u033b\u0339\3\2\2\2\u033b\u033c\3\2\2\2\u033c"+
- "\u033f\3\2\2\2\u033d\u033b\3\2\2\2\u033e\u0340\7\3\2\2\u033f\u033e\3\2"+
- "\2\2\u033f\u0340\3\2\2\2\u0340\u0341\3\2\2\2\u0341\u0342\7\17\2\2\u0342"+
- "c\3\2\2\2\u0343\u0344\5j\66\2\u0344\u0345\5\u00e2r\2\u0345e\3\2\2\2\u0346"+
- "\u0347\5j\66\2\u0347\u034a\5\u00e2r\2\u0348\u0349\7&\2\2\u0349\u034b\5"+
- "\u014c\u00a7\2\u034a\u0348\3\2\2\2\u034a\u034b\3\2\2\2\u034bg\3\2\2\2"+
- "\u034c\u034d\7)\2\2\u034d\u0352\5f\64\2\u034e\u034f\7\3\2\2\u034f\u0351"+
- "\5f\64\2\u0350\u034e\3\2\2\2\u0351\u0354\3\2\2\2\u0352\u0350\3\2\2\2\u0352"+
- "\u0353\3\2\2\2\u0353\u0355\3\2\2\2\u0354\u0352\3\2\2\2\u0355\u0356\7*"+
- "\2\2\u0356i\3\2\2\2\u0357\u0358\7+\2\2\u0358\u035b\5\u00e4s\2\u0359\u035a"+
- "\7\26\2\2\u035a\u035c\5\u00e2r\2\u035b\u0359\3\2\2\2\u035b\u035c\3\2\2"+
- "\2\u035c\u035e\3\2\2\2\u035d\u035f\5\u0094K\2\u035e\u035d\3\2\2\2\u035e"+
- "\u035f\3\2\2\2\u035f\u0361\3\2\2\2\u0360\u0357\3\2\2\2\u0361\u0364\3\2"+
- "\2\2\u0362\u0360\3\2\2\2\u0362\u0363\3\2\2\2\u0363k\3\2\2\2\u0364\u0362"+
- "\3\2\2\2\u0365\u0366\5\u00dco\2\u0366\u0367\5\u00a0Q\2\u0367\u0368\5l"+
- "\67\2\u0368\u0372\3\2\2\2\u0369\u036d\5\u00a4S\2\u036a\u036c\5\u009aN"+
- "\2\u036b\u036a\3\2\2\2\u036c\u036f\3\2\2\2\u036d\u036b\3\2\2\2\u036d\u036e"+
- "\3\2\2\2\u036e\u0372\3\2\2\2\u036f\u036d\3\2\2\2\u0370\u0372\5\u0088E"+
- "\2\u0371\u0365\3\2\2\2\u0371\u0369\3\2\2\2\u0371\u0370\3\2\2\2\u0372m"+
- "\3\2\2\2\u0373\u0374\5\u00dco\2\u0374\u0375\5\u00a0Q\2\u0375\u0376\5n"+
- "8\2\u0376\u037a\3\2\2\2\u0377\u037a\5\u00a4S\2\u0378\u037a\5\u008aF\2"+
- "\u0379\u0373\3\2\2\2\u0379\u0377\3\2\2\2\u0379\u0378\3\2\2\2\u037ao\3"+
- "\2\2\2\u037b\u0380\5l\67\2\u037c\u037d\7\3\2\2\u037d\u037f\5l\67\2\u037e"+
- "\u037c\3\2\2\2\u037f\u0382\3\2\2\2\u0380\u037e\3\2\2\2\u0380\u0381\3\2"+
- "\2\2\u0381q\3\2\2\2\u0382\u0380\3\2\2\2\u0383\u0390\5\u008eH\2\u0384\u0385"+
- "\7$\2\2\u0385\u0390\5\u00dep\2\u0386\u0390\5\u008cG\2\u0387\u0390\5t;"+
- "\2\u0388\u0390\5\u00e2r\2\u0389\u0390\5\u0090I\2\u038a\u0390\5\u0092J"+
- "\2\u038b\u038c\7\20\2\2\u038c\u038d\5l\67\2\u038d\u038e\7\21\2\2\u038e"+
- "\u0390\3\2\2\2\u038f\u0383\3\2\2\2\u038f\u0384\3\2\2\2\u038f\u0386\3\2"+
- "\2\2\u038f\u0387\3\2\2\2\u038f\u0388\3\2\2\2\u038f\u0389\3\2\2\2\u038f"+
- "\u038a\3\2\2\2\u038f\u038b\3\2\2\2\u0390s\3\2\2\2\u0391\u0399\5v<\2\u0392"+
- "\u0399\5z>\2\u0393\u0399\5x=\2\u0394\u0399\5|?\2\u0395\u0399\5\u0080A"+
- "\2\u0396\u0399\5\u0084C\2\u0397\u0399\5\u0082B\2\u0398\u0391\3\2\2\2\u0398"+
- "\u0392\3\2\2\2\u0398\u0393\3\2\2\2\u0398\u0394\3\2\2\2\u0398\u0395\3\2"+
- "\2\2\u0398\u0396\3\2\2\2\u0398\u0397\3\2\2\2\u0399u\3\2\2\2\u039a\u039b"+
- "\7,\2\2\u039bw\3\2\2\2\u039c\u039d\t\5\2\2\u039dy\3\2\2\2\u039e\u039f"+
- "\t\6\2\2\u039f{\3\2\2\2\u03a0\u03a2\t\7\2\2\u03a1\u03a0\3\2\2\2\u03a2"+
- "\u03a3\3\2\2\2\u03a3\u03a1\3\2\2\2\u03a3\u03a4\3\2\2\2\u03a4}\3\2\2\2"+
- "\u03a5\u03a6\7/\2\2\u03a6\u03ac\5\u00e2r\2\u03a7\u03a8\7\60\2\2\u03a8"+
- "\u03a9\5l\67\2\u03a9\u03aa\7\17\2\2\u03aa\u03ac\3\2\2\2\u03ab\u03a5\3"+
- "\2\2\2\u03ab\u03a7\3\2\2\2\u03ac\177\3\2\2\2\u03ad\u03b7\7\61\2\2\u03ae"+
- "\u03b8\5B\"\2\u03af\u03b4\5\u00e2r\2\u03b0\u03b1\7\3\2\2\u03b1\u03b3\5"+
- "\u00e2r\2\u03b2\u03b0\3\2\2\2\u03b3\u03b6\3\2\2\2\u03b4\u03b2\3\2\2\2"+
- "\u03b4\u03b5\3\2\2\2\u03b5\u03b8\3\2\2\2\u03b6\u03b4\3\2\2\2\u03b7\u03ae"+
- "\3\2\2\2\u03b7\u03af\3\2\2\2\u03b8\u0081\3\2\2\2\u03b9\u03bb\7\5\2\2\u03ba"+
- "\u03b9\3\2\2\2\u03ba\u03bb\3\2\2\2\u03bb\u03bd\3\2\2\2\u03bc\u03be\5\u0150"+
- "\u00a9\2\u03bd\u03bc\3\2\2\2\u03bd\u03be\3\2\2\2\u03be\u03bf\3\2\2\2\u03bf"+
- "\u03c4\7\22\2\2\u03c0\u03c2\5p9\2\u03c1\u03c3\7\3\2\2\u03c2\u03c1\3\2"+
- "\2\2\u03c2\u03c3\3\2\2\2\u03c3\u03c5\3\2\2\2\u03c4\u03c0\3\2\2\2\u03c4"+
- "\u03c5\3\2\2\2\u03c5\u03c6\3\2\2\2\u03c6\u03c7\7\23\2\2\u03c7\u0083\3"+
- "\2\2\2\u03c8\u03ca\7\5\2\2\u03c9\u03c8\3\2\2\2\u03c9\u03ca\3\2\2\2\u03ca"+
- "\u03cc\3\2\2\2\u03cb\u03cd\5\u0150\u00a9\2\u03cc\u03cb\3\2\2\2\u03cc\u03cd"+
- "\3\2\2\2\u03cd\u03ce\3\2\2\2\u03ce\u03da\7\16\2\2\u03cf\u03d4\5\u0086"+
- "D\2\u03d0\u03d1\7\3\2\2\u03d1\u03d3\5\u0086D\2\u03d2\u03d0\3\2\2\2\u03d3"+
- "\u03d6\3\2\2\2\u03d4\u03d2\3\2\2\2\u03d4\u03d5\3\2\2\2\u03d5\u03d8\3\2"+
- "\2\2\u03d6\u03d4\3\2\2\2\u03d7\u03d9\7\3\2\2\u03d8\u03d7\3\2\2\2\u03d8"+
- "\u03d9\3\2\2\2\u03d9\u03db\3\2\2\2\u03da\u03cf\3\2\2\2\u03da\u03db\3\2"+
- "\2\2\u03db\u03dc\3\2\2\2\u03dc\u03dd\7\17\2\2\u03dd\u0085\3\2\2\2\u03de"+
- "\u03df\5l\67\2\u03df\u03e0\7\27\2\2\u03e0\u03e1\5l\67\2\u03e1\u0087\3"+
- "\2\2\2\u03e2\u03e3\7\62\2\2\u03e3\u03e4\5l\67\2\u03e4\u0089\3\2\2\2\u03e5"+
- "\u03e6\7\62\2\2\u03e6\u03e7\5n8\2\u03e7\u008b\3\2\2\2\u03e8\u03e9\5\24"+
- "\13\2\u03e9\u03ea\5\30\r\2\u03ea\u008d\3\2\2\2\u03eb\u03ec\7\25\2\2\u03ec"+
- "\u008f\3\2\2\2\u03ed\u03ee\7\63\2\2\u03ee\u03f1\5\u014c\u00a7\2\u03ef"+
- "\u03f0\7\26\2\2\u03f0\u03f2\5\u00e2r\2\u03f1\u03ef\3\2\2\2\u03f1\u03f2"+
- "\3\2\2\2\u03f2\u03f3\3\2\2\2\u03f3\u03f4\5\u0094K\2\u03f4\u0091\3\2\2"+
- "\2\u03f5\u03f6\7\5\2\2\u03f6\u03f9\5\u014c\u00a7\2\u03f7\u03f8\7\26\2"+
- "\2\u03f8\u03fa\5\u00e2r\2\u03f9\u03f7\3\2\2\2\u03f9\u03fa\3\2\2\2\u03fa"+
- "\u03fb\3\2\2\2\u03fb\u03fc\5\u0094K\2\u03fc\u0093\3\2\2\2\u03fd\u0402"+
- "\7\20\2\2\u03fe\u0400\5\u0096L\2\u03ff\u0401\7\3\2\2\u0400\u03ff\3\2\2"+
- "\2\u0400\u0401\3\2\2\2\u0401\u0403\3\2\2\2\u0402\u03fe\3\2\2\2\u0402\u0403"+
- "\3\2\2\2\u0403\u0404\3\2\2\2\u0404\u0405\7\21\2\2\u0405\u0095\3\2\2\2"+
- "\u0406\u040b\5\u0098M\2\u0407\u0408\7\3\2\2\u0408\u040a\5\u0098M\2\u0409"+
- "\u0407\3\2\2\2\u040a\u040d\3\2\2\2\u040b\u0409\3\2\2\2\u040b\u040c\3\2"+
- "\2\2\u040c\u0417\3\2\2\2\u040d\u040b\3\2\2\2\u040e\u0413\5p9\2\u040f\u0410"+
- "\7\3\2\2\u0410\u0412\5\u0098M\2\u0411\u040f\3\2\2\2\u0412\u0415\3\2\2"+
- "\2\u0413\u0411\3\2\2\2\u0413\u0414\3\2\2\2\u0414\u0417\3\2\2\2\u0415\u0413"+
- "\3\2\2\2\u0416\u0406\3\2\2\2\u0416\u040e\3\2\2\2\u0417\u0097\3\2\2\2\u0418"+
- "\u0419\5\u0118\u008d\2\u0419\u041a\5l\67\2\u041a\u0099\3\2\2\2\u041b\u041c"+
- "\7\64\2\2\u041c\u0420\5\u009cO\2\u041d\u041f\5\u009eP\2\u041e\u041d\3"+
- "\2\2\2\u041f\u0422\3\2\2\2\u0420\u041e\3\2\2\2\u0420\u0421\3\2\2\2\u0421"+
- "\u042c\3\2\2\2\u0422\u0420\3\2\2\2\u0423\u0427\5\u00e0q\2\u0424\u0426"+
- "\5\u009eP\2\u0425\u0424\3\2\2\2\u0426\u0429\3\2\2\2\u0427\u0425\3\2\2"+
- "\2\u0427\u0428\3\2\2\2\u0428\u042b\3\2\2\2\u0429\u0427\3\2\2\2\u042a\u0423"+
- "\3\2\2\2\u042b\u042e\3\2\2\2\u042c\u042a\3\2\2\2\u042c\u042d\3\2\2\2\u042d"+
- "\u0432\3\2\2\2\u042e\u042c\3\2\2\2\u042f\u0430\5\u00a0Q\2\u0430\u0431"+
- "\5n8\2\u0431\u0433\3\2\2\2\u0432\u042f\3\2\2\2\u0432\u0433\3\2\2\2\u0433"+
- "\u009b\3\2\2\2\u0434\u0435\7\22\2\2\u0435\u0436\5l\67\2\u0436\u0437\7"+
- "\23\2\2\u0437\u043a\3\2\2\2\u0438\u043a\5\u00e2r\2\u0439\u0434\3\2\2\2"+
- "\u0439\u0438\3\2\2\2\u043a\u009d\3\2\2\2\u043b\u043d\5\u0150\u00a9\2\u043c"+
- "\u043b\3\2\2\2\u043c\u043d\3\2\2\2\u043d\u043e\3\2\2\2\u043e\u043f\5\u0094"+
- "K\2\u043f\u009f\3\2\2\2\u0440\u0443\7\7\2\2\u0441\u0443\5\u00a2R\2\u0442"+
- "\u0440\3\2\2\2\u0442\u0441\3\2\2\2\u0443\u00a1\3\2\2\2\u0444\u0445\t\b"+
- "\2\2\u0445\u00a3\3\2\2\2\u0446\u044c\5\u00a6T\2\u0447\u0448\7A\2\2\u0448"+
- "\u0449\5n8\2\u0449\u044a\7\27\2\2\u044a\u044b\5n8\2\u044b\u044d\3\2\2"+
- "\2\u044c\u0447\3\2\2\2\u044c\u044d\3\2\2\2\u044d\u00a5\3\2\2\2\u044e\u0453"+
- "\5\u00a8U\2\u044f\u0450\7B\2\2\u0450\u0452\5\u00a8U\2\u0451\u044f\3\2"+
- "\2\2\u0452\u0455\3\2\2\2\u0453\u0451\3\2\2\2\u0453\u0454\3\2\2\2\u0454"+
- "\u00a7\3\2\2\2\u0455\u0453\3\2\2\2\u0456\u045b\5\u00aaV\2\u0457\u0458"+
- "\7C\2\2\u0458\u045a\5\u00aaV\2\u0459\u0457\3\2\2\2\u045a\u045d\3\2\2\2"+
- "\u045b\u0459\3\2\2\2\u045b\u045c\3\2\2\2\u045c\u00a9\3\2\2\2\u045d\u045b"+
- "\3\2\2\2\u045e\u0463\5\u00acW\2\u045f\u0460\7D\2\2\u0460\u0462\5\u00ac"+
- "W\2\u0461\u045f\3\2\2\2\u0462\u0465\3\2\2\2\u0463\u0461\3\2\2\2\u0463"+
- "\u0464\3\2\2\2\u0464\u00ab\3\2\2\2\u0465\u0463\3\2\2\2\u0466\u046a\5\u00b0"+
- "Y\2\u0467\u0468\5\u00aeX\2\u0468\u0469\5\u00b0Y\2\u0469\u046b\3\2\2\2"+
- "\u046a\u0467\3\2\2\2\u046a\u046b\3\2\2\2\u046b\u0471\3\2\2\2\u046c\u046d"+
- "\7$\2\2\u046d\u046e\5\u00aeX\2\u046e\u046f\5\u00b0Y\2\u046f\u0471\3\2"+
- "\2\2\u0470\u0466\3\2\2\2\u0470\u046c\3\2\2\2\u0471\u00ad\3\2\2\2\u0472"+
- "\u0473\t\t\2\2\u0473\u00af\3\2\2\2\u0474\u047a\5\u00b4[\2\u0475\u047b"+
- "\5\u00e6t\2\u0476\u047b\5\u00eav\2\u0477\u0478\5\u00b2Z\2\u0478\u0479"+
- "\5\u00b4[\2\u0479\u047b\3\2\2\2\u047a\u0475\3\2\2\2\u047a\u0476\3\2\2"+
- "\2\u047a\u0477\3\2\2\2\u047a\u047b\3\2\2\2\u047b\u0481\3\2\2\2\u047c\u047d"+
- "\7$\2\2\u047d\u047e\5\u00b2Z\2\u047e\u047f\5\u00b4[\2\u047f\u0481\3\2"+
- "\2\2\u0480\u0474\3\2\2\2\u0480\u047c\3\2\2\2\u0481\u00b1\3\2\2\2\u0482"+
- "\u0483\t\n\2\2\u0483\u00b3\3\2\2\2\u0484\u0489\5\u00b6\\\2\u0485\u0486"+
- "\7H\2\2\u0486\u0488\5\u00b6\\\2\u0487\u0485\3\2\2\2\u0488\u048b\3\2\2"+
- "\2\u0489\u0487\3\2\2\2\u0489\u048a\3\2\2\2\u048a\u0494\3\2\2\2\u048b\u0489"+
- "\3\2\2\2\u048c\u048f\7$\2\2\u048d\u048e\7H\2\2\u048e\u0490\5\u00b4[\2"+
- "\u048f\u048d\3\2\2\2\u0490\u0491\3\2\2\2\u0491\u048f\3\2\2\2\u0491\u0492"+
- "\3\2\2\2\u0492\u0494\3\2\2\2\u0493\u0484\3\2\2\2\u0493\u048c\3\2\2\2\u0494"+
- "\u00b5\3\2\2\2\u0495\u049a\5\u00b8]\2\u0496\u0497\7I\2\2\u0497\u0499\5"+
- "\u00b8]\2\u0498\u0496\3\2\2\2\u0499\u049c\3\2\2\2\u049a\u0498\3\2\2\2"+
- "\u049a\u049b\3\2\2\2\u049b\u04a5\3\2\2\2\u049c\u049a\3\2\2\2\u049d\u04a0"+
- "\7$\2\2\u049e\u049f\7I\2\2\u049f\u04a1\5\u00b8]\2\u04a0\u049e\3\2\2\2"+
- "\u04a1\u04a2\3\2\2\2\u04a2\u04a0\3\2\2\2\u04a2\u04a3\3\2\2\2\u04a3\u04a5"+
- "\3\2\2\2\u04a4\u0495\3\2\2\2\u04a4\u049d\3\2\2\2\u04a5\u00b7\3\2\2\2\u04a6"+
- "\u04ab\5\u00bc_\2\u04a7\u04a8\7J\2\2\u04a8\u04aa\5\u00bc_\2\u04a9\u04a7"+
- "\3\2\2\2\u04aa\u04ad\3\2\2\2\u04ab\u04a9\3\2\2\2\u04ab\u04ac\3\2\2\2\u04ac"+
- "\u04b6\3\2\2\2\u04ad\u04ab\3\2\2\2\u04ae\u04b1\7$\2\2\u04af\u04b0\7J\2"+
- "\2\u04b0\u04b2\5\u00bc_\2\u04b1\u04af\3\2\2\2\u04b2\u04b3\3\2\2\2\u04b3"+
- "\u04b1\3\2\2\2\u04b3\u04b4\3\2\2\2\u04b4\u04b6\3\2\2\2\u04b5\u04a6\3\2"+
- "\2\2\u04b5\u04ae\3\2\2\2\u04b6\u00b9\3\2\2\2\u04b7\u04b8\t\13\2\2\u04b8"+
- "\u00bb\3\2\2\2\u04b9\u04bf\5\u00c0a\2\u04ba\u04bb\5\u00be`\2\u04bb\u04bc"+
- "\5\u00c0a\2\u04bc\u04be\3\2\2\2\u04bd\u04ba\3\2\2\2\u04be\u04c1\3\2\2"+
- "\2\u04bf\u04bd\3\2\2\2\u04bf\u04c0\3\2\2\2\u04c0\u04cb\3\2\2\2\u04c1\u04bf"+
- "\3\2\2\2\u04c2\u04c6\7$\2\2\u04c3\u04c4\5\u00be`\2\u04c4\u04c5\5\u00c0"+
- "a\2\u04c5\u04c7\3\2\2\2\u04c6\u04c3\3\2\2\2\u04c7\u04c8\3\2\2\2\u04c8"+
- "\u04c6\3\2\2\2\u04c8\u04c9\3\2\2\2\u04c9\u04cb\3\2\2\2\u04ca\u04b9\3\2"+
- "\2\2\u04ca\u04c2\3\2\2\2\u04cb\u00bd\3\2\2\2\u04cc\u04cd\t\f\2\2\u04cd"+
- "\u00bf\3\2\2\2\u04ce\u04d4\5\u00c4c\2\u04cf\u04d0\5\u00c2b\2\u04d0\u04d1"+
- "\5\u00c4c\2\u04d1\u04d3\3\2\2\2\u04d2\u04cf\3\2\2\2\u04d3\u04d6\3\2\2"+
- "\2\u04d4\u04d2\3\2\2\2\u04d4\u04d5\3\2\2\2\u04d5\u04e0\3\2\2\2\u04d6\u04d4"+
- "\3\2\2\2\u04d7\u04db\7$\2\2\u04d8\u04d9\5\u00c2b\2\u04d9\u04da\5\u00c4"+
- "c\2\u04da\u04dc\3\2\2\2\u04db\u04d8\3\2\2\2\u04dc\u04dd\3\2\2\2\u04dd"+
- "\u04db\3\2\2\2\u04dd\u04de\3\2\2\2\u04de\u04e0\3\2\2\2\u04df\u04ce\3\2"+
- "\2\2\u04df\u04d7\3\2\2\2\u04e0\u00c1\3\2\2\2\u04e1\u04e2\t\r\2\2\u04e2"+
- "\u00c3\3\2\2\2\u04e3\u04e9\5\u00c8e\2\u04e4\u04e5\5\u00c6d\2\u04e5\u04e6"+
- "\5\u00c8e\2\u04e6\u04e8\3\2\2\2\u04e7\u04e4\3\2\2\2\u04e8\u04eb\3\2\2"+
- "\2\u04e9\u04e7\3\2\2\2\u04e9\u04ea\3\2\2\2\u04ea\u04f5\3\2\2\2\u04eb\u04e9"+
- "\3\2\2\2\u04ec\u04f0\7$\2\2\u04ed\u04ee\5\u00c6d\2\u04ee\u04ef\5\u00c8"+
- "e\2\u04ef\u04f1\3\2\2\2\u04f0\u04ed\3\2\2\2\u04f1\u04f2\3\2\2\2\u04f2"+
- "\u04f0\3\2\2\2\u04f2\u04f3\3\2\2\2\u04f3\u04f5\3\2\2\2\u04f4\u04e3\3\2"+
- "\2\2\u04f4\u04ec\3\2\2\2\u04f5\u00c5\3\2\2\2\u04f6\u04f7\t\16\2\2\u04f7"+
- "\u00c7\3\2\2\2\u04f8\u04f9\5\u00caf\2\u04f9\u04fa\5\u00c8e\2\u04fa\u0507"+
- "\3\2\2\2\u04fb\u0507\5\u00d2j\2\u04fc\u0507\5\u00d4k\2\u04fd\u0500\5\u00cc"+
- "g\2\u04fe\u0500\5\u00d0i\2\u04ff\u04fd\3\2\2\2\u04ff\u04fe\3\2\2\2\u0500"+
- "\u0501\3\2\2\2\u0501\u0502\7$\2\2\u0502\u0507\3\2\2\2\u0503\u0504\5\u00da"+
- "n\2\u0504\u0505\5\u00dco\2\u0505\u0507\3\2\2\2\u0506\u04f8\3\2\2\2\u0506"+
- "\u04fb\3\2\2\2\u0506\u04fc\3\2\2\2\u0506\u04ff\3\2\2\2\u0506\u0503\3\2"+
- "\2\2\u0507\u00c9\3\2\2\2\u0508\u050c\5\u00ccg\2\u0509\u050c\5\u00ceh\2"+
- "\u050a\u050c\5\u00d0i\2\u050b\u0508\3\2\2\2\u050b\u0509\3\2\2\2\u050b"+
- "\u050a\3\2\2\2\u050c\u00cb\3\2\2\2\u050d\u050e\7O\2\2\u050e\u00cd\3\2"+
- "\2\2\u050f\u0510\7T\2\2\u0510\u00cf\3\2\2\2\u0511\u0512\7\36\2\2\u0512"+
- "\u00d1\3\2\2\2\u0513\u0514\7U\2\2\u0514\u0515\5\u00c8e\2\u0515\u00d3\3"+
- "\2\2\2\u0516\u0517\5\u00dco\2\u0517\u0518\5\u00d6l\2\u0518\u0521\3\2\2"+
- "\2\u0519\u051d\5r:\2\u051a\u051c\5\u00d8m\2\u051b\u051a\3\2\2\2\u051c"+
- "\u051f\3\2\2\2\u051d\u051b\3\2\2\2\u051d\u051e\3\2\2\2\u051e\u0521\3\2"+
- "\2\2\u051f\u051d\3\2\2\2\u0520\u0516\3\2\2\2\u0520\u0519\3\2\2\2\u0521"+
- "\u00d5\3\2\2\2\u0522\u0523\5\u00dan\2\u0523\u00d7\3\2\2\2\u0524\u0527"+
- "\5\u00e0q\2\u0525\u0527\5\u009eP\2\u0526\u0524\3\2\2\2\u0526\u0525\3\2"+
- "\2\2\u0527\u00d9\3\2\2\2\u0528\u0529\t\17\2\2\u0529\u00db\3\2\2\2\u052a"+
- "\u0532\5r:\2\u052b\u052d\5\u009eP\2\u052c\u052b\3\2\2\2\u052d\u0530\3"+
- "\2\2\2\u052e\u052c\3\2\2\2\u052e\u052f\3\2\2\2\u052f\u0531\3\2\2\2\u0530"+
- "\u052e\3\2\2\2\u0531\u0533\5\u00e0q\2\u0532\u052e\3\2\2\2\u0532\u0533"+
- "\3\2\2\2\u0533\u0539\3\2\2\2\u0534\u0535\7$\2\2\u0535\u0536\5\u00dep\2"+
- "\u0536\u0537\5\u00e2r\2\u0537\u0539\3\2\2\2\u0538\u052a\3\2\2\2\u0538"+
- "\u0534\3\2\2\2\u0539\u00dd\3\2\2\2\u053a\u053b\7\22\2\2\u053b\u053c\5"+
- "l\67\2\u053c\u053d\7\23\2\2\u053d\u0541\3\2\2\2\u053e\u053f\7\26\2\2\u053f"+
- "\u0541\5\u00e2r\2\u0540\u053a\3\2\2\2\u0540\u053e\3\2\2\2\u0541\u00df"+
- "\3\2\2\2\u0542\u0546\5\u00dep\2\u0543\u0544\7X\2\2\u0544\u0546\5\u00e2"+
- "r\2\u0545\u0542\3\2\2\2\u0545\u0543\3\2\2\2\u0546\u00e1\3\2\2\2\u0547"+
- "\u0548\7~\2\2\u0548\u00e3\3\2\2\2\u0549\u054c\5\u00e2r\2\u054a\u054b\7"+
- "\26\2\2\u054b\u054d\5\u00e2r\2\u054c\u054a\3\2\2\2\u054c\u054d\3\2\2\2"+
- "\u054d\u00e5\3\2\2\2\u054e\u054f\5\u00e8u\2\u054f\u0550\5\u014c\u00a7"+
- "\2\u0550\u00e7\3\2\2\2\u0551\u0553\7Y\2\2\u0552\u0554\7T\2\2\u0553\u0552"+
- "\3\2\2\2\u0553\u0554\3\2\2\2\u0554\u00e9\3\2\2\2\u0555\u0556\5\u00ecw"+
- "\2\u0556\u0557\5\u014c\u00a7\2\u0557\u00eb\3\2\2\2\u0558\u0559\7Z\2\2"+
- "\u0559\u00ed\3\2\2\2\u055a\u055c\5\u00f0y\2\u055b\u055a\3\2\2\2\u055c"+
- "\u055f\3\2\2\2\u055d\u055b\3\2\2\2\u055d\u055e\3\2\2\2\u055e\u00ef\3\2"+
- "\2\2\u055f\u055d\3\2\2\2\u0560\u0562\5\u0118\u008d\2\u0561\u0560\3\2\2"+
- "\2\u0562\u0565\3\2\2\2\u0563\u0561\3\2\2\2\u0563\u0564\3\2\2\2\u0564\u0566"+
- "\3\2\2\2\u0565\u0563\3\2\2\2\u0566\u0567\5\u00f2z\2\u0567\u00f1\3\2\2"+
- "\2\u0568\u057a\5\32\16\2\u0569\u057a\5\u00f6|\2\u056a\u057a\5\u00fc\177"+
- "\2\u056b\u057a\5\u0102\u0082\2\u056c\u057a\5\u0104\u0083\2\u056d\u057a"+
- "\5\u0106\u0084\2\u056e\u057a\5\u00fa~\2\u056f\u057a\5\u010c\u0087\2\u0570"+
- "\u057a\5\u010e\u0088\2\u0571\u057a\5\u011a\u008e\2\u0572\u057a\5\u011c"+
- "\u008f\2\u0573\u057a\5\u0116\u008c\2\u0574\u057a\5\u011e\u0090\2\u0575"+
- "\u057a\5\u0120\u0091\2\u0576\u057a\5\u00f4{\2\u0577\u057a\5\u0122\u0092"+
- "\2\u0578\u057a\5\u00f8}\2\u0579\u0568\3\2\2\2\u0579\u0569\3\2\2\2\u0579"+
- "\u056a\3\2\2\2\u0579\u056b\3\2\2\2\u0579\u056c\3\2\2\2\u0579\u056d\3\2"+
- "\2\2\u0579\u056e\3\2\2\2\u0579\u056f\3\2\2\2\u0579\u0570\3\2\2\2\u0579"+
- "\u0571\3\2\2\2\u0579\u0572\3\2\2\2\u0579\u0573\3\2\2\2\u0579\u0574\3\2"+
- "\2\2\u0579\u0575\3\2\2\2\u0579\u0576\3\2\2\2\u0579\u0577\3\2\2\2\u0579"+
- "\u0578\3\2\2\2\u057a\u00f3\3\2\2\2\u057b\u057d\5l\67\2\u057c\u057b\3\2"+
- "\2\2\u057c\u057d\3\2\2\2\u057d\u057e\3\2\2\2\u057e\u057f\7\13\2\2\u057f"+
- "\u00f5\3\2\2\2\u0580\u0581\5\f\7\2\u0581\u0582\7\13\2\2\u0582\u00f7\3"+
- "\2\2\2\u0583\u0584\5\22\n\2\u0584\u0585\5\30\r\2\u0585\u00f9\3\2\2\2\u0586"+
- "\u0587\7[\2\2\u0587\u0588\7\20\2\2\u0588\u0589\5l\67\2\u0589\u058a\7\21"+
- "\2\2\u058a\u058d\5\u00f0y\2\u058b\u058c\7\\\2\2\u058c\u058e\5\u00f0y\2"+
- "\u058d\u058b\3\2\2\2\u058d\u058e\3\2\2\2\u058e\u00fb\3\2\2\2\u058f\u0591"+
- "\7U\2\2\u0590\u058f\3\2\2\2\u0590\u0591\3\2\2\2\u0591\u0592\3\2\2\2\u0592"+
- "\u0593\7]\2\2\u0593\u0594\7\20\2\2\u0594\u0595\5\u00fe\u0080\2\u0595\u0596"+
- "\7\21\2\2\u0596\u0597\5\u00f0y\2\u0597\u00fd\3\2\2\2\u0598\u059a\5\u0100"+
- "\u0081\2\u0599\u059b\5l\67\2\u059a\u0599\3\2\2\2\u059a\u059b\3\2\2\2\u059b"+
- "\u059c\3\2\2\2\u059c\u059e\7\13\2\2\u059d\u059f\5p9\2\u059e\u059d\3\2"+
- "\2\2\u059e\u059f\3\2\2\2\u059f\u05a9\3\2\2\2\u05a0\u05a1\5\6\4\2\u05a1"+
- "\u05a2\7^\2\2\u05a2\u05a3\5l\67\2\u05a3\u05a9\3\2\2\2\u05a4\u05a5\5\u00e2"+
- "r\2\u05a5\u05a6\7^\2\2\u05a6\u05a7\5l\67\2\u05a7\u05a9\3\2\2\2\u05a8\u0598"+
- "\3\2\2\2\u05a8\u05a0\3\2\2\2\u05a8\u05a4\3\2\2\2\u05a9\u00ff\3\2\2\2\u05aa"+
- "\u05b0\5\u00f6|\2\u05ab\u05ad\5l\67\2\u05ac\u05ab\3\2\2\2\u05ac\u05ad"+
- "\3\2\2\2\u05ad\u05ae\3\2\2\2\u05ae\u05b0\7\13\2\2\u05af\u05aa\3\2\2\2"+
- "\u05af\u05ac\3\2\2\2\u05b0\u0101\3\2\2\2\u05b1\u05b2\7_\2\2\u05b2\u05b3"+
- "\7\20\2\2\u05b3\u05b4\5l\67\2\u05b4\u05b5\7\21\2\2\u05b5\u05b6\5\u00f0"+
- "y\2\u05b6\u0103\3\2\2\2\u05b7\u05b8\7`\2\2\u05b8\u05b9\5\u00f0y\2\u05b9"+
- "\u05ba\7_\2\2\u05ba\u05bb\7\20\2\2\u05bb\u05bc\5l\67\2\u05bc\u05bd\7\21"+
- "\2\2\u05bd\u05be\7\13\2\2\u05be\u0105\3\2\2\2\u05bf\u05c0\7a\2\2\u05c0"+
- "\u05c1\7\20\2\2\u05c1\u05c2\5l\67\2\u05c2\u05c3\7\21\2\2\u05c3\u05c7\7"+
- "\16\2\2\u05c4\u05c6\5\u0108\u0085\2\u05c5\u05c4\3\2\2\2\u05c6\u05c9\3"+
- "\2\2\2\u05c7\u05c5\3\2\2\2\u05c7\u05c8\3\2\2\2\u05c8\u05cb\3\2\2\2\u05c9"+
- "\u05c7\3\2\2\2\u05ca\u05cc\5\u010a\u0086\2\u05cb\u05ca\3\2\2\2\u05cb\u05cc"+
- "\3\2\2\2\u05cc\u05cd\3\2\2\2\u05cd\u05ce\7\17\2\2\u05ce\u0107\3\2\2\2"+
- "\u05cf\u05d1\5\u0118\u008d\2\u05d0\u05cf\3\2\2\2\u05d1\u05d4\3\2\2\2\u05d2"+
- "\u05d0\3\2\2\2\u05d2\u05d3\3\2\2\2\u05d3\u05d5\3\2\2\2\u05d4\u05d2\3\2"+
- "\2\2\u05d5\u05d6\7b\2\2\u05d6\u05d7\5l\67\2\u05d7\u05d8\7\27\2\2\u05d8"+
- "\u05d9\5\u00eex\2\u05d9\u0109\3\2\2\2\u05da\u05dc\5\u0118\u008d\2\u05db"+
- "\u05da\3\2\2\2\u05dc\u05df\3\2\2\2\u05dd\u05db\3\2\2\2\u05dd\u05de\3\2"+
- "\2\2\u05de\u05e0\3\2\2\2\u05df\u05dd\3\2\2\2\u05e0\u05e1\7c\2\2\u05e1"+
- "\u05e2\7\27\2\2\u05e2\u05e3\5\u00eex\2\u05e3\u010b\3\2\2\2\u05e4\u05e5"+
- "\7d\2\2\u05e5\u05e6\7\13\2\2\u05e6\u010d\3\2\2\2\u05e7\u05e8\7e\2\2\u05e8"+
- "\u05f2\5\32\16\2\u05e9\u05eb\5\u0110\u0089\2\u05ea\u05e9\3\2\2\2\u05eb"+
- "\u05ec\3\2\2\2\u05ec\u05ea\3\2\2\2\u05ec\u05ed\3\2\2\2\u05ed\u05ef\3\2"+
- "\2\2\u05ee\u05f0\5\u0114\u008b\2\u05ef\u05ee\3\2\2\2\u05ef\u05f0\3\2\2"+
- "\2\u05f0\u05f3\3\2\2\2\u05f1\u05f3\5\u0114\u008b\2\u05f2\u05ea\3\2\2\2"+
- "\u05f2\u05f1\3\2\2\2\u05f3\u010f\3\2\2\2\u05f4\u05f5\5\u0112\u008a\2\u05f5"+
- "\u05f6\5\32\16\2\u05f6\u05ff\3\2\2\2\u05f7\u05f8\7f\2\2\u05f8\u05fa\5"+
- "\u014c\u00a7\2\u05f9\u05fb\5\u0112\u008a\2\u05fa\u05f9\3\2\2\2\u05fa\u05fb"+
- "\3\2\2\2\u05fb\u05fc\3\2\2\2\u05fc\u05fd\5\32\16\2\u05fd\u05ff\3\2\2\2"+
- "\u05fe\u05f4\3\2\2\2\u05fe\u05f7\3\2\2\2\u05ff\u0111\3\2\2\2\u0600\u0601"+
- "\7g\2\2\u0601\u0602\7\20\2\2\u0602\u0605\5\u00e2r\2\u0603\u0604\7\3\2"+
- "\2\u0604\u0606\5\u00e2r\2\u0605\u0603\3\2\2\2\u0605\u0606\3\2\2\2\u0606"+
- "\u0607\3\2\2\2\u0607\u0608\7\21\2\2\u0608\u0113\3\2\2\2\u0609\u060a\7"+
- "h\2\2\u060a\u060b\5\32\16\2\u060b\u0115\3\2\2\2\u060c\u060e\7i\2\2\u060d"+
- "\u060f\5l\67\2\u060e\u060d\3\2\2\2\u060e\u060f\3\2\2\2\u060f\u0610\3\2"+
- "\2\2\u0610\u0611\7\13\2\2\u0611\u0117\3\2\2\2\u0612\u0613\5\u00e2r\2\u0613"+
- "\u0614\7\27\2\2\u0614\u0119\3\2\2\2\u0615\u0617\7j\2\2\u0616\u0618\5\u00e2"+
- "r\2\u0617\u0616\3\2\2\2\u0617\u0618\3\2\2\2\u0618\u0619\3\2\2\2\u0619"+
- "\u061a\7\13\2\2\u061a\u011b\3\2\2\2\u061b\u061d\7k\2\2\u061c\u061e\5\u00e2"+
- "r\2\u061d\u061c\3\2\2\2\u061d\u061e\3\2\2\2\u061e\u061f\3\2\2\2\u061f"+
- "\u0620\7\13\2\2\u0620\u011d\3\2\2\2\u0621\u0622\7l\2\2\u0622\u0623\5l"+
- "\67\2\u0623\u0624\7\13\2\2\u0624\u011f\3\2\2\2\u0625\u0626\7m\2\2\u0626"+
- "\u0627\5l\67\2\u0627\u0628\7\13\2\2\u0628\u0121\3\2\2\2\u0629\u062a\5"+
- "\u0124\u0093\2\u062a\u062b\7\13\2\2\u062b\u0123\3\2\2\2\u062c\u062d\7"+
- "n\2\2\u062d\u062e\7\20\2\2\u062e\u0631\5l\67\2\u062f\u0630\7\3\2\2\u0630"+
- "\u0632\5l\67\2\u0631\u062f\3\2\2\2\u0631\u0632\3\2\2\2\u0632\u0634\3\2"+
- "\2\2\u0633\u0635\7\3\2\2\u0634\u0633\3\2\2\2\u0634\u0635\3\2\2\2\u0635"+
- "\u0636\3\2\2\2\u0636\u0637\7\21\2\2\u0637\u0125\3\2\2\2\u0638\u066a\5"+
- "\62\32\2\u0639\u066a\5b\62\2\u063a\u066a\5\u0154\u00ab\2\u063b\u063d\7"+
- "\34\2\2\u063c\u063b\3\2\2\2\u063c\u063d\3\2\2\2\u063d\u063e\3\2\2\2\u063e"+
- "\u063f\5\22\n\2\u063f\u0640\7\13\2\2\u0640\u066a\3\2\2\2\u0641\u0643\7"+
- "\34\2\2\u0642\u0641\3\2\2\2\u0642\u0643\3\2\2\2\u0643\u0644\3\2\2\2\u0644"+
- "\u0645\5F$\2\u0645\u0646\7\13\2\2\u0646\u066a\3\2\2\2\u0647\u0649\7\34"+
- "\2\2\u0648\u0647\3\2\2\2\u0648\u0649\3\2\2\2\u0649\u064a\3\2\2\2\u064a"+
- "\u064b\5H%\2\u064b\u064c\7\13\2\2\u064c\u066a\3\2\2\2\u064d\u064e\5\22"+
- "\n\2\u064e\u064f\5\30\r\2\u064f\u066a\3\2\2\2\u0650\u0652\5\26\f\2\u0651"+
- "\u0650\3\2\2\2\u0651\u0652\3\2\2\2\u0652\u0653\3\2\2\2\u0653\u0654\7\""+
- "\2\2\u0654\u0655\5\u00e2r\2\u0655\u0656\5\30\r\2\u0656\u066a\3\2\2\2\u0657"+
- "\u0659\5\26\f\2\u0658\u0657\3\2\2\2\u0658\u0659\3\2\2\2\u0659\u065a\3"+
- "\2\2\2\u065a\u065b\7#\2\2\u065b\u065c\5\u00e2r\2\u065c\u065d\5\34\17\2"+
- "\u065d\u065e\5\30\r\2\u065e\u066a\3\2\2\2\u065f\u0661\t\3\2\2\u0660\u0662"+
- "\5\u014c\u00a7\2\u0661\u0660\3\2\2\2\u0661\u0662\3\2\2\2\u0662\u0663\3"+
- "\2\2\2\u0663\u0664\5<\37\2\u0664\u0665\7\13\2\2\u0665\u066a\3\2\2\2\u0666"+
- "\u0667\5\4\3\2\u0667\u0668\7\13\2\2\u0668\u066a\3\2\2\2\u0669\u0638\3"+
- "\2\2\2\u0669\u0639\3\2\2\2\u0669\u063a\3\2\2\2\u0669\u063c\3\2\2\2\u0669"+
- "\u0642\3\2\2\2\u0669\u0648\3\2\2\2\u0669\u064d\3\2\2\2\u0669\u0651\3\2"+
- "\2\2\u0669\u0658\3\2\2\2\u0669\u065f\3\2\2\2\u0669\u0666\3\2\2\2\u066a"+
- "\u0127\3\2\2\2\u066b\u066c\t\20\2\2\u066c\u0129\3\2\2\2\u066d\u066f\5"+
- "\u012c\u0097\2\u066e\u066d\3\2\2\2\u066e\u066f\3\2\2\2\u066f\u0671\3\2"+
- "\2\2\u0670\u0672\5\u012e\u0098\2\u0671\u0670\3\2\2\2\u0671\u0672\3\2\2"+
- "\2\u0672\u0676\3\2\2\2\u0673\u0675\5\u0130\u0099\2\u0674\u0673\3\2\2\2"+
- "\u0675\u0678\3\2\2\2\u0676\u0674\3\2\2\2\u0676\u0677\3\2\2\2\u0677\u067c"+
- "\3\2\2\2\u0678\u0676\3\2\2\2\u0679\u067b\5\u013e\u00a0\2\u067a\u0679\3"+
- "\2\2\2\u067b\u067e\3\2\2\2\u067c\u067a\3\2\2\2\u067c\u067d\3\2\2\2\u067d"+
- "\u0682\3\2\2\2\u067e\u067c\3\2\2\2\u067f\u0681\5\u0126\u0094\2\u0680\u067f"+
- "\3\2\2\2\u0681\u0684\3\2\2\2\u0682\u0680\3\2\2\2\u0682\u0683\3\2\2\2\u0683"+
- "\u012b\3\2\2\2\u0684\u0682\3\2\2\2\u0685\u0689\7o\2\2\u0686\u0688\n\21"+
- "\2\2\u0687\u0686\3\2\2\2\u0688\u068b\3\2\2\2\u0689\u0687\3\2\2\2\u0689"+
- "\u068a\3\2\2\2\u068a\u068c\3\2\2\2\u068b\u0689\3\2\2\2\u068c\u068d\7}"+
- "\2\2\u068d\u012d\3\2\2\2\u068e\u068f\5j\66\2\u068f\u0690\7p\2\2\u0690"+
- "\u0691\5\u0132\u009a\2\u0691\u0692\7\13\2\2\u0692\u012f\3\2\2\2\u0693"+
- "\u0696\5\u0134\u009b\2\u0694\u0696\5\u013c\u009f\2\u0695\u0693\3\2\2\2"+
- "\u0695\u0694\3\2\2\2\u0696\u0131\3\2\2\2\u0697\u069c\5\u00e2r\2\u0698"+
- "\u0699\7\3\2\2\u0699\u069b\5\u00e2r\2\u069a\u0698\3\2\2\2\u069b\u069e"+
- "\3\2\2\2\u069c\u069a\3\2\2\2\u069c\u069d\3\2\2\2\u069d\u0133\3\2\2\2\u069e"+
- "\u069c\3\2\2\2\u069f\u06a0\5j\66\2\u06a0\u06a1\5\u0136\u009c\2\u06a1\u0135"+
- "\3\2\2\2\u06a2\u06a3\7q\2\2\u06a3\u06a6\5\u0146\u00a4\2\u06a4\u06a5\7"+
- "Z\2\2\u06a5\u06a7\5\u00e2r\2\u06a6\u06a4\3\2\2\2\u06a6\u06a7\3\2\2\2\u06a7"+
- "\u06ab\3\2\2\2\u06a8\u06aa\5\u0138\u009d\2\u06a9\u06a8\3\2\2\2\u06aa\u06ad"+
- "\3\2\2\2\u06ab\u06a9\3\2\2\2\u06ab\u06ac\3\2\2\2\u06ac\u06ae\3\2\2\2\u06ad"+
- "\u06ab\3\2\2\2\u06ae\u06af\7\13\2\2\u06af\u0137\3\2\2\2\u06b0\u06b1\7"+
- "r\2\2\u06b1\u06b5\5\u013a\u009e\2\u06b2\u06b3\7s\2\2\u06b3\u06b5\5\u013a"+
- "\u009e\2\u06b4\u06b0\3\2\2\2\u06b4\u06b2\3\2\2\2\u06b5\u0139\3\2\2\2\u06b6"+
- "\u06bb\5\u00e2r\2\u06b7\u06b8\7\3\2\2\u06b8\u06ba\5\u00e2r\2\u06b9\u06b7"+
- "\3\2\2\2\u06ba\u06bd\3\2\2\2\u06bb\u06b9\3\2\2\2\u06bb\u06bc\3\2\2\2\u06bc"+
- "\u013b\3\2\2\2\u06bd\u06bb\3\2\2\2\u06be\u06bf\5j\66\2\u06bf\u06c0\7t"+
- "\2\2\u06c0\u06c4\5\u0146\u00a4\2\u06c1\u06c3\5\u0138\u009d\2\u06c2\u06c1"+
- "\3\2\2\2\u06c3\u06c6\3\2\2\2\u06c4\u06c2\3\2\2\2\u06c4\u06c5\3\2\2\2\u06c5"+
- "\u06c7\3\2\2\2\u06c6\u06c4\3\2\2\2\u06c7\u06c8\7\13\2\2\u06c8\u013d\3"+
- "\2\2\2\u06c9\u06ca\5j\66\2\u06ca\u06cb\7u\2\2\u06cb\u06cc\5\u0144\u00a3"+
- "\2\u06cc\u06cd\7\13\2\2\u06cd\u013f\3\2\2\2\u06ce\u06cf\5j\66\2\u06cf"+
- "\u06d0\7u\2\2\u06d0\u06d1\7v\2\2\u06d1\u06d6\5\u00e2r\2\u06d2\u06d3\7"+
- "\26\2\2\u06d3\u06d5\5\u00e2r\2\u06d4\u06d2\3\2\2\2\u06d5\u06d8\3\2\2\2"+
- "\u06d6\u06d4\3\2\2\2\u06d6\u06d7\3\2\2\2\u06d7\u06d9\3\2\2\2\u06d8\u06d6"+
- "\3\2\2\2\u06d9\u06da\7\13\2\2\u06da\u0141\3\2\2\2\u06db\u06df\5\u0140"+
- "\u00a1\2\u06dc\u06de\5\u0126\u0094\2\u06dd\u06dc\3\2\2\2\u06de\u06e1\3"+
- "\2\2\2\u06df\u06dd\3\2\2\2\u06df\u06e0\3\2\2\2\u06e0\u06e2\3\2\2\2\u06e1"+
- "\u06df\3\2\2\2\u06e2\u06e3\7\2\2\3\u06e3\u0143\3\2\2\2\u06e4\u06e5\5|"+
- "?\2\u06e5\u0145\3\2\2\2\u06e6\u06ea\5\u0144\u00a3\2\u06e7\u06e9\5\u0148"+
- "\u00a5\2\u06e8\u06e7\3\2\2\2\u06e9\u06ec\3\2\2\2\u06ea\u06e8\3\2\2\2\u06ea"+
- "\u06eb\3\2\2\2\u06eb\u0147\3\2\2\2\u06ec\u06ea\3\2\2\2\u06ed\u06ee\7["+
- "\2\2\u06ee\u06ef\7\20\2\2\u06ef\u06f0\5\u014a\u00a6\2\u06f0\u06f1\7\21"+
- "\2\2\u06f1\u06f2\5\u0144\u00a3\2\u06f2\u0149\3\2\2\2\u06f3\u06f6\5\u0132"+
- "\u009a\2\u06f4\u06f5\7!\2\2\u06f5\u06f7\5|?\2\u06f6\u06f4\3\2\2\2\u06f6"+
- "\u06f7\3\2\2\2\u06f7\u014b\3\2\2\2\u06f8\u06fa\5\u014e\u00a8\2\u06f9\u06fb"+
- "\5\u0150\u00a9\2\u06fa\u06f9\3\2\2\2\u06fa\u06fb\3\2\2\2\u06fb\u014d\3"+
- "\2\2\2\u06fc\u06ff\5\u00e4s\2\u06fd\u06ff\7\b\2\2\u06fe\u06fc\3\2\2\2"+
- "\u06fe\u06fd\3\2\2\2\u06ff\u014f\3\2\2\2\u0700\u0701\7)\2\2\u0701\u0702"+
- "\5\u0152\u00aa\2\u0702\u0703\7*\2\2\u0703\u0151\3\2\2\2\u0704\u0709\5"+
- "\u014c\u00a7\2\u0705\u0706\7\3\2\2\u0706\u0708\5\u014c\u00a7\2\u0707\u0705"+
- "\3\2\2\2\u0708\u070b\3\2\2\2\u0709\u0707\3\2\2\2\u0709\u070a\3\2\2\2\u070a"+
- "\u0153\3\2\2\2\u070b\u0709\3\2\2\2\u070c\u070d\5j\66\2\u070d\u070e\7w"+
- "\2\2\u070e\u070f\5\u0156\u00ac\2\u070f\u0155\3\2\2\2\u0710\u0711\5\u0158"+
- "\u00ad\2\u0711\u0157\3\2\2\2\u0712\u0714\5\u015a\u00ae\2\u0713\u0715\5"+
- "h\65\2\u0714\u0713\3\2\2\2\u0714\u0715\3\2\2\2\u0715\u0716\3\2\2\2\u0716"+
- "\u0717\5\34\17\2\u0717\u0718\7\13\2\2\u0718\u0159\3\2\2\2\u0719\u071b"+
- "\5\26\f\2\u071a\u0719\3\2\2\2\u071a\u071b\3\2\2\2\u071b\u071c\3\2\2\2"+
- "\u071c\u071d\5\u00e2r\2\u071d\u015b\3\2\2\2\u00d9\u015e\u0165\u016e\u0172"+
- "\u0175\u0179\u017e\u0184\u018a\u0191\u0196\u019c\u01a2\u01a5\u01ac\u01af"+
- "\u01bf\u01c7\u01ce\u01d3\u01db\u01df\u01e9\u01ed\u01f4\u01f8\u01fb\u0203"+
- "\u0207\u020b\u0211\u0216\u021b\u0220\u0222\u0226\u022b\u022e\u0231\u0234"+
- "\u023c\u0243\u0248\u0253\u0257\u025b\u025f\u0263\u0267\u026c\u0271\u0279"+
- "\u027b\u0280\u0282\u0286\u028b\u028d\u0293\u0298\u029c\u02a0\u02a3\u02aa"+
- "\u02b2\u02bc\u02c4\u02c7\u02cd\u02d6\u02de\u02e8\u02f4\u02f8\u0300\u0307"+
- "\u030c\u0312\u0319\u0327\u0330\u033b\u033f\u034a\u0352\u035b\u035e\u0362"+
- "\u036d\u0371\u0379\u0380\u038f\u0398\u03a3\u03ab\u03b4\u03b7\u03ba\u03bd"+
- "\u03c2\u03c4\u03c9\u03cc\u03d4\u03d8\u03da\u03f1\u03f9\u0400\u0402\u040b"+
- "\u0413\u0416\u0420\u0427\u042c\u0432\u0439\u043c\u0442\u044c\u0453\u045b"+
- "\u0463\u046a\u0470\u047a\u0480\u0489\u0491\u0493\u049a\u04a2\u04a4\u04ab"+
- "\u04b3\u04b5\u04bf\u04c8\u04ca\u04d4\u04dd\u04df\u04e9\u04f2\u04f4\u04ff"+
- "\u0506\u050b\u051d\u0520\u0526\u052e\u0532\u0538\u0540\u0545\u054c\u0553"+
- "\u055d\u0563\u0579\u057c\u058d\u0590\u059a\u059e\u05a8\u05ac\u05af\u05c7"+
- "\u05cb\u05d2\u05dd\u05ec\u05ef\u05f2\u05fa\u05fe\u0605\u060e\u0617\u061d"+
- "\u0631\u0634\u063c\u0642\u0648\u0651\u0658\u0661\u0669\u066e\u0671\u0676"+
- "\u067c\u0682\u0689\u0695\u069c\u06a6\u06ab\u06b4\u06bb\u06c4\u06d6\u06df"+
- "\u06ea\u06f6\u06fa\u06fe\u0709\u0714\u071a";
+ "\4\u00ae\t\u00ae\4\u00af\t\u00af\4\u00b0\t\u00b0\4\u00b1\t\u00b1\4\u00b2"+
+ "\t\u00b2\4\u00b3\t\u00b3\4\u00b4\t\u00b4\4\u00b5\t\u00b5\4\u00b6\t\u00b6"+
+ "\4\u00b7\t\u00b7\4\u00b8\t\u00b8\4\u00b9\t\u00b9\4\u00ba\t\u00ba\4\u00bb"+
+ "\t\u00bb\4\u00bc\t\u00bc\3\2\3\2\5\2\u017b\n\2\3\3\3\3\3\3\7\3\u0180\n"+
+ "\3\f\3\16\3\u0183\13\3\3\4\3\4\3\4\3\4\3\5\3\5\5\5\u018b\n\5\3\5\3\5\5"+
+ "\5\u018f\n\5\3\5\5\5\u0192\n\5\3\6\3\6\5\6\u0196\n\6\3\7\3\7\3\7\5\7\u019b"+
+ "\n\7\3\7\3\7\7\7\u019f\n\7\f\7\16\7\u01a2\13\7\3\b\3\b\3\b\5\b\u01a7\n"+
+ "\b\3\t\3\t\3\t\7\t\u01ac\n\t\f\t\16\t\u01af\13\t\3\n\3\n\5\n\u01b3\n\n"+
+ "\3\n\3\n\3\n\3\13\5\13\u01b9\n\13\3\13\3\13\3\f\3\f\5\f\u01bf\n\f\3\r"+
+ "\5\r\u01c2\n\r\3\r\3\r\3\r\3\r\3\r\5\r\u01c9\n\r\3\r\5\r\u01cc\n\r\3\16"+
+ "\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17"+
+ "\u01dc\n\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u01e4\n\17\3\20\3\20\3"+
+ "\20\7\20\u01e9\n\20\f\20\16\20\u01ec\13\20\3\21\3\21\5\21\u01f0\n\21\3"+
+ "\22\3\22\3\22\3\22\7\22\u01f6\n\22\f\22\16\22\u01f9\13\22\3\22\5\22\u01fc"+
+ "\n\22\3\22\3\22\3\23\3\23\3\23\3\23\7\23\u0204\n\23\f\23\16\23\u0207\13"+
+ "\23\3\23\5\23\u020a\n\23\3\23\3\23\3\24\3\24\3\24\5\24\u0211\n\24\3\25"+
+ "\3\25\5\25\u0215\n\25\3\25\5\25\u0218\n\25\3\25\3\25\3\25\3\26\3\26\3"+
+ "\26\5\26\u0220\n\26\3\26\3\26\5\26\u0224\n\26\3\27\3\27\5\27\u0228\n\27"+
+ "\3\27\3\27\3\27\3\27\5\27\u022e\n\27\3\30\3\30\3\30\5\30\u0233\n\30\3"+
+ "\31\3\31\3\31\5\31\u0238\n\31\3\31\3\31\3\31\5\31\u023d\n\31\5\31\u023f"+
+ "\n\31\3\32\3\32\3\33\3\33\7\33\u0245\n\33\f\33\16\33\u0248\13\33\3\33"+
+ "\5\33\u024b\n\33\3\33\3\33\3\33\5\33\u0250\n\33\3\33\5\33\u0253\n\33\3"+
+ "\33\5\33\u0256\n\33\3\33\5\33\u0259\n\33\3\33\3\33\3\33\3\33\7\33\u025f"+
+ "\n\33\f\33\16\33\u0262\13\33\3\33\3\33\3\33\3\33\5\33\u0268\n\33\3\33"+
+ "\7\33\u026b\n\33\f\33\16\33\u026e\13\33\3\33\3\33\3\33\5\33\u0273\n\33"+
+ "\3\33\5\33\u0276\n\33\3\33\5\33\u0279\n\33\3\33\5\33\u027c\n\33\3\33\3"+
+ "\33\3\33\3\33\7\33\u0282\n\33\f\33\16\33\u0285\13\33\3\33\3\33\3\33\3"+
+ "\33\5\33\u028b\n\33\3\33\3\33\3\33\5\33\u0290\n\33\3\34\3\34\3\34\3\35"+
+ "\3\35\3\35\3\35\3\35\3\35\5\35\u029b\n\35\3\36\3\36\5\36\u029f\n\36\3"+
+ "\36\3\36\5\36\u02a3\n\36\3\36\3\36\5\36\u02a7\n\36\3\36\3\36\5\36\u02ab"+
+ "\n\36\3\36\3\36\5\36\u02af\n\36\3\37\3\37\3\37\5\37\u02b4\n\37\3\37\3"+
+ "\37\3\37\5\37\u02b9\n\37\3\37\3\37\3\37\3\37\3\37\3\37\5\37\u02c1\n\37"+
+ "\5\37\u02c3\n\37\3\37\3\37\3\37\5\37\u02c8\n\37\5\37\u02ca\n\37\3\37\3"+
+ "\37\5\37\u02ce\n\37\3\37\3\37\3\37\5\37\u02d3\n\37\5\37\u02d5\n\37\3\37"+
+ "\3\37\3\37\3\37\5\37\u02db\n\37\3\37\3\37\3\37\5\37\u02e0\n\37\3\37\3"+
+ "\37\5\37\u02e4\n\37\3\37\3\37\5\37\u02e8\n\37\3\37\5\37\u02eb\n\37\3 "+
+ "\3 \3 \7 \u02f0\n \f \16 \u02f3\13 \3!\3!\3!\3!\3\"\5\"\u02fa\n\"\3\""+
+ "\3\"\3\"\3\"\3#\3#\3#\3#\5#\u0304\n#\3$\3$\3$\3$\3$\3$\5$\u030c\n$\3%"+
+ "\5%\u030f\n%\3%\3%\3%\3&\5&\u0315\n&\3&\3&\3&\3&\3\'\3\'\3\'\5\'\u031e"+
+ "\n\'\3\'\3\'\3(\3(\3(\3(\5(\u0326\n(\3(\3(\3)\3)\3)\3)\7)\u032e\n)\f)"+
+ "\16)\u0331\13)\3*\3*\3*\3*\3*\3*\3*\3*\3*\5*\u033c\n*\3+\3+\5+\u0340\n"+
+ "+\3+\3+\3+\3+\7+\u0346\n+\f+\16+\u0349\13+\3,\3,\3,\3,\5,\u034f\n,\3,"+
+ "\3,\3-\5-\u0354\n-\3-\3-\3-\3-\5-\u035a\n-\3-\3-\3-\3-\3-\5-\u0361\n-"+
+ "\3.\3.\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\61\3\61\5\61\u036f\n\61\3\61\3"+
+ "\61\3\61\3\61\3\62\3\62\3\62\5\62\u0378\n\62\3\63\3\63\3\63\3\63\3\63"+
+ "\3\63\3\63\7\63\u0381\n\63\f\63\16\63\u0384\13\63\3\63\5\63\u0387\n\63"+
+ "\3\63\3\63\3\64\3\64\3\64\3\65\3\65\3\65\3\65\5\65\u0392\n\65\3\66\3\66"+
+ "\3\66\3\66\7\66\u0398\n\66\f\66\16\66\u039b\13\66\3\66\3\66\3\67\3\67"+
+ "\3\67\3\67\5\67\u03a3\n\67\3\67\5\67\u03a6\n\67\7\67\u03a8\n\67\f\67\16"+
+ "\67\u03ab\13\67\38\38\38\38\38\38\78\u03b3\n8\f8\168\u03b6\138\38\58\u03b9"+
+ "\n8\39\39\39\39\39\39\59\u03c1\n9\3:\3:\3:\7:\u03c6\n:\f:\16:\u03c9\13"+
+ ":\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\5;\u03d9\n;\3<\3<\3<\3<\3"+
+ "<\3<\7<\u03e1\n<\f<\16<\u03e4\13<\3<\5<\u03e7\n<\3<\3<\3=\3=\3=\5=\u03ee"+
+ "\n=\3=\3=\3>\3>\3>\3>\3>\3>\7>\u03f8\n>\f>\16>\u03fb\13>\3>\5>\u03fe\n"+
+ ">\3>\3>\3?\3?\3?\5?\u0405\n?\3?\3?\3@\3@\3@\3@\3@\3@\3@\3@\7@\u0411\n"+
+ "@\f@\16@\u0414\13@\3@\5@\u0417\n@\3@\3@\3A\3A\3A\3A\3B\3B\3B\5B\u0422"+
+ "\nB\3C\3C\3C\3C\3C\5C\u0429\nC\3D\3D\3D\3D\5D\u042f\nD\3E\3E\3E\3F\3F"+
+ "\3G\3G\3G\5G\u0439\nG\5G\u043b\nG\3G\3G\3H\3H\3H\3H\3I\3I\3I\3I\3I\3I"+
+ "\3I\5I\u044a\nI\3J\3J\3K\3K\3L\3L\3M\6M\u0453\nM\rM\16M\u0454\3N\3N\3"+
+ "N\3N\3N\3N\5N\u045d\nN\3O\3O\3O\3O\3O\7O\u0464\nO\fO\16O\u0467\13O\5O"+
+ "\u0469\nO\3P\5P\u046c\nP\3P\5P\u046f\nP\3P\3P\3P\5P\u0474\nP\5P\u0476"+
+ "\nP\3P\3P\3Q\5Q\u047b\nQ\3Q\5Q\u047e\nQ\3Q\3Q\3Q\3Q\7Q\u0484\nQ\fQ\16"+
+ "Q\u0487\13Q\3Q\5Q\u048a\nQ\5Q\u048c\nQ\3Q\3Q\3R\3R\3R\3R\3S\3S\3S\3T\3"+
+ "T\3T\3U\3U\3U\3V\3V\3W\3W\3W\3W\5W\u04a3\nW\3W\3W\3X\3X\3X\3X\5X\u04ab"+
+ "\nX\3X\3X\3Y\3Y\3Y\5Y\u04b2\nY\5Y\u04b4\nY\3Y\3Y\3Z\3Z\3Z\7Z\u04bb\nZ"+
+ "\fZ\16Z\u04be\13Z\3Z\3Z\3Z\7Z\u04c3\nZ\fZ\16Z\u04c6\13Z\5Z\u04c8\nZ\3"+
+ "[\3[\3[\3\\\3\\\3\\\7\\\u04d0\n\\\f\\\16\\\u04d3\13\\\3\\\3\\\7\\\u04d7"+
+ "\n\\\f\\\16\\\u04da\13\\\7\\\u04dc\n\\\f\\\16\\\u04df\13\\\3\\\3\\\3\\"+
+ "\5\\\u04e4\n\\\3]\3]\3]\3]\3]\5]\u04eb\n]\3^\5^\u04ee\n^\3^\3^\3_\3_\5"+
+ "_\u04f4\n_\3`\3`\3a\3a\3a\3a\3a\3a\5a\u04fe\na\3b\3b\3b\7b\u0503\nb\f"+
+ "b\16b\u0506\13b\3c\3c\3c\7c\u050b\nc\fc\16c\u050e\13c\3d\3d\3d\7d\u0513"+
+ "\nd\fd\16d\u0516\13d\3e\3e\3e\3e\5e\u051c\ne\3e\3e\3e\3e\5e\u0522\ne\3"+
+ "f\3f\3g\3g\3g\3g\3g\3g\5g\u052c\ng\3g\3g\3g\3g\5g\u0532\ng\3h\3h\3i\3"+
+ "i\3i\7i\u0539\ni\fi\16i\u053c\13i\3i\3i\3i\6i\u0541\ni\ri\16i\u0542\5"+
+ "i\u0545\ni\3j\3j\3j\7j\u054a\nj\fj\16j\u054d\13j\3j\3j\3j\6j\u0552\nj"+
+ "\rj\16j\u0553\5j\u0556\nj\3k\3k\3k\7k\u055b\nk\fk\16k\u055e\13k\3k\3k"+
+ "\3k\6k\u0563\nk\rk\16k\u0564\5k\u0567\nk\3l\3l\3m\3m\3m\3m\7m\u056f\n"+
+ "m\fm\16m\u0572\13m\3m\3m\3m\3m\6m\u0578\nm\rm\16m\u0579\5m\u057c\nm\3"+
+ "n\3n\3o\3o\3o\3o\7o\u0584\no\fo\16o\u0587\13o\3o\3o\3o\3o\6o\u058d\no"+
+ "\ro\16o\u058e\5o\u0591\no\3p\3p\3q\3q\3q\3q\7q\u0599\nq\fq\16q\u059c\13"+
+ "q\3q\3q\3q\3q\6q\u05a2\nq\rq\16q\u05a3\5q\u05a6\nq\3r\3r\3s\3s\3s\3s\3"+
+ "s\3s\3s\5s\u05b1\ns\3s\3s\3s\3s\3s\5s\u05b8\ns\3t\3t\3t\5t\u05bd\nt\3"+
+ "u\3u\3v\3v\3w\3w\3x\3x\3x\3y\3y\3y\3y\3y\7y\u05cd\ny\fy\16y\u05d0\13y"+
+ "\5y\u05d2\ny\3z\3z\3{\3{\5{\u05d8\n{\3|\3|\3}\3}\7}\u05de\n}\f}\16}\u05e1"+
+ "\13}\3}\5}\u05e4\n}\3}\3}\3}\3}\5}\u05ea\n}\3~\3~\3~\3~\3~\3~\5~\u05f2"+
+ "\n~\3\177\3\177\3\177\5\177\u05f7\n\177\3\u0080\3\u0080\3\u0081\3\u0081"+
+ "\3\u0081\5\u0081\u05fe\n\u0081\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083"+
+ "\5\u0083\u0605\n\u0083\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085\3\u0086"+
+ "\7\u0086\u060d\n\u0086\f\u0086\16\u0086\u0610\13\u0086\3\u0087\7\u0087"+
+ "\u0613\n\u0087\f\u0087\16\u0087\u0616\13\u0087\3\u0087\3\u0087\3\u0088"+
+ "\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088"+
+ "\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\5\u0088\u062b"+
+ "\n\u0088\3\u0089\5\u0089\u062e\n\u0089\3\u0089\3\u0089\3\u008a\3\u008a"+
+ "\3\u008a\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c"+
+ "\3\u008c\3\u008c\5\u008c\u063f\n\u008c\3\u008c\3\u008c\3\u008c\3\u008c"+
+ "\3\u008c\3\u008c\3\u008c\5\u008c\u0648\n\u008c\3\u008c\3\u008c\3\u008c"+
+ "\3\u008c\5\u008c\u064e\n\u008c\5\u008c\u0650\n\u008c\3\u008d\5\u008d\u0653"+
+ "\n\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e"+
+ "\5\u008e\u065d\n\u008e\3\u008e\3\u008e\5\u008e\u0661\n\u008e\3\u008e\3"+
+ "\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\5\u008e\u066b\n"+
+ "\u008e\3\u008f\3\u008f\5\u008f\u066f\n\u008f\3\u008f\5\u008f\u0672\n\u008f"+
+ "\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091"+
+ "\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092\3\u0092"+
+ "\3\u0092\3\u0092\7\u0092\u0688\n\u0092\f\u0092\16\u0092\u068b\13\u0092"+
+ "\3\u0092\5\u0092\u068e\n\u0092\3\u0092\3\u0092\3\u0093\7\u0093\u0693\n"+
+ "\u0093\f\u0093\16\u0093\u0696\13\u0093\3\u0093\3\u0093\3\u0093\3\u0093"+
+ "\5\u0093\u069c\n\u0093\3\u0093\3\u0093\3\u0093\3\u0094\7\u0094\u06a2\n"+
+ "\u0094\f\u0094\16\u0094\u06a5\13\u0094\3\u0094\3\u0094\3\u0094\3\u0094"+
+ "\3\u0095\3\u0095\3\u0095\3\u0096\3\u0096\3\u0096\6\u0096\u06b1\n\u0096"+
+ "\r\u0096\16\u0096\u06b2\3\u0096\5\u0096\u06b6\n\u0096\3\u0096\5\u0096"+
+ "\u06b9\n\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\5\u0097"+
+ "\u06c1\n\u0097\3\u0097\3\u0097\5\u0097\u06c5\n\u0097\3\u0098\3\u0098\3"+
+ "\u0098\3\u0098\3\u0098\5\u0098\u06cc\n\u0098\3\u0098\3\u0098\3\u0099\3"+
+ "\u0099\3\u0099\3\u009a\3\u009a\5\u009a\u06d5\n\u009a\3\u009a\3\u009a\3"+
+ "\u009b\3\u009b\3\u009b\3\u009c\3\u009c\5\u009c\u06de\n\u009c\3\u009c\3"+
+ "\u009c\3\u009d\3\u009d\5\u009d\u06e4\n\u009d\3\u009d\3\u009d\3\u009e\3"+
+ "\u009e\3\u009e\3\u009e\3\u009f\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0"+
+ "\3\u00a0\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a1\5\u00a1\u06f8\n\u00a1"+
+ "\3\u00a1\5\u00a1\u06fb\n\u00a1\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2"+
+ "\3\u00a2\5\u00a2\u0703\n\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2"+
+ "\u0709\n\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2\u070f\n\u00a2\3"+
+ "\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2\u0718\n"+
+ "\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2\u071f\n\u00a2\3"+
+ "\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2\u0728\n"+
+ "\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\5\u00a2\u0730\n"+
+ "\u00a2\3\u00a3\3\u00a3\3\u00a4\5\u00a4\u0735\n\u00a4\3\u00a4\5\u00a4\u0738"+
+ "\n\u00a4\3\u00a4\7\u00a4\u073b\n\u00a4\f\u00a4\16\u00a4\u073e\13\u00a4"+
+ "\3\u00a4\7\u00a4\u0741\n\u00a4\f\u00a4\16\u00a4\u0744\13\u00a4\3\u00a4"+
+ "\7\u00a4\u0747\n\u00a4\f\u00a4\16\u00a4\u074a\13\u00a4\3\u00a5\3\u00a5"+
+ "\7\u00a5\u074e\n\u00a5\f\u00a5\16\u00a5\u0751\13\u00a5\3\u00a5\3\u00a5"+
+ "\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7\5\u00a7\u075c"+
+ "\n\u00a7\3\u00a8\3\u00a8\3\u00a8\7\u00a8\u0761\n\u00a8\f\u00a8\16\u00a8"+
+ "\u0764\13\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa"+
+ "\5\u00aa\u076d\n\u00aa\3\u00aa\7\u00aa\u0770\n\u00aa\f\u00aa\16\u00aa"+
+ "\u0773\13\u00aa\3\u00aa\3\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ab\5\u00ab"+
+ "\u077b\n\u00ab\3\u00ac\3\u00ac\3\u00ac\7\u00ac\u0780\n\u00ac\f\u00ac\16"+
+ "\u00ac\u0783\13\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ad\7\u00ad\u0789\n"+
+ "\u00ad\f\u00ad\16\u00ad\u078c\13\u00ad\3\u00ad\3\u00ad\3\u00ae\3\u00ae"+
+ "\3\u00ae\3\u00ae\3\u00ae\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af\3\u00af"+
+ "\7\u00af\u079b\n\u00af\f\u00af\16\u00af\u079e\13\u00af\3\u00af\3\u00af"+
+ "\3\u00b0\3\u00b0\7\u00b0\u07a4\n\u00b0\f\u00b0\16\u00b0\u07a7\13\u00b0"+
+ "\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3\u00b2\3\u00b2\7\u00b2\u07af\n\u00b2"+
+ "\f\u00b2\16\u00b2\u07b2\13\u00b2\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3"+
+ "\3\u00b3\3\u00b4\3\u00b4\3\u00b4\5\u00b4\u07bd\n\u00b4\3\u00b5\3\u00b5"+
+ "\5\u00b5\u07c1\n\u00b5\3\u00b5\5\u00b5\u07c4\n\u00b5\3\u00b5\3\u00b5\5"+
+ "\u00b5\u07c8\n\u00b5\5\u00b5\u07ca\n\u00b5\3\u00b6\3\u00b6\5\u00b6\u07ce"+
+ "\n\u00b6\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b8\3\u00b8\3\u00b8\7\u00b8"+
+ "\u07d7\n\u00b8\f\u00b8\16\u00b8\u07da\13\u00b8\3\u00b9\3\u00b9\3\u00b9"+
+ "\3\u00b9\3\u00ba\3\u00ba\3\u00bb\3\u00bb\5\u00bb\u07e4\n\u00bb\3\u00bb"+
+ "\3\u00bb\3\u00bb\3\u00bc\5\u00bc\u07ea\n\u00bc\3\u00bc\3\u00bc\3\u00bc"+
+ "\2\2\u00bd\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\66"+
+ "8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
+ "\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
+ "\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
+ "\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
+ "\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
+ "\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
+ "\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
+ "\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
+ "\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
+ "\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
+ "\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\2\23\4\2"+
+ "\t\t\f\r\4\2\4\4\30\33\3\2\4\5\4\2\24\24\37\37\3\2\177\u0080\3\2\64\65"+
+ "\3\2\u0081\u0082\3\2\u02ec\3\2\2\2@\u02f4\3\2\2\2B\u02f9\3\2\2\2D"+
+ "\u0303\3\2\2\2F\u030b\3\2\2\2H\u030e\3\2\2\2J\u0314\3\2\2\2L\u031a\3\2"+
+ "\2\2N\u0321\3\2\2\2P\u0329\3\2\2\2R\u033b\3\2\2\2T\u033f\3\2\2\2V\u034a"+
+ "\3\2\2\2X\u0353\3\2\2\2Z\u0362\3\2\2\2\\\u0366\3\2\2\2^\u0369\3\2\2\2"+
+ "`\u036c\3\2\2\2b\u0374\3\2\2\2d\u0379\3\2\2\2f\u038a\3\2\2\2h\u038d\3"+
+ "\2\2\2j\u0393\3\2\2\2l\u03a9\3\2\2\2n\u03b8\3\2\2\2p\u03c0\3\2\2\2r\u03c2"+
+ "\3\2\2\2t\u03d8\3\2\2\2v\u03da\3\2\2\2x\u03ed\3\2\2\2z\u03f1\3\2\2\2|"+
+ "\u0404\3\2\2\2~\u0408\3\2\2\2\u0080\u041a\3\2\2\2\u0082\u041e\3\2\2\2"+
+ "\u0084\u0428\3\2\2\2\u0086\u042e\3\2\2\2\u0088\u0430\3\2\2\2\u008a\u0433"+
+ "\3\2\2\2\u008c\u043a\3\2\2\2\u008e\u043e\3\2\2\2\u0090\u0449\3\2\2\2\u0092"+
+ "\u044b\3\2\2\2\u0094\u044d\3\2\2\2\u0096\u044f\3\2\2\2\u0098\u0452\3\2"+
+ "\2\2\u009a\u045c\3\2\2\2\u009c\u045e\3\2\2\2\u009e\u046b\3\2\2\2\u00a0"+
+ "\u047a\3\2\2\2\u00a2\u048f\3\2\2\2\u00a4\u0493\3\2\2\2\u00a6\u0496\3\2"+
+ "\2\2\u00a8\u0499\3\2\2\2\u00aa\u049c\3\2\2\2\u00ac\u049e\3\2\2\2\u00ae"+
+ "\u04a6\3\2\2\2\u00b0\u04ae\3\2\2\2\u00b2\u04c7\3\2\2\2\u00b4\u04c9\3\2"+
+ "\2\2\u00b6\u04cc\3\2\2\2\u00b8\u04ea\3\2\2\2\u00ba\u04ed\3\2\2\2\u00bc"+
+ "\u04f3\3\2\2\2\u00be\u04f5\3\2\2\2\u00c0\u04f7\3\2\2\2\u00c2\u04ff\3\2"+
+ "\2\2\u00c4\u0507\3\2\2\2\u00c6\u050f\3\2\2\2\u00c8\u0521\3\2\2\2\u00ca"+
+ "\u0523\3\2\2\2\u00cc\u0531\3\2\2\2\u00ce\u0533\3\2\2\2\u00d0\u0544\3\2"+
+ "\2\2\u00d2\u0555\3\2\2\2\u00d4\u0566\3\2\2\2\u00d6\u0568\3\2\2\2\u00d8"+
+ "\u057b\3\2\2\2\u00da\u057d\3\2\2\2\u00dc\u0590\3\2\2\2\u00de\u0592\3\2"+
+ "\2\2\u00e0\u05a5\3\2\2\2\u00e2\u05a7\3\2\2\2\u00e4\u05b7\3\2\2\2\u00e6"+
+ "\u05bc\3\2\2\2\u00e8\u05be\3\2\2\2\u00ea\u05c0\3\2\2\2\u00ec\u05c2\3\2"+
+ "\2\2\u00ee\u05c4\3\2\2\2\u00f0\u05d1\3\2\2\2\u00f2\u05d3\3\2\2\2\u00f4"+
+ "\u05d7\3\2\2\2\u00f6\u05d9\3\2\2\2\u00f8\u05e9\3\2\2\2\u00fa\u05f1\3\2"+
+ "\2\2\u00fc\u05f6\3\2\2\2\u00fe\u05f8\3\2\2\2\u0100\u05fa\3\2\2\2\u0102"+
+ "\u05ff\3\2\2\2\u0104\u0602\3\2\2\2\u0106\u0606\3\2\2\2\u0108\u0609\3\2"+
+ "\2\2\u010a\u060e\3\2\2\2\u010c\u0614\3\2\2\2\u010e\u062a\3\2\2\2\u0110"+
+ "\u062d\3\2\2\2\u0112\u0631\3\2\2\2\u0114\u0634\3\2\2\2\u0116\u064f\3\2"+
+ "\2\2\u0118\u0652\3\2\2\2\u011a\u066a\3\2\2\2\u011c\u0671\3\2\2\2\u011e"+
+ "\u0673\3\2\2\2\u0120\u0679\3\2\2\2\u0122\u0681\3\2\2\2\u0124\u0694\3\2"+
+ "\2\2\u0126\u06a3\3\2\2\2\u0128\u06aa\3\2\2\2\u012a\u06ad\3\2\2\2\u012c"+
+ "\u06c4\3\2\2\2\u012e\u06c6\3\2\2\2\u0130\u06cf\3\2\2\2\u0132\u06d2\3\2"+
+ "\2\2\u0134\u06d8\3\2\2\2\u0136\u06db\3\2\2\2\u0138\u06e1\3\2\2\2\u013a"+
+ "\u06e7\3\2\2\2\u013c\u06eb\3\2\2\2\u013e\u06ef\3\2\2\2\u0140\u06f2\3\2"+
+ "\2\2\u0142\u072f\3\2\2\2\u0144\u0731\3\2\2\2\u0146\u0734\3\2\2\2\u0148"+
+ "\u074b\3\2\2\2\u014a\u0754\3\2\2\2\u014c\u075b\3\2\2\2\u014e\u075d\3\2"+
+ "\2\2\u0150\u0765\3\2\2\2\u0152\u0768\3\2\2\2\u0154\u077a\3\2\2\2\u0156"+
+ "\u077c\3\2\2\2\u0158\u0784\3\2\2\2\u015a\u078f\3\2\2\2\u015c\u0794\3\2"+
+ "\2\2\u015e\u07a1\3\2\2\2\u0160\u07aa\3\2\2\2\u0162\u07ac\3\2\2\2\u0164"+
+ "\u07b3\3\2\2\2\u0166\u07b9\3\2\2\2\u0168\u07c9\3\2\2\2\u016a\u07cd\3\2"+
+ "\2\2\u016c\u07cf\3\2\2\2\u016e\u07d3\3\2\2\2\u0170\u07db\3\2\2\2\u0172"+
+ "\u07df\3\2\2\2\u0174\u07e1\3\2\2\2\u0176\u07e9\3\2\2\2\u0178\u017b\5\u0146"+
+ "\u00a4\2\u0179\u017b\5\u015e\u00b0\2\u017a\u0178\3\2\2\2\u017a\u0179\3"+
+ "\2\2\2\u017b\3\3\2\2\2\u017c\u0181\5\6\4\2\u017d\u017e\7\3\2\2\u017e\u0180"+
+ "\5\u00fe\u0080\2\u017f\u017d\3\2\2\2\u0180\u0183\3\2\2\2\u0181\u017f\3"+
+ "\2\2\2\u0181\u0182\3\2\2\2\u0182\5\3\2\2\2\u0183\u0181\3\2\2\2\u0184\u0185"+
+ "\5l\67\2\u0185\u0186\5\b\5\2\u0186\u0187\5\u00fe\u0080\2\u0187\7\3\2\2"+
+ "\2\u0188\u018a\7\4\2\2\u0189\u018b\5\u0168\u00b5\2\u018a\u0189\3\2\2\2"+
+ "\u018a\u018b\3\2\2\2\u018b\u0192\3\2\2\2\u018c\u018e\7\5\2\2\u018d\u018f"+
+ "\5\u0168\u00b5\2\u018e\u018d\3\2\2\2\u018e\u018f\3\2\2\2\u018f\u0192\3"+
+ "\2\2\2\u0190\u0192\5\n\6\2\u0191\u0188\3\2\2\2\u0191\u018c\3\2\2\2\u0191"+
+ "\u0190\3\2\2\2\u0192\t\3\2\2\2\u0193\u0196\7\6\2\2\u0194\u0196\5\u0168"+
+ "\u00b5\2\u0195\u0193\3\2\2\2\u0195\u0194\3\2\2\2\u0196\13\3\2\2\2\u0197"+
+ "\u019a\5\6\4\2\u0198\u0199\7\7\2\2\u0199\u019b\5n8\2\u019a\u0198\3\2\2"+
+ "\2\u019a\u019b\3\2\2\2\u019b\u01a0\3\2\2\2\u019c\u019d\7\3\2\2\u019d\u019f"+
+ "\5\16\b\2\u019e\u019c\3\2\2\2\u019f\u01a2\3\2\2\2\u01a0\u019e\3\2\2\2"+
+ "\u01a0\u01a1\3\2\2\2\u01a1\r\3\2\2\2\u01a2\u01a0\3\2\2\2\u01a3\u01a6\5"+
+ "\u00fe\u0080\2\u01a4\u01a5\7\7\2\2\u01a5\u01a7\5n8\2\u01a6\u01a4\3\2\2"+
+ "\2\u01a6\u01a7\3\2\2\2\u01a7\17\3\2\2\2\u01a8\u01ad\5\16\b\2\u01a9\u01aa"+
+ "\7\3\2\2\u01aa\u01ac\5\16\b\2\u01ab\u01a9\3\2\2\2\u01ac\u01af\3\2\2\2"+
+ "\u01ad\u01ab\3\2\2\2\u01ad\u01ae\3\2\2\2\u01ae\21\3\2\2\2\u01af\u01ad"+
+ "\3\2\2\2\u01b0\u01b2\5l\67\2\u01b1\u01b3\5\26\f\2\u01b2\u01b1\3\2\2\2"+
+ "\u01b2\u01b3\3\2\2\2\u01b3\u01b4\3\2\2\2\u01b4\u01b5\5\u00fe\u0080\2\u01b5"+
+ "\u01b6\5\24\13\2\u01b6\23\3\2\2\2\u01b7\u01b9\5j\66\2\u01b8\u01b7\3\2"+
+ "\2\2\u01b8\u01b9\3\2\2\2\u01b9\u01ba\3\2\2\2\u01ba\u01bb\5\34\17\2\u01bb"+
+ "\25\3\2\2\2\u01bc\u01bf\7\b\2\2\u01bd\u01bf\5\u0168\u00b5\2\u01be\u01bc"+
+ "\3\2\2\2\u01be\u01bd\3\2\2\2\u01bf\27\3\2\2\2\u01c0\u01c2\7\t\2\2\u01c1"+
+ "\u01c0\3\2\2\2\u01c1\u01c2\3\2\2\2\u01c2\u01c3\3\2\2\2\u01c3\u01c4\7\n"+
+ "\2\2\u01c4\u01c5\5n8\2\u01c5\u01c6\7\13\2\2\u01c6\u01cc\3\2\2\2\u01c7"+
+ "\u01c9\t\2\2\2\u01c8\u01c7\3\2\2\2\u01c8\u01c9\3\2\2\2\u01c9\u01ca\3\2"+
+ "\2\2\u01ca\u01cc\5\32\16\2\u01cb\u01c1\3\2\2\2\u01cb\u01c8\3\2\2\2\u01cc"+
+ "\31\3\2\2\2\u01cd\u01ce\7\16\2\2\u01ce\u01cf\5\u010a\u0086\2\u01cf\u01d0"+
+ "\7\17\2\2\u01d0\33\3\2\2\2\u01d1\u01d2\7\20\2\2\u01d2\u01e4\7\21\2\2\u01d3"+
+ "\u01d4\7\20\2\2\u01d4\u01d5\5\36\20\2\u01d5\u01d6\7\21\2\2\u01d6\u01e4"+
+ "\3\2\2\2\u01d7\u01d8\7\20\2\2\u01d8\u01db\5\36\20\2\u01d9\u01da\7\3\2"+
+ "\2\u01da\u01dc\5 \21\2\u01db\u01d9\3\2\2\2\u01db\u01dc\3\2\2\2\u01dc\u01dd"+
+ "\3\2\2\2\u01dd\u01de\7\21\2\2\u01de\u01e4\3\2\2\2\u01df\u01e0\7\20\2\2"+
+ "\u01e0\u01e1\5 \21\2\u01e1\u01e2\7\21\2\2\u01e2\u01e4\3\2\2\2\u01e3\u01d1"+
+ "\3\2\2\2\u01e3\u01d3\3\2\2\2\u01e3\u01d7\3\2\2\2\u01e3\u01df\3\2\2\2\u01e4"+
+ "\35\3\2\2\2\u01e5\u01ea\5&\24\2\u01e6\u01e7\7\3\2\2\u01e7\u01e9\5&\24"+
+ "\2\u01e8\u01e6\3\2\2\2\u01e9\u01ec\3\2\2\2\u01ea\u01e8\3\2\2\2\u01ea\u01eb"+
+ "\3\2\2\2\u01eb\37\3\2\2\2\u01ec\u01ea\3\2\2\2\u01ed\u01f0\5\"\22\2\u01ee"+
+ "\u01f0\5$\23\2\u01ef\u01ed\3\2\2\2\u01ef\u01ee\3\2\2\2\u01f0!\3\2\2\2"+
+ "\u01f1\u01f2\7\22\2\2\u01f2\u01f7\5.\30\2\u01f3\u01f4\7\3\2\2\u01f4\u01f6"+
+ "\5.\30\2\u01f5\u01f3\3\2\2\2\u01f6\u01f9\3\2\2\2\u01f7\u01f5\3\2\2\2\u01f7"+
+ "\u01f8\3\2\2\2\u01f8\u01fb\3\2\2\2\u01f9\u01f7\3\2\2\2\u01fa\u01fc\7\3"+
+ "\2\2\u01fb\u01fa\3\2\2\2\u01fb\u01fc\3\2\2\2\u01fc\u01fd\3\2\2\2\u01fd"+
+ "\u01fe\7\23\2\2\u01fe#\3\2\2\2\u01ff\u0200\7\16\2\2\u0200\u0205\5\60\31"+
+ "\2\u0201\u0202\7\3\2\2\u0202\u0204\5\60\31\2\u0203\u0201\3\2\2\2\u0204"+
+ "\u0207\3\2\2\2\u0205\u0203\3\2\2\2\u0205\u0206\3\2\2\2\u0206\u0209\3\2"+
+ "\2\2\u0207\u0205\3\2\2\2\u0208\u020a\7\3\2\2\u0209\u0208\3\2\2\2\u0209"+
+ "\u020a\3\2\2\2\u020a\u020b\3\2\2\2\u020b\u020c\7\17\2\2\u020c%\3\2\2\2"+
+ "\u020d\u0211\5(\25\2\u020e\u0211\5,\27\2\u020f\u0211\5*\26\2\u0210\u020d"+
+ "\3\2\2\2\u0210\u020e\3\2\2\2\u0210\u020f\3\2\2\2\u0211\'\3\2\2\2\u0212"+
+ "\u0214\5l\67\2\u0213\u0215\7\24\2\2\u0214\u0213\3\2\2\2\u0214\u0215\3"+
+ "\2\2\2\u0215\u0217\3\2\2\2\u0216\u0218\5\26\f\2\u0217\u0216\3\2\2\2\u0217"+
+ "\u0218\3\2\2\2\u0218\u0219\3\2\2\2\u0219\u021a\5\u00fe\u0080\2\u021a\u021b"+
+ "\5\24\13\2\u021b)\3\2\2\2\u021c\u0224\5\6\4\2\u021d\u021f\5l\67\2\u021e"+
+ "\u0220\7\24\2\2\u021f\u021e\3\2\2\2\u021f\u0220\3\2\2\2\u0220\u0221\3"+
+ "\2\2\2\u0221\u0222\5\u00fe\u0080\2\u0222\u0224\3\2\2\2\u0223\u021c\3\2"+
+ "\2\2\u0223\u021d\3\2\2\2\u0224+\3\2\2\2\u0225\u0227\5l\67\2\u0226\u0228"+
+ "\5\b\5\2\u0227\u0226\3\2\2\2\u0227\u0228\3\2\2\2\u0228\u0229\3\2\2\2\u0229"+
+ "\u022a\7\25\2\2\u022a\u022b\7\26\2\2\u022b\u022d\5\u00fe\u0080\2\u022c"+
+ "\u022e\5\24\13\2\u022d\u022c\3\2\2\2\u022d\u022e\3\2\2\2\u022e-\3\2\2"+
+ "\2\u022f\u0232\5&\24\2\u0230\u0231\7\7\2\2\u0231\u0233\5n8\2\u0232\u0230"+
+ "\3\2\2\2\u0232\u0233\3\2\2\2\u0233/\3\2\2\2\u0234\u0237\5&\24\2\u0235"+
+ "\u0236\7\7\2\2\u0236\u0238\5n8\2\u0237\u0235\3\2\2\2\u0237\u0238\3\2\2"+
+ "\2\u0238\u023f\3\2\2\2\u0239\u023c\5&\24\2\u023a\u023b\7\27\2\2\u023b"+
+ "\u023d\5n8\2\u023c\u023a\3\2\2\2\u023c\u023d\3\2\2\2\u023d\u023f\3\2\2"+
+ "\2\u023e\u0234\3\2\2\2\u023e\u0239\3\2\2\2\u023f\61\3\2\2\2\u0240\u0241"+
+ "\t\3\2\2\u0241\63\3\2\2\2\u0242\u0246\5l\67\2\u0243\u0245\5\62\32\2\u0244"+
+ "\u0243\3\2\2\2\u0245\u0248\3\2\2\2\u0246\u0244\3\2\2\2\u0246\u0247\3\2"+
+ "\2\2\u0247\u024a\3\2\2\2\u0248\u0246\3\2\2\2\u0249\u024b\7\34\2\2\u024a"+
+ "\u0249\3\2\2\2\u024a\u024b\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u024d\7\35"+
+ "\2\2\u024d\u024f\5\u00fe\u0080\2\u024e\u0250\5j\66\2\u024f\u024e\3\2\2"+
+ "\2\u024f\u0250\3\2\2\2\u0250\u0252\3\2\2\2\u0251\u0253\5\\/\2\u0252\u0251"+
+ "\3\2\2\2\u0252\u0253\3\2\2\2\u0253\u0255\3\2\2\2\u0254\u0256\5\66\34\2"+
+ "\u0255\u0254\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0258\3\2\2\2\u0257\u0259"+
+ "\5^\60\2\u0258\u0257\3\2\2\2\u0258\u0259\3\2\2\2\u0259\u025a\3\2\2\2\u025a"+
+ "\u0260\7\16\2\2\u025b\u025c\5l\67\2\u025c\u025d\58\35\2\u025d\u025f\3"+
+ "\2\2\2\u025e\u025b\3\2\2\2\u025f\u0262\3\2\2\2\u0260\u025e\3\2\2\2\u0260"+
+ "\u0261\3\2\2\2\u0261\u0263\3\2\2\2\u0262\u0260\3\2\2\2\u0263\u0264\7\17"+
+ "\2\2\u0264\u0290\3\2\2\2\u0265\u0267\5l\67\2\u0266\u0268\7\34\2\2\u0267"+
+ "\u0266\3\2\2\2\u0267\u0268\3\2\2\2\u0268\u026c\3\2\2\2\u0269\u026b\5\62"+
+ "\32\2\u026a\u0269\3\2\2\2\u026b\u026e\3\2\2\2\u026c\u026a\3\2\2\2\u026c"+
+ "\u026d\3\2\2\2\u026d\u026f\3\2\2\2\u026e\u026c\3\2\2\2\u026f\u0270\7\35"+
+ "\2\2\u0270\u0272\5\u00fe\u0080\2\u0271\u0273\5j\66\2\u0272\u0271\3\2\2"+
+ "\2\u0272\u0273\3\2\2\2\u0273\u0275\3\2\2\2\u0274\u0276\5\\/\2\u0275\u0274"+
+ "\3\2\2\2\u0275\u0276\3\2\2\2\u0276\u0278\3\2\2\2\u0277\u0279\5\66\34\2"+
+ "\u0278\u0277\3\2\2\2\u0278\u0279\3\2\2\2\u0279\u027b\3\2\2\2\u027a\u027c"+
+ "\5^\60\2\u027b\u027a\3\2\2\2\u027b\u027c\3\2\2\2\u027c\u027d\3\2\2\2\u027d"+
+ "\u0283\7\16\2\2\u027e\u027f\5l\67\2\u027f\u0280\58\35\2\u0280\u0282\3"+
+ "\2\2\2\u0281\u027e\3\2\2\2\u0282\u0285\3\2\2\2\u0283\u0281\3\2\2\2\u0283"+
+ "\u0284\3\2\2\2\u0284\u0286\3\2\2\2\u0285\u0283\3\2\2\2\u0286\u0287\7\17"+
+ "\2\2\u0287\u0290\3\2\2\2\u0288\u028a\5l\67\2\u0289\u028b\7\34\2\2\u028a"+
+ "\u0289\3\2\2\2\u028a\u028b\3\2\2\2\u028b\u028c\3\2\2\2\u028c\u028d\7\35"+
+ "\2\2\u028d\u028e\5`\61\2\u028e\u0290\3\2\2\2\u028f\u0242\3\2\2\2\u028f"+
+ "\u0265\3\2\2\2\u028f\u0288\3\2\2\2\u0290\65\3\2\2\2\u0291\u0292\7\36\2"+
+ "\2\u0292\u0293\5\u016e\u00b8\2\u0293\67\3\2\2\2\u0294\u0295\5<\37\2\u0295"+
+ "\u0296\7\13\2\2\u0296\u029b\3\2\2\2\u0297\u0298\5:\36\2\u0298\u0299\5"+
+ "\30\r\2\u0299\u029b\3\2\2\2\u029a\u0294\3\2\2\2\u029a\u0297\3\2\2\2\u029b"+
+ "9\3\2\2\2\u029c\u029e\5L\'\2\u029d\u029f\5P)\2\u029e\u029d\3\2\2\2\u029e"+
+ "\u029f\3\2\2\2\u029f\u02af\3\2\2\2\u02a0\u02af\5V,\2\u02a1\u02a3\7\37"+
+ "\2\2\u02a2\u02a1\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a4\3\2\2\2\u02a4"+
+ "\u02af\5\22\n\2\u02a5\u02a7\7\37\2\2\u02a6\u02a5\3\2\2\2\u02a6\u02a7\3"+
+ "\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02af\5H%\2\u02a9\u02ab\7\37\2\2\u02aa"+
+ "\u02a9\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac\u02af\5J"+
+ "&\2\u02ad\u02af\5B\"\2\u02ae\u029c\3\2\2\2\u02ae\u02a0\3\2\2\2\u02ae\u02a2"+
+ "\3\2\2\2\u02ae\u02a6\3\2\2\2\u02ae\u02aa\3\2\2\2\u02ae\u02ad\3\2\2\2\u02af"+
+ ";\3\2\2\2\u02b0\u02b3\5Z.\2\u02b1\u02b4\5N(\2\u02b2\u02b4\5P)\2\u02b3"+
+ "\u02b1\3\2\2\2\u02b3\u02b2\3\2\2\2\u02b3\u02b4\3\2\2\2\u02b4\u02eb\3\2"+
+ "\2\2\u02b5\u02b8\5L\'\2\u02b6\u02b9\5N(\2\u02b7\u02b9\5P)\2\u02b8\u02b6"+
+ "\3\2\2\2\u02b8\u02b7\3\2\2\2\u02b8\u02b9\3\2\2\2\u02b9\u02eb\3\2\2\2\u02ba"+
+ "\u02bb\7 \2\2\u02bb\u02eb\5Z.\2\u02bc\u02bd\7 \2\2\u02bd\u02eb\5L\'\2"+
+ "\u02be\u02c0\7 \2\2\u02bf\u02c1\7\37\2\2\u02c0\u02bf\3\2\2\2\u02c0\u02c1"+
+ "\3\2\2\2\u02c1\u02c3\3\2\2\2\u02c2\u02be\3\2\2\2\u02c2\u02c3\3\2\2\2\u02c3"+
+ "\u02c4\3\2\2\2\u02c4\u02eb\5H%\2\u02c5\u02c7\7 \2\2\u02c6\u02c8\7\37\2"+
+ "\2\u02c7\u02c6\3\2\2\2\u02c7\u02c8\3\2\2\2\u02c8\u02ca\3\2\2\2\u02c9\u02c5"+
+ "\3\2\2\2\u02c9\u02ca\3\2\2\2\u02ca\u02cb\3\2\2\2\u02cb\u02eb\5J&\2\u02cc"+
+ "\u02ce\7 \2\2\u02cd\u02cc\3\2\2\2\u02cd\u02ce\3\2\2\2\u02ce\u02cf\3\2"+
+ "\2\2\u02cf\u02eb\5B\"\2\u02d0\u02d2\7 \2\2\u02d1\u02d3\7\37\2\2\u02d2"+
+ "\u02d1\3\2\2\2\u02d2\u02d3\3\2\2\2\u02d3\u02d5\3\2\2\2\u02d4\u02d0\3\2"+
+ "\2\2\u02d4\u02d5\3\2\2\2\u02d5\u02d6\3\2\2\2\u02d6\u02eb\5\22\n\2\u02d7"+
+ "\u02d8\7\37\2\2\u02d8\u02da\t\4\2\2\u02d9\u02db\5\u0168\u00b5\2\u02da"+
+ "\u02d9\3\2\2\2\u02da\u02db\3\2\2\2\u02db\u02dc\3\2\2\2\u02dc\u02eb\5>"+
+ " \2\u02dd\u02df\7\4\2\2\u02de\u02e0\5\u0168\u00b5\2\u02df\u02de\3\2\2"+
+ "\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02eb\5\20\t\2\u02e2"+
+ "\u02e4\t\5\2\2\u02e3\u02e2\3\2\2\2\u02e3\u02e4\3\2\2\2\u02e4\u02e7\3\2"+
+ "\2\2\u02e5\u02e8\7\6\2\2\u02e6\u02e8\5\u0168\u00b5\2\u02e7\u02e5\3\2\2"+
+ "\2\u02e7\u02e6\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e9\u02eb\5\20\t\2\u02ea"+
+ "\u02b0\3\2\2\2\u02ea\u02b5\3\2\2\2\u02ea\u02ba\3\2\2\2\u02ea\u02bc\3\2"+
+ "\2\2\u02ea\u02c2\3\2\2\2\u02ea\u02c9\3\2\2\2\u02ea\u02cd\3\2\2\2\u02ea"+
+ "\u02d4\3\2\2\2\u02ea\u02d7\3\2\2\2\u02ea\u02dd\3\2\2\2\u02ea\u02e3\3\2"+
+ "\2\2\u02eb=\3\2\2\2\u02ec\u02f1\5@!\2\u02ed\u02ee\7\3\2\2\u02ee\u02f0"+
+ "\5@!\2\u02ef\u02ed\3\2\2\2\u02f0\u02f3\3\2\2\2\u02f1\u02ef\3\2\2\2\u02f1"+
+ "\u02f2\3\2\2\2\u02f2?\3\2\2\2\u02f3\u02f1\3\2\2\2\u02f4\u02f5\5\u00fe"+
+ "\u0080\2\u02f5\u02f6\7\7\2\2\u02f6\u02f7\5n8\2\u02f7A\3\2\2\2\u02f8\u02fa"+
+ "\5\26\f\2\u02f9\u02f8\3\2\2\2\u02f9\u02fa\3\2\2\2\u02fa\u02fb\3\2\2\2"+
+ "\u02fb\u02fc\7!\2\2\u02fc\u02fd\5D#\2\u02fd\u02fe\5\34\17\2\u02feC\3\2"+
+ "\2\2\u02ff\u0304\7\"\2\2\u0300\u0304\5F$\2\u0301\u0304\7#\2\2\u0302\u0304"+
+ "\7$\2\2\u0303\u02ff\3\2\2\2\u0303\u0300\3\2\2\2\u0303\u0301\3\2\2\2\u0303"+
+ "\u0302\3\2\2\2\u0304E\3\2\2\2\u0305\u030c\5\u00e2r\2\u0306\u030c\5\u00de"+
+ "p\2\u0307\u030c\5\u00dan\2\u0308\u030c\5\u00ceh\2\u0309\u030c\7%\2\2\u030a"+
+ "\u030c\5\u00d6l\2\u030b\u0305\3\2\2\2\u030b\u0306\3\2\2\2\u030b\u0307"+
+ "\3\2\2\2\u030b\u0308\3\2\2\2\u030b\u0309\3\2\2\2\u030b\u030a\3\2\2\2\u030c"+
+ "G\3\2\2\2\u030d\u030f\5\26\f\2\u030e\u030d\3\2\2\2\u030e\u030f\3\2\2\2"+
+ "\u030f\u0310\3\2\2\2\u0310\u0311\7&\2\2\u0311\u0312\5\u00fe\u0080\2\u0312"+
+ "I\3\2\2\2\u0313\u0315\5\26\f\2\u0314\u0313\3\2\2\2\u0314\u0315\3\2\2\2"+
+ "\u0315\u0316\3\2\2\2\u0316\u0317\7\'\2\2\u0317\u0318\5\u00fe\u0080\2\u0318"+
+ "\u0319\5\34\17\2\u0319K\3\2\2\2\u031a\u031d\5\u00fe\u0080\2\u031b\u031c"+
+ "\7\26\2\2\u031c\u031e\5\u00fe\u0080\2\u031d\u031b\3\2\2\2\u031d\u031e"+
+ "\3\2\2\2\u031e\u031f\3\2\2\2\u031f\u0320\5\34\17\2\u0320M\3\2\2\2\u0321"+
+ "\u0322\7\27\2\2\u0322\u0325\7\25\2\2\u0323\u0324\7\26\2\2\u0324\u0326"+
+ "\5\u00fe\u0080\2\u0325\u0323\3\2\2\2\u0325\u0326\3\2\2\2\u0326\u0327\3"+
+ "\2\2\2\u0327\u0328\5\u00b0Y\2\u0328O\3\2\2\2\u0329\u032a\7\27\2\2\u032a"+
+ "\u032f\5R*\2\u032b\u032c\7\3\2\2\u032c\u032e\5R*\2\u032d\u032b\3\2\2\2"+
+ "\u032e\u0331\3\2\2\2\u032f\u032d\3\2\2\2\u032f\u0330\3\2\2\2\u0330Q\3"+
+ "\2\2\2\u0331\u032f\3\2\2\2\u0332\u0333\7(\2\2\u0333\u033c\5\u00b0Y\2\u0334"+
+ "\u0335\7(\2\2\u0335\u0336\7\26\2\2\u0336\u0337\5\u00fe\u0080\2\u0337\u0338"+
+ "\5\u00b0Y\2\u0338\u033c\3\2\2\2\u0339\u033c\5T+\2\u033a\u033c\5\u0140"+
+ "\u00a1\2\u033b\u0332\3\2\2\2\u033b\u0334\3\2\2\2\u033b\u0339\3\2\2\2\u033b"+
+ "\u033a\3\2\2\2\u033cS\3\2\2\2\u033d\u033e\7\25\2\2\u033e\u0340\7\26\2"+
+ "\2\u033f\u033d\3\2\2\2\u033f\u0340\3\2\2\2\u0340\u0341\3\2\2\2\u0341\u0342"+
+ "\5\u00fe\u0080\2\u0342\u0343\7\7\2\2\u0343\u0347\5\u00c0a\2\u0344\u0346"+
+ "\5\u00b6\\\2\u0345\u0344\3\2\2\2\u0346\u0349\3\2\2\2\u0347\u0345\3\2\2"+
+ "\2\u0347\u0348\3\2\2\2\u0348U\3\2\2\2\u0349\u0347\3\2\2\2\u034a\u034b"+
+ "\7)\2\2\u034b\u034e\5\u00fe\u0080\2\u034c\u034d\7\26\2\2\u034d\u034f\5"+
+ "\u00fe\u0080\2\u034e\u034c\3\2\2\2\u034e\u034f\3\2\2\2\u034f\u0350\3\2"+
+ "\2\2\u0350\u0351\5\34\17\2\u0351W\3\2\2\2\u0352\u0354\7\5\2\2\u0353\u0352"+
+ "\3\2\2\2\u0353\u0354\3\2\2\2\u0354\u0355\3\2\2\2\u0355\u0356\7)\2\2\u0356"+
+ "\u0359\5\u00fe\u0080\2\u0357\u0358\7\26\2\2\u0358\u035a\5\u00fe\u0080"+
+ "\2\u0359\u0357\3\2\2\2\u0359\u035a\3\2\2\2\u035a\u035b\3\2\2\2\u035b\u035c"+
+ "\5\34\17\2\u035c\u035d\7\7\2\2\u035d\u0360\5\u0168\u00b5\2\u035e\u035f"+
+ "\7\26\2\2\u035f\u0361\5\u00fe\u0080\2\u0360\u035e\3\2\2\2\u0360\u0361"+
+ "\3\2\2\2\u0361Y\3\2\2\2\u0362\u0363\7\5\2\2\u0363\u0364\5\u0100\u0081"+
+ "\2\u0364\u0365\5\34\17\2\u0365[\3\2\2\2\u0366\u0367\7*\2\2\u0367\u0368"+
+ "\5\u0168\u00b5\2\u0368]\3\2\2\2\u0369\u036a\7+\2\2\u036a\u036b\5\u016e"+
+ "\u00b8\2\u036b_\3\2\2\2\u036c\u036e\5\u00fe\u0080\2\u036d\u036f\5j\66"+
+ "\2\u036e\u036d\3\2\2\2\u036e\u036f\3\2\2\2\u036f\u0370\3\2\2\2\u0370\u0371"+
+ "\7\7\2\2\u0371\u0372\5b\62\2\u0372\u0373\7\13\2\2\u0373a\3\2\2\2\u0374"+
+ "\u0375\5\u0168\u00b5\2\u0375\u0377\5\66\34\2\u0376\u0378\5^\60\2\u0377"+
+ "\u0376\3\2\2\2\u0377\u0378\3\2\2\2\u0378c\3\2\2\2\u0379\u037a\5l\67\2"+
+ "\u037a\u037b\7,\2\2\u037b\u037c\5\u00fe\u0080\2\u037c\u037d\7\16\2\2\u037d"+
+ "\u0382\5f\64\2\u037e\u037f\7\3\2\2\u037f\u0381\5f\64\2\u0380\u037e\3\2"+
+ "\2\2\u0381\u0384\3\2\2\2\u0382\u0380\3\2\2\2\u0382\u0383\3\2\2\2\u0383"+
+ "\u0386\3\2\2\2\u0384\u0382\3\2\2\2\u0385\u0387\7\3\2\2\u0386\u0385\3\2"+
+ "\2\2\u0386\u0387\3\2\2\2\u0387\u0388\3\2\2\2\u0388\u0389\7\17\2\2\u0389"+
+ "e\3\2\2\2\u038a\u038b\5l\67\2\u038b\u038c\5\u00fe\u0080\2\u038cg\3\2\2"+
+ "\2\u038d\u038e\5l\67\2\u038e\u0391\5\u00fe\u0080\2\u038f\u0390\7*\2\2"+
+ "\u0390\u0392\5\u0168\u00b5\2\u0391\u038f\3\2\2\2\u0391\u0392\3\2\2\2\u0392"+
+ "i\3\2\2\2\u0393\u0394\7-\2\2\u0394\u0399\5h\65\2\u0395\u0396\7\3\2\2\u0396"+
+ "\u0398\5h\65\2\u0397\u0395\3\2\2\2\u0398\u039b\3\2\2\2\u0399\u0397\3\2"+
+ "\2\2\u0399\u039a\3\2\2\2\u039a\u039c\3\2\2\2\u039b\u0399\3\2\2\2\u039c"+
+ "\u039d\7.\2\2\u039dk\3\2\2\2\u039e\u039f\7/\2\2\u039f\u03a2\5\u0100\u0081"+
+ "\2\u03a0\u03a1\7\26\2\2\u03a1\u03a3\5\u00fe\u0080\2\u03a2\u03a0\3\2\2"+
+ "\2\u03a2\u03a3\3\2\2\2\u03a3\u03a5\3\2\2\2\u03a4\u03a6\5\u00b0Y\2\u03a5"+
+ "\u03a4\3\2\2\2\u03a5\u03a6\3\2\2\2\u03a6\u03a8\3\2\2\2\u03a7\u039e\3\2"+
+ "\2\2\u03a8\u03ab\3\2\2\2\u03a9\u03a7\3\2\2\2\u03a9\u03aa\3\2\2\2\u03aa"+
+ "m\3\2\2\2\u03ab\u03a9\3\2\2\2\u03ac\u03ad\5\u00f8}\2\u03ad\u03ae\5\u00bc"+
+ "_\2\u03ae\u03af\5n8\2\u03af\u03b9\3\2\2\2\u03b0\u03b4\5\u00c0a\2\u03b1"+
+ "\u03b3\5\u00b6\\\2\u03b2\u03b1\3\2\2\2\u03b3\u03b6\3\2\2\2\u03b4\u03b2"+
+ "\3\2\2\2\u03b4\u03b5\3\2\2\2\u03b5\u03b9\3\2\2\2\u03b6\u03b4\3\2\2\2\u03b7"+
+ "\u03b9\5\u00a4S\2\u03b8\u03ac\3\2\2\2\u03b8\u03b0\3\2\2\2\u03b8\u03b7"+
+ "\3\2\2\2\u03b9o\3\2\2\2\u03ba\u03bb\5\u00f8}\2\u03bb\u03bc\5\u00bc_\2"+
+ "\u03bc\u03bd\5p9\2\u03bd\u03c1\3\2\2\2\u03be\u03c1\5\u00c0a\2\u03bf\u03c1"+
+ "\5\u00a6T\2\u03c0\u03ba\3\2\2\2\u03c0\u03be\3\2\2\2\u03c0\u03bf\3\2\2"+
+ "\2\u03c1q\3\2\2\2\u03c2\u03c7\5n8\2\u03c3\u03c4\7\3\2\2\u03c4\u03c6\5"+
+ "n8\2\u03c5\u03c3\3\2\2\2\u03c6\u03c9\3\2\2\2\u03c7\u03c5\3\2\2\2\u03c7"+
+ "\u03c8\3\2\2\2\u03c8s\3\2\2\2\u03c9\u03c7\3\2\2\2\u03ca\u03d9\5\u00aa"+
+ "V\2\u03cb\u03cc\7(\2\2\u03cc\u03d9\5\u00fa~\2\u03cd\u03d9\5\u00a8U\2\u03ce"+
+ "\u03d9\5\u0090I\2\u03cf\u03d9\5\u00fe\u0080\2\u03d0\u03d9\5\u00acW\2\u03d1"+
+ "\u03d9\5\u00aeX\2\u03d2\u03d9\5v<\2\u03d3\u03d9\5~@\2\u03d4\u03d5\7\20"+
+ "\2\2\u03d5\u03d6\5n8\2\u03d6\u03d7\7\21\2\2\u03d7\u03d9\3\2\2\2\u03d8"+
+ "\u03ca\3\2\2\2\u03d8\u03cb\3\2\2\2\u03d8\u03cd\3\2\2\2\u03d8\u03ce\3\2"+
+ "\2\2\u03d8\u03cf\3\2\2\2\u03d8\u03d0\3\2\2\2\u03d8\u03d1\3\2\2\2\u03d8"+
+ "\u03d2\3\2\2\2\u03d8\u03d3\3\2\2\2\u03d8\u03d4\3\2\2\2\u03d9u\3\2\2\2"+
+ "\u03da\u03db\7\20\2\2\u03db\u03dc\5x=\2\u03dc\u03dd\7\3\2\2\u03dd\u03e2"+
+ "\5x=\2\u03de\u03df\7\3\2\2\u03df\u03e1\5x=\2\u03e0\u03de\3\2\2\2\u03e1"+
+ "\u03e4\3\2\2\2\u03e2\u03e0\3\2\2\2\u03e2\u03e3\3\2\2\2\u03e3\u03e6\3\2"+
+ "\2\2\u03e4\u03e2\3\2\2\2\u03e5\u03e7\7\3\2\2\u03e6\u03e5\3\2\2\2\u03e6"+
+ "\u03e7\3\2\2\2\u03e7\u03e8\3\2\2\2\u03e8\u03e9\7\21\2\2\u03e9w\3\2\2\2"+
+ "\u03ea\u03eb\5\u00fe\u0080\2\u03eb\u03ec\7\27\2\2\u03ec\u03ee\3\2\2\2"+
+ "\u03ed\u03ea\3\2\2\2\u03ed\u03ee\3\2\2\2\u03ee\u03ef\3\2\2\2\u03ef\u03f0"+
+ "\5n8\2\u03f0y\3\2\2\2\u03f1\u03f2\7\20\2\2\u03f2\u03f3\5|?\2\u03f3\u03f4"+
+ "\7\3\2\2\u03f4\u03f9\5|?\2\u03f5\u03f6\7\3\2\2\u03f6\u03f8\5|?\2\u03f7"+
+ "\u03f5\3\2\2\2\u03f8\u03fb\3\2\2\2\u03f9\u03f7\3\2\2\2\u03f9\u03fa\3\2"+
+ "\2\2\u03fa\u03fd\3\2\2\2\u03fb\u03f9\3\2\2\2\u03fc\u03fe\7\3\2\2\u03fd"+
+ "\u03fc\3\2\2\2\u03fd\u03fe\3\2\2\2\u03fe\u03ff\3\2\2\2\u03ff\u0400\7\21"+
+ "\2\2\u0400{\3\2\2\2\u0401\u0402\5\u00fe\u0080\2\u0402\u0403\7\27\2\2\u0403"+
+ "\u0405\3\2\2\2\u0404\u0401\3\2\2\2\u0404\u0405\3\2\2\2\u0405\u0406\3\2"+
+ "\2\2\u0406\u0407\5\u0168\u00b5\2\u0407}\3\2\2\2\u0408\u0409\7\60\2\2\u0409"+
+ "\u040a\7\20\2\2\u040a\u040b\5n8\2\u040b\u040c\7\21\2\2\u040c\u040d\7\16"+
+ "\2\2\u040d\u0412\5\u0080A\2\u040e\u040f\7\3\2\2\u040f\u0411\5\u0080A\2"+
+ "\u0410\u040e\3\2\2\2\u0411\u0414\3\2\2\2\u0412\u0410\3\2\2\2\u0412\u0413"+
+ "\3\2\2\2\u0413\u0416\3\2\2\2\u0414\u0412\3\2\2\2\u0415\u0417\7\3\2\2\u0416"+
+ "\u0415\3\2\2\2\u0416\u0417\3\2\2\2\u0417\u0418\3\2\2\2\u0418\u0419\7\17"+
+ "\2\2\u0419\177\3\2\2\2\u041a\u041b\5\u0082B\2\u041b\u041c\7\n\2\2\u041c"+
+ "\u041d\5n8\2\u041d\u0081\3\2\2\2\u041e\u0421\5\u0084C\2\u041f\u0420\7"+
+ "\61\2\2\u0420\u0422\5n8\2\u0421\u041f\3\2\2\2\u0421\u0422\3\2\2\2\u0422"+
+ "\u0083\3\2\2\2\u0423\u0429\5\u0086D\2\u0424\u0429\5\u0088E\2\u0425\u0429"+
+ "\5\u008aF\2\u0426\u0429\5\u008cG\2\u0427\u0429\5\u008eH\2\u0428\u0423"+
+ "\3\2\2\2\u0428\u0424\3\2\2\2\u0428\u0425\3\2\2\2\u0428\u0426\3\2\2\2\u0428"+
+ "\u0427\3\2\2\2\u0429\u0085\3\2\2\2\u042a\u042f\5\u0090I\2\u042b\u042f"+
+ "\5\u00fe\u0080\2\u042c\u042f\5\u0100\u0081\2\u042d\u042f\5\u00aeX\2\u042e"+
+ "\u042a\3\2\2\2\u042e\u042b\3\2\2\2\u042e\u042c\3\2\2\2\u042e\u042d\3\2"+
+ "\2\2\u042f\u0087\3\2\2\2\u0430\u0431\5\u0168\u00b5\2\u0431\u0432\5\u00fe"+
+ "\u0080\2\u0432\u0089\3\2\2\2\u0433\u0434\7\62\2\2\u0434\u008b\3\2\2\2"+
+ "\u0435\u043b\7\6\2\2\u0436\u0438\7\4\2\2\u0437\u0439\5\u0168\u00b5\2\u0438"+
+ "\u0437\3\2\2\2\u0438\u0439\3\2\2\2\u0439\u043b\3\2\2\2\u043a\u0435\3\2"+
+ "\2\2\u043a\u0436\3\2\2\2\u043b\u043c\3\2\2\2\u043c\u043d\5\u00fe\u0080"+
+ "\2\u043d\u008d\3\2\2\2\u043e\u043f\7\20\2\2\u043f\u0440\5\u0084C\2\u0440"+
+ "\u0441\7\21\2\2\u0441\u008f\3\2\2\2\u0442\u044a\5\u0092J\2\u0443\u044a"+
+ "\5\u0096L\2\u0444\u044a\5\u0094K\2\u0445\u044a\5\u0098M\2\u0446\u044a"+
+ "\5\u009cO\2\u0447\u044a\5\u00a0Q\2\u0448\u044a\5\u009eP\2\u0449\u0442"+
+ "\3\2\2\2\u0449\u0443\3\2\2\2\u0449\u0444\3\2\2\2\u0449\u0445\3\2\2\2\u0449"+
+ "\u0446\3\2\2\2\u0449\u0447\3\2\2\2\u0449\u0448\3\2\2\2\u044a\u0091\3\2"+
+ "\2\2\u044b\u044c\7\63\2\2\u044c\u0093\3\2\2\2\u044d\u044e\t\6\2\2\u044e"+
+ "\u0095\3\2\2\2\u044f\u0450\t\7\2\2\u0450\u0097\3\2\2\2\u0451\u0453\t\b"+
+ "\2\2\u0452\u0451\3\2\2\2\u0453\u0454\3\2\2\2\u0454\u0452\3\2\2\2\u0454"+
+ "\u0455\3\2\2\2\u0455\u0099\3\2\2\2\u0456\u0457\7\66\2\2\u0457\u045d\5"+
+ "\u00fe\u0080\2\u0458\u0459\7\67\2\2\u0459\u045a\5n8\2\u045a\u045b\7\17"+
+ "\2\2\u045b\u045d\3\2\2\2\u045c\u0456\3\2\2\2\u045c\u0458\3\2\2\2\u045d"+
+ "\u009b\3\2\2\2\u045e\u0468\78\2\2\u045f\u0469\5D#\2\u0460\u0465\5\u00fe"+
+ "\u0080\2\u0461\u0462\7\3\2\2\u0462\u0464\5\u00fe\u0080\2\u0463\u0461\3"+
+ "\2\2\2\u0464\u0467\3\2\2\2\u0465\u0463\3\2\2\2\u0465\u0466\3\2\2\2\u0466"+
+ "\u0469\3\2\2\2\u0467\u0465\3\2\2\2\u0468\u045f\3\2\2\2\u0468\u0460\3\2"+
+ "\2\2\u0469\u009d\3\2\2\2\u046a\u046c\7\5\2\2\u046b\u046a\3\2\2\2\u046b"+
+ "\u046c\3\2\2\2\u046c\u046e\3\2\2\2\u046d\u046f\5\u016c\u00b7\2\u046e\u046d"+
+ "\3\2\2\2\u046e\u046f\3\2\2\2\u046f\u0470\3\2\2\2\u0470\u0475\7\22\2\2"+
+ "\u0471\u0473\5r:\2\u0472\u0474\7\3\2\2\u0473\u0472\3\2\2\2\u0473\u0474"+
+ "\3\2\2\2\u0474\u0476\3\2\2\2\u0475\u0471\3\2\2\2\u0475\u0476\3\2\2\2\u0476"+
+ "\u0477\3\2\2\2\u0477\u0478\7\23\2\2\u0478\u009f\3\2\2\2\u0479\u047b\7"+
+ "\5\2\2\u047a\u0479\3\2\2\2\u047a\u047b\3\2\2\2\u047b\u047d\3\2\2\2\u047c"+
+ "\u047e\5\u016c\u00b7\2\u047d\u047c\3\2\2\2\u047d\u047e\3\2\2\2\u047e\u047f"+
+ "\3\2\2\2\u047f\u048b\7\16\2\2\u0480\u0485\5\u00a2R\2\u0481\u0482\7\3\2"+
+ "\2\u0482\u0484\5\u00a2R\2\u0483\u0481\3\2\2\2\u0484\u0487\3\2\2\2\u0485"+
+ "\u0483\3\2\2\2\u0485\u0486\3\2\2\2\u0486\u0489\3\2\2\2\u0487\u0485\3\2"+
+ "\2\2\u0488\u048a\7\3\2\2\u0489\u0488\3\2\2\2\u0489\u048a\3\2\2\2\u048a"+
+ "\u048c\3\2\2\2\u048b\u0480\3\2\2\2\u048b\u048c\3\2\2\2\u048c\u048d\3\2"+
+ "\2\2\u048d\u048e\7\17\2\2\u048e\u00a1\3\2\2\2\u048f\u0490\5n8\2\u0490"+
+ "\u0491\7\27\2\2\u0491\u0492\5n8\2\u0492\u00a3\3\2\2\2\u0493\u0494\79\2"+
+ "\2\u0494\u0495\5n8\2\u0495\u00a5\3\2\2\2\u0496\u0497\79\2\2\u0497\u0498"+
+ "\5p9\2\u0498\u00a7\3\2\2\2\u0499\u049a\5\24\13\2\u049a\u049b\5\30\r\2"+
+ "\u049b\u00a9\3\2\2\2\u049c\u049d\7\25\2\2\u049d\u00ab\3\2\2\2\u049e\u049f"+
+ "\7:\2\2\u049f\u04a2\5\u0168\u00b5\2\u04a0\u04a1\7\26\2\2\u04a1\u04a3\5"+
+ "\u00fe\u0080\2\u04a2\u04a0\3\2\2\2\u04a2\u04a3\3\2\2\2\u04a3\u04a4\3\2"+
+ "\2\2\u04a4\u04a5\5\u00b0Y\2\u04a5\u00ad\3\2\2\2\u04a6\u04a7\7\5\2\2\u04a7"+
+ "\u04aa\5\u0168\u00b5\2\u04a8\u04a9\7\26\2\2\u04a9\u04ab\5\u00fe\u0080"+
+ "\2\u04aa\u04a8\3\2\2\2\u04aa\u04ab\3\2\2\2\u04ab\u04ac\3\2\2\2\u04ac\u04ad"+
+ "\5\u00b0Y\2\u04ad\u00af\3\2\2\2\u04ae\u04b3\7\20\2\2\u04af\u04b1\5\u00b2"+
+ "Z\2\u04b0\u04b2\7\3\2\2\u04b1\u04b0\3\2\2\2\u04b1\u04b2\3\2\2\2\u04b2"+
+ "\u04b4\3\2\2\2\u04b3\u04af\3\2\2\2\u04b3\u04b4\3\2\2\2\u04b4\u04b5\3\2"+
+ "\2\2\u04b5\u04b6\7\21\2\2\u04b6\u00b1\3\2\2\2\u04b7\u04bc\5\u00b4[\2\u04b8"+
+ "\u04b9\7\3\2\2\u04b9\u04bb\5\u00b4[\2\u04ba\u04b8\3\2\2\2\u04bb\u04be"+
+ "\3\2\2\2\u04bc\u04ba\3\2\2\2\u04bc\u04bd\3\2\2\2\u04bd\u04c8\3\2\2\2\u04be"+
+ "\u04bc\3\2\2\2\u04bf\u04c4\5r:\2\u04c0\u04c1\7\3\2\2\u04c1\u04c3\5\u00b4"+
+ "[\2\u04c2\u04c0\3\2\2\2\u04c3\u04c6\3\2\2\2\u04c4\u04c2\3\2\2\2\u04c4"+
+ "\u04c5\3\2\2\2\u04c5\u04c8\3\2\2\2\u04c6\u04c4\3\2\2\2\u04c7\u04b7\3\2"+
+ "\2\2\u04c7\u04bf\3\2\2\2\u04c8\u00b3\3\2\2\2\u04c9\u04ca\5\u0134\u009b"+
+ "\2\u04ca\u04cb\5n8\2\u04cb\u00b5\3\2\2\2\u04cc\u04cd\7;\2\2\u04cd\u04d1"+
+ "\5\u00b8]\2\u04ce\u04d0\5\u00ba^\2\u04cf\u04ce\3\2\2\2\u04d0\u04d3\3\2"+
+ "\2\2\u04d1\u04cf\3\2\2\2\u04d1\u04d2\3\2\2\2\u04d2\u04dd\3\2\2\2\u04d3"+
+ "\u04d1\3\2\2\2\u04d4\u04d8\5\u00fc\177\2\u04d5\u04d7\5\u00ba^\2\u04d6"+
+ "\u04d5\3\2\2\2\u04d7\u04da\3\2\2\2\u04d8\u04d6\3\2\2\2\u04d8\u04d9\3\2"+
+ "\2\2\u04d9\u04dc\3\2\2\2\u04da\u04d8\3\2\2\2\u04db\u04d4\3\2\2\2\u04dc"+
+ "\u04df\3\2\2\2\u04dd\u04db\3\2\2\2\u04dd\u04de\3\2\2\2\u04de\u04e3\3\2"+
+ "\2\2\u04df\u04dd\3\2\2\2\u04e0\u04e1\5\u00bc_\2\u04e1\u04e2\5p9\2\u04e2"+
+ "\u04e4\3\2\2\2\u04e3\u04e0\3\2\2\2\u04e3\u04e4\3\2\2\2\u04e4\u00b7\3\2"+
+ "\2\2\u04e5\u04e6\7\22\2\2\u04e6\u04e7\5n8\2\u04e7\u04e8\7\23\2\2\u04e8"+
+ "\u04eb\3\2\2\2\u04e9\u04eb\5\u00fe\u0080\2\u04ea\u04e5\3\2\2\2\u04ea\u04e9"+
+ "\3\2\2\2\u04eb\u00b9\3\2\2\2\u04ec\u04ee\5\u016c\u00b7\2\u04ed\u04ec\3"+
+ "\2\2\2\u04ed\u04ee\3\2\2\2\u04ee\u04ef\3\2\2\2\u04ef\u04f0\5\u00b0Y\2"+
+ "\u04f0\u00bb\3\2\2\2\u04f1\u04f4\7\7\2\2\u04f2\u04f4\5\u00be`\2\u04f3"+
+ "\u04f1\3\2\2\2\u04f3\u04f2\3\2\2\2\u04f4\u00bd\3\2\2\2\u04f5\u04f6\t\t"+
+ "\2\2\u04f6\u00bf\3\2\2\2\u04f7\u04fd\5\u00c2b\2\u04f8\u04f9\7H\2\2\u04f9"+
+ "\u04fa\5p9\2\u04fa\u04fb\7\27\2\2\u04fb\u04fc\5p9\2\u04fc\u04fe\3\2\2"+
+ "\2\u04fd\u04f8\3\2\2\2\u04fd\u04fe\3\2\2\2\u04fe\u00c1\3\2\2\2\u04ff\u0504"+
+ "\5\u00c4c\2\u0500\u0501\7I\2\2\u0501\u0503\5\u00c4c\2\u0502\u0500\3\2"+
+ "\2\2\u0503\u0506\3\2\2\2\u0504\u0502\3\2\2\2\u0504\u0505\3\2\2\2\u0505"+
+ "\u00c3\3\2\2\2\u0506\u0504\3\2\2\2\u0507\u050c\5\u00c6d\2\u0508\u0509"+
+ "\7J\2\2\u0509\u050b\5\u00c6d\2\u050a\u0508\3\2\2\2\u050b\u050e\3\2\2\2"+
+ "\u050c\u050a\3\2\2\2\u050c\u050d\3\2\2\2\u050d\u00c5\3\2\2\2\u050e\u050c"+
+ "\3\2\2\2\u050f\u0514\5\u00c8e\2\u0510\u0511\7K\2\2\u0511\u0513\5\u00c8"+
+ "e\2\u0512\u0510\3\2\2\2\u0513\u0516\3\2\2\2\u0514\u0512\3\2\2\2\u0514"+
+ "\u0515\3\2\2\2\u0515\u00c7\3\2\2\2\u0516\u0514\3\2\2\2\u0517\u051b\5\u00cc"+
+ "g\2\u0518\u0519\5\u00caf\2\u0519\u051a\5\u00ccg\2\u051a\u051c\3\2\2\2"+
+ "\u051b\u0518\3\2\2\2\u051b\u051c\3\2\2\2\u051c\u0522\3\2\2\2\u051d\u051e"+
+ "\7(\2\2\u051e\u051f\5\u00caf\2\u051f\u0520\5\u00ccg\2\u0520\u0522\3\2"+
+ "\2\2\u0521\u0517\3\2\2\2\u0521\u051d\3\2\2\2\u0522\u00c9\3\2\2\2\u0523"+
+ "\u0524\t\n\2\2\u0524\u00cb\3\2\2\2\u0525\u052b\5\u00d0i\2\u0526\u052c"+
+ "\5\u0102\u0082\2\u0527\u052c\5\u0106\u0084\2\u0528\u0529\5\u00ceh\2\u0529"+
+ "\u052a\5\u00d0i\2\u052a\u052c\3\2\2\2\u052b\u0526\3\2\2\2\u052b\u0527"+
+ "\3\2\2\2\u052b\u0528\3\2\2\2\u052b\u052c\3\2\2\2\u052c\u0532\3\2\2\2\u052d"+
+ "\u052e\7(\2\2\u052e\u052f\5\u00ceh\2\u052f\u0530\5\u00d0i\2\u0530\u0532"+
+ "\3\2\2\2\u0531\u0525\3\2\2\2\u0531\u052d\3\2\2\2\u0532\u00cd\3\2\2\2\u0533"+
+ "\u0534\t\13\2\2\u0534\u00cf\3\2\2\2\u0535\u053a\5\u00d2j\2\u0536\u0537"+
+ "\7O\2\2\u0537\u0539\5\u00d2j\2\u0538\u0536\3\2\2\2\u0539\u053c\3\2\2\2"+
+ "\u053a\u0538\3\2\2\2\u053a\u053b\3\2\2\2\u053b\u0545\3\2\2\2\u053c\u053a"+
+ "\3\2\2\2\u053d\u0540\7(\2\2\u053e\u053f\7O\2\2\u053f\u0541\5\u00d0i\2"+
+ "\u0540\u053e\3\2\2\2\u0541\u0542\3\2\2\2\u0542\u0540\3\2\2\2\u0542\u0543"+
+ "\3\2\2\2\u0543\u0545\3\2\2\2\u0544\u0535\3\2\2\2\u0544\u053d\3\2\2\2\u0545"+
+ "\u00d1\3\2\2\2\u0546\u054b\5\u00d4k\2\u0547\u0548\7P\2\2\u0548\u054a\5"+
+ "\u00d4k\2\u0549\u0547\3\2\2\2\u054a\u054d\3\2\2\2\u054b\u0549\3\2\2\2"+
+ "\u054b\u054c\3\2\2\2\u054c\u0556\3\2\2\2\u054d\u054b\3\2\2\2\u054e\u0551"+
+ "\7(\2\2\u054f\u0550\7P\2\2\u0550\u0552\5\u00d4k\2\u0551\u054f\3\2\2\2"+
+ "\u0552\u0553\3\2\2\2\u0553\u0551\3\2\2\2\u0553\u0554\3\2\2\2\u0554\u0556"+
+ "\3\2\2\2\u0555\u0546\3\2\2\2\u0555\u054e\3\2\2\2\u0556\u00d3\3\2\2\2\u0557"+
+ "\u055c\5\u00d8m\2\u0558\u0559\7Q\2\2\u0559\u055b\5\u00d8m\2\u055a\u0558"+
+ "\3\2\2\2\u055b\u055e\3\2\2\2\u055c\u055a\3\2\2\2\u055c\u055d\3\2\2\2\u055d"+
+ "\u0567\3\2\2\2\u055e\u055c\3\2\2\2\u055f\u0562\7(\2\2\u0560\u0561\7Q\2"+
+ "\2\u0561\u0563\5\u00d8m\2\u0562\u0560\3\2\2\2\u0563\u0564\3\2\2\2\u0564"+
+ "\u0562\3\2\2\2\u0564\u0565\3\2\2\2\u0565\u0567\3\2\2\2\u0566\u0557\3\2"+
+ "\2\2\u0566\u055f\3\2\2\2\u0567\u00d5\3\2\2\2\u0568\u0569\t\f\2\2\u0569"+
+ "\u00d7\3\2\2\2\u056a\u0570\5\u00dco\2\u056b\u056c\5\u00dan\2\u056c\u056d"+
+ "\5\u00dco\2\u056d\u056f\3\2\2\2\u056e\u056b\3\2\2\2\u056f\u0572\3\2\2"+
+ "\2\u0570\u056e\3\2\2\2\u0570\u0571\3\2\2\2\u0571\u057c\3\2\2\2\u0572\u0570"+
+ "\3\2\2\2\u0573\u0577\7(\2\2\u0574\u0575\5\u00dan\2\u0575\u0576\5\u00dc"+
+ "o\2\u0576\u0578\3\2\2\2\u0577\u0574\3\2\2\2\u0578\u0579\3\2\2\2\u0579"+
+ "\u0577\3\2\2\2\u0579\u057a\3\2\2\2\u057a\u057c\3\2\2\2\u057b\u056a\3\2"+
+ "\2\2\u057b\u0573\3\2\2\2\u057c\u00d9\3\2\2\2\u057d\u057e\t\r\2\2\u057e"+
+ "\u00db\3\2\2\2\u057f\u0585\5\u00e0q\2\u0580\u0581\5\u00dep\2\u0581\u0582"+
+ "\5\u00e0q\2\u0582\u0584\3\2\2\2\u0583\u0580\3\2\2\2\u0584\u0587\3\2\2"+
+ "\2\u0585\u0583\3\2\2\2\u0585\u0586\3\2\2\2\u0586\u0591\3\2\2\2\u0587\u0585"+
+ "\3\2\2\2\u0588\u058c\7(\2\2\u0589\u058a\5\u00dep\2\u058a\u058b\5\u00e0"+
+ "q\2\u058b\u058d\3\2\2\2\u058c\u0589\3\2\2\2\u058d\u058e\3\2\2\2\u058e"+
+ "\u058c\3\2\2\2\u058e\u058f\3\2\2\2\u058f\u0591\3\2\2\2\u0590\u057f\3\2"+
+ "\2\2\u0590\u0588\3\2\2\2\u0591\u00dd\3\2\2\2\u0592\u0593\t\16\2\2\u0593"+
+ "\u00df\3\2\2\2\u0594\u059a\5\u00e4s\2\u0595\u0596\5\u00e2r\2\u0596\u0597"+
+ "\5\u00e4s\2\u0597\u0599\3\2\2\2\u0598\u0595\3\2\2\2\u0599\u059c\3\2\2"+
+ "\2\u059a\u0598\3\2\2\2\u059a\u059b\3\2\2\2\u059b\u05a6\3\2\2\2\u059c\u059a"+
+ "\3\2\2\2\u059d\u05a1\7(\2\2\u059e\u059f\5\u00e2r\2\u059f\u05a0\5\u00e4"+
+ "s\2\u05a0\u05a2\3\2\2\2\u05a1\u059e\3\2\2\2\u05a2\u05a3\3\2\2\2\u05a3"+
+ "\u05a1\3\2\2\2\u05a3\u05a4\3\2\2\2\u05a4\u05a6\3\2\2\2\u05a5\u0594\3\2"+
+ "\2\2\u05a5\u059d\3\2\2\2\u05a6\u00e1\3\2\2\2\u05a7\u05a8\t\17\2\2\u05a8"+
+ "\u00e3\3\2\2\2\u05a9\u05aa\5\u00e6t\2\u05aa\u05ab\5\u00e4s\2\u05ab\u05b8"+
+ "\3\2\2\2\u05ac\u05b8\5\u00eex\2\u05ad\u05b8\5\u00f0y\2\u05ae\u05b1\5\u00e8"+
+ "u\2\u05af\u05b1\5\u00ecw\2\u05b0\u05ae\3\2\2\2\u05b0\u05af\3\2\2\2\u05b1"+
+ "\u05b2\3\2\2\2\u05b2\u05b3\7(\2\2\u05b3\u05b8\3\2\2\2\u05b4\u05b5\5\u00f6"+
+ "|\2\u05b5\u05b6\5\u00f8}\2\u05b6\u05b8\3\2\2\2\u05b7\u05a9\3\2\2\2\u05b7"+
+ "\u05ac\3\2\2\2\u05b7\u05ad\3\2\2\2\u05b7\u05b0\3\2\2\2\u05b7\u05b4\3\2"+
+ "\2\2\u05b8\u00e5\3\2\2\2\u05b9\u05bd\5\u00e8u\2\u05ba\u05bd\5\u00eav\2"+
+ "\u05bb\u05bd\5\u00ecw\2\u05bc\u05b9\3\2\2\2\u05bc\u05ba\3\2\2\2\u05bc"+
+ "\u05bb\3\2\2\2\u05bd\u00e7\3\2\2\2\u05be\u05bf\7V\2\2\u05bf\u00e9\3\2"+
+ "\2\2\u05c0\u05c1\7[\2\2\u05c1\u00eb\3\2\2\2\u05c2\u05c3\7\"\2\2\u05c3"+
+ "\u00ed\3\2\2\2\u05c4\u05c5\7\\\2\2\u05c5\u05c6\5\u00e4s\2\u05c6\u00ef"+
+ "\3\2\2\2\u05c7\u05c8\5\u00f8}\2\u05c8\u05c9\5\u00f2z\2\u05c9\u05d2\3\2"+
+ "\2\2\u05ca\u05ce\5t;\2\u05cb\u05cd\5\u00f4{\2\u05cc\u05cb\3\2\2\2\u05cd"+
+ "\u05d0\3\2\2\2\u05ce\u05cc\3\2\2\2\u05ce\u05cf\3\2\2\2\u05cf\u05d2\3\2"+
+ "\2\2\u05d0\u05ce\3\2\2\2\u05d1\u05c7\3\2\2\2\u05d1\u05ca\3\2\2\2\u05d2"+
+ "\u00f1\3\2\2\2\u05d3\u05d4\5\u00f6|\2\u05d4\u00f3\3\2\2\2\u05d5\u05d8"+
+ "\5\u00fc\177\2\u05d6\u05d8\5\u00ba^\2\u05d7\u05d5\3\2\2\2\u05d7\u05d6"+
+ "\3\2\2\2\u05d8\u00f5\3\2\2\2\u05d9\u05da\t\20\2\2\u05da\u00f7\3\2\2\2"+
+ "\u05db\u05e3\5t;\2\u05dc\u05de\5\u00ba^\2\u05dd\u05dc\3\2\2\2\u05de\u05e1"+
+ "\3\2\2\2\u05df\u05dd\3\2\2\2\u05df\u05e0\3\2\2\2\u05e0\u05e2\3\2\2\2\u05e1"+
+ "\u05df\3\2\2\2\u05e2\u05e4\5\u00fc\177\2\u05e3\u05df\3\2\2\2\u05e3\u05e4"+
+ "\3\2\2\2\u05e4\u05ea\3\2\2\2\u05e5\u05e6\7(\2\2\u05e6\u05e7\5\u00fa~\2"+
+ "\u05e7\u05e8\5\u00fe\u0080\2\u05e8\u05ea\3\2\2\2\u05e9\u05db\3\2\2\2\u05e9"+
+ "\u05e5\3\2\2\2\u05ea\u00f9\3\2\2\2\u05eb\u05ec\7\22\2\2\u05ec\u05ed\5"+
+ "n8\2\u05ed\u05ee\7\23\2\2\u05ee\u05f2\3\2\2\2\u05ef\u05f0\7\26\2\2\u05f0"+
+ "\u05f2\5\u00fe\u0080\2\u05f1\u05eb\3\2\2\2\u05f1\u05ef\3\2\2\2\u05f2\u00fb"+
+ "\3\2\2\2\u05f3\u05f7\5\u00fa~\2\u05f4\u05f5\7_\2\2\u05f5\u05f7\5\u00fe"+
+ "\u0080\2\u05f6\u05f3\3\2\2\2\u05f6\u05f4\3\2\2\2\u05f7\u00fd\3\2\2\2\u05f8"+
+ "\u05f9\7\u0084\2\2\u05f9\u00ff\3\2\2\2\u05fa\u05fd\5\u00fe\u0080\2\u05fb"+
+ "\u05fc\7\26\2\2\u05fc\u05fe\5\u00fe\u0080\2\u05fd\u05fb\3\2\2\2\u05fd"+
+ "\u05fe\3\2\2\2\u05fe\u0101\3\2\2\2\u05ff\u0600\5\u0104\u0083\2\u0600\u0601"+
+ "\5\u0168\u00b5\2\u0601\u0103\3\2\2\2\u0602\u0604\7`\2\2\u0603\u0605\7"+
+ "[\2\2\u0604\u0603\3\2\2\2\u0604\u0605\3\2\2\2\u0605\u0105\3\2\2\2\u0606"+
+ "\u0607\5\u0108\u0085\2\u0607\u0608\5\u0168\u00b5\2\u0608\u0107\3\2\2\2"+
+ "\u0609\u060a\7a\2\2\u060a\u0109\3\2\2\2\u060b\u060d\5\u010c\u0087\2\u060c"+
+ "\u060b\3\2\2\2\u060d\u0610\3\2\2\2\u060e\u060c\3\2\2\2\u060e\u060f\3\2"+
+ "\2\2\u060f\u010b\3\2\2\2\u0610\u060e\3\2\2\2\u0611\u0613\5\u0134\u009b"+
+ "\2\u0612\u0611\3\2\2\2\u0613\u0616\3\2\2\2\u0614\u0612\3\2\2\2\u0614\u0615"+
+ "\3\2\2\2\u0615\u0617\3\2\2\2\u0616\u0614\3\2\2\2\u0617\u0618\5\u010e\u0088"+
+ "\2\u0618\u010d\3\2\2\2\u0619\u062b\5\32\16\2\u061a\u062b\5\u0112\u008a"+
+ "\2\u061b\u062b\5\u0118\u008d\2\u061c\u062b\5\u011e\u0090\2\u061d\u062b"+
+ "\5\u0120\u0091\2\u061e\u062b\5\u0122\u0092\2\u061f\u062b\5\u0116\u008c"+
+ "\2\u0620\u062b\5\u0128\u0095\2\u0621\u062b\5\u012a\u0096\2\u0622\u062b"+
+ "\5\u0136\u009c\2\u0623\u062b\5\u0138\u009d\2\u0624\u062b\5\u0132\u009a"+
+ "\2\u0625\u062b\5\u013a\u009e\2\u0626\u062b\5\u013c\u009f\2\u0627\u062b"+
+ "\5\u0110\u0089\2\u0628\u062b\5\u013e\u00a0\2\u0629\u062b\5\u0114\u008b"+
+ "\2\u062a\u0619\3\2\2\2\u062a\u061a\3\2\2\2\u062a\u061b\3\2\2\2\u062a\u061c"+
+ "\3\2\2\2\u062a\u061d\3\2\2\2\u062a\u061e\3\2\2\2\u062a\u061f\3\2\2\2\u062a"+
+ "\u0620\3\2\2\2\u062a\u0621\3\2\2\2\u062a\u0622\3\2\2\2\u062a\u0623\3\2"+
+ "\2\2\u062a\u0624\3\2\2\2\u062a\u0625\3\2\2\2\u062a\u0626\3\2\2\2\u062a"+
+ "\u0627\3\2\2\2\u062a\u0628\3\2\2\2\u062a\u0629\3\2\2\2\u062b\u010f\3\2"+
+ "\2\2\u062c\u062e\5n8\2\u062d\u062c\3\2\2\2\u062d\u062e\3\2\2\2\u062e\u062f"+
+ "\3\2\2\2\u062f\u0630\7\13\2\2\u0630\u0111\3\2\2\2\u0631\u0632\5\f\7\2"+
+ "\u0632\u0633\7\13\2\2\u0633\u0113\3\2\2\2\u0634\u0635\5\22\n\2\u0635\u0636"+
+ "\5\30\r\2\u0636\u0115\3\2\2\2\u0637\u0638\7b\2\2\u0638\u0639\7\20\2\2"+
+ "\u0639\u063a\5n8\2\u063a\u063b\7\21\2\2\u063b\u063e\5\u010c\u0087\2\u063c"+
+ "\u063d\7c\2\2\u063d\u063f\5\u010c\u0087\2\u063e\u063c\3\2\2\2\u063e\u063f"+
+ "\3\2\2\2\u063f\u0650\3\2\2\2\u0640\u0641\7b\2\2\u0641\u0642\7\20\2\2\u0642"+
+ "\u0643\5n8\2\u0643\u0644\7d\2\2\u0644\u0647\5\u0084C\2\u0645\u0646\7\61"+
+ "\2\2\u0646\u0648\5n8\2\u0647\u0645\3\2\2\2\u0647\u0648\3\2\2\2\u0648\u0649"+
+ "\3\2\2\2\u0649\u064a\7\21\2\2\u064a\u064d\5\u010c\u0087\2\u064b\u064c"+
+ "\7c\2\2\u064c\u064e\5\u010c\u0087\2\u064d\u064b\3\2\2\2\u064d\u064e\3"+
+ "\2\2\2\u064e\u0650\3\2\2\2\u064f\u0637\3\2\2\2\u064f\u0640\3\2\2\2\u0650"+
+ "\u0117\3\2\2\2\u0651\u0653\7\\\2\2\u0652\u0651\3\2\2\2\u0652\u0653\3\2"+
+ "\2\2\u0653\u0654\3\2\2\2\u0654\u0655\7e\2\2\u0655\u0656\7\20\2\2\u0656"+
+ "\u0657\5\u011a\u008e\2\u0657\u0658\7\21\2\2\u0658\u0659\5\u010c\u0087"+
+ "\2\u0659\u0119\3\2\2\2\u065a\u065c\5\u011c\u008f\2\u065b\u065d\5n8\2\u065c"+
+ "\u065b\3\2\2\2\u065c\u065d\3\2\2\2\u065d\u065e\3\2\2\2\u065e\u0660\7\13"+
+ "\2\2\u065f\u0661\5r:\2\u0660\u065f\3\2\2\2\u0660\u0661\3\2\2\2\u0661\u066b"+
+ "\3\2\2\2\u0662\u0663\5\6\4\2\u0663\u0664\7f\2\2\u0664\u0665\5n8\2\u0665"+
+ "\u066b\3\2\2\2\u0666\u0667\5\u00fe\u0080\2\u0667\u0668\7f\2\2\u0668\u0669"+
+ "\5n8\2\u0669\u066b\3\2\2\2\u066a\u065a\3\2\2\2\u066a\u0662\3\2\2\2\u066a"+
+ "\u0666\3\2\2\2\u066b\u011b\3\2\2\2\u066c\u0672\5\u0112\u008a\2\u066d\u066f"+
+ "\5n8\2\u066e\u066d\3\2\2\2\u066e\u066f\3\2\2\2\u066f\u0670\3\2\2\2\u0670"+
+ "\u0672\7\13\2\2\u0671\u066c\3\2\2\2\u0671\u066e\3\2\2\2\u0672\u011d\3"+
+ "\2\2\2\u0673\u0674\7g\2\2\u0674\u0675\7\20\2\2\u0675\u0676\5n8\2\u0676"+
+ "\u0677\7\21\2\2\u0677\u0678\5\u010c\u0087\2\u0678\u011f\3\2\2\2\u0679"+
+ "\u067a\7h\2\2\u067a\u067b\5\u010c\u0087\2\u067b\u067c\7g\2\2\u067c\u067d"+
+ "\7\20\2\2\u067d\u067e\5n8\2\u067e\u067f\7\21\2\2\u067f\u0680\7\13\2\2"+
+ "\u0680\u0121\3\2\2\2\u0681\u0682\7\60\2\2\u0682\u0683\7\20\2\2\u0683\u0684"+
+ "\5n8\2\u0684\u0685\7\21\2\2\u0685\u0689\7\16\2\2\u0686\u0688\5\u0124\u0093"+
+ "\2\u0687\u0686\3\2\2\2\u0688\u068b\3\2\2\2\u0689\u0687\3\2\2\2\u0689\u068a"+
+ "\3\2\2\2\u068a\u068d\3\2\2\2\u068b\u0689\3\2\2\2\u068c\u068e\5\u0126\u0094"+
+ "\2\u068d\u068c\3\2\2\2\u068d\u068e\3\2\2\2\u068e\u068f\3\2\2\2\u068f\u0690"+
+ "\7\17\2\2\u0690\u0123\3\2\2\2\u0691\u0693\5\u0134\u009b\2\u0692\u0691"+
+ "\3\2\2\2\u0693\u0696\3\2\2\2\u0694\u0692\3\2\2\2\u0694\u0695\3\2\2\2\u0695"+
+ "\u0697\3\2\2\2\u0696\u0694\3\2\2\2\u0697\u0698\7d\2\2\u0698\u069b\5n8"+
+ "\2\u0699\u069a\7\61\2\2\u069a\u069c\5n8\2\u069b\u0699\3\2\2\2\u069b\u069c"+
+ "\3\2\2\2\u069c\u069d\3\2\2\2\u069d\u069e\7\27\2\2\u069e\u069f\5\u010a"+
+ "\u0086\2\u069f\u0125\3\2\2\2\u06a0\u06a2\5\u0134\u009b\2\u06a1\u06a0\3"+
+ "\2\2\2\u06a2\u06a5\3\2\2\2\u06a3\u06a1\3\2\2\2\u06a3\u06a4\3\2\2\2\u06a4"+
+ "\u06a6\3\2\2\2\u06a5\u06a3\3\2\2\2\u06a6\u06a7\7i\2\2\u06a7\u06a8\7\27"+
+ "\2\2\u06a8\u06a9\5\u010a\u0086\2\u06a9\u0127\3\2\2\2\u06aa\u06ab\7j\2"+
+ "\2\u06ab\u06ac\7\13\2\2\u06ac\u0129\3\2\2\2\u06ad\u06ae\7k\2\2\u06ae\u06b8"+
+ "\5\32\16\2\u06af\u06b1\5\u012c\u0097\2\u06b0\u06af\3\2\2\2\u06b1\u06b2"+
+ "\3\2\2\2\u06b2\u06b0\3\2\2\2\u06b2\u06b3\3\2\2\2\u06b3\u06b5\3\2\2\2\u06b4"+
+ "\u06b6\5\u0130\u0099\2\u06b5\u06b4\3\2\2\2\u06b5\u06b6\3\2\2\2\u06b6\u06b9"+
+ "\3\2\2\2\u06b7\u06b9\5\u0130\u0099\2\u06b8\u06b0\3\2\2\2\u06b8\u06b7\3"+
+ "\2\2\2\u06b9\u012b\3\2\2\2\u06ba\u06bb\5\u012e\u0098\2\u06bb\u06bc\5\32"+
+ "\16\2\u06bc\u06c5\3\2\2\2\u06bd\u06be\7l\2\2\u06be\u06c0\5\u0168\u00b5"+
+ "\2\u06bf\u06c1\5\u012e\u0098\2\u06c0\u06bf\3\2\2\2\u06c0\u06c1\3\2\2\2"+
+ "\u06c1\u06c2\3\2\2\2\u06c2\u06c3\5\32\16\2\u06c3\u06c5\3\2\2\2\u06c4\u06ba"+
+ "\3\2\2\2\u06c4\u06bd\3\2\2\2\u06c5\u012d\3\2\2\2\u06c6\u06c7\7m\2\2\u06c7"+
+ "\u06c8\7\20\2\2\u06c8\u06cb\5\u00fe\u0080\2\u06c9\u06ca\7\3\2\2\u06ca"+
+ "\u06cc\5\u00fe\u0080\2\u06cb\u06c9\3\2\2\2\u06cb\u06cc\3\2\2\2\u06cc\u06cd"+
+ "\3\2\2\2\u06cd\u06ce\7\21\2\2\u06ce\u012f\3\2\2\2\u06cf\u06d0\7n\2\2\u06d0"+
+ "\u06d1\5\32\16\2\u06d1\u0131\3\2\2\2\u06d2\u06d4\7o\2\2\u06d3\u06d5\5"+
+ "n8\2\u06d4\u06d3\3\2\2\2\u06d4\u06d5\3\2\2\2\u06d5\u06d6\3\2\2\2\u06d6"+
+ "\u06d7\7\13\2\2\u06d7\u0133\3\2\2\2\u06d8\u06d9\5\u00fe\u0080\2\u06d9"+
+ "\u06da\7\27\2\2\u06da\u0135\3\2\2\2\u06db\u06dd\7p\2\2\u06dc\u06de\5\u00fe"+
+ "\u0080\2\u06dd\u06dc\3\2\2\2\u06dd\u06de\3\2\2\2\u06de\u06df\3\2\2\2\u06df"+
+ "\u06e0\7\13\2\2\u06e0\u0137\3\2\2\2\u06e1\u06e3\7q\2\2\u06e2\u06e4\5\u00fe"+
+ "\u0080\2\u06e3\u06e2\3\2\2\2\u06e3\u06e4\3\2\2\2\u06e4\u06e5\3\2\2\2\u06e5"+
+ "\u06e6\7\13\2\2\u06e6\u0139\3\2\2\2\u06e7\u06e8\7r\2\2\u06e8\u06e9\5n"+
+ "8\2\u06e9\u06ea\7\13\2\2\u06ea\u013b\3\2\2\2\u06eb\u06ec\7s\2\2\u06ec"+
+ "\u06ed\5n8\2\u06ed\u06ee\7\13\2\2\u06ee\u013d\3\2\2\2\u06ef\u06f0\5\u0140"+
+ "\u00a1\2\u06f0\u06f1\7\13\2\2\u06f1\u013f\3\2\2\2\u06f2\u06f3\7t\2\2\u06f3"+
+ "\u06f4\7\20\2\2\u06f4\u06f7\5n8\2\u06f5\u06f6\7\3\2\2\u06f6\u06f8\5n8"+
+ "\2\u06f7\u06f5\3\2\2\2\u06f7\u06f8\3\2\2\2\u06f8\u06fa\3\2\2\2\u06f9\u06fb"+
+ "\7\3\2\2\u06fa\u06f9\3\2\2\2\u06fa\u06fb\3\2\2\2\u06fb\u06fc\3\2\2\2\u06fc"+
+ "\u06fd\7\21\2\2\u06fd\u0141\3\2\2\2\u06fe\u0730\5\64\33\2\u06ff\u0730"+
+ "\5d\63\2\u0700\u0730\5\u0170\u00b9\2\u0701\u0703\7 \2\2\u0702\u0701\3"+
+ "\2\2\2\u0702\u0703\3\2\2\2\u0703\u0704\3\2\2\2\u0704\u0705\5\22\n\2\u0705"+
+ "\u0706\7\13\2\2\u0706\u0730\3\2\2\2\u0707\u0709\7 \2\2\u0708\u0707\3\2"+
+ "\2\2\u0708\u0709\3\2\2\2\u0709\u070a\3\2\2\2\u070a\u070b\5H%\2\u070b\u070c"+
+ "\7\13\2\2\u070c\u0730\3\2\2\2\u070d\u070f\7 \2\2\u070e\u070d\3\2\2\2\u070e"+
+ "\u070f\3\2\2\2\u070f\u0710\3\2\2\2\u0710\u0711\5J&\2\u0711\u0712\7\13"+
+ "\2\2\u0712\u0730\3\2\2\2\u0713\u0714\5\22\n\2\u0714\u0715\5\30\r\2\u0715"+
+ "\u0730\3\2\2\2\u0716\u0718\5\26\f\2\u0717\u0716\3\2\2\2\u0717\u0718\3"+
+ "\2\2\2\u0718\u0719\3\2\2\2\u0719\u071a\7&\2\2\u071a\u071b\5\u00fe\u0080"+
+ "\2\u071b\u071c\5\30\r\2\u071c\u0730\3\2\2\2\u071d\u071f\5\26\f\2\u071e"+
+ "\u071d\3\2\2\2\u071e\u071f\3\2\2\2\u071f\u0720\3\2\2\2\u0720\u0721\7\'"+
+ "\2\2\u0721\u0722\5\u00fe\u0080\2\u0722\u0723\5\34\17\2\u0723\u0724\5\30"+
+ "\r\2\u0724\u0730\3\2\2\2\u0725\u0727\t\4\2\2\u0726\u0728\5\u0168\u00b5"+
+ "\2\u0727\u0726\3\2\2\2\u0727\u0728\3\2\2\2\u0728\u0729\3\2\2\2\u0729\u072a"+
+ "\5> \2\u072a\u072b\7\13\2\2\u072b\u0730\3\2\2\2\u072c\u072d\5\4\3\2\u072d"+
+ "\u072e\7\13\2\2\u072e\u0730\3\2\2\2\u072f\u06fe\3\2\2\2\u072f\u06ff\3"+
+ "\2\2\2\u072f\u0700\3\2\2\2\u072f\u0702\3\2\2\2\u072f\u0708\3\2\2\2\u072f"+
+ "\u070e\3\2\2\2\u072f\u0713\3\2\2\2\u072f\u0717\3\2\2\2\u072f\u071e\3\2"+
+ "\2\2\u072f\u0725\3\2\2\2\u072f\u072c\3\2\2\2\u0730\u0143\3\2\2\2\u0731"+
+ "\u0732\t\21\2\2\u0732\u0145\3\2\2\2\u0733\u0735\5\u0148\u00a5\2\u0734"+
+ "\u0733\3\2\2\2\u0734\u0735\3\2\2\2\u0735\u0737\3\2\2\2\u0736\u0738\5\u014a"+
+ "\u00a6\2\u0737\u0736\3\2\2\2\u0737\u0738\3\2\2\2\u0738\u073c\3\2\2\2\u0739"+
+ "\u073b\5\u014c\u00a7\2\u073a\u0739\3\2\2\2\u073b\u073e\3\2\2\2\u073c\u073a"+
+ "\3\2\2\2\u073c\u073d\3\2\2\2\u073d\u0742\3\2\2\2\u073e\u073c\3\2\2\2\u073f"+
+ "\u0741\5\u015a\u00ae\2\u0740\u073f\3\2\2\2\u0741\u0744\3\2\2\2\u0742\u0740"+
+ "\3\2\2\2\u0742\u0743\3\2\2\2\u0743\u0748\3\2\2\2\u0744\u0742\3\2\2\2\u0745"+
+ "\u0747\5\u0142\u00a2\2\u0746\u0745\3\2\2\2\u0747\u074a\3\2\2\2\u0748\u0746"+
+ "\3\2\2\2\u0748\u0749\3\2\2\2\u0749\u0147\3\2\2\2\u074a\u0748\3\2\2\2\u074b"+
+ "\u074f\7u\2\2\u074c\u074e\n\22\2\2\u074d\u074c\3\2\2\2\u074e\u0751\3\2"+
+ "\2\2\u074f\u074d\3\2\2\2\u074f\u0750\3\2\2\2\u0750\u0752\3\2\2\2\u0751"+
+ "\u074f\3\2\2\2\u0752\u0753\7\u0083\2\2\u0753\u0149\3\2\2\2\u0754\u0755"+
+ "\5l\67\2\u0755\u0756\7v\2\2\u0756\u0757\5\u014e\u00a8\2\u0757\u0758\7"+
+ "\13\2\2\u0758\u014b\3\2\2\2\u0759\u075c\5\u0150\u00a9\2\u075a\u075c\5"+
+ "\u0158\u00ad\2\u075b\u0759\3\2\2\2\u075b\u075a\3\2\2\2\u075c\u014d\3\2"+
+ "\2\2\u075d\u0762\5\u00fe\u0080\2\u075e\u075f\7\3\2\2\u075f\u0761\5\u00fe"+
+ "\u0080\2\u0760\u075e\3\2\2\2\u0761\u0764\3\2\2\2\u0762\u0760\3\2\2\2\u0762"+
+ "\u0763\3\2\2\2\u0763\u014f\3\2\2\2\u0764\u0762\3\2\2\2\u0765\u0766\5l"+
+ "\67\2\u0766\u0767\5\u0152\u00aa\2\u0767\u0151\3\2\2\2\u0768\u0769\7w\2"+
+ "\2\u0769\u076c\5\u0162\u00b2\2\u076a\u076b\7a\2\2\u076b\u076d\5\u00fe"+
+ "\u0080\2\u076c\u076a\3\2\2\2\u076c\u076d\3\2\2\2\u076d\u0771\3\2\2\2\u076e"+
+ "\u0770\5\u0154\u00ab\2\u076f\u076e\3\2\2\2\u0770\u0773\3\2\2\2\u0771\u076f"+
+ "\3\2\2\2\u0771\u0772\3\2\2\2\u0772\u0774\3\2\2\2\u0773\u0771\3\2\2\2\u0774"+
+ "\u0775\7\13\2\2\u0775\u0153\3\2\2\2\u0776\u0777\7x\2\2\u0777\u077b\5\u0156"+
+ "\u00ac\2\u0778\u0779\7y\2\2\u0779\u077b\5\u0156\u00ac\2\u077a\u0776\3"+
+ "\2\2\2\u077a\u0778\3\2\2\2\u077b\u0155\3\2\2\2\u077c\u0781\5\u00fe\u0080"+
+ "\2\u077d\u077e\7\3\2\2\u077e\u0780\5\u00fe\u0080\2\u077f\u077d\3\2\2\2"+
+ "\u0780\u0783\3\2\2\2\u0781\u077f\3\2\2\2\u0781\u0782\3\2\2\2\u0782\u0157"+
+ "\3\2\2\2\u0783\u0781\3\2\2\2\u0784\u0785\5l\67\2\u0785\u0786\7z\2\2\u0786"+
+ "\u078a\5\u0162\u00b2\2\u0787\u0789\5\u0154\u00ab\2\u0788\u0787\3\2\2\2"+
+ "\u0789\u078c\3\2\2\2\u078a\u0788\3\2\2\2\u078a\u078b\3\2\2\2\u078b\u078d"+
+ "\3\2\2\2\u078c\u078a\3\2\2\2\u078d\u078e\7\13\2\2\u078e\u0159\3\2\2\2"+
+ "\u078f\u0790\5l\67\2\u0790\u0791\7{\2\2\u0791\u0792\5\u0160\u00b1\2\u0792"+
+ "\u0793\7\13\2\2\u0793\u015b\3\2\2\2\u0794\u0795\5l\67\2\u0795\u0796\7"+
+ "{\2\2\u0796\u0797\7|\2\2\u0797\u079c\5\u00fe\u0080\2\u0798\u0799\7\26"+
+ "\2\2\u0799\u079b\5\u00fe\u0080\2\u079a\u0798\3\2\2\2\u079b\u079e\3\2\2"+
+ "\2\u079c\u079a\3\2\2\2\u079c\u079d\3\2\2\2\u079d\u079f\3\2\2\2\u079e\u079c"+
+ "\3\2\2\2\u079f\u07a0\7\13\2\2\u07a0\u015d\3\2\2\2\u07a1\u07a5\5\u015c"+
+ "\u00af\2\u07a2\u07a4\5\u0142\u00a2\2\u07a3\u07a2\3\2\2\2\u07a4\u07a7\3"+
+ "\2\2\2\u07a5\u07a3\3\2\2\2\u07a5\u07a6\3\2\2\2\u07a6\u07a8\3\2\2\2\u07a7"+
+ "\u07a5\3\2\2\2\u07a8\u07a9\7\2\2\3\u07a9\u015f\3\2\2\2\u07aa\u07ab\5\u0098"+
+ "M\2\u07ab\u0161\3\2\2\2\u07ac\u07b0\5\u0160\u00b1\2\u07ad\u07af\5\u0164"+
+ "\u00b3\2\u07ae\u07ad\3\2\2\2\u07af\u07b2\3\2\2\2\u07b0\u07ae\3\2\2\2\u07b0"+
+ "\u07b1\3\2\2\2\u07b1\u0163\3\2\2\2\u07b2\u07b0\3\2\2\2\u07b3\u07b4\7b"+
+ "\2\2\u07b4\u07b5\7\20\2\2\u07b5\u07b6\5\u0166\u00b4\2\u07b6\u07b7\7\21"+
+ "\2\2\u07b7\u07b8\5\u0160\u00b1\2\u07b8\u0165\3\2\2\2\u07b9\u07bc\5\u014e"+
+ "\u00a8\2\u07ba\u07bb\7%\2\2\u07bb\u07bd\5\u0098M\2\u07bc\u07ba\3\2\2\2"+
+ "\u07bc\u07bd\3\2\2\2\u07bd\u0167\3\2\2\2\u07be\u07c0\5\u016a\u00b6\2\u07bf"+
+ "\u07c1\5\u016c\u00b7\2\u07c0\u07bf\3\2\2\2\u07c0\u07c1\3\2\2\2\u07c1\u07c3"+
+ "\3\2\2\2\u07c2\u07c4\7H\2\2\u07c3\u07c2\3\2\2\2\u07c3\u07c4\3\2\2\2\u07c4"+
+ "\u07ca\3\2\2\2\u07c5\u07c7\5z>\2\u07c6\u07c8\7H\2\2\u07c7\u07c6\3\2\2"+
+ "\2\u07c7\u07c8\3\2\2\2\u07c8\u07ca\3\2\2\2\u07c9\u07be\3\2\2\2\u07c9\u07c5"+
+ "\3\2\2\2\u07ca\u0169\3\2\2\2\u07cb\u07ce\5\u0100\u0081\2\u07cc\u07ce\7"+
+ "\b\2\2\u07cd\u07cb\3\2\2\2\u07cd\u07cc\3\2\2\2\u07ce\u016b\3\2\2\2\u07cf"+
+ "\u07d0\7-\2\2\u07d0\u07d1\5\u016e\u00b8\2\u07d1\u07d2\7.\2\2\u07d2\u016d"+
+ "\3\2\2\2\u07d3\u07d8\5\u0168\u00b5\2\u07d4\u07d5\7\3\2\2\u07d5\u07d7\5"+
+ "\u0168\u00b5\2\u07d6\u07d4\3\2\2\2\u07d7\u07da\3\2\2\2\u07d8\u07d6\3\2"+
+ "\2\2\u07d8\u07d9\3\2\2\2\u07d9\u016f\3\2\2\2\u07da\u07d8\3\2\2\2\u07db"+
+ "\u07dc\5l\67\2\u07dc\u07dd\7}\2\2\u07dd\u07de\5\u0172\u00ba\2\u07de\u0171"+
+ "\3\2\2\2\u07df\u07e0\5\u0174\u00bb\2\u07e0\u0173\3\2\2\2\u07e1\u07e3\5"+
+ "\u0176\u00bc\2\u07e2\u07e4\5j\66\2\u07e3\u07e2\3\2\2\2\u07e3\u07e4\3\2"+
+ "\2\2\u07e4\u07e5\3\2\2\2\u07e5\u07e6\5\34\17\2\u07e6\u07e7\7\13\2\2\u07e7"+
+ "\u0175\3\2\2\2\u07e8\u07ea\5\26\f\2\u07e9\u07e8\3\2\2\2\u07e9\u07ea\3"+
+ "\2\2\2\u07ea\u07eb\3\2\2\2\u07eb\u07ec\5\u00fe\u0080\2\u07ec\u0177\3\2"+
+ "\2\2\u00f5\u017a\u0181\u018a\u018e\u0191\u0195\u019a\u01a0\u01a6\u01ad"+
+ "\u01b2\u01b8\u01be\u01c1\u01c8\u01cb\u01db\u01e3\u01ea\u01ef\u01f7\u01fb"+
+ "\u0205\u0209\u0210\u0214\u0217\u021f\u0223\u0227\u022d\u0232\u0237\u023c"+
+ "\u023e\u0246\u024a\u024f\u0252\u0255\u0258\u0260\u0267\u026c\u0272\u0275"+
+ "\u0278\u027b\u0283\u028a\u028f\u029a\u029e\u02a2\u02a6\u02aa\u02ae\u02b3"+
+ "\u02b8\u02c0\u02c2\u02c7\u02c9\u02cd\u02d2\u02d4\u02da\u02df\u02e3\u02e7"+
+ "\u02ea\u02f1\u02f9\u0303\u030b\u030e\u0314\u031d\u0325\u032f\u033b\u033f"+
+ "\u0347\u034e\u0353\u0359\u0360\u036e\u0377\u0382\u0386\u0391\u0399\u03a2"+
+ "\u03a5\u03a9\u03b4\u03b8\u03c0\u03c7\u03d8\u03e2\u03e6\u03ed\u03f9\u03fd"+
+ "\u0404\u0412\u0416\u0421\u0428\u042e\u0438\u043a\u0449\u0454\u045c\u0465"+
+ "\u0468\u046b\u046e\u0473\u0475\u047a\u047d\u0485\u0489\u048b\u04a2\u04aa"+
+ "\u04b1\u04b3\u04bc\u04c4\u04c7\u04d1\u04d8\u04dd\u04e3\u04ea\u04ed\u04f3"+
+ "\u04fd\u0504\u050c\u0514\u051b\u0521\u052b\u0531\u053a\u0542\u0544\u054b"+
+ "\u0553\u0555\u055c\u0564\u0566\u0570\u0579\u057b\u0585\u058e\u0590\u059a"+
+ "\u05a3\u05a5\u05b0\u05b7\u05bc\u05ce\u05d1\u05d7\u05df\u05e3\u05e9\u05f1"+
+ "\u05f6\u05fd\u0604\u060e\u0614\u062a\u062d\u063e\u0647\u064d\u064f\u0652"+
+ "\u065c\u0660\u066a\u066e\u0671\u0689\u068d\u0694\u069b\u06a3\u06b2\u06b5"+
+ "\u06b8\u06c0\u06c4\u06cb\u06d4\u06dd\u06e3\u06f7\u06fa\u0702\u0708\u070e"+
+ "\u0717\u071e\u0727\u072f\u0734\u0737\u073c\u0742\u0748\u074f\u075b\u0762"+
+ "\u076c\u0771\u077a\u0781\u078a\u079c\u07a5\u07b0\u07bc\u07c0\u07c3\u07c7"+
+ "\u07c9\u07cd\u07d8\u07e3\u07e9";
public static final ATN _ATN =
new ATNDeserializer().deserialize(_serializedATN.toCharArray());
static {
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Visitor.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Visitor.java
index 83b35d0..ba3e12b 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Visitor.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/antlr/generated/Dart2Visitor.java
@@ -1,21 +1,5 @@
-/*
- * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
- * Copyright © 2020 inside|app (contact@insideapp.fr)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-package fr.insideapp.sonarqube.dart.lang.antlr.generated;// Generated from Dart2.g4 by ANTLR 4.8
+// Generated from dart-lang/src/main/antlr/Dart2.g4 by ANTLR 4.8
+package fr.insideapp.sonarqube.dart.lang.antlr.generated;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
/**
@@ -170,6 +154,12 @@ public interface Dart2Visitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitDefaultNamedParameter(Dart2Parser.DefaultNamedParameterContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#classModifier}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitClassModifier(Dart2Parser.ClassModifierContext ctx);
/**
* Visit a parse tree produced by {@link Dart2Parser#classDefinition}.
* @param ctx the parse tree
@@ -368,6 +358,84 @@ public interface Dart2Visitor extends ParseTreeVisitor {
* @return the visitor result
*/
T visitPrimary(Dart2Parser.PrimaryContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#recordLiteral}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRecordLiteral(Dart2Parser.RecordLiteralContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#recordField}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRecordField(Dart2Parser.RecordFieldContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#recordType}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRecordType(Dart2Parser.RecordTypeContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#recordTypeField}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitRecordTypeField(Dart2Parser.RecordTypeFieldContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#switchExpression}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSwitchExpression(Dart2Parser.SwitchExpressionContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#switchExpressionCase}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitSwitchExpressionCase(Dart2Parser.SwitchExpressionCaseContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#guardedPattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitGuardedPattern(Dart2Parser.GuardedPatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#pattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitPattern(Dart2Parser.PatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#constantPattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitConstantPattern(Dart2Parser.ConstantPatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#typeTestPattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitTypeTestPattern(Dart2Parser.TypeTestPatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#wildcardPattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitWildcardPattern(Dart2Parser.WildcardPatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#variablePattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitVariablePattern(Dart2Parser.VariablePatternContext ctx);
+ /**
+ * Visit a parse tree produced by {@link Dart2Parser#parenthesizedPattern}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitParenthesizedPattern(Dart2Parser.ParenthesizedPatternContext ctx);
/**
* Visit a parse tree produced by {@link Dart2Parser#literal}.
* @param ctx the parse tree
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java
index ed045d6..ffcfb92 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/DartProfile.java
@@ -19,6 +19,7 @@
import fr.insideapp.sonarqube.dart.lang.Dart;
import fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer.DartAnalyzerRulesDefinition;
+import fr.insideapp.sonarqube.dart.lang.issues.statemanagement.FlutterStateManagementRulesDefinition;
import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,23 +39,29 @@ public void define(BuiltInQualityProfilesDefinition.Context context) {
RepositoryRuleParser repositoryRuleParser = new RepositoryRuleParser();
// dartanalyzer rules
- try {
- List rules = repositoryRuleParser.parse(DartAnalyzerRulesDefinition.RULES_FILE);
- for (RepositoryRule r: rules) {
+ loadRulesIntoProfile(repositoryRuleParser, profile, DartAnalyzerRulesDefinition.RULES_FILE, DartAnalyzerRulesDefinition.REPOSITORY_KEY);
+
+ // state management rules
+ loadRulesIntoProfile(repositoryRuleParser, profile, FlutterStateManagementRulesDefinition.RULES_FILE, FlutterStateManagementRulesDefinition.REPOSITORY_KEY);
+
+ profile.done();
+ }
- if ( r.name == null || r.severity == null || r.type == null || r.description == null) {
- LOGGER.warn(String.format("Cannot add %s rule to dartanalyzer profile, rule data is missing in rules.json", r.key));
+ private void loadRulesIntoProfile(RepositoryRuleParser parser, NewBuiltInQualityProfile profile, String rulesFile, String repositoryKey) {
+ try {
+ List rules = parser.parse(rulesFile);
+ for (RepositoryRule r : rules) {
+ if (r.name == null || r.severity == null || r.type == null || r.description == null) {
+ LOGGER.warn("Cannot add {} rule to {} profile, rule data is missing in rules.json", r.key, repositoryKey);
} else {
if (r.active) {
- NewBuiltInActiveRule rule = profile.activateRule("dartanalyzer", r.key);
+ NewBuiltInActiveRule rule = profile.activateRule(repositoryKey, r.key);
rule.overrideSeverity(r.severity.name());
}
}
}
} catch (IOException e) {
- LOGGER.error("Failed to load dartanalyzer rules", e);
+ LOGGER.error("Failed to load {} rules", repositoryKey, e);
}
-
- profile.done();
}
}
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/AnalyzerExecutable.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/AnalyzerExecutable.java
index 9957338..11361aa 100644
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/AnalyzerExecutable.java
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/AnalyzerExecutable.java
@@ -43,7 +43,6 @@ public abstract class AnalyzerExecutable {
public enum Mode {
DETECT,
MANUAL,
- DARTANALYZER,
DART,
FLUTTER;
@@ -179,8 +178,6 @@ public static AnalyzerExecutable create(SensorContext sensorContext, PubSpec pub
return new ManualAnalyzerExecutable(sensorContext, outputMode);
case DART:
return new DartAnalyzerExecutable(sensorContext, outputMode);
- case DARTANALYZER:
- return new DartanalyzerAnalyzerExecutable(sensorContext, outputMode);
case FLUTTER:
return new FlutterAnalyzerExecutable(sensorContext, outputMode);
default:
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/DartanalyzerAnalyzerExecutable.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/DartanalyzerAnalyzerExecutable.java
deleted file mode 100644
index 13f1266..0000000
--- a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/dartanalyzer/executable/DartanalyzerAnalyzerExecutable.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
- * Copyright © 2020 inside|app (contact@insideapp.fr)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-package fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer.executable;
-
-import fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer.AnalyzerOutput;
-import org.sonar.api.batch.sensor.SensorContext;
-
-class DartanalyzerAnalyzerExecutable extends AnalyzerExecutable {
-
- protected DartanalyzerAnalyzerExecutable(SensorContext sensorContext, AnalyzerOutput.Mode mode) {
- super(sensorContext, mode);
- }
-
- @Override
- public String getCommand() {
- return System.getProperty("os.name").toUpperCase().contains("WINDOWS")
- ? "dartanalyzer.bat"
- : "dartanalyzer";
- }
-
- @Override
- public String[] getArgs() {
- if (outputMode.equals(AnalyzerOutput.Mode.MACHINE)) {
- return new String[]{"--format=machine", "."};
- }
- return new String[]{"."};
- }
-
- @Override
- protected Mode getMode() {
- return Mode.DARTANALYZER;
- }
-}
diff --git a/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/statemanagement/FlutterStateManagementRulesDefinition.java b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/statemanagement/FlutterStateManagementRulesDefinition.java
new file mode 100644
index 0000000..bde63f6
--- /dev/null
+++ b/dart-lang/src/main/java/fr/insideapp/sonarqube/dart/lang/issues/statemanagement/FlutterStateManagementRulesDefinition.java
@@ -0,0 +1,87 @@
+/*
+ * SonarQube Flutter Plugin - Enables analysis of Dart and Flutter projects into SonarQube.
+ * Copyright © 2020 inside|app (contact@insideapp.fr)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+package fr.insideapp.sonarqube.dart.lang.issues.statemanagement;
+
+import fr.insideapp.sonarqube.dart.lang.Dart;
+import fr.insideapp.sonarqube.dart.lang.issues.RepositoryRule;
+import fr.insideapp.sonarqube.dart.lang.issues.RepositoryRuleParser;
+import org.sonar.api.issue.impact.Severity;
+import org.sonar.api.issue.impact.SoftwareQuality;
+import org.sonar.api.rules.CleanCodeAttribute;
+import org.sonar.api.rules.RuleType;
+import org.sonar.api.server.rule.RulesDefinition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+
+public class FlutterStateManagementRulesDefinition implements RulesDefinition {
+ private static final Logger LOGGER = LoggerFactory.getLogger(FlutterStateManagementRulesDefinition.class);
+ public static final String REPOSITORY_KEY = "flutter-state-management";
+ public static final String REPOSITORY_NAME = "Flutter State Management";
+ public static final String RULES_FILE = "/flutter-state-management/rules.json";
+
+ @Override
+ public void define(Context context) {
+ NewRepository repository = context.createRepository(REPOSITORY_KEY, Dart.KEY).setName(REPOSITORY_NAME);
+ RepositoryRuleParser repositoryRuleParser = new RepositoryRuleParser();
+
+ try {
+ List rules = repositoryRuleParser.parse(RULES_FILE);
+ for (RepositoryRule rule : rules) {
+ if (rule.name == null || rule.severity == null || rule.type == null || rule.description == null) {
+ LOGGER.warn("Cannot load {} rule from {}, rule data is missing", rule.key, REPOSITORY_KEY);
+ } else {
+ RulesDefinition.NewRule newRule = repository.createRule(rule.key)
+ .setName(rule.name)
+ .setSeverity(rule.severity.name())
+ .setType(RuleType.valueOf(rule.type.name()))
+ .setActivatedByDefault(rule.active)
+ .setHtmlDescription(rule.description);
+ newRule.setDebtRemediationFunction(newRule.debtRemediationFunctions().constantPerIssue(rule.debt));
+
+ if (rule.cleanCodeAttribute != null) {
+ try {
+ newRule.setCleanCodeAttribute(CleanCodeAttribute.valueOf(rule.cleanCodeAttribute));
+ } catch (IllegalArgumentException e) {
+ LOGGER.warn("Unknown CleanCodeAttribute '{}' for rule {}", rule.cleanCodeAttribute, rule.key);
+ }
+ }
+
+ if (rule.impacts != null && !rule.impacts.isEmpty()) {
+ for (RepositoryRule.Impact impact : rule.impacts) {
+ try {
+ newRule.addDefaultImpact(
+ SoftwareQuality.valueOf(impact.softwareQuality),
+ Severity.valueOf(impact.severity)
+ );
+ } catch (IllegalArgumentException e) {
+ LOGGER.warn("Invalid impact for rule {}: {} / {}", rule.key, impact.softwareQuality, impact.severity);
+ }
+ }
+ }
+ }
+ }
+ } catch (IOException e) {
+ LOGGER.error("Failed to load state management rules", e);
+ }
+
+ repository.done();
+ }
+}
diff --git a/dart-lang/src/main/resources/dart.keywords b/dart-lang/src/main/resources/dart.keywords
index 5e51f8c..8838c4e 100644
--- a/dart-lang/src/main/resources/dart.keywords
+++ b/dart-lang/src/main/resources/dart.keywords
@@ -1,4 +1,5 @@
abstract
+base
as
assert
async
@@ -50,6 +51,7 @@ patch
required
rethrow
return
+sealed
set
show
source
@@ -64,6 +66,7 @@ try
typedef
var
void
+when
while
with
yield
\ No newline at end of file
diff --git a/dart-lang/src/main/resources/dartanalyzer/analysis_options.yaml b/dart-lang/src/main/resources/dartanalyzer/analysis_options.yaml
index fd6dd3e..015208b 100644
--- a/dart-lang/src/main/resources/dartanalyzer/analysis_options.yaml
+++ b/dart-lang/src/main/resources/dartanalyzer/analysis_options.yaml
@@ -3,13 +3,12 @@ linter:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- - always_require_non_null_named_parameters
+ - avoid_futureor_void
- always_specify_types
- always_use_package_imports
- annotate_overrides
- annotate_redeclares
- avoid_annotating_with_dynamic
- - avoid_as
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
- avoid_catching_errors
@@ -34,8 +33,6 @@ linter:
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- - avoid_returning_null
- - avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
- avoid_setters_without_getters
@@ -76,7 +73,6 @@ linter:
- empty_catches
- empty_constructor_bodies
- empty_statements
- - enable_null_safety
- eol_at_end_of_file
- exhaustive_cases
- file_names
@@ -87,7 +83,6 @@ linter:
- implicit_reopen
- invalid_case_patterns
- invalid_runtime_check_with_js_interop_types
- - invariant_booleans
- iterable_contains_unrelated_type
- join_return_with_assignment
- leading_newlines_in_multiline_strings
@@ -120,14 +115,13 @@ linter:
- one_member_abstracts
- only_throw_errors
- overridden_fields
- - package_api_docs
+ - omit_obvious_property_types
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_asserts_with_message
- - prefer_bool_in_asserts
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
@@ -137,7 +131,6 @@ linter:
- prefer_constructors_over_static_methods
- prefer_contains
- prefer_double_quotes
- - prefer_equal_for_default_values
- prefer_expression_function_bodies
- prefer_final_fields
- prefer_final_in_for_each
@@ -168,8 +161,10 @@ linter:
- provide_deprecation_message
- public_member_api_docs
- recursive_getters
+ - remove_deprecations_in_breaking_versions
- require_trailing_commas
- secure_pubspec_urls
+ - simplify_variable_pattern
- sized_box_for_whitespace
- sized_box_shrink_expand
- slash_for_doc_comments
@@ -177,7 +172,10 @@ linter:
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- - super_goes_last
+ - specify_nonobvious_local_variable_types
+ - specify_nonobvious_property_types
+ - strict_top_level_inference
+ - switch_on_type
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
@@ -213,7 +211,12 @@ linter:
- unnecessary_to_list_in_spreads
- unreachable_from_main
- unrelated_type_equality_checks
- - unsafe_html
+ - unnecessary_async
+ - unnecessary_ignore
+ - unnecessary_unawaited
+ - unnecessary_underscores
+ - unsafe_variance
+ - use_null_aware_elements
- use_build_context_synchronously
- use_colored_box
- use_decorated_box
@@ -244,7 +247,6 @@ linter:
- conflicting_constructor_and_static_member
- const_map_key_not_primitive_equality
- dead_null_aware_expression
- - deprecated_new_in_comment_reference
- duplicate_constructor
- duplicate_field_name
- duplicate_ignore
@@ -277,7 +279,6 @@ linter:
- return_in_generator
- subtype_of_disallowed_type
- super_formal_parameter_without_associated_positional
- - type_check_with_null
- type_parameter_supertype_of_its_bound
- undefined_constructor_in_initializer
- undefined_enum_constructor
diff --git a/dart-lang/src/main/resources/dartanalyzer/rules.json b/dart-lang/src/main/resources/dartanalyzer/rules.json
index 437651a..a52c359 100644
--- a/dart-lang/src/main/resources/dartanalyzer/rules.json
+++ b/dart-lang/src/main/resources/dartanalyzer/rules.json
@@ -858,7 +858,7 @@
"key": "lines_longer_than_80_chars",
"name": "Lines longer than 80 chars",
"severity": "MINOR",
- "description": "\n AVOID \n lines longer than 80 characters\n
\nReadability studies show that long lines of text are harder to read because your eye has to travel farther when moving to the beginning of the next line. This is why newspapers and magazines use multiple columns of text.
\n\n If you really find yourself wanting lines longer than 80 characters, our experience is that your code is likely too verbose and could be a little more compact. The main offender is usually \n VeryLongCamelCaseClassNames\n . Ask yourself, \u201cDoes each word in that type name tell me something critical or prevent a name collision?\u201d If not, consider omitting it.\n
\nVeryLongCamelCaseClassNames\n\n Note that \n dart format\n does 99% of this for you, but the last 1% is you. It does not split long string literals to fit in 80 columns, so you have to do that manually.\n
\ndart format\nWe make an exception for URIs and file paths. When those occur in comments or strings (usually in imports and exports), they may remain on a single line even if they go over the line limit. This makes it easier to search source files for a given path.
\n ",
+ "description": "\n AVOID \n lines longer than 80 characters\n
\nReadability studies show that long lines of text are harder to read because your eye has to travel farther when moving to the beginning of the next line. This is why newspapers and magazines use multiple columns of text.
\n\n If you really find yourself wanting lines longer than 80 characters, our experience is that your code is likely too verbose and could be a little more compact. The main offender is usually \n VeryLongCamelCaseClassNames\n . Ask yourself, “Does each word in that type name tell me something critical or prevent a name collision?” If not, consider omitting it.\n
\nVeryLongCamelCaseClassNames\n\n Note that \n dart format\n does 99% of this for you, but the last 1% is you. It does not split long string literals to fit in 80 columns, so you have to do that manually.\n
\ndart format\nWe make an exception for URIs and file paths. When those occur in comments or strings (usually in imports and exports), they may remain on a single line even if they go over the line limit. This makes it easier to search source files for a given path.
\n ",
"type": "CODE_SMELL",
"debt": "1min",
"active": true
@@ -1086,7 +1086,7 @@
"description": "\n DO \n provide doc comments for all public APIs.\n
\n\n As described in the \n pub package layout doc \n , public APIs consist in everything in your package's \n lib\n folder, minus implementation files in \n lib/src\n , adding elements explicitly exported with an \n export\n directive.\n
\nlib\nlib/src\nexport\n\n For example, given \n lib/foo.dart\n :\n
\nlib/foo.dart\n\n \n export \n 'src/bar.dart' \n show \n Bar; \n \n \n export \n 'src/baz.dart' \n ; \n \n \n \n class \n Foo \n { } \n \n \n \n class \n _Foo \n { } \n \n \nits API includes:
\nFoo\n_Foo\nBar\nsrc/baz.dart\n\n All public API members should be documented with \n ///\n doc-style comments.\n
\n///\n\n BAD: \n
\n\n \n class \n Bar \n { \n \n \n void \n bar \n (); \n \n \n } \n \n\n\n GOOD: \n
\n\n \n /// A Foo. \n \n \n abstract \n class \n Foo \n { \n \n \n /// Start foo-ing. \n \n \n void \n start \n () => \n _start \n (); \n \n \n \n _start \n (); \n \n \n } \n \n \n\n Advice for writing good doc comments can be found in the \n Doc Writing Guidelines \n .\n
\n ",
"type": "CODE_SMELL",
"debt": "10min",
- "active": true
+ "active": false
},
{
"key": "package_names",
@@ -1923,7 +1923,7 @@
"description": "\n AVOID \n
\nhref\nsrc\nsrcdoc\ncreateFragment\nopen\nsetInnerHtml\nElement.html\nDocumentFragment.html\n\n BAD: \n
\n\n \n var \n script = \n ScriptElement \n ()..src = \n 'foo.js' \n ; \n \n\n ",
"type": "CODE_SMELL",
"debt": "5min",
- "active": true
+ "active": false
},
{
"key": "use_build_context_synchronously",
@@ -2202,7 +2202,7 @@
"description": "The analyzer produces this diagnostic when a comment reference (the name of a declaration enclosed in square brackets in a documentation comment) uses the keyword new to refer to a constructor. This form is deprecated.\n @see https://dart.dev/tools/diagnostic-messages#deprecated_new_in_comment_reference",
"type": "CODE_SMELL",
"debt": "5min",
- "active": true
+ "active": false
},
{
"key": "duplicate_constructor",
@@ -2499,7 +2499,7 @@
"description": "The analyzer produces this diagnostic when there's a type check (using the as operator) where the type is Null. There's only one value whose type is Null, so the code is both more readable and more performant when it tests for null explicitly.\n @see https://dart.dev/tools/diagnostic-messages#type_check_with_null",
"type": "CODE_SMELL",
"debt": "5min",
- "active": true
+ "active": false
},
{
"key": "type_parameter_supertype_of_its_bound",
@@ -2617,5 +2617,229 @@
"type": "BUG",
"debt": "5min",
"active": true
+ },
+ {
+ "key": "avoid_futureor_void",
+ "name": "Avoid FutureOr void",
+ "severity": "MAJOR",
+ "description": "AVOID using FutureOr<void> as the type of a result. This type is problematic because it may appear to encode that a result is either a Future<void> or void, but it actually just means void. Use Future<void>? to encode a result that is either a Future<void> or null.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "omit_obvious_property_types",
+ "name": "Omit obvious property types",
+ "severity": "MINOR",
+ "description": "DON'T type annotate initialized properties when the type is obvious. If a property is initialized to a literal, a constructor invocation, or a static method invocation of the same type, the type annotation is unnecessary.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "remove_deprecations_in_breaking_versions",
+ "name": "Remove deprecations in breaking versions",
+ "severity": "MAJOR",
+ "description": "DO remove deprecated members when a breaking version increment is made. Keeping deprecated members around increases the maintenance cost and API surface of your codebase.
",
+ "type": "CODE_SMELL",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "CLEAR",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "simplify_variable_pattern",
+ "name": "Simplify variable pattern",
+ "severity": "MINOR",
+ "description": "DO use simpler variable patterns where possible. In Dart 3, patterns allow destructuring and binding, but some patterns can be simplified for readability.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "specify_nonobvious_local_variable_types",
+ "name": "Specify nonobvious local variable types",
+ "severity": "MINOR",
+ "description": "DO specify the type of a local variable when it is not obvious from the initializer. When the type of a local variable is not obvious from the initializer expression, specify the type explicitly.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "specify_nonobvious_property_types",
+ "name": "Specify nonobvious property types",
+ "severity": "MINOR",
+ "description": "DO specify the type of a property when it is not obvious from the initializer. When the type of a property is not obvious from the initializer expression, specify the type explicitly for better readability.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "strict_top_level_inference",
+ "name": "Strict top level inference",
+ "severity": "MAJOR",
+ "description": "DO add explicit type annotations for top-level declarations when the type cannot be inferred. Top-level declarations without explicit types make it harder for readers and tools to understand code.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "switch_on_type",
+ "name": "Switch on type",
+ "severity": "MINOR",
+ "description": "DO use switch on types instead of chains of is checks. In Dart 3, you can use switch expressions with type patterns instead of a long chain of if-else with is checks.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "unnecessary_async",
+ "name": "Unnecessary async",
+ "severity": "MINOR",
+ "description": "AVOID marking a function as async when it has no meaningful await expressions. Adding async to a function that doesn't use await is unnecessary and adds overhead.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "unnecessary_ignore",
+ "name": "Unnecessary ignore",
+ "severity": "MINOR",
+ "description": "AVOID unnecessary // ignore: comments. If the diagnostic being ignored is not actually produced, the ignore comment is unnecessary and should be removed.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CLEAR",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "unnecessary_unawaited",
+ "name": "Unnecessary unawaited",
+ "severity": "MINOR",
+ "description": "AVOID wrapping a non-Future expression in unawaited(). The unawaited() function is intended to mark Futures that are intentionally not awaited. Wrapping non-Future expressions is unnecessary.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "unnecessary_underscores",
+ "name": "Unnecessary underscores",
+ "severity": "MINOR",
+ "description": "AVOID unnecessary underscores in variable names. In Dart 3, wildcard variables use a single underscore _. Multiple underscores like __ or ___ are unnecessary.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "unsafe_variance",
+ "name": "Unsafe variance",
+ "severity": "MAJOR",
+ "description": "AVOID using the @unsafeVariance annotation to suppress variance-related errors. Using this annotation can lead to runtime type errors that the type system would normally prevent.
",
+ "type": "BUG",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "use_null_aware_elements",
+ "name": "Use null aware elements",
+ "severity": "MINOR",
+ "description": "DO use null-aware elements in collections. In Dart 3, you can use ?element in list and set literals to conditionally include elements that might be null.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/dart-lang/src/main/resources/flutter-state-management/rules.json b/dart-lang/src/main/resources/flutter-state-management/rules.json
new file mode 100644
index 0000000..39b2a1c
--- /dev/null
+++ b/dart-lang/src/main/resources/flutter-state-management/rules.json
@@ -0,0 +1,386 @@
+[
+ {
+ "key": "bloc_avoid_flutter_imports",
+ "name": "Avoid Flutter imports in BLoC",
+ "severity": "MAJOR",
+ "description": "Avoid importing Flutter packages in BLoC classes. BLoC logic should be platform-independent and not depend on Flutter framework.
",
+ "type": "CODE_SMELL",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "bloc_avoid_public_methods",
+ "name": "Avoid public methods in BLoC",
+ "severity": "MAJOR",
+ "description": "Avoid adding public methods to BLoC classes other than close(). Events should be the only way to communicate with a BLoC from the presentation layer.
",
+ "type": "CODE_SMELL",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "bloc_prefer_bloc",
+ "name": "Prefer BLoC over Cubit for complex logic",
+ "severity": "MINOR",
+ "description": "Consider using BLoC instead of Cubit when the component has complex event-driven logic. BLoC provides better traceability of state changes through events.
",
+ "type": "CODE_SMELL",
+ "debt": "15min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "bloc_prefer_cubit",
+ "name": "Prefer Cubit over BLoC for simple logic",
+ "severity": "MINOR",
+ "description": "Consider using Cubit instead of BLoC when the component has simple state transitions without complex event handling.
",
+ "type": "CODE_SMELL",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "bloc_avoid_returning_widgets",
+ "name": "Avoid returning widgets from BLoC",
+ "severity": "MAJOR",
+ "description": "BLoC should not return or contain widget references. BLoC handles business logic only; the UI layer should build widgets based on state.
",
+ "type": "CODE_SMELL",
+ "debt": "15min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "bloc_avoid_bloc_in_bloc",
+ "name": "Avoid using BLoC inside another BLoC",
+ "severity": "MAJOR",
+ "description": "Avoid directly depending on one BLoC inside another. Use events or a shared repository layer to coordinate between BLoCs.
",
+ "type": "CODE_SMELL",
+ "debt": "20min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "bloc_prefer_emit_over_yield",
+ "name": "Prefer emit over yield in BLoC",
+ "severity": "MINOR",
+ "description": "Prefer using emit() instead of yield for state transitions in modern BLoC. The yield-based API is deprecated.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "bloc_avoid_mutable_state",
+ "name": "Avoid mutable state in BLoC state classes",
+ "severity": "MAJOR",
+ "description": "BLoC state classes should be immutable. Use final fields and create new state instances for transitions.
",
+ "type": "BUG",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "bloc_close_bloc",
+ "name": "Ensure BLoC is closed when no longer needed",
+ "severity": "MAJOR",
+ "description": "BLoC instances should be properly closed when no longer needed to prevent memory leaks. Use BlocProvider for automatic lifecycle management.
",
+ "type": "BUG",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_missing_provider_scope",
+ "name": "Missing ProviderScope at root",
+ "severity": "CRITICAL",
+ "description": "Riverpod requires a ProviderScope widget at the root of the widget tree. Without it, providers will not work correctly.
",
+ "type": "BUG",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "HIGH"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_provider_dependencies",
+ "name": "Declare provider dependencies",
+ "severity": "MAJOR",
+ "description": "Providers that depend on other providers should explicitly declare their dependencies using the @Riverpod annotation's dependencies parameter.
",
+ "type": "CODE_SMELL",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "CLEAR",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_avoid_build_context_in_providers",
+ "name": "Avoid BuildContext in providers",
+ "severity": "MAJOR",
+ "description": "Providers should not depend on BuildContext. This creates tight coupling between the provider and the widget tree, making testing and reuse difficult.
",
+ "type": "CODE_SMELL",
+ "debt": "15min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_avoid_manual_providers_as_generated",
+ "name": "Avoid manually written providers when using codegen",
+ "severity": "MINOR",
+ "description": "When using Riverpod code generation, prefer @riverpod annotation over manually creating Provider/StateProvider instances.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_avoid_notifier_extends",
+ "name": "Avoid extending wrong Notifier base class",
+ "severity": "MAJOR",
+ "description": "Ensure Notifier classes extend the correct base class. AsyncNotifier for async state, Notifier for sync state.
",
+ "type": "BUG",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_prefer_final_provider",
+ "name": "Prefer final for provider declarations",
+ "severity": "MINOR",
+ "description": "Provider declarations should be final to prevent accidental reassignment.
",
+ "type": "CODE_SMELL",
+ "debt": "1min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_avoid_read_inside_build",
+ "name": "Avoid ref.read inside build method",
+ "severity": "MAJOR",
+ "description": "Avoid using ref.read inside the build method. Use ref.watch instead to ensure the widget rebuilds when the provider state changes.
",
+ "type": "BUG",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_avoid_watch_outside_build",
+ "name": "Avoid ref.watch outside build method",
+ "severity": "MAJOR",
+ "description": "Avoid using ref.watch outside the build method. Use ref.read for one-time reads in callbacks and event handlers.
",
+ "type": "BUG",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_prefer_consumer_widget",
+ "name": "Prefer ConsumerWidget over Consumer",
+ "severity": "MINOR",
+ "description": "Prefer extending ConsumerWidget instead of using a Consumer widget inside a StatelessWidget for cleaner code.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_dispose_provider",
+ "name": "Ensure autoDispose for scoped providers",
+ "severity": "MINOR",
+ "description": "Consider using autoDispose modifier for providers that are scoped to specific pages or features to prevent memory leaks.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_missing_error_handling",
+ "name": "Missing error handling in AsyncValue",
+ "severity": "MAJOR",
+ "description": "When consuming AsyncValue from an async provider, always handle error and loading states in addition to data.
",
+ "type": "BUG",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "RELIABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_stateless_provider",
+ "name": "Prefer stateless providers when possible",
+ "severity": "MINOR",
+ "description": "Use Provider instead of StateProvider or StateNotifierProvider when the provider does not need to manage mutable state.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_avoid_global_state",
+ "name": "Avoid global mutable state in providers",
+ "severity": "MAJOR",
+ "description": "Avoid using global mutable variables accessed by providers. Use proper state management through Riverpod's state mechanisms.
",
+ "type": "CODE_SMELL",
+ "debt": "15min",
+ "active": true,
+ "cleanCodeAttribute": "LOGICAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_functional_ref",
+ "name": "Use functional_ref parameter correctly",
+ "severity": "MINOR",
+ "description": "When using code generation, ensure the ref parameter is correctly typed as the generated Ref type.
",
+ "type": "CODE_SMELL",
+ "debt": "5min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "LOW"
+ }
+ ]
+ },
+ {
+ "key": "riverpod_avoid_public_notifier_properties",
+ "name": "Avoid public properties in Notifier",
+ "severity": "MAJOR",
+ "description": "Notifier properties should be private. Expose state changes only through the state property and public methods.
",
+ "type": "CODE_SMELL",
+ "debt": "10min",
+ "active": true,
+ "cleanCodeAttribute": "CONVENTIONAL",
+ "impacts": [
+ {
+ "softwareQuality": "MAINTAINABILITY",
+ "severity": "MEDIUM"
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/FlutterPlugin.java b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/FlutterPlugin.java
index 5a395e8..527ecdc 100644
--- a/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/FlutterPlugin.java
+++ b/sonar-flutter-plugin/src/main/java/fr/insideapp/sonarqube/flutter/FlutterPlugin.java
@@ -25,6 +25,7 @@
import fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer.AnalyzerOutput;
import fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer.DartAnalyzerRulesDefinition;
import fr.insideapp.sonarqube.dart.lang.issues.dartanalyzer.DartAnalyzerSensor;
+import fr.insideapp.sonarqube.dart.lang.issues.statemanagement.FlutterStateManagementRulesDefinition;
import fr.insideapp.sonarqube.flutter.coverage.FlutterCoverageSensor;
import fr.insideapp.sonarqube.flutter.tests.FlutterTestSensor;
import org.sonar.api.Plugin;
@@ -69,6 +70,9 @@ public void define(Context context) {
// dartanalyzer Sensor
context.addExtensions(DartAnalyzerSensor.class, DartAnalyzerRulesDefinition.class);
+ // State management rules
+ context.addExtension(FlutterStateManagementRulesDefinition.class);
+
context.addExtension(
PropertyDefinition.builder(FLUTTER_TESTS_REPORT_PATH_KEY)
.name("Unit Test Report")
diff --git a/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java b/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java
index 5c28671..2f6ef17 100644
--- a/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java
+++ b/sonar-flutter-plugin/src/test/java/fr/insideapp/sonarqube/flutter/FlutterPluginTest.java
@@ -42,7 +42,7 @@ public void define() {
plugin.define(context);
List> extensions = context.getExtensions();
- assertThat(extensions).hasSize(15);
+ assertThat(extensions).hasSize(16);
}
From c2529780612c9fd4d55f8055e282e1aab44b439a Mon Sep 17 00:00:00 2001
From: abdullahtas0 <“dev.abdullahtas@gmail.com”>
Date: Sun, 1 Mar 2026 21:52:07 +0300
Subject: [PATCH 3/4] docs: update README and CHANGELOG for v0.6.0
- Rewrite README with clearer structure, quick start guide, and full
feature/rules documentation
- Add v0.6.0 entry to CHANGELOG covering Dart 3.x support, state
management rules, and legacy dartanalyzer removal
---
CHANGELOG.md | 20 ++++
README.md | 256 ++++++++++++++++++++++++++-------------------------
2 files changed, 152 insertions(+), 124 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 813003b..a66abcc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,25 @@
# Changelog
+## 0.6.0
+
+#### Breaking
+
+- **Removed `DARTANALYZER` analyzer mode.** The `dartanalyzer` command was deprecated in Dart 2.18 and removed in Dart 3. Use `DART` or `FLUTTER` mode instead. The `sonar.dart.analyzer.mode` option no longer accepts `DARTANALYZER`.
+
+#### Enhancements
+
+- **Dart 3.x linter rules:** Added 14 new rules — `avoid_futureor_void`, `omit_obvious_property_types`, `remove_deprecations_in_breaking_versions`, `simplify_variable_pattern`, `specify_nonobvious_local_variable_types`, `specify_nonobvious_property_types`, `strict_top_level_inference`, `switch_on_type`, `unnecessary_async`, `unnecessary_ignore`, `unnecessary_unawaited`, `unnecessary_underscores`, `unsafe_variance`, `use_null_aware_elements`
+- **Deprecated rules deactivated:** 13 rules removed in Dart 3 are now `active: false` — `always_require_non_null_named_parameters`, `avoid_as`, `avoid_returning_null`, `avoid_returning_null_for_future`, `invariant_booleans`, `prefer_bool_in_asserts`, `prefer_equal_for_default_values`, `super_goes_last`, `package_api_docs`, `enable_null_safety`, `deprecated_new_in_comment_reference`, `type_check_with_null`, `unsafe_html`
+- **ANTLR grammar updated for Dart 3:** `sealed`, `base`, `final`, `interface`, `mixin` class modifiers, record types/literals, switch expressions, pattern matching (type/variable/wildcard/constant patterns), if-case statements, `when` guard clauses, nullable type syntax
+- **State management detection:** PubSpec parser now detects BLoC (`flutter_bloc`, `bloc`), Riverpod (`flutter_riverpod`, `hooks_riverpod`, `riverpod`), and Provider dependencies
+- **24 new state management rules:** 9 BLoC rules + 15 Riverpod rules with MQR clean code attributes, registered under `flutter-state-management` repository
+- **New Dart keywords:** `base`, `sealed`, `when` added to syntax highlighter
+- **Total rules: 329** (305 dartanalyzer + 24 state management)
+
+#### Bug Fixes
+
+- None.
+
## 0.5.2
#### Breaking
diff --git a/README.md b/README.md
index 3b1d383..9180e75 100644
--- a/README.md
+++ b/README.md
@@ -1,144 +1,167 @@
-
+# SonarQube Plugin for Flutter / Dart
-[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
-[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
+> Static code analysis for Dart and Flutter projects in SonarQube — with Dart 3.x support, 329 rules, and state management linting.
+
+
[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
-[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
+[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
+
+
+
-# SonarQube plugin for Flutter / Dart
+---
-A plugin to enable analysis of Dart and Flutter projects into SonarQube.
+## What Does It Do?
-
-
-
+| Feature | Status | Details |
+|---------|--------|---------|
+| **Issues** | Supported | 305 dartanalyzer rules + 24 state management rules |
+| **Dart 3.x** | Supported | sealed classes, records, patterns, switch expressions |
+| **State Management** | Supported | BLoC (9 rules), Riverpod (15 rules) auto-detected from `pubspec.yaml` |
+| **Coverage** | Supported | LCOV format |
+| **Tests** | Supported | JSON test reports |
+| **Complexity** | Supported | Cyclomatic complexity |
+| **Syntax** | Supported | Highlighting & CPD tokens |
+| **MQR Mode** | Supported | Clean Code attributes & software quality impacts (SonarQube v26+) |
-## Features
+**Compatible with:** SonarQube 7.9+ (MQR mode requires v26+)
-| Feature | Supported |
-|------------|-----------------------------------------------------------------|
-| Size | YES |
-| Issues | YES ([dartanalyzer](https://dart.dev/tools/dartanalyzer) rules) |
-| Tests | YES |
-| Coverage | YES |
-| Complexity | YES |
-| Syntax | YES |
+---
-The plugin is compatible with sonarQube 7.9+.
+## Quick Start
-## Download
+### 1. Prerequisites
-Checkout the [Releases](https://github.com/insideapp-oss/sonar-flutter/releases) page.
+| Tool | Required For | Installation |
+|------|-------------|-------------|
+| **Flutter SDK** | Flutter projects | [flutter.dev/docs/get-started/install](https://flutter.dev/docs/get-started/install) |
+| **Dart SDK** | All projects | [dart.dev/get-dart](https://dart.dev/get-dart) |
+| **sonar-scanner** | Running analysis | [docs.sonarqube.org](https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/) |
+| **Java** | sonar-scanner | Bundled with scanner or install separately |
-Changelog is available [here](https://github.com/insideapp-oss/sonar-flutter/blob/develop/CHANGELOG.md).
+### 2. Install the Plugin
-## Prerequisites
+1. Download the latest JAR from [Releases](https://github.com/insideapp-oss/sonar-flutter/releases)
+2. Copy it to `$SONARQUBE_HOME/extensions/plugins/`
+3. Restart SonarQube
-### Flutter SDK (when analyzing a Flutter project)
+### 3. Configure Your Project
-Install Flutter as explained on the official documentation page.
+Create `sonar-project.properties` in your project root:
-[Flutter Installation instructions](https://flutter.dev/docs/get-started/install)
+```properties
+sonar.projectKey=my_flutter_app
+sonar.projectName=My Flutter App
+sonar.projectVersion=1.0.0
-### Dart
+sonar.sources=lib,pubspec.yaml
+sonar.tests=test
+sonar.sourceEncoding=UTF-8
+```
-Dart is downloaded by the Flutter SDK in **$FLUTTER_HOME/bin/cache/dart-sdk**, however command lines are not on the path by default (dart must be on the path).
+### 4. Run Analysis
-It is recommended to install Dart SDK separately as explained here : [Install the Dart SDK](https://dart.dev/get-dart) for more reliability in a CI/CD environment.
+```bash
+# Install dependencies
+flutter pub get
-### sonar-scanner (requires Java)
+# Run tests with coverage
+flutter test --machine --coverage > tests.output
-Install sonar-scanner as explained in the official documentation.
+# Analyze and publish to SonarQube
+sonar-scanner
+```
-[Installation instructions](https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/)
+That's it! Open your SonarQube dashboard to see the results.
+---
-## Installation (on the server)
+## Configuration Options
-- Download the plugin binary into the **$SONARQUBE_HOME/extensions/plugins** directory.
-- Restart the server.
+All options can be set in `sonar-project.properties`, SonarQube UI, or via `-D` parameters.
-## Project configuration
+| Option | Values | Default | Description |
+|--------|--------|---------|-------------|
+| `sonar.dart.analyzer.mode` | `DETECT` `DART` `FLUTTER` `MANUAL` | `DETECT` | Which analyzer to use. `DETECT` picks automatically based on `pubspec.yaml`. Use `MANUAL` for pre-existing reports. |
+| `sonar.dart.analyzer.options.override` | `true` / `false` | `true` | Replace local `analysis_options.yaml` with the plugin's version during analysis. Set to `false` to keep yours. |
+| `sonar.dart.analyzer.report.mode` | `DETECT` `MACHINE` `LEGACY` | `DETECT` | Output format. Auto-detected from Dart SDK version when set to `DETECT`. |
+| `sonar.dart.analyzer.report.path` | file path | - | Path to existing report file. Only used with `MANUAL` mode. |
+| `sonar.flutter.tests.reportPath` | file path(s) | `tests.output` | Path to test report JSON file(s). Comma-separated, no wildcards. |
+| `sonar.flutter.coverage.reportPath` | file path | `coverage/lcov.info` | Path to LCOV coverage report. |
-Create a **sonar-project.properties** file at the root with this content :
+> **Note:** The legacy `DARTANALYZER` mode has been removed. It was deprecated in Dart 2.18 and no longer exists in Dart 3.x. Use `DART` or `FLUTTER` mode instead.
-```properties
-# Project identification
-sonar.projectKey=flutter_rocks
-sonar.projectName=Flutter Rocks
-sonar.projectVersion=1.0
-
-# Source code location.
-# Path is relative to the sonar-project.properties file. Defaults to .
-# Use commas to specify more than one file/folder.
-# It is good practice to add pubspec.yaml to the sources as the analyzer
-# may produce warnings for this file as well.
-sonar.sources=lib,pubspec.yaml
-sonar.tests=test
+---
-# Encoding of the source code. Default is default system encoding.
-sonar.sourceEncoding=UTF-8
+## Rules
-# Analyzer mode
-# Can be:
-# - DETECT (attempt to detect automatically) - default
-# - MANUAL (an existing report needs to be provided)
-# - FLUTTER (flutter analyze)
-# - DART (dart analyze)
-# - DARTANALYZER (dartanalyzer)
-# sonar.dart.analyzer.mode=
-
-# Allows reuse of an existing analyzer report when mode is MANUAL
-# sonar.dart.analyzer.report.path=
-
-# Analyzer report output mode
-# Can be:
-# - DETECT (attempt to detect automatically, requires Dart SDK on the PATH) - default
-# - MACHINE (a new machine readable output that is available for Dart 2.12+)
-# - LEGACY (attempts to parse human readable output from dart/flutter) - default
-# sonar.dart.analyzer.report.mode=
-```
+### Dart Analyzer Rules (305)
-*For a complete list of available options, please refer to the [SonarQube documentation](https://docs.sonarqube.org/latest/analysis/analysis-parameters/).*
+The plugin bundles 305 rules from `dart analyze` / `flutter analyze`:
+- Lint rules (style, best practices, error prevention)
+- Analyzer diagnostics (type errors, null safety, etc.)
+- 14 new Dart 3.x rules: `avoid_futureor_void`, `switch_on_type`, `unnecessary_async`, `unsafe_variance`, and more
-### Use existing analysis options
+### State Management Rules (24)
-The plugin uses its own analysis options file.
-If `analysis_options.yaml` file already exists under the project root, it will be saved during the analysis and then restored to its initial state.
+Automatically activated when BLoC or Riverpod is detected in `pubspec.yaml`:
-To disable this behavior and use the existing`analysis_options.yaml` file instead, add the following line to `sonar-project.properties` file :
+**BLoC (9 rules)** — `flutter_bloc` / `bloc` dependency detected:
+- `bloc_avoid_flutter_imports` — Keep BLoC platform-independent
+- `bloc_avoid_public_methods` — Use events, not public methods
+- `bloc_avoid_mutable_state` — State classes must be immutable
+- `bloc_close_bloc` — Prevent memory leaks
+- and 5 more...
-```
-# Use existing options to perform dartanalyzer analysis
-sonar.dart.analyzer.options.override=true
-```
+**Riverpod (15 rules)** — `flutter_riverpod` / `riverpod` dependency detected:
+- `riverpod_missing_provider_scope` — ProviderScope required at root
+- `riverpod_avoid_read_inside_build` — Use ref.watch in build
+- `riverpod_avoid_watch_outside_build` — Use ref.read in callbacks
+- `riverpod_avoid_build_context_in_providers` — Keep providers decoupled
+- and 11 more...
-### Multi-module sample
+---
-It is possible to analyze a project with multiple modules. For example a Dart generator library with an example.
+## Dart 3.x Grammar Support
+
+The ANTLR parser understands Dart 3 syntax:
+
+- **Class modifiers:** `sealed`, `base`, `final`, `interface`, `mixin class`
+- **Records:** `(int, String)` types and `(1, 'hello')` literals
+- **Patterns:** `switch` expressions, `if-case`, variable/type/wildcard patterns
+- **Guards:** `when` clause in switch cases and if-case
+- **Nullable types:** `String?`, `int?` in type positions
+
+---
+
+## Advanced Usage
+
+### Use Your Own `analysis_options.yaml`
+
+```properties
+sonar.dart.analyzer.options.override=false
+```
+
+### Multi-Module Projects
```properties
sonar.projectKey=mylib
sonar.sourceEncoding=UTF-8
-
sonar.modules=mylib,mylib_generator,example
-# mylib
mylib.sonar.sources=lib,pubspec.yaml
mylib.sonar.dart.analyzer.mode=MANUAL
mylib.sonar.dart.analyzer.report.mode=LEGACY
mylib.sonar.dart.analyzer.report.path=build/reports/analysis-results.txt
-# mylib_generator
mylib_generator.sonar.sources=lib,pubspec.yaml
mylib_generator.sonar.dart.analyzer.options.override=false
mylib_generator.sonar.dart.analyzer.mode=MANUAL
mylib_generator.sonar.dart.analyzer.report.mode=MACHINE
mylib_generator.sonar.dart.analyzer.report.path=build/reports/analysis-results.txt
-# example
example.sonar.sources=lib,pubspec.yaml
example.sonar.tests=test
example.sonar.exclusions=**/*/*.g.dart
@@ -148,60 +171,45 @@ example.sonar.dart.analyzer.report.mode=LEGACY
example.sonar.dart.analyzer.report.path=build/reports/analysis-results.txt
```
-## Run analysis
-
-Use the following commands from the root folder to start an analysis:
+### Using `dart_test.yaml`
-```console
-# Download dependencies
-flutter pub get
-# Run tests with User feedback (in case some test are failing)
-flutter test
-# Run tests without user feedback regeneration tests.output and coverage/lcov.info
-flutter test --machine --coverage > tests.output
-
-# Run the analysis and publish to the SonarQube server
-sonar-scanner
-```
-
-## Using `dart_test.yaml`
-
-Dart/Flutter support the use of a `dart_test.yaml` file to configure test behavior.
-This file can be used to configure the test output format and location. More information can be found [here](https://github.com/dart-lang/test/blob/master/pkgs/test/doc/configuration.md).
+Configure test output in `dart_test.yaml` instead of `--machine` flag:
```yaml
file_reporters:
json: build/reports/test-results.json
```
-With this, it is no longer use the `--machine` switch or redirect the output.
-It is currently not possible to configure the coverage out in this file.
-You may follow and upvote these related issue if interested:
-* Configuration option - https://github.com/dart-lang/test/issues/1361
-* Dart coverage support - https://github.com/dart-lang/test/issues/1265
+Then point `sonar.flutter.tests.reportPath` to `build/reports/test-results.json`.
+---
-## Available options
+## Building from Source
-All options are configurable in the SonarQube UI, via `sonar-project.properties` or `-D` parameters.
+```bash
+# Compile
+mvn clean compile
-| Name | Options | Default | Description |
-|----------------------------------------|--------------------------------------------------------------------------|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `sonar.dart.analyzer.mode` | DETECT|DART|FLUTTER|MANUAL|DARTANALYZER | `DETECT` | By default the plugin attempts to detect a fitting analyzer (`flutter analyze` or `dart analyze`) by parsing the `environment` from `pubspec.yaml`. This can be set to `MANUAL` to provide and existing report file. For compatibility with older Dart versions, this can be set to `DARTANALYZER`. |
-| `sonar.dart.analyzer.options.override` | true|false | `true` | By default any local `analysis_options.yaml` will be replaced for the analysis. This can be prevented by setting this to `false`. |
-| `sonar.dart.analyzer.report.mode` | DETECT|MACHINE|LEGACY | `DETECT` | The new machine readable output can be automatically detected if Dart SDK is available on the $PATH. |
-| `sonar.dart.analyzer.report.path` | A file path | - | This is required if the analyzer mode is set to `MANUAL`. |
-| `sonar.flutter.tests.reportPath` | Comma separated list of file paths (wildcard not supported) | `tests.output` | The path to the test report JSON file. |
-| `sonar.flutter.coverage.reportPath` | A file path | `coverage/lcov.info` | The path to the test coverage file in LCOV format. |
+# Run tests
+mvn test
+# Build plugin JAR
+mvn clean package
+# Output: sonar-flutter-plugin/target/sonar-flutter-plugin-*.jar
+```
-## Contributing
+**Requirements:** Java 17+, Maven 3.8+
-Any help is welcome, and PRs will be greatly appreciated!
+---
-Please read [CONTRIBUTING](https://github.com/insideapp-oss/sonar-flutter/blob/develop/CONTRIBUTING.md) for more information.
+## Contributing
+PRs are welcome! Please read [CONTRIBUTING](CONTRIBUTING.md) for guidelines.
## License
-SonarQube Plugin for Flutter / Dart is released under the GNU LGPL v3 license. See the [LICENSE](https://github.com/insideapp-oss/sonar-flutter/blob/develop/LICENSE) file for more information.
+GNU LGPL v3 — see [LICENSE](LICENSE) for details.
+
+---
+
+*Forked from [insideapp-oss/sonar-flutter](https://github.com/insideapp-oss/sonar-flutter). Extended with Dart 3.x support, state management rules, and MQR mode.*
From ca6c3f0bce999197f5970190b65b4efa99b4c0cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Abdullah=20Ta=C5=9F?=
Date: Sun, 1 Mar 2026 21:53:42 +0300
Subject: [PATCH 4/4] Update README.md
---
README.md | 4 ----
1 file changed, 4 deletions(-)
diff --git a/README.md b/README.md
index 9180e75..9981662 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,6 @@
> Static code analysis for Dart and Flutter projects in SonarQube — with Dart 3.x support, 329 rules, and state management linting.
-
-[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
-[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)
-[](https://sonarcloud.io/summary/new_code?id=insideapp-oss_sonar-flutter)