From 2eaa34b2613644be41a883fcfcd6857cbab21c1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E8=90=A7=E7=8E=89?= Date: Mon, 15 Jun 2020 12:20:51 +0800 Subject: [PATCH] Feature/foundation (#22) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [WIP] feat: https://github.com/dart-native/codegen/issues/18 * [WIP] feat: Function Pointer and protocol fix https://github.com/dart-native/codegen/issues/18 * add Test file * feat: 解析 API_DEPRECATED_WITH_REPLACEMENT * feat: 支持 API_AVAILABLE 声明常量,支持 NS_SWIFT_NAME 解析 * feat: 增加 attribute 的判断 * feat: support declare typedef function. * feat: typedef struct 内容为函数指针的解析,修复 typeSpecifier 对指针的支持 * feat: delete unused token NS_TYPED_ENUM in lexer. * feat: support generic type with super class. * feat: add more token in direct channel. * feat: support dot in DIRECTIVE_CHANNEL * feat: 并行处理多个文件 https://github.com/dart-native/codegen/issues/21 * feat: parse class without superclass or extension without category name. * feat: parse function definition with macros. * feat: method return type and arg type can be block or function pointer. * feat: specify required node.js version * fix ci * fix: handle empty script * fix condition * fix block and method type converter * feat: add fromPointer in class * fix: delete string in basic auto return type. --- .npmrc | 1 + .travis.yml | 2 +- bin/codegen.js | 88 +- index.js | 10 +- lib/objc/DNObjectiveCContext.js | 62 +- lib/objc/DNObjectiveCConverter.js | 45 + lib/objc/DNObjectiveCParserListener.js | 157 +- lib/objc/DNObjectiveCTypeConverter.js | 18 +- lib/objc/DNObjectiveConverter.js | 28 - package.json | 3 + parser/objc/ObjectiveCLexer.g4 | 15 +- parser/objc/ObjectiveCLexer.js | 3437 +++++----- parser/objc/ObjectiveCLexer.tokens | 354 +- parser/objc/ObjectiveCParser.g4 | 150 +- parser/objc/ObjectiveCParser.js | 7618 ++++++++++++++--------- parser/objc/ObjectiveCParser.tokens | 354 +- parser/objc/ObjectiveCParserListener.js | 18 + test/objc/BoxPhoto.h | 8 +- 18 files changed, 7119 insertions(+), 5249 deletions(-) create mode 100644 .npmrc create mode 100644 lib/objc/DNObjectiveCConverter.js delete mode 100644 lib/objc/DNObjectiveConverter.js diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..4fd0219 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index b30b9ac..f41a416 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - 7 + - 12.16 install: - git clone https://github.com/flutter/flutter.git -b stable --depth 1 diff --git a/bin/codegen.js b/bin/codegen.js index 8af4451..723d4af 100755 --- a/bin/codegen.js +++ b/bin/codegen.js @@ -2,10 +2,11 @@ const { program } = require('commander') const { execSync } = require('child_process') -var DNObjectiveConverter = require('../lib/objc/DNObjectiveConverter').DNObjectiveConverter const fs = require("fs") const path = require("path") const yaml = require('js-yaml') +const { Worker } = require('worker_threads') + var outputDir var outputPackage var packageSet = new Set() @@ -46,25 +47,13 @@ function recFindByExt(base, ext, files, result) { return result } -function writeOutputToFileByPath(result, srcPath){ +function writeOutputToFileByPath(result, srcPath) { var srcFile = srcPath.substr(srcPath.lastIndexOf('/') + 1) var dartFile = srcFile.substring(0, srcFile.indexOf('.')).toLowerCase() + '.dart' var outputFile = outputDir ? path.join(outputDir, dartFile) : dartFile fs.writeFileSync(outputFile, result) } -function callback(result, srcPath, error) { - if (!result) { - return - } - - writeOutputToFileByPath(result.dartCode, srcPath) - - if(outputPackage) { - result.packages.forEach(item => packageSet.add(item)) - } -} - function formatDartFile(dartPath) { var command = 'flutter format ' + path.dirname(dartPath) execSync(command, { stdio: 'inherit' }) @@ -78,13 +67,45 @@ function createFlutterPackage(packageName) { function writeDependencyToPubSpec(filePath) { var doc = yaml.safeLoad(fs.readFileSync(filePath, 'utf8')); packageSet.forEach(item => { - if(typeof(item) == "undefined") { + if (typeof (item) == "undefined") { return } item = item.toLowerCase() - doc.dependencies[item] = { path : item} + doc.dependencies[item] = { path: item } + }) + fs.writeFileSync(filePath, yaml.safeDump(doc).replace(/null/g, '')) +} + +function generateDartWithWorker(path, script) { + return new Promise((resolve, reject) => { + const worker = new Worker(script, { + workerData: { path: path }, + resourceLimits: { maxOldGenerationSizeMb: 8 * 1024 } + }); + worker.on("message", resolve); + worker.on("error", reject); + }); +}; + +async function runWorkItems(workItems) { + const promises = Object.keys(workItems).map((path) => { + let script = workItems[path] + return generateDartWithWorker(path, script).then((msg) => { + if (msg.error) { + console.log('filePath:' + msg.path + '\nerror:' + msg.error) + } + let result = msg.result + if (!result) { + return + } + writeOutputToFileByPath(result.dartCode, msg.path) + + if (outputPackage) { + result.packages.forEach(item => packageSet.add(item)) + } + }) }) - fs.writeFileSync(filePath, yaml.safeDump(doc).replace(/null/g,'')) + await Promise.all(promises) } program.version('1.0.2') @@ -95,19 +116,20 @@ program .option('-o, --output ', 'Output directory') .option('-p, --package ', 'Generate a shareable Flutter project containing modular Dart code.') .description('Generate dart code from native API.') - .action(function (input, options) { + .action(async function (input, options) { language = options.language if (!language) { language = 'auto' } - var extMap = {'objc': ['h'], 'java': ['java'], 'auto': ['h', 'java']} + var extMap = { 'objc': ['h'], 'java': ['java'], 'auto': ['h', 'java'] } var extArray = extMap[language] outputDir = options.output - if (outputDir) { - mkdirs(outputDir) + if (!outputDir) { + outputDir = process.cwd() } + mkdirs(outputDir) outputPackage = options.package if (outputPackage) { @@ -119,24 +141,28 @@ program console.log('Output Dir: ' + outputDir) var baseOutputDir = outputDir + + const langForExtension = { 'h': 'objc', 'java': 'java' } + // TODO: handle java here + const scriptForExtension = { 'h': path.join(__dirname, '../lib/objc/DNObjectiveCConverter.js') } + + var workItems = new Map() extArray.forEach((ext) => { - var files = recFindByExt(input, ext) - if (files.length == 0) { + let files = recFindByExt(input, ext) + let script = scriptForExtension[ext] + if (files.length == 0 || !script) { return } - var extToLang = {'h': 'objc', 'java': 'java'} - outputDir = path.join(baseOutputDir, extToLang[ext]) + + outputDir = path.join(baseOutputDir, langForExtension[ext]) mkdirs(outputDir) files.forEach((file) => { - console.log('processing ' + file) - if (ext == 'h') { - new DNObjectiveConverter(file, callback) - } else if (ext == 'java') { - // TODO: handle java - } + workItems[file] = script; }) }) + await runWorkItems(workItems) + outputDir = baseOutputDir formatDartFile(outputDir) diff --git a/index.js b/index.js index cf5d1d8..f225275 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,13 @@ -var DNObjectiveConverter = require('./lib/objc/DNObjectiveConverter').DNObjectiveConverter +let workerScript = './lib/objc/DNObjectiveCConverter' +let dataPath = "./test/objc/RuntimeStub.h" +let main = require(workerScript).main -new DNObjectiveConverter("./test/objc/RuntimeStub.h", callback) +main(dataPath, callback) function callback(result, path, error) { - console.log('result:\n' + result.dartCode + '\n\npath:\n' + path) + if (result) { + console.log('result:\n' + result.dartCode + '\n\npath:\n' + path) + } if (error) { console.log('\nerror:\n' + error) } diff --git a/lib/objc/DNObjectiveCContext.js b/lib/objc/DNObjectiveCContext.js index 50bf074..7717cdf 100644 --- a/lib/objc/DNObjectiveCContext.js +++ b/lib/objc/DNObjectiveCContext.js @@ -149,11 +149,14 @@ class DNEnumDefContext extends DNContext { } class DNArgumentContext extends DNContext { - constructor(internal, name, type) { + constructor(internal) { super(internal) - this.name = name - this.type = type - this.anonDef = null //user for block arguement + // For keywordDeclarator + if (internal.name && internal.types) { + this.name = internal.name.start.text + } + this.type = null + this.isBlock = false //user for block arguement this.isNullable = false this.isOutParam = false } @@ -166,7 +169,7 @@ class DNMethodContext extends DNContext { this.names = [] this.args = [] this.returnType = null - this.retValIsObj = false + this.callFromPointer = false this.isClassMethod = false this.macros = [] this.availability = [] @@ -232,12 +235,12 @@ class DNMethodContext extends DNContext { var rawRetType = this.rawGenericType(this.returnType) //remove <> symbol var isMutableRetType = DNObjectiveCTypeConverter.SupportMutableTypes.indexOf(rawRetType) > -1 - if (!isMutableRetType && !this.retValIsObj) { + if (!isMutableRetType && !this.callFromPointer) { return (this.returnType == 'void' ? '' : 'return') + impl } var newImpl = 'Pointer result = ' + impl.replace(');\n', '') + ' ,decodeRetVal: false);\n' - if (this.retValIsObj) { + if (this.callFromPointer) { var supportType = DNObjectiveCTypeConverter.DNDartToOCMap[rawRetType] if (supportType) { newImpl += ' return ' + supportType + '.fromPointer(result).raw;\n' @@ -279,7 +282,7 @@ class DNMethodContext extends DNContext { nullableArgs.push(element) } else { var argType = element.isOutParam ? 'NSObjectRef<' + element.type + '>' : element.type - var arg = element.anonDef ? element.anonDef : this.convertMutableTypeIfNeed(argType) + ' ' + element.name + var arg = element.isBlock ? argType : this.convertMutableTypeIfNeed(argType) + ' ' + element.name argList += arg + (index == this.args.length - 1 && nullableArgs.length == 0 ? '' : ', ') } }) @@ -288,7 +291,7 @@ class DNMethodContext extends DNContext { argList += '{' nullableArgs.forEach((element, index) => { var argType = element.isOutParam ? 'NSObjectRef<' + element.type + '>' : element.type - var arg = element.anonDef ? element.anonDef : this.convertMutableTypeIfNeed(argType) + ' ' + element.name + var arg = element.isBlock ? argType : this.convertMutableTypeIfNeed(argType) + ' ' + element.name argList += arg + (index == nullableArgs.length - 1 ? '' : ', ') }) argList += '}' @@ -366,6 +369,12 @@ class DNPropertyContext extends DNContext { } parse() { + if (!this.name) { + return '' + } + if (!this.type) { + this.type = 'dynamic' + } var annotation = ' ' + this.availability.map((a) => a.parse()).join(' ') + '\n' var get = annotation + ' ' + this.type + ' get ' + this.name + ' => perform(\'' + this.name + '\'.toSEL());' @@ -383,7 +392,10 @@ class DNProtocolContext extends DNContext { this.name = internal.name.start.text this.properties = [] this.methods = [] - this.protocols = [] + let protocols = internal.protocols + this.protocols = protocols ? protocols.list.map((p) => { + return p.name.start.text + }) : [] this.macros = [] this.availability = [] } @@ -410,10 +422,15 @@ class DNClassContext extends DNContext { constructor(internal) { super(internal) this.name = internal.className.start.text - this.superClass = internal.superclassName.start.text + if (internal.superclassName) { + this.superClass = internal.superclassName.start.text + } this.properties = [] this.methods = [] - this.protocols = [] + let protocols = internal.protocols + this.protocols = protocols ? protocols.list.map((p) => { + return p.name.start.text + }) : [] this.macros = [] this.availability = [] } @@ -421,12 +438,16 @@ class DNClassContext extends DNContext { parse() { this.preMarkConstructMethods() var result = this.availability.map((a) => a.parse()).join(' ') + '\n' - result += '@native\nclass ' + this.name + ' extends ' + this.superClass + result += '@native\nclass ' + this.name + if (this.superClass) { + result += ' extends ' + this.superClass + } if (typeof this.protocols !== 'undefined' && this.protocols.length > 0) { result += ' with ' + this.protocols.join(',') } result += ' {\n' result += ' ' + this.name + '([Class isa]) : super(Class(\'' + this.name + '\'));\n' + result += ' ' + this.name + '.fromPointer(Pointer ptr) : super.fromPointer(ptr);\n' this.properties.forEach(element => { var parseRet = element.parse() result += parseRet ? parseRet + '\n' : '' @@ -463,15 +484,22 @@ class DNClassContext extends DNContext { class DNCategoryContext extends DNContext { constructor(internal) { super(internal) - this.name = internal.children[1].start.text - this.host = internal.children[3].start.text + this.host = internal.className.start.text + if (internal.categoryName) { + this.name = internal.categoryName.start.text + } else { + this.name = 'DartNative' + } this.properties = [] this.methods = [] - this.protocols = [] + let protocols = internal.protocols + this.protocols = protocols ? protocols.list.map((p) => { + return p.name.start.text + }) : [] } parse() { - var result = 'extension ' + this.name + this.host + ' on ' + this.name + var result = 'extension ' + this.host + this.name + ' on ' + this.host result += ' {\n' this.properties.forEach(element => { result += element.parse() + '\n' diff --git a/lib/objc/DNObjectiveCConverter.js b/lib/objc/DNObjectiveCConverter.js new file mode 100644 index 0000000..7d3e9b7 --- /dev/null +++ b/lib/objc/DNObjectiveCConverter.js @@ -0,0 +1,45 @@ +let antlr4 = require('antlr4') +let rf = require("fs") +let ObjectiveCLexer = require('../../parser/objc/ObjectiveCLexer').ObjectiveCLexer +let ObjectiveCParser = require('../../parser/objc/ObjectiveCParser').ObjectiveCParser +let DNObjectiveCParserListener = require('./DNObjectiveCParserListener').DNObjectiveCParserListener +let ConsoleErrorListener = require('antlr4/error/ErrorListener').ConsoleErrorListener +const { parentPort, workerData } = require('worker_threads') + +function main(path, cb) { + if (!path) { + if (!workerData) { + return + } + path = workerData.path + } + if (!cb) { + cb = callback + } + console.log('processing: ' + path) + try { + const content = rf.readFileSync(path, "utf-8") + const chars = new antlr4.InputStream(content) + const lexer = new ObjectiveCLexer(chars) + const errorListener = new ConsoleErrorListener() + lexer.addErrorListener(errorListener) + + const tokens = new antlr4.CommonTokenStream(lexer) + const parser = new ObjectiveCParser(tokens) + parser.addErrorListener(errorListener) + const tree = parser.translationUnit() + const listener = new DNObjectiveCParserListener(cb, path) + antlr4.tree.ParseTreeWalker.DEFAULT.walk(listener, tree) + } catch (e) { + cb(null, path, e) + } +} + +function callback(result, path, error) { + // Send a message to the main thread. + parentPort.postMessage({result: result, path: path, error: error}); +} + +main() + +exports.main = main \ No newline at end of file diff --git a/lib/objc/DNObjectiveCParserListener.js b/lib/objc/DNObjectiveCParserListener.js index 88b1195..56d9852 100644 --- a/lib/objc/DNObjectiveCParserListener.js +++ b/lib/objc/DNObjectiveCParserListener.js @@ -1,9 +1,9 @@ var ObjectiveCParserListener = require('../../parser/objc/ObjectiveCParserListener').ObjectiveCParserListener -var ObjectiveCParser = require('../../parser/objc/ObjectiveCParser').ObjectiveCParser -var DNObjectiveCTypeConverter = require('./DNObjectiveCTypeConverter').DNObjectiveCTypeConverter -var TC = new DNObjectiveCTypeConverter -var c = require('./DNObjectiveCContext') -var DNRootContext = c.DNRootContext, +let ObjectiveCParser = require('../../parser/objc/ObjectiveCParser').ObjectiveCParser +let DNObjectiveCTypeConverter = require('./DNObjectiveCTypeConverter').DNObjectiveCTypeConverter +let TC = new DNObjectiveCTypeConverter +let c = require('./DNObjectiveCContext') +let DNRootContext = c.DNRootContext, DNImportContext = c.DNImportContext, DNBlockDefContext = c.DNBlockDefContext, DNEnumDefContext = c.DNEnumDefContext, @@ -135,20 +135,16 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { } // Enter a parse tree produced by ObjectiveCParser#protocolList. enterProtocolList(ctx) { - ctx.children.forEach(element => { - if (element instanceof ObjectiveCParser.ProtocolNameContext) { - var protocol = element.start.text - if (protocol == 'NSObject') { - protocol = 'NSObjectProtocol' - } - if (this.currentContext instanceof DNArgumentContext) { - this.currentContext.type = protocol - } else if (this.currentContext instanceof DNPropertyContext) { - this.currentContext.type = protocol - } else { - this.currentContext.protocols.push(protocol) - } + ctx.list.forEach(element => { + var protocol = element.start.text + if (protocol == 'NSObject') { + protocol = 'NSObjectProtocol' } + if (this.currentContext instanceof DNArgumentContext) { + this.currentContext.type = protocol + } else if (this.currentContext instanceof DNPropertyContext) { + this.currentContext.type = protocol + } }) } // Exit a parse tree produced by ObjectiveCParser#protocolList. @@ -281,9 +277,10 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { enterKeywordDeclarator(ctx) { if (this.currentContext instanceof DNMethodContext) { // Add method names. - this.currentContext.names.push(ctx.children[0].start.text) + if (ctx.sel) { + this.currentContext.names.push(ctx.sel.start.text) + } var argument = new DNArgumentContext(ctx) - argument.name = ctx.children[3].start.text this.currentContext.addChild(argument) this.currentContext = argument } @@ -328,21 +325,8 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { } // Enter a parse tree produced by ObjectiveCParser#blockType. enterBlockType(ctx) { - if (this.currentContext instanceof DNArgumentContext) { - for (var i = 0; i < ctx.children.length; i++) { - var subChild = ctx.children[i] - if (subChild instanceof ObjectiveCParser.BlockParametersContext) { - var blockArgs = '' - subChild.children.forEach(element => { - if (element instanceof ObjectiveCParser.TypeVariableDeclaratorOrNameContext) { - blockArgs += element.start.text + ' ' + element.stop.text + ', ' - } - }) - blockArgs = '(' + blockArgs.substring(0, blockArgs.length - 2) + ')' - this.currentContext.anonDef = this.currentContext.type + ' ' + this.currentContext.name + blockArgs - break - } - } + if (this.currentContext instanceof DNMethodContext) { + this.currentContext.returnType = 'Block' } } // Exit a parse tree produced by ObjectiveCParser#blockType. @@ -393,6 +377,14 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { } // Enter a parse tree produced by ObjectiveCParser#blockParameters. enterBlockParameters(ctx) { + if (this.currentContext instanceof DNArgumentContext) { + var blockArgs = ctx.types.map((type) => { + // FIXME: parse type correctly + return type.start.text + ' ' + type.stop.text + }).join(', ') + blockArgs = '(' + blockArgs.substring(0, blockArgs.length - 2) + ')' + this.currentContext.type += ' ' + this.currentContext.name + blockArgs + } } // Exit a parse tree produced by ObjectiveCParser#blockParameters. exitBlockParameters(ctx) { @@ -530,6 +522,18 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { // Exit a parse tree produced by ObjectiveCParser#functionSignature. exitFunctionSignature(ctx) { } + // Enter a parse tree produced by ObjectiveCParser#functionPointer. + enterFunctionPointer(ctx) { + // TODO: return type or arg type is function pointer. + if (this.currentContext instanceof DNMethodContext) { + this.currentContext.returnType = 'Pointer' + } else if (this.currentContext instanceof DNArgumentContext) { + this.currentContext.type = 'Pointer' + } + }; + // Exit a parse tree produced by ObjectiveCParser#functionPointer. + exitFunctionPointer(ctx) { + }; // Enter a parse tree produced by ObjectiveCParser#attribute. enterAttribute(ctx) { } @@ -597,7 +601,6 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { // Enter a parse tree produced by ObjectiveCParser#typedefDeclaration. enterTypedefDeclaration(ctx) { var blockDef = new DNBlockDefContext(ctx) - blockDef.returnType = TC.convert(ctx.children[1].start.text) this.currentContext.addChild(blockDef) this.currentContext = blockDef } @@ -676,6 +679,13 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { } // Enter a parse tree produced by ObjectiveCParser#nullabilitySpecifier. enterNullabilitySpecifier(ctx) { + if (this.currentContext instanceof DNArgumentContext) { + // check if it's a nullable parameter + let text = ctx.start.text + if (text == 'nullable' || text == '_Nullable' || text == '__nullable') { + this.currentContext.isNullable = true + } + } } // Exit a parse tree produced by ObjectiveCParser#nullabilitySpecifier. exitNullabilitySpecifier(ctx) { @@ -694,6 +704,10 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { } // Enter a parse tree produced by ObjectiveCParser#typeQualifier. enterTypeQualifier(ctx) { + if (this.currentContext instanceof DNArgumentContext) { + // check if it's a out parameter + this.currentContext.isOutParam = ctx.start.text == 'out' + } } // Exit a parse tree produced by ObjectiveCParser#typeQualifier. exitTypeQualifier(ctx) { @@ -706,6 +720,39 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { } // Enter a parse tree produced by ObjectiveCParser#typeSpecifier. enterTypeSpecifier(ctx) { + var pointer = null + if (ctx.children.length > 1) { + pointer = ctx.children[1] + } + var type = ctx.start.text; + var isPointer2Pointer = false + if (pointer) { + if (type == 'void' || type == 'char') { + type += ' *' + } + if (pointer.nextPointer) { + isPointer2Pointer = true + } + } + + if (this.currentContext instanceof DNMethodContext) { + var returnType = type + if (returnType == 'instancetype') { + returnType = this.currentContext.parent.name + } + this.currentContext.returnType = TC.convert(returnType, true) + // FIXME: pointer to struct + if (!DNObjectiveCTypeConverter.basicAutoConvertReturnTypes.includes(this.currentContext.returnType) && + pointer) { + this.currentContext.callFromPointer = true + } + } else if (this.currentContext instanceof DNArgumentContext) { + this.currentContext.type = TC.convert(type, true) + // case:(NSError ** )error + this.currentContext.isOutParam = isPointer2Pointer + } else if (this.currentContext instanceof DNBlockDefContext) { + this.currentContext.returnType = TC.convert(type) + } } // Exit a parse tree produced by ObjectiveCParser#typeSpecifier. exitTypeSpecifier(ctx) { @@ -873,44 +920,6 @@ class DNObjectiveCParserListener extends ObjectiveCParserListener { } // Enter a parse tree produced by ObjectiveCParser#typeName. enterTypeName(ctx) { - if (this.currentContext instanceof DNMethodContext) { - this.currentContext.returnType = TC.convert(ctx.start.text == 'instancetype' ? this.currentContext.parent.name : ctx.start.text, true) - this.currentContext.retValIsObj = ctx.stop.text == '*' - } else if (this.currentContext instanceof DNArgumentContext) { - this.currentContext.type = TC.convert(ctx.start.text, true) - - // check if it's a out parameter - if (ctx.start.text == 'out') { - //case:(out NsError **) error - this.currentContext.isOutParam = true - this.currentContext.type = TC.convert(ctx.children[0].stop.text, true) //correct arg type - } else if (ctx.children.length > 1) { - var childOne = ctx.children[1] - //case:(NsError ** )error - var isP2P = childOne.start.text == '*' && childOne.stop.text == '*' && childOne.start.stop != childOne.stop.stop - if (!isP2P) { - //case:(NsError ** _Nullable) error - var subChild = childOne.children[0] - if (subChild instanceof ObjectiveCParser.PointerContext) { - for (var i = 0; i < subChild.children.length; i++) { - if (subChild.children[i] instanceof ObjectiveCParser.PointerContext) { - isP2P = true - break - } - } - } - } - this.currentContext.isOutParam = isP2P - } - - // check if it's a nullable parameter - if (ctx.start.text == 'nullable') { - this.currentContext.isNullable = true - this.currentContext.type = TC.convert(ctx.children[0].stop.text, true) //correct arg type - } else if (ctx.stop.text == '_Nullable' || ctx.stop.text == '__nullable') { - this.currentContext.isNullable = true - } - } } // Exit a parse tree produced by ObjectiveCParser#typeName. exitTypeName(ctx) { diff --git a/lib/objc/DNObjectiveCTypeConverter.js b/lib/objc/DNObjectiveCTypeConverter.js index caf86b3..5bf6b69 100644 --- a/lib/objc/DNObjectiveCTypeConverter.js +++ b/lib/objc/DNObjectiveCTypeConverter.js @@ -9,7 +9,6 @@ class DNObjectiveCTypeConverter { convert(objcType, isMethodArg) { var convertRet = DNObjectiveCTypeConverter.DNOCToDartMap[objcType] convertRet = (!convertRet && !isMethodArg) ? DNObjectiveCTypeConverter.SupportMutableTypesMap[objcType] : convertRet - // convertRet = (!convertRet && !isMethodArg) ? '123123' : 'asd' return convertRet ? convertRet : objcType } } @@ -25,18 +24,30 @@ DNObjectiveCTypeConverter.DNOCToDartMap = { 'uint16_t': 'int', 'uint32_t': 'int', 'uint64_t': 'int', + 'intptr_t': 'int', + 'uintptr_t': 'int', + 'float': 'double', 'CGFloat': 'double', 'id': 'dynamic', 'BOOL': 'bool', '_Bool': 'bool', 'void *': 'Pointer', - 'char *': 'String', + 'char *': 'CString', 'NSString': 'String', 'NSArray': 'List', 'NSDictionary': 'Map', 'NSSet': 'Set', } +DNObjectiveCTypeConverter.basicAutoConvertReturnTypes = [ + 'int', + 'double', + 'bool', + 'CString', + 'Pointer', + // TODO: built-in Structs +] + //ignore mutable type DNObjectiveCTypeConverter.DNDartToOCMap = { // dart type || objc type @@ -48,7 +59,7 @@ DNObjectiveCTypeConverter.DNDartToOCMap = { // dart-native support mutable types DNObjectiveCTypeConverter.SupportMutableTypes = [ - 'NUMutableString', + 'NSMutableString', 'NSMutableArray', 'NSMutableSet', 'NSMutableDictionary' @@ -60,4 +71,5 @@ DNObjectiveCTypeConverter.SupportMutableTypesMap = { 'NSMutableSet': 'Set', 'NSMutableDictionary': 'Map' } + exports.DNObjectiveCTypeConverter = DNObjectiveCTypeConverter \ No newline at end of file diff --git a/lib/objc/DNObjectiveConverter.js b/lib/objc/DNObjectiveConverter.js deleted file mode 100644 index 600509c..0000000 --- a/lib/objc/DNObjectiveConverter.js +++ /dev/null @@ -1,28 +0,0 @@ -var antlr4 = require('antlr4') -var rf = require("fs") -var ObjectiveCLexer = require('../../parser/objc/ObjectiveCLexer').ObjectiveCLexer -var ObjectiveCParser = require('../../parser/objc/ObjectiveCParser').ObjectiveCParser -var DNObjectiveCParserListener = require('./DNObjectiveCParserListener').DNObjectiveCParserListener -var ConsoleErrorListener = require('antlr4/error/ErrorListener').ConsoleErrorListener - -class DNObjectiveConverter { - constructor(path, cb) { - var content = rf.readFileSync(path, "utf-8") - var chars = new antlr4.InputStream(content) - var lexer = new ObjectiveCLexer(chars) - lexer.addErrorListener(new ConsoleErrorListener()) - - var tokens = new antlr4.CommonTokenStream(lexer) - var parser = new ObjectiveCParser(tokens) - parser.addErrorListener(new ConsoleErrorListener()) - var tree = parser.translationUnit() - var listener = new DNObjectiveCParserListener(cb, path) - try { - antlr4.tree.ParseTreeWalker.DEFAULT.walk(listener, tree) - } catch (e) { - cb(null, path, e) - } - } -} - -exports.DNObjectiveConverter = DNObjectiveConverter \ No newline at end of file diff --git a/package.json b/package.json index 30b6a39..815d25e 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,9 @@ "bin": { "codegen": "bin/codegen.js" }, + "engines": { + "node": ">=12.16" + }, "directories": { "lib": "lib", "test": "test" diff --git a/parser/objc/ObjectiveCLexer.g4 b/parser/objc/ObjectiveCLexer.g4 index c897d29..3e4525a 100644 --- a/parser/objc/ObjectiveCLexer.g4 +++ b/parser/objc/ObjectiveCLexer.g4 @@ -149,6 +149,9 @@ NULL_RESETTABLE: 'null_resettable'; NS_INLINE: 'NS_INLINE'; NS_ENUM: 'NS_ENUM'; NS_OPTIONS: 'NS_OPTIONS'; +NS_CLOSED_ENUM: 'NS_CLOSED_ENUM'; +NS_TYPED_EXTENSIBLE_ENUM: 'NS_TYPED_EXTENSIBLE_ENUM'; +NS_ERROR_ENUM: 'NS_ERROR_ENUM'; // Property attributes @@ -177,6 +180,7 @@ EXTERN_SUFFIX: [_A-Z]+ '_EXTERN' -> channel(IGNORED IOS_SUFFIX: [_A-Z]+ '_IOS(' ~')'+ ')' -> channel(IGNORED_MACROS); MAC_SUFFIX: [_A-Z]+ '_MAC(' ~')'+ ')' -> channel(IGNORED_MACROS); TVOS_PROHIBITED: '__TVOS_PROHIBITED' -> channel(IGNORED_MACROS); +NS_NOESCAPE: 'NS_NOESCAPE' -> channel(IGNORED_MACROS); // Identifier @@ -219,7 +223,7 @@ MUL: '*'; DIV: '/'; BITAND: '&'; BITOR: '|'; -BITXOR: '^'; +BITXOR: '^'; MOD: '%'; // Assignments @@ -305,6 +309,15 @@ DIRECTIVE_LT: '<' -> channel(DIRECTIVE_CHANNEL); DIRECTIVE_GT: '>' -> channel(DIRECTIVE_CHANNEL); DIRECTIVE_LE: '<=' -> channel(DIRECTIVE_CHANNEL); DIRECTIVE_GE: '>=' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_ADD: '+' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_SUB: '-' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_MUL: '*' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_DIV: '/' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_BITAND: '&' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_BITOR: '|' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_BITXOR: '^' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_MOD: '%' -> channel(DIRECTIVE_CHANNEL); +DIRECTIVE_DOT: '.' -> channel(DIRECTIVE_CHANNEL); DIRECTIVE_WS: [ \t]+ -> channel(HIDDEN), type(WS); DIRECTIVE_STRING: StringStart -> channel(DEFAULT_TOKEN_CHANNEL), mode(STRING_MODE); diff --git a/parser/objc/ObjectiveCLexer.js b/parser/objc/ObjectiveCLexer.js index ca7d16b..0c43378 100644 --- a/parser/objc/ObjectiveCLexer.js +++ b/parser/objc/ObjectiveCLexer.js @@ -5,7 +5,7 @@ var antlr4 = require('antlr4/index'); var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964", - "\u0002\u00e1\u09f3\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\u0004\u0002", + "\u0002\u00ee\u0a75\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\u0004\u0002", "\t\u0002\u0004\u0003\t\u0003\u0004\u0004\t\u0004\u0004\u0005\t\u0005", "\u0004\u0006\t\u0006\u0004\u0007\t\u0007\u0004\b\t\b\u0004\t\t\t\u0004", "\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e", @@ -68,276 +68,297 @@ var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964", "\u0102\t\u0102\u0004\u0103\t\u0103\u0004\u0104\t\u0104\u0004\u0105\t", "\u0105\u0004\u0106\t\u0106\u0004\u0107\t\u0107\u0004\u0108\t\u0108\u0004", "\u0109\t\u0109\u0004\u010a\t\u010a\u0004\u010b\t\u010b\u0004\u010c\t", - "\u010c\u0004\u010d\t\u010d\u0004\u010e\t\u010e\u0003\u0002\u0003\u0002", - "\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0003\u0003\u0003\u0003\u0003", - "\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0004", - "\u0003\u0004\u0003\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005", - "\u0003\u0005\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006", - "\u0003\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007", - "\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0003", - "\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003", - "\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\u000b\u0003", - "\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003", - "\f\u0003\f\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003", - "\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003", - "\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003", - "\u0010\u0003\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0003", + "\u010c\u0004\u010d\t\u010d\u0004\u010e\t\u010e\u0004\u010f\t\u010f\u0004", + "\u0110\t\u0110\u0004\u0111\t\u0111\u0004\u0112\t\u0112\u0004\u0113\t", + "\u0113\u0004\u0114\t\u0114\u0004\u0115\t\u0115\u0004\u0116\t\u0116\u0004", + "\u0117\t\u0117\u0004\u0118\t\u0118\u0004\u0119\t\u0119\u0004\u011a\t", + "\u011a\u0004\u011b\t\u011b\u0003\u0002\u0003\u0002\u0003\u0002\u0003", + "\u0002\u0003\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003", + "\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003", + "\u0004\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003", + "\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003", + "\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003", + "\u0007\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0003\b\u0003\b\u0003", + "\b\u0003\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003\n\u0003\n\u0003", + "\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\u000b\u0003\u000b\u0003\u000b", + "\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003\f\u0003", + "\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0003\u000e\u0003", + "\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000f\u0003", + "\u000f\u0003\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0003", + "\u0010\u0003\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0012\u0003", "\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003", - "\u0012\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003", - "\u0014\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0015\u0003\u0015\u0003", + "\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014\u0003", + "\u0014\u0003\u0014\u0003\u0014\u0003\u0015\u0003\u0015\u0003\u0015\u0003", "\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003\u0015\u0003", - "\u0015\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003", - "\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0017\u0003\u0017\u0003", - "\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003", - "\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0019\u0003", - "\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003", + "\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003", + "\u0016\u0003\u0016\u0003\u0016\u0003\u0017\u0003\u0017\u0003\u0017\u0003", + "\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003\u0018\u0003", + "\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0019\u0003\u0019\u0003", + "\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0003", "\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0003", - "\u001a\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003", - "\u001b\u0003\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003", - "\u001c\u0003\u001c\u0003\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0003", - "\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0003", - "\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003", - "\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003", - " \u0003 \u0003 \u0003 \u0003 \u0003 \u0003 \u0003 \u0003 \u0003!\u0003", - "!\u0003!\u0003!\u0003!\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003", - "\"\u0003\"\u0003\"\u0003\"\u0003#\u0003#\u0003#\u0003#\u0003#\u0003", - "#\u0003$\u0003$\u0003$\u0003$\u0003$\u0003$\u0003%\u0003%\u0003%\u0003", - "%\u0003%\u0003%\u0003%\u0003%\u0003%\u0003&\u0003&\u0003&\u0003&\u0003", - "&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003\'\u0003\'\u0003\'", - "\u0003\'\u0003\'\u0003(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003)\u0003", - ")\u0003)\u0003)\u0003)\u0003*\u0003*\u0003*\u0003*\u0003*\u0003*\u0003", - "+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003,\u0003,\u0003,\u0003", - ",\u0003,\u0003,\u0003-\u0003-\u0003-\u0003.\u0003.\u0003.\u0003.\u0003", - "/\u0003/\u0003/\u00030\u00030\u00030\u00030\u00030\u00030\u00031\u0003", - "1\u00031\u00031\u00032\u00032\u00032\u00033\u00033\u00033\u00033\u0003", - "3\u00034\u00034\u00034\u00034\u00034\u00034\u00034\u00035\u00035\u0003", - "5\u00035\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u0003", - "6\u00037\u00037\u00037\u00037\u00038\u00038\u00038\u00038\u00038\u0003", - "9\u00039\u00039\u00039\u00039\u00039\u0003:\u0003:\u0003:\u0003:\u0003", + "\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003", + "\u001b\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003", + "\u001c\u0003\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001d\u0003", + "\u001d\u0003\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0003\u001e\u0003", + "\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001f\u0003", + "\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003 \u0003", + " \u0003 \u0003 \u0003 \u0003 \u0003 \u0003 \u0003 \u0003!\u0003!\u0003", + "!\u0003!\u0003!\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003", + "\"\u0003\"\u0003\"\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003$", + "\u0003$\u0003$\u0003$\u0003$\u0003$\u0003%\u0003%\u0003%\u0003%\u0003", + "%\u0003%\u0003%\u0003%\u0003%\u0003&\u0003&\u0003&\u0003&\u0003&\u0003", + "&\u0003&\u0003&\u0003&\u0003&\u0003&\u0003\'\u0003\'\u0003\'\u0003\'", + "\u0003\'\u0003(\u0003(\u0003(\u0003(\u0003(\u0003(\u0003)\u0003)\u0003", + ")\u0003)\u0003)\u0003*\u0003*\u0003*\u0003*\u0003*\u0003*\u0003+\u0003", + "+\u0003+\u0003+\u0003+\u0003+\u0003+\u0003,\u0003,\u0003,\u0003,\u0003", + ",\u0003,\u0003-\u0003-\u0003-\u0003.\u0003.\u0003.\u0003.\u0003/\u0003", + "/\u0003/\u00030\u00030\u00030\u00030\u00030\u00030\u00031\u00031\u0003", + "1\u00031\u00032\u00032\u00032\u00033\u00033\u00033\u00033\u00033\u0003", + "4\u00034\u00034\u00034\u00034\u00034\u00034\u00035\u00035\u00035\u0003", + "5\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u0003", + "7\u00037\u00037\u00037\u00038\u00038\u00038\u00038\u00038\u00039\u0003", + "9\u00039\u00039\u00039\u00039\u0003:\u0003:\u0003:\u0003:\u0003;\u0003", ";\u0003;\u0003;\u0003;\u0003;\u0003;\u0003;\u0003;\u0003;\u0003;\u0003", - ";\u0003;\u0003;\u0003;\u0003;\u0003;\u0003;\u0003<\u0003<\u0003<\u0003", - "<\u0003<\u0003<\u0003<\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003", - "=\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003", - "?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003@\u0003@\u0003", - "@\u0003@\u0003@\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003", - "A\u0003A\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003", - "B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003C\u0003C\u0003", - "C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003D\u0003", + ";\u0003;\u0003;\u0003;\u0003;\u0003;\u0003<\u0003<\u0003<\u0003<\u0003", + "<\u0003<\u0003<\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003", + ">\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003?\u0003", + "?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003@\u0003@\u0003@\u0003", + "@\u0003@\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003", + "A\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003", + "B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003B\u0003C\u0003C\u0003C\u0003", + "C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003D\u0003D\u0003", "D\u0003D\u0003D\u0003D\u0003D\u0003D\u0003D\u0003D\u0003D\u0003D\u0003", - "D\u0003D\u0003D\u0005D\u03df\nD\u0003E\u0003E\u0003E\u0003E\u0003E\u0003", - "E\u0003E\u0003E\u0003E\u0003F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003", - "F\u0003F\u0003F\u0003F\u0003G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003", - "G\u0003G\u0003G\u0003G\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003", - "H\u0003H\u0003H\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003", - "I\u0003I\u0003I\u0003J\u0003J\u0003J\u0003J\u0003J\u0003J\u0003J\u0003", - "J\u0003J\u0003J\u0003J\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003", - "K\u0003K\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003", - "L\u0003L\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003", - "M\u0003M\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003", - "N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003O\u0003O\u0003O\u0003O\u0003", - "O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003P\u0003P\u0003", - "P\u0003P\u0003P\u0003P\u0003P\u0003Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003", - "R\u0003R\u0003R\u0003R\u0003R\u0003R\u0003R\u0003S\u0003S\u0003S\u0003", - "S\u0003S\u0003S\u0003S\u0003S\u0003S\u0003S\u0003T\u0003T\u0003T\u0003", - "T\u0003T\u0003T\u0003T\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003", - "U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003V\u0003V\u0003", + "D\u0003D\u0005D\u03f9\nD\u0003E\u0003E\u0003E\u0003E\u0003E\u0003E\u0003", + "E\u0003E\u0003E\u0003F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003", + "F\u0003F\u0003F\u0003G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003", + "G\u0003G\u0003G\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003H\u0003", + "H\u0003H\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003", + "I\u0003I\u0003J\u0003J\u0003J\u0003J\u0003J\u0003J\u0003J\u0003J\u0003", + "J\u0003J\u0003J\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003", + "K\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003", + "L\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003", + "M\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003", + "N\u0003N\u0003N\u0003N\u0003N\u0003O\u0003O\u0003O\u0003O\u0003O\u0003", + "O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003P\u0003P\u0003P\u0003", + "P\u0003P\u0003P\u0003P\u0003Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003R\u0003", + "R\u0003R\u0003R\u0003R\u0003R\u0003R\u0003S\u0003S\u0003S\u0003S\u0003", + "S\u0003S\u0003S\u0003S\u0003S\u0003S\u0003T\u0003T\u0003T\u0003T\u0003", + "T\u0003T\u0003T\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003", + "U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0003V\u0003V\u0003V\u0003", "V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003V\u0003", - "V\u0003V\u0003V\u0003V\u0003W\u0003W\u0003W\u0003W\u0003W\u0003W\u0003", - "W\u0003W\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003", - "X\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003", - "Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Z\u0003", + "V\u0003V\u0003V\u0003W\u0003W\u0003W\u0003W\u0003W\u0003W\u0003W\u0003", + "W\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003X\u0003", + "Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003", + "Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Z\u0003Z\u0003", "Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003", - "Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003[\u0003[\u0003[\u0003", - "[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003\\\u0003", + "Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003[\u0003[\u0003[\u0003[\u0003", + "[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003\\\u0003\\\u0003", "\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003", - "\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003]\u0003]\u0003]\u0003", - "]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003", - "^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003_\u0003", - "_\u0003_\u0003_\u0003_\u0003_\u0003_\u0003_\u0003_\u0003`\u0003`\u0003", + "\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003]\u0003]\u0003]\u0003]\u0003", + "]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003]\u0003^\u0003", + "^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003_\u0003_\u0003", + "_\u0003_\u0003_\u0003_\u0003_\u0003_\u0003_\u0003`\u0003`\u0003`\u0003", "`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003", "`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003", - "`\u0003`\u0005`\u051c\n`\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003", + "`\u0005`\u0536\n`\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003", "a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003", - "a\u0003a\u0003a\u0003a\u0003b\u0003b\u0003b\u0003b\u0003b\u0003b\u0003", - "b\u0003b\u0003b\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003", + "a\u0003a\u0003a\u0003b\u0003b\u0003b\u0003b\u0003b\u0003b\u0003b\u0003", + "b\u0003b\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003c\u0003d\u0003", "d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003", "d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003", "d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003", "d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003", - "d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003", - "d\u0005d\u0575\nd\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003", + "d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0003d\u0005", + "d\u058f\nd\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003", "e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003", - "e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0005", - "e\u0592\ne\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003", + "e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0005e\u05ac", + "\ne\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003", "f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003", - "f\u0003f\u0003f\u0003f\u0003f\u0003f\u0005f\u05ac\nf\u0003g\u0003g\u0003", + "f\u0003f\u0003f\u0003f\u0003f\u0005f\u05c6\nf\u0003g\u0003g\u0003g\u0003", "g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003g\u0003", - "g\u0003g\u0003g\u0003g\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003", - "h\u0003h\u0003h\u0003h\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003", - "i\u0003i\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003", - "j\u0003j\u0003j\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003", - "l\u0003l\u0003l\u0003l\u0003l\u0003m\u0003m\u0003m\u0003m\u0003m\u0003", - "m\u0003m\u0003n\u0003n\u0003n\u0003n\u0003n\u0003n\u0003n\u0003o\u0003", - "o\u0003o\u0003o\u0003o\u0003o\u0003o\u0003p\u0003p\u0003p\u0003p\u0003", + "g\u0003g\u0003g\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003", + "h\u0003h\u0003h\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003", + "i\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003", + "j\u0003j\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003", + "k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003k\u0003l\u0003l\u0003l\u0003", + "l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003", + "l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003", + "l\u0003l\u0003m\u0003m\u0003m\u0003m\u0003m\u0003m\u0003m\u0003m\u0003", + "m\u0003m\u0003m\u0003m\u0003m\u0003m\u0003n\u0003n\u0003n\u0003n\u0003", + "n\u0003n\u0003n\u0003o\u0003o\u0003o\u0003o\u0003o\u0003p\u0003p\u0003", "p\u0003p\u0003p\u0003p\u0003p\u0003q\u0003q\u0003q\u0003q\u0003q\u0003", - "q\u0003q\u0003q\u0003q\u0003q\u0003r\u0003r\u0003r\u0003r\u0003r\u0003", - "s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003", + "q\u0003q\u0003r\u0003r\u0003r\u0003r\u0003r\u0003r\u0003r\u0003s\u0003", "s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003s\u0003t\u0003t\u0003", - "t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003u\u0003u\u0003u\u0003", - "u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003", - "u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003v\u0003v\u0003v\u0003v\u0003", + "t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003u\u0003u\u0003", + "u\u0003u\u0003u\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003", "v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003", - "w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003", - "w\u0003w\u0003w\u0003w\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003", + "v\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003w\u0003", "x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003", - "x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0007x\u0677", - "\nx\fx\u000ex\u067a\u000bx\u0003x\u0003x\u0003y\u0003y\u0003y\u0003", + "x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003y\u0003", "y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003", - "y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0007", - "y\u0695\ny\fy\u000ey\u0698\u000by\u0003y\u0003y\u0003z\u0006z\u069d", - "\nz\rz\u000ez\u069e\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0003", - "z\u0003z\u0003z\u0003z\u0003{\u0006{\u06ac\n{\r{\u000e{\u06ad\u0003", - "{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0006{\u06b7\n{\r{\u000e", - "{\u06b8\u0003{\u0003{\u0003{\u0003{\u0003|\u0006|\u06c0\n|\r|\u000e", - "|\u06c1\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0006|\u06cb", - "\n|\r|\u000e|\u06cc\u0003|\u0003|\u0003|\u0003|\u0003}\u0003}\u0003", - "}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003", - "}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003~\u0003~\u0007", - "~\u06e9\n~\f~\u000e~\u06ec\u000b~\u0003\u007f\u0003\u007f\u0003\u0080", - "\u0003\u0080\u0003\u0081\u0003\u0081\u0003\u0082\u0003\u0082\u0003\u0083", - "\u0003\u0083\u0003\u0084\u0003\u0084\u0003\u0085\u0003\u0085\u0003\u0086", - "\u0003\u0086\u0003\u0087\u0003\u0087\u0003\u0088\u0003\u0088\u0003\u0088", - "\u0003\u0089\u0003\u0089\u0003\u008a\u0003\u008a\u0003\u008b\u0003\u008b", - "\u0003\u008c\u0003\u008c\u0003\u008d\u0003\u008d\u0003\u008e\u0003\u008e", - "\u0003\u008f\u0003\u008f\u0003\u0090\u0003\u0090\u0003\u0091\u0003\u0091", - "\u0003\u0091\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0093\u0003\u0093", - "\u0003\u0093\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0095\u0003\u0095", - "\u0003\u0095\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0097\u0003\u0097", - "\u0003\u0097\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0099\u0003\u0099", - "\u0003\u009a\u0003\u009a\u0003\u009b\u0003\u009b\u0003\u009c\u0003\u009c", - "\u0003\u009d\u0003\u009d\u0003\u009e\u0003\u009e\u0003\u009f\u0003\u009f", - "\u0003\u00a0\u0003\u00a0\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a2", - "\u0003\u00a2\u0003\u00a2\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a4", - "\u0003\u00a4\u0003\u00a4\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a6", - "\u0003\u00a6\u0003\u00a6\u0003\u00a7\u0003\u00a7\u0003\u00a7\u0003\u00a8", - "\u0003\u00a8\u0003\u00a8\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00a9", - "\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00ab\u0003\u00ab", - "\u0003\u00ab\u0003\u00ab\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0005\u00ac", - "\u0762\n\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ad\u0003\u00ad\u0003", - "\u00ad\u0003\u00ad\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0006\u00ae\u076d", - "\n\u00ae\r\u00ae\u000e\u00ae\u076e\u0003\u00ae\u0005\u00ae\u0772\n\u00ae", - "\u0003\u00af\u0003\u00af\u0006\u00af\u0776\n\u00af\r\u00af\u000e\u00af", - "\u0777\u0003\u00af\u0005\u00af\u077b\n\u00af\u0003\u00b0\u0003\u00b0", - "\u0003\u00b0\u0006\u00b0\u0780\n\u00b0\r\u00b0\u000e\u00b0\u0781\u0003", - "\u00b0\u0005\u00b0\u0785\n\u00b0\u0003\u00b1\u0006\u00b1\u0788\n\u00b1", - "\r\u00b1\u000e\u00b1\u0789\u0003\u00b1\u0005\u00b1\u078d\n\u00b1\u0003", - "\u00b2\u0006\u00b2\u0790\n\u00b2\r\u00b2\u000e\u00b2\u0791\u0003\u00b2", - "\u0003\u00b2\u0007\u00b2\u0796\n\u00b2\f\u00b2\u000e\u00b2\u0799\u000b", - "\u00b2\u0003\u00b2\u0003\u00b2\u0006\u00b2\u079d\n\u00b2\r\u00b2\u000e", - "\u00b2\u079e\u0005\u00b2\u07a1\n\u00b2\u0003\u00b2\u0005\u00b2\u07a4", - "\n\u00b2\u0003\u00b2\u0005\u00b2\u07a7\n\u00b2\u0003\u00b2\u0006\u00b2", - "\u07aa\n\u00b2\r\u00b2\u000e\u00b2\u07ab\u0003\u00b2\u0003\u00b2\u0005", - "\u00b2\u07b0\n\u00b2\u0003\u00b2\u0005\u00b2\u07b3\n\u00b2\u0005\u00b2", - "\u07b5\n\u00b2\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0005", - "\u00b3\u07bb\n\u00b3\u0003\u00b4\u0006\u00b4\u07be\n\u00b4\r\u00b4\u000e", - "\u00b4\u07bf\u0003\u00b4\u0003\u00b4\u0003\u00b5\u0003\u00b5\u0003\u00b5", - "\u0003\u00b5\u0007\u00b5\u07c8\n\u00b5\f\u00b5\u000e\u00b5\u07cb\u000b", - "\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003", - "\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0007\u00b6\u07d6\n\u00b6", - "\f\u00b6\u000e\u00b6\u07d9\u000b\u00b6\u0003\u00b6\u0003\u00b6\u0003", - "\u00b7\u0003\u00b7\u0003\u00b7\u0003\u00b7\u0003\u00b8\u0003\u00b8\u0003", - "\u00b8\u0003\u00b8\u0003\u00b8\u0003\u00b9\u0003\u00b9\u0005\u00b9\u07e8", - "\n\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00ba", - "\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00bb\u0003\u00bb", - "\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bc\u0006\u00bc\u07f9\n", - "\u00bc\r\u00bc\u000e\u00bc\u07fa\u0003\u00bc\u0003\u00bc\u0003\u00bd", - "\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd", - "\u0003\u00bd\u0006\u00bd\u0807\n\u00bd\r\u00bd\u000e\u00bd\u0808\u0003", - "\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00be\u0003\u00be\u0003\u00be\u0003", - "\u00be\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be\u0006", - "\u00be\u0817\n\u00be\r\u00be\u000e\u00be\u0818\u0003\u00be\u0003\u00be", - "\u0003\u00be\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf", - "\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00c0", - "\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0", - "\u0003\u00c0\u0006\u00c0\u0830\n\u00c0\r\u00c0\u000e\u00c0\u0831\u0003", - "\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003", - "\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003", - "\u00c1\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003", + "y\u0003y\u0003y\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0003", + "z\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0003{\u0003{\u0003{\u0003", + "{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003", + "{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003", + "{\u0003{\u0007{\u06c7\n{\f{\u000e{\u06ca\u000b{\u0003{\u0003{\u0003", + "|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003", + "|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003", + "|\u0003|\u0003|\u0007|\u06e5\n|\f|\u000e|\u06e8\u000b|\u0003|\u0003", + "|\u0003}\u0006}\u06ed\n}\r}\u000e}\u06ee\u0003}\u0003}\u0003}\u0003", + "}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003~\u0006~\u06fc\n~\r", + "~\u000e~\u06fd\u0003~\u0003~\u0003~\u0003~\u0003~\u0003~\u0003~\u0006", + "~\u0707\n~\r~\u000e~\u0708\u0003~\u0003~\u0003~\u0003~\u0003\u007f\u0006", + "\u007f\u0710\n\u007f\r\u007f\u000e\u007f\u0711\u0003\u007f\u0003\u007f", + "\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0006\u007f", + "\u071b\n\u007f\r\u007f\u000e\u007f\u071c\u0003\u007f\u0003\u007f\u0003", + "\u007f\u0003\u007f\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003", + "\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003", + "\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003", + "\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0081\u0003\u0081\u0003", + "\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003", + "\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003", + "\u0082\u0003\u0082\u0007\u0082\u0747\n\u0082\f\u0082\u000e\u0082\u074a", + "\u000b\u0082\u0003\u0083\u0003\u0083\u0003\u0084\u0003\u0084\u0003\u0085", + "\u0003\u0085\u0003\u0086\u0003\u0086\u0003\u0087\u0003\u0087\u0003\u0088", + "\u0003\u0088\u0003\u0089\u0003\u0089\u0003\u008a\u0003\u008a\u0003\u008b", + "\u0003\u008b\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008d\u0003\u008d", + "\u0003\u008e\u0003\u008e\u0003\u008f\u0003\u008f\u0003\u0090\u0003\u0090", + "\u0003\u0091\u0003\u0091\u0003\u0092\u0003\u0092\u0003\u0093\u0003\u0093", + "\u0003\u0094\u0003\u0094\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0096", + "\u0003\u0096\u0003\u0096\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0098", + "\u0003\u0098\u0003\u0098\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u009a", + "\u0003\u009a\u0003\u009a\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009c", + "\u0003\u009c\u0003\u009c\u0003\u009d\u0003\u009d\u0003\u009e\u0003\u009e", + "\u0003\u009f\u0003\u009f\u0003\u00a0\u0003\u00a0\u0003\u00a1\u0003\u00a1", + "\u0003\u00a2\u0003\u00a2\u0003\u00a3\u0003\u00a3\u0003\u00a4\u0003\u00a4", + "\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a6\u0003\u00a6\u0003\u00a6", + "\u0003\u00a7\u0003\u00a7\u0003\u00a7\u0003\u00a8\u0003\u00a8\u0003\u00a8", + "\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00aa\u0003\u00aa\u0003\u00aa", + "\u0003\u00ab\u0003\u00ab\u0003\u00ab\u0003\u00ac\u0003\u00ac\u0003\u00ac", + "\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ae\u0003\u00ae", + "\u0003\u00ae\u0003\u00ae\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00af", + "\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0005\u00b0\u07c0\n\u00b0\u0003", + "\u00b0\u0003\u00b0\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003", + "\u00b2\u0003\u00b2\u0003\u00b2\u0006\u00b2\u07cb\n\u00b2\r\u00b2\u000e", + "\u00b2\u07cc\u0003\u00b2\u0005\u00b2\u07d0\n\u00b2\u0003\u00b3\u0003", + "\u00b3\u0006\u00b3\u07d4\n\u00b3\r\u00b3\u000e\u00b3\u07d5\u0003\u00b3", + "\u0005\u00b3\u07d9\n\u00b3\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0006", + "\u00b4\u07de\n\u00b4\r\u00b4\u000e\u00b4\u07df\u0003\u00b4\u0005\u00b4", + "\u07e3\n\u00b4\u0003\u00b5\u0006\u00b5\u07e6\n\u00b5\r\u00b5\u000e\u00b5", + "\u07e7\u0003\u00b5\u0005\u00b5\u07eb\n\u00b5\u0003\u00b6\u0006\u00b6", + "\u07ee\n\u00b6\r\u00b6\u000e\u00b6\u07ef\u0003\u00b6\u0003\u00b6\u0007", + "\u00b6\u07f4\n\u00b6\f\u00b6\u000e\u00b6\u07f7\u000b\u00b6\u0003\u00b6", + "\u0003\u00b6\u0006\u00b6\u07fb\n\u00b6\r\u00b6\u000e\u00b6\u07fc\u0005", + "\u00b6\u07ff\n\u00b6\u0003\u00b6\u0005\u00b6\u0802\n\u00b6\u0003\u00b6", + "\u0005\u00b6\u0805\n\u00b6\u0003\u00b6\u0006\u00b6\u0808\n\u00b6\r\u00b6", + "\u000e\u00b6\u0809\u0003\u00b6\u0003\u00b6\u0005\u00b6\u080e\n\u00b6", + "\u0003\u00b6\u0005\u00b6\u0811\n\u00b6\u0005\u00b6\u0813\n\u00b6\u0003", + "\u00b7\u0003\u00b7\u0003\u00b7\u0003\u00b7\u0005\u00b7\u0819\n\u00b7", + "\u0003\u00b8\u0006\u00b8\u081c\n\u00b8\r\u00b8\u000e\u00b8\u081d\u0003", + "\u00b8\u0003\u00b8\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0007", + "\u00b9\u0826\n\u00b9\f\u00b9\u000e\u00b9\u0829\u000b\u00b9\u0003\u00b9", + "\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00ba\u0003\u00ba", + "\u0003\u00ba\u0003\u00ba\u0007\u00ba\u0834\n\u00ba\f\u00ba\u000e\u00ba", + "\u0837\u000b\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00bb\u0003\u00bb\u0003", + "\u00bb\u0003\u00bb\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003", + "\u00bc\u0003\u00bd\u0003\u00bd\u0005\u00bd\u0846\n\u00bd\u0003\u00bd", + "\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00be\u0003\u00be\u0003\u00be", + "\u0003\u00be\u0003\u00be\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf", + "\u0003\u00bf\u0003\u00c0\u0006\u00c0\u0857\n\u00c0\r\u00c0\u000e\u00c0", + "\u0858\u0003\u00c0\u0003\u00c0\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003", + "\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0006\u00c1\u0865", + "\n\u00c1\r\u00c1\u000e\u00c1\u0866\u0003\u00c1\u0003\u00c1\u0003\u00c1", + "\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2", + "\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0006\u00c2\u0875\n\u00c2\r\u00c2", + "\u000e\u00c2\u0876\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c3\u0003", "\u00c3\u0003\u00c3\u0003\u00c3\u0003\u00c3\u0003\u00c3\u0003\u00c3\u0003", - "\u00c3\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003", - "\u00c4\u0003\u00c4\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003", - "\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c6\u0003\u00c6\u0003", - "\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003", - "\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003", - "\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003", - "\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c9\u0003", - "\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003", - "\u00ca\u0003\u00ca\u0003\u00ca\u0003\u00ca\u0003\u00ca\u0003\u00ca\u0003", - "\u00ca\u0003\u00ca\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003", - "\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cc\u0003", - "\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003", - "\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cd\u0003\u00cd\u0003", - "\u00cd\u0003\u00cd\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003", - "\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00d0\u0003\u00d0\u0003", - "\u00d0\u0003\u00d0\u0003\u00d0\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003", - "\u00d1\u0003\u00d1\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0003", - "\u00d2\u0003\u00d3\u0003\u00d3\u0003\u00d3\u0003\u00d3\u0003\u00d3\u0003", - "\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d5\u0003\u00d5\u0003", - "\u00d5\u0003\u00d5\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003", - "\u00d6\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003", - "\u00d8\u0006\u00d8\u08cb\n\u00d8\r\u00d8\u000e\u00d8\u08cc\u0003\u00d8", - "\u0003\u00d8\u0003\u00d8\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9", - "\u0003\u00d9\u0003\u00da\u0003\u00da\u0007\u00da\u08d9\n\u00da\f\u00da", - "\u000e\u00da\u08dc\u000b\u00da\u0003\u00da\u0003\u00da\u0003\u00db\u0006", - "\u00db\u08e1\n\u00db\r\u00db\u000e\u00db\u08e2\u0003\u00db\u0003\u00db", - "\u0003\u00dc\u0006\u00dc\u08e8\n\u00dc\r\u00dc\u000e\u00dc\u08e9\u0003", - "\u00dc\u0003\u00dc\u0007\u00dc\u08ee\n\u00dc\f\u00dc\u000e\u00dc\u08f1", - "\u000b\u00dc\u0003\u00dc\u0003\u00dc\u0006\u00dc\u08f5\n\u00dc\r\u00dc", - "\u000e\u00dc\u08f6\u0005\u00dc\u08f9\n\u00dc\u0003\u00dc\u0003\u00dc", - "\u0003\u00dd\u0005\u00dd\u08fe\n\u00dd\u0003\u00dd\u0003\u00dd\u0003", - "\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00de\u0003\u00de\u0003\u00de\u0003", - "\u00de\u0007\u00de\u0909\n\u00de\f\u00de\u000e\u00de\u090c\u000b\u00de", - "\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00df", - "\u0003\u00df\u0003\u00df\u0003\u00df\u0007\u00df\u0917\n\u00df\f\u00df", - "\u000e\u00df\u091a\u000b\u00df\u0003\u00df\u0003\u00df\u0003\u00e0\u0003", - "\u00e0\u0005\u00e0\u0920\n\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0", - "\u0003\u00e0\u0003\u00e1\u0003\u00e1\u0007\u00e1\u0928\n\u00e1\f\u00e1", - "\u000e\u00e1\u092b\u000b\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0007", - "\u00e1\u0930\n\u00e1\f\u00e1\u000e\u00e1\u0933\u000b\u00e1\u0003\u00e1", - "\u0005\u00e1\u0936\n\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0003", - "\u00e1\u0003\u00e2\u0003\u00e2\u0005\u00e2\u093e\n\u00e2\u0003\u00e2", - "\u0003\u00e2\u0003\u00e2\u0003\u00e2\u0003\u00e3\u0003\u00e3\u0003\u00e3", - "\u0003\u00e3\u0003\u00e3\u0003\u00e3\u0003\u00e4\u0005\u00e4\u094b\n", - "\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003", - "\u00e4\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0007\u00e5\u0957", - "\n\u00e5\f\u00e5\u000e\u00e5\u095a\u000b\u00e5\u0003\u00e5\u0003\u00e5", - "\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e6\u0003\u00e6", - "\u0003\u00e6\u0003\u00e6\u0007\u00e6\u0966\n\u00e6\f\u00e6\u000e\u00e6", - "\u0969\u000b\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e7\u0003", - "\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e8\u0006\u00e8\u0974", - "\n\u00e8\r\u00e8\u000e\u00e8\u0975\u0003\u00e8\u0003\u00e8\u0003\u00e9", - "\u0003\u00e9\u0005\u00e9\u097c\n\u00e9\u0003\u00ea\u0003\u00ea\u0003", - "\u00ea\u0003\u00ea\u0003\u00ea\u0005\u00ea\u0983\n\u00ea\u0003\u00eb", - "\u0003\u00eb\u0005\u00eb\u0987\n\u00eb\u0003\u00eb\u0005\u00eb\u098a", - "\n\u00eb\u0003\u00ec\u0003\u00ec\u0005\u00ec\u098e\n\u00ec\u0003\u00ec", - "\u0006\u00ec\u0991\n\u00ec\r\u00ec\u000e\u00ec\u0992\u0003\u00ed\u0003", - "\u00ed\u0003\u00ee\u0003\u00ee\u0003\u00ef\u0003\u00ef\u0007\u00ef\u099b", - "\n\u00ef\f\u00ef\u000e\u00ef\u099e\u000b\u00ef\u0005\u00ef\u09a0\n\u00ef", + "\u00c3\u0003\u00c3\u0003\u00c3\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003", + "\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0006\u00c4\u088e", + "\n\u00c4\r\u00c4\u000e\u00c4\u088f\u0003\u00c4\u0003\u00c4\u0003\u00c4", + "\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5", + "\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c6\u0003\u00c6", + "\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c7\u0003\u00c7\u0003\u00c7", + "\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c8\u0003\u00c8", + "\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c9", + "\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9", + "\u0003\u00c9\u0003\u00ca\u0003\u00ca\u0003\u00ca\u0003\u00ca\u0003\u00ca", + "\u0003\u00ca\u0003\u00ca\u0003\u00ca\u0003\u00cb\u0003\u00cb\u0003\u00cb", + "\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb", + "\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc", + "\u0003\u00cc\u0003\u00cc\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003\u00cd", + "\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003\u00ce\u0003\u00ce\u0003\u00ce", + "\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00cf", + "\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf", + "\u0003\u00cf\u0003\u00cf\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0003\u00d0", + "\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0003\u00d0", + "\u0003\u00d0\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d2", + "\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0003\u00d3\u0003\u00d3\u0003\u00d3", + "\u0003\u00d3\u0003\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d4\u0003\u00d4", + "\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d6", + "\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d7\u0003\u00d7", + "\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d8\u0003\u00d8\u0003\u00d8", + "\u0003\u00d8\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00da", + "\u0003\u00da\u0003\u00da\u0003\u00da\u0003\u00da\u0003\u00db\u0003\u00db", + "\u0003\u00db\u0003\u00db\u0003\u00db\u0003\u00dc\u0003\u00dc\u0003\u00dc", + "\u0003\u00dc\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00de", + "\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00df\u0003\u00df\u0003\u00df", + "\u0003\u00df\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e1", + "\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e2\u0003\u00e2\u0003\u00e2", + "\u0003\u00e2\u0003\u00e3\u0003\u00e3\u0003\u00e3\u0003\u00e3\u0003\u00e4", + "\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e5\u0006\u00e5\u094d\n", + "\u00e5\r\u00e5\u000e\u00e5\u094e\u0003\u00e5\u0003\u00e5\u0003\u00e5", + "\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e7", + "\u0003\u00e7\u0007\u00e7\u095b\n\u00e7\f\u00e7\u000e\u00e7\u095e\u000b", + "\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e8\u0006\u00e8\u0963\n\u00e8", + "\r\u00e8\u000e\u00e8\u0964\u0003\u00e8\u0003\u00e8\u0003\u00e9\u0006", + "\u00e9\u096a\n\u00e9\r\u00e9\u000e\u00e9\u096b\u0003\u00e9\u0003\u00e9", + "\u0007\u00e9\u0970\n\u00e9\f\u00e9\u000e\u00e9\u0973\u000b\u00e9\u0003", + "\u00e9\u0003\u00e9\u0006\u00e9\u0977\n\u00e9\r\u00e9\u000e\u00e9\u0978", + "\u0005\u00e9\u097b\n\u00e9\u0003\u00e9\u0003\u00e9\u0003\u00ea\u0005", + "\u00ea\u0980\n\u00ea\u0003\u00ea\u0003\u00ea\u0003\u00ea\u0003\u00ea", + "\u0003\u00ea\u0003\u00eb\u0003\u00eb\u0003\u00eb\u0003\u00eb\u0007\u00eb", + "\u098b\n\u00eb\f\u00eb\u000e\u00eb\u098e\u000b\u00eb\u0003\u00eb\u0003", + "\u00eb\u0003\u00eb\u0003\u00eb\u0003\u00eb\u0003\u00ec\u0003\u00ec\u0003", + "\u00ec\u0003\u00ec\u0007\u00ec\u0999\n\u00ec\f\u00ec\u000e\u00ec\u099c", + "\u000b\u00ec\u0003\u00ec\u0003\u00ec\u0003\u00ed\u0003\u00ed\u0005\u00ed", + "\u09a2\n\u00ed\u0003\u00ed\u0003\u00ed\u0003\u00ed\u0003\u00ed\u0003", + "\u00ee\u0003\u00ee\u0007\u00ee\u09aa\n\u00ee\f\u00ee\u000e\u00ee\u09ad", + "\u000b\u00ee\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0007\u00ee\u09b2\n", + "\u00ee\f\u00ee\u000e\u00ee\u09b5\u000b\u00ee\u0003\u00ee\u0005\u00ee", + "\u09b8\n\u00ee\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0003", + "\u00ef\u0003\u00ef\u0005\u00ef\u09c0\n\u00ef\u0003\u00ef\u0003\u00ef", "\u0003\u00ef\u0003\u00ef\u0003\u00f0\u0003\u00f0\u0003\u00f0\u0003\u00f0", - "\u0005\u00f0\u09a8\n\u00f0\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0003", - "\u00f1\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0005", - "\u00f1\u09b3\n\u00f1\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f2", - "\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f3\u0003\u00f3\u0003\u00f4", - "\u0003\u00f4\u0003\u00f5\u0003\u00f5\u0003\u00f6\u0003\u00f6\u0003\u00f7", - "\u0003\u00f7\u0003\u00f8\u0003\u00f8\u0003\u00f9\u0003\u00f9\u0003\u00fa", - "\u0003\u00fa\u0003\u00fb\u0003\u00fb\u0003\u00fc\u0003\u00fc\u0003\u00fd", - "\u0003\u00fd\u0003\u00fe\u0003\u00fe\u0003\u00ff\u0003\u00ff\u0003\u0100", - "\u0003\u0100\u0003\u0101\u0003\u0101\u0003\u0102\u0003\u0102\u0003\u0103", - "\u0003\u0103\u0003\u0104\u0003\u0104\u0003\u0105\u0003\u0105\u0003\u0106", - "\u0003\u0106\u0003\u0107\u0003\u0107\u0003\u0108\u0003\u0108\u0003\u0109", - "\u0003\u0109\u0003\u010a\u0003\u010a\u0003\u010b\u0003\u010b\u0003\u010c", - "\u0003\u010c\u0003\u010d\u0003\u010d\u0003\u010e\u0003\u010e\u0005\u07c9", - "\u090a\u0958\u0002\u010f\u0007\u0003\t\u0004\u000b\u0005\r\u0006\u000f", + "\u0003\u00f0\u0003\u00f0\u0003\u00f1\u0005\u00f1\u09cd\n\u00f1\u0003", + "\u00f1\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0003\u00f1\u0003", + "\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0007\u00f2\u09d9\n\u00f2", + "\f\u00f2\u000e\u00f2\u09dc\u000b\u00f2\u0003\u00f2\u0003\u00f2\u0003", + "\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f3\u0003\u00f3\u0003", + "\u00f3\u0003\u00f3\u0007\u00f3\u09e8\n\u00f3\f\u00f3\u000e\u00f3\u09eb", + "\u000b\u00f3\u0003\u00f3\u0003\u00f3\u0003\u00f3\u0003\u00f4\u0003\u00f4", + "\u0003\u00f4\u0003\u00f4\u0003\u00f4\u0003\u00f5\u0006\u00f5\u09f6\n", + "\u00f5\r\u00f5\u000e\u00f5\u09f7\u0003\u00f5\u0003\u00f5\u0003\u00f6", + "\u0003\u00f6\u0005\u00f6\u09fe\n\u00f6\u0003\u00f7\u0003\u00f7\u0003", + "\u00f7\u0003\u00f7\u0003\u00f7\u0005\u00f7\u0a05\n\u00f7\u0003\u00f8", + "\u0003\u00f8\u0005\u00f8\u0a09\n\u00f8\u0003\u00f8\u0005\u00f8\u0a0c", + "\n\u00f8\u0003\u00f9\u0003\u00f9\u0005\u00f9\u0a10\n\u00f9\u0003\u00f9", + "\u0006\u00f9\u0a13\n\u00f9\r\u00f9\u000e\u00f9\u0a14\u0003\u00fa\u0003", + "\u00fa\u0003\u00fb\u0003\u00fb\u0003\u00fc\u0003\u00fc\u0007\u00fc\u0a1d", + "\n\u00fc\f\u00fc\u000e\u00fc\u0a20\u000b\u00fc\u0005\u00fc\u0a22\n\u00fc", + "\u0003\u00fc\u0003\u00fc\u0003\u00fd\u0003\u00fd\u0003\u00fd\u0003\u00fd", + "\u0005\u00fd\u0a2a\n\u00fd\u0003\u00fe\u0003\u00fe\u0003\u00fe\u0003", + "\u00fe\u0003\u00fe\u0003\u00fe\u0003\u00fe\u0003\u00fe\u0003\u00fe\u0005", + "\u00fe\u0a35\n\u00fe\u0003\u00ff\u0003\u00ff\u0003\u00ff\u0003\u00ff", + "\u0003\u00ff\u0003\u00ff\u0003\u00ff\u0003\u0100\u0003\u0100\u0003\u0101", + "\u0003\u0101\u0003\u0102\u0003\u0102\u0003\u0103\u0003\u0103\u0003\u0104", + "\u0003\u0104\u0003\u0105\u0003\u0105\u0003\u0106\u0003\u0106\u0003\u0107", + "\u0003\u0107\u0003\u0108\u0003\u0108\u0003\u0109\u0003\u0109\u0003\u010a", + "\u0003\u010a\u0003\u010b\u0003\u010b\u0003\u010c\u0003\u010c\u0003\u010d", + "\u0003\u010d\u0003\u010e\u0003\u010e\u0003\u010f\u0003\u010f\u0003\u0110", + "\u0003\u0110\u0003\u0111\u0003\u0111\u0003\u0112\u0003\u0112\u0003\u0113", + "\u0003\u0113\u0003\u0114\u0003\u0114\u0003\u0115\u0003\u0115\u0003\u0116", + "\u0003\u0116\u0003\u0117\u0003\u0117\u0003\u0118\u0003\u0118\u0003\u0119", + "\u0003\u0119\u0003\u011a\u0003\u011a\u0003\u011b\u0003\u011b\u0005\u0827", + "\u098c\u09da\u0002\u011c\u0007\u0003\t\u0004\u000b\u0005\r\u0006\u000f", "\u0007\u0011\b\u0013\t\u0015\n\u0017\u000b\u0019\f\u001b\r\u001d\u000e", "\u001f\u000f!\u0010#\u0011%\u0012\'\u0013)\u0014+\u0015-\u0016/\u0017", "1\u00183\u00195\u001a7\u001b9\u001c;\u001d=\u001e?\u001fA C!E\"G#I$", @@ -358,1276 +379,1341 @@ var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964", "\u00a7\u0151\u00a8\u0153\u00a9\u0155\u00aa\u0157\u00ab\u0159\u00ac\u015b", "\u00ad\u015d\u00ae\u015f\u00af\u0161\u00b0\u0163\u00b1\u0165\u00b2\u0167", "\u00b3\u0169\u00b4\u016b\u00b5\u016d\u00b6\u016f\u00b7\u0171\u00b8\u0173", - "\u00b9\u0175\u00ba\u0177\u0002\u0179\u00bb\u017b\u00bc\u017d\u00bd\u017f", - "\u00be\u0181\u00bf\u0183\u00c0\u0185\u00c1\u0187\u00c2\u0189\u00c3\u018b", + "\u00b9\u0175\u00ba\u0177\u00bb\u0179\u00bc\u017b\u00bd\u017d\u00be\u017f", + "\u0002\u0181\u00bf\u0183\u00c0\u0185\u00c1\u0187\u00c2\u0189\u00c3\u018b", "\u00c4\u018d\u00c5\u018f\u00c6\u0191\u00c7\u0193\u00c8\u0195\u00c9\u0197", "\u00ca\u0199\u00cb\u019b\u00cc\u019d\u00cd\u019f\u00ce\u01a1\u00cf\u01a3", "\u00d0\u01a5\u00d1\u01a7\u00d2\u01a9\u00d3\u01ab\u00d4\u01ad\u00d5\u01af", - "\u00d6\u01b1\u00d7\u01b3\u0002\u01b5\u00d8\u01b7\u00d9\u01b9\u00da\u01bb", - "\u00db\u01bd\u00dc\u01bf\u00dd\u01c1\u00de\u01c3\u00df\u01c5\u0002\u01c7", - "\u00e0\u01c9\u0002\u01cb\u0002\u01cd\u0002\u01cf\u0002\u01d1\u0002\u01d3", - "\u00e1\u01d5\u0002\u01d7\u0002\u01d9\u0002\u01db\u0002\u01dd\u0002\u01df", - "\u0002\u01e1\u0002\u01e3\u0002\u01e5\u0002\u01e7\u0002\u01e9\u0002\u01eb", - "\u0002\u01ed\u0002\u01ef\u0002\u01f1\u0002\u01f3\u0002\u01f5\u0002\u01f7", + "\u00d6\u01b1\u00d7\u01b3\u00d8\u01b5\u00d9\u01b7\u00da\u01b9\u00db\u01bb", + "\u00dc\u01bd\u00dd\u01bf\u00de\u01c1\u00df\u01c3\u00e0\u01c5\u00e1\u01c7", + "\u00e2\u01c9\u00e3\u01cb\u00e4\u01cd\u0002\u01cf\u00e5\u01d1\u00e6\u01d3", + "\u00e7\u01d5\u00e8\u01d7\u00e9\u01d9\u00ea\u01db\u00eb\u01dd\u00ec\u01df", + "\u0002\u01e1\u00ed\u01e3\u0002\u01e5\u0002\u01e7\u0002\u01e9\u0002\u01eb", + "\u0002\u01ed\u00ee\u01ef\u0002\u01f1\u0002\u01f3\u0002\u01f5\u0002\u01f7", "\u0002\u01f9\u0002\u01fb\u0002\u01fd\u0002\u01ff\u0002\u0201\u0002\u0203", "\u0002\u0205\u0002\u0207\u0002\u0209\u0002\u020b\u0002\u020d\u0002\u020f", "\u0002\u0211\u0002\u0213\u0002\u0215\u0002\u0217\u0002\u0219\u0002\u021b", - "\u0002\u021d\u0002\u021f\u0002\u0007\u0002\u0003\u0004\u0005\u00064", - "\u0004\u0002\f\f\u000f\u000f\u0004\u0002C\\aa\u0003\u0002++\u0004\u0002", - "))^^\u0004\u0002ZZzz\u0003\u000229\u0004\u0002DDdd\u0003\u000223\u0003", - "\u00022;\u0004\u0002$$^^\u0004\u0002\u000b\u000b\"\"\u0006\u0002\u000b", - "\u000b\"\"..00\u0006\u0002\f\f\u000f\u000f11^^\u0006\u0002&&C\\aac|", - "\u0004\u0002\u0002\u0101\ud802\udc01\u0003\u0002\ud802\udc01\u0003\u0002", - "\udc02\ue001\u0003\u0002\u00eb\u00eb\u0006\u0002NNWWnnww\u0004\u0002", - "GGgg\u0004\u0002--//\u0006\u0002FFHHffhh\u0004\u0002BBNN\n\u0002$$)", - ")^^ddhhppttvv\u0003\u000225\u0005\u00022;CHch\u0005\u0002\u000b\f\u000e", - "\u000f\"\"\u0004\u0002CCcc\u0004\u0002EEee\u0004\u0002FFff\u0004\u0002", - "HHhh\u0004\u0002IIii\u0004\u0002JJjj\u0004\u0002KKkk\u0004\u0002LLl", - "l\u0004\u0002MMmm\u0004\u0002NNnn\u0004\u0002OOoo\u0004\u0002PPpp\u0004", - "\u0002QQqq\u0004\u0002RRrr\u0004\u0002SSss\u0004\u0002TTtt\u0004\u0002", - "UUuu\u0004\u0002VVvv\u0004\u0002WWww\u0004\u0002XXxx\u0004\u0002YYy", - "y\u0004\u0002[[{{\u0004\u0002\\\\||\u0002\u0a17\u0002\u0007\u0003\u0002", - "\u0002\u0002\u0002\t\u0003\u0002\u0002\u0002\u0002\u000b\u0003\u0002", - "\u0002\u0002\u0002\r\u0003\u0002\u0002\u0002\u0002\u000f\u0003\u0002", - "\u0002\u0002\u0002\u0011\u0003\u0002\u0002\u0002\u0002\u0013\u0003\u0002", - "\u0002\u0002\u0002\u0015\u0003\u0002\u0002\u0002\u0002\u0017\u0003\u0002", - "\u0002\u0002\u0002\u0019\u0003\u0002\u0002\u0002\u0002\u001b\u0003\u0002", - "\u0002\u0002\u0002\u001d\u0003\u0002\u0002\u0002\u0002\u001f\u0003\u0002", - "\u0002\u0002\u0002!\u0003\u0002\u0002\u0002\u0002#\u0003\u0002\u0002", - "\u0002\u0002%\u0003\u0002\u0002\u0002\u0002\'\u0003\u0002\u0002\u0002", - "\u0002)\u0003\u0002\u0002\u0002\u0002+\u0003\u0002\u0002\u0002\u0002", - "-\u0003\u0002\u0002\u0002\u0002/\u0003\u0002\u0002\u0002\u00021\u0003", - "\u0002\u0002\u0002\u00023\u0003\u0002\u0002\u0002\u00025\u0003\u0002", - "\u0002\u0002\u00027\u0003\u0002\u0002\u0002\u00029\u0003\u0002\u0002", - "\u0002\u0002;\u0003\u0002\u0002\u0002\u0002=\u0003\u0002\u0002\u0002", - "\u0002?\u0003\u0002\u0002\u0002\u0002A\u0003\u0002\u0002\u0002\u0002", - "C\u0003\u0002\u0002\u0002\u0002E\u0003\u0002\u0002\u0002\u0002G\u0003", - "\u0002\u0002\u0002\u0002I\u0003\u0002\u0002\u0002\u0002K\u0003\u0002", - "\u0002\u0002\u0002M\u0003\u0002\u0002\u0002\u0002O\u0003\u0002\u0002", - "\u0002\u0002Q\u0003\u0002\u0002\u0002\u0002S\u0003\u0002\u0002\u0002", - "\u0002U\u0003\u0002\u0002\u0002\u0002W\u0003\u0002\u0002\u0002\u0002", - "Y\u0003\u0002\u0002\u0002\u0002[\u0003\u0002\u0002\u0002\u0002]\u0003", - "\u0002\u0002\u0002\u0002_\u0003\u0002\u0002\u0002\u0002a\u0003\u0002", - "\u0002\u0002\u0002c\u0003\u0002\u0002\u0002\u0002e\u0003\u0002\u0002", - "\u0002\u0002g\u0003\u0002\u0002\u0002\u0002i\u0003\u0002\u0002\u0002", - "\u0002k\u0003\u0002\u0002\u0002\u0002m\u0003\u0002\u0002\u0002\u0002", - "o\u0003\u0002\u0002\u0002\u0002q\u0003\u0002\u0002\u0002\u0002s\u0003", - "\u0002\u0002\u0002\u0002u\u0003\u0002\u0002\u0002\u0002w\u0003\u0002", - "\u0002\u0002\u0002y\u0003\u0002\u0002\u0002\u0002{\u0003\u0002\u0002", - "\u0002\u0002}\u0003\u0002\u0002\u0002\u0002\u007f\u0003\u0002\u0002", - "\u0002\u0002\u0081\u0003\u0002\u0002\u0002\u0002\u0083\u0003\u0002\u0002", - "\u0002\u0002\u0085\u0003\u0002\u0002\u0002\u0002\u0087\u0003\u0002\u0002", - "\u0002\u0002\u0089\u0003\u0002\u0002\u0002\u0002\u008b\u0003\u0002\u0002", - "\u0002\u0002\u008d\u0003\u0002\u0002\u0002\u0002\u008f\u0003\u0002\u0002", - "\u0002\u0002\u0091\u0003\u0002\u0002\u0002\u0002\u0093\u0003\u0002\u0002", - "\u0002\u0002\u0095\u0003\u0002\u0002\u0002\u0002\u0097\u0003\u0002\u0002", - "\u0002\u0002\u0099\u0003\u0002\u0002\u0002\u0002\u009b\u0003\u0002\u0002", - "\u0002\u0002\u009d\u0003\u0002\u0002\u0002\u0002\u009f\u0003\u0002\u0002", - "\u0002\u0002\u00a1\u0003\u0002\u0002\u0002\u0002\u00a3\u0003\u0002\u0002", - "\u0002\u0002\u00a5\u0003\u0002\u0002\u0002\u0002\u00a7\u0003\u0002\u0002", - "\u0002\u0002\u00a9\u0003\u0002\u0002\u0002\u0002\u00ab\u0003\u0002\u0002", - "\u0002\u0002\u00ad\u0003\u0002\u0002\u0002\u0002\u00af\u0003\u0002\u0002", - "\u0002\u0002\u00b1\u0003\u0002\u0002\u0002\u0002\u00b3\u0003\u0002\u0002", - "\u0002\u0002\u00b5\u0003\u0002\u0002\u0002\u0002\u00b7\u0003\u0002\u0002", - "\u0002\u0002\u00b9\u0003\u0002\u0002\u0002\u0002\u00bb\u0003\u0002\u0002", - "\u0002\u0002\u00bd\u0003\u0002\u0002\u0002\u0002\u00bf\u0003\u0002\u0002", - "\u0002\u0002\u00c1\u0003\u0002\u0002\u0002\u0002\u00c3\u0003\u0002\u0002", - "\u0002\u0002\u00c5\u0003\u0002\u0002\u0002\u0002\u00c7\u0003\u0002\u0002", - "\u0002\u0002\u00c9\u0003\u0002\u0002\u0002\u0002\u00cb\u0003\u0002\u0002", - "\u0002\u0002\u00cd\u0003\u0002\u0002\u0002\u0002\u00cf\u0003\u0002\u0002", - "\u0002\u0002\u00d1\u0003\u0002\u0002\u0002\u0002\u00d3\u0003\u0002\u0002", - "\u0002\u0002\u00d5\u0003\u0002\u0002\u0002\u0002\u00d7\u0003\u0002\u0002", - "\u0002\u0002\u00d9\u0003\u0002\u0002\u0002\u0002\u00db\u0003\u0002\u0002", - "\u0002\u0002\u00dd\u0003\u0002\u0002\u0002\u0002\u00df\u0003\u0002\u0002", - "\u0002\u0002\u00e1\u0003\u0002\u0002\u0002\u0002\u00e3\u0003\u0002\u0002", - "\u0002\u0002\u00e5\u0003\u0002\u0002\u0002\u0002\u00e7\u0003\u0002\u0002", - "\u0002\u0002\u00e9\u0003\u0002\u0002\u0002\u0002\u00eb\u0003\u0002\u0002", - "\u0002\u0002\u00ed\u0003\u0002\u0002\u0002\u0002\u00ef\u0003\u0002\u0002", - "\u0002\u0002\u00f1\u0003\u0002\u0002\u0002\u0002\u00f3\u0003\u0002\u0002", - "\u0002\u0002\u00f5\u0003\u0002\u0002\u0002\u0002\u00f7\u0003\u0002\u0002", - "\u0002\u0002\u00f9\u0003\u0002\u0002\u0002\u0002\u00fb\u0003\u0002\u0002", - "\u0002\u0002\u00fd\u0003\u0002\u0002\u0002\u0002\u00ff\u0003\u0002\u0002", - "\u0002\u0002\u0101\u0003\u0002\u0002\u0002\u0002\u0103\u0003\u0002\u0002", - "\u0002\u0002\u0105\u0003\u0002\u0002\u0002\u0002\u0107\u0003\u0002\u0002", - "\u0002\u0002\u0109\u0003\u0002\u0002\u0002\u0002\u010b\u0003\u0002\u0002", - "\u0002\u0002\u010d\u0003\u0002\u0002\u0002\u0002\u010f\u0003\u0002\u0002", - "\u0002\u0002\u0111\u0003\u0002\u0002\u0002\u0002\u0113\u0003\u0002\u0002", - "\u0002\u0002\u0115\u0003\u0002\u0002\u0002\u0002\u0117\u0003\u0002\u0002", - "\u0002\u0002\u0119\u0003\u0002\u0002\u0002\u0002\u011b\u0003\u0002\u0002", - "\u0002\u0002\u011d\u0003\u0002\u0002\u0002\u0002\u011f\u0003\u0002\u0002", - "\u0002\u0002\u0121\u0003\u0002\u0002\u0002\u0002\u0123\u0003\u0002\u0002", - "\u0002\u0002\u0125\u0003\u0002\u0002\u0002\u0002\u0127\u0003\u0002\u0002", - "\u0002\u0002\u0129\u0003\u0002\u0002\u0002\u0002\u012b\u0003\u0002\u0002", - "\u0002\u0002\u012d\u0003\u0002\u0002\u0002\u0002\u012f\u0003\u0002\u0002", - "\u0002\u0002\u0131\u0003\u0002\u0002\u0002\u0002\u0133\u0003\u0002\u0002", - "\u0002\u0002\u0135\u0003\u0002\u0002\u0002\u0002\u0137\u0003\u0002\u0002", - "\u0002\u0002\u0139\u0003\u0002\u0002\u0002\u0002\u013b\u0003\u0002\u0002", - "\u0002\u0002\u013d\u0003\u0002\u0002\u0002\u0002\u013f\u0003\u0002\u0002", - "\u0002\u0002\u0141\u0003\u0002\u0002\u0002\u0002\u0143\u0003\u0002\u0002", - "\u0002\u0002\u0145\u0003\u0002\u0002\u0002\u0002\u0147\u0003\u0002\u0002", - "\u0002\u0002\u0149\u0003\u0002\u0002\u0002\u0002\u014b\u0003\u0002\u0002", - "\u0002\u0002\u014d\u0003\u0002\u0002\u0002\u0002\u014f\u0003\u0002\u0002", - "\u0002\u0002\u0151\u0003\u0002\u0002\u0002\u0002\u0153\u0003\u0002\u0002", - "\u0002\u0002\u0155\u0003\u0002\u0002\u0002\u0002\u0157\u0003\u0002\u0002", - "\u0002\u0002\u0159\u0003\u0002\u0002\u0002\u0002\u015b\u0003\u0002\u0002", - "\u0002\u0002\u015d\u0003\u0002\u0002\u0002\u0002\u015f\u0003\u0002\u0002", - "\u0002\u0002\u0161\u0003\u0002\u0002\u0002\u0002\u0163\u0003\u0002\u0002", - "\u0002\u0002\u0165\u0003\u0002\u0002\u0002\u0002\u0167\u0003\u0002\u0002", - "\u0002\u0002\u0169\u0003\u0002\u0002\u0002\u0002\u016b\u0003\u0002\u0002", - "\u0002\u0002\u016d\u0003\u0002\u0002\u0002\u0002\u016f\u0003\u0002\u0002", - "\u0002\u0002\u0171\u0003\u0002\u0002\u0002\u0002\u0173\u0003\u0002\u0002", - "\u0002\u0003\u0175\u0003\u0002\u0002\u0002\u0003\u0177\u0003\u0002\u0002", - "\u0002\u0003\u0179\u0003\u0002\u0002\u0002\u0003\u017b\u0003\u0002\u0002", - "\u0002\u0004\u017d\u0003\u0002\u0002\u0002\u0004\u017f\u0003\u0002\u0002", - "\u0002\u0004\u0181\u0003\u0002\u0002\u0002\u0004\u0183\u0003\u0002\u0002", - "\u0002\u0004\u0185\u0003\u0002\u0002\u0002\u0004\u0187\u0003\u0002\u0002", - "\u0002\u0004\u0189\u0003\u0002\u0002\u0002\u0004\u018b\u0003\u0002\u0002", - "\u0002\u0004\u018d\u0003\u0002\u0002\u0002\u0004\u018f\u0003\u0002\u0002", - "\u0002\u0004\u0191\u0003\u0002\u0002\u0002\u0004\u0193\u0003\u0002\u0002", - "\u0002\u0004\u0195\u0003\u0002\u0002\u0002\u0004\u0197\u0003\u0002\u0002", - "\u0002\u0004\u0199\u0003\u0002\u0002\u0002\u0004\u019b\u0003\u0002\u0002", - "\u0002\u0004\u019d\u0003\u0002\u0002\u0002\u0004\u019f\u0003\u0002\u0002", - "\u0002\u0004\u01a1\u0003\u0002\u0002\u0002\u0004\u01a3\u0003\u0002\u0002", - "\u0002\u0004\u01a5\u0003\u0002\u0002\u0002\u0004\u01a7\u0003\u0002\u0002", - "\u0002\u0004\u01a9\u0003\u0002\u0002\u0002\u0004\u01ab\u0003\u0002\u0002", - "\u0002\u0004\u01ad\u0003\u0002\u0002\u0002\u0004\u01af\u0003\u0002\u0002", - "\u0002\u0004\u01b1\u0003\u0002\u0002\u0002\u0004\u01b3\u0003\u0002\u0002", - "\u0002\u0004\u01b5\u0003\u0002\u0002\u0002\u0004\u01b7\u0003\u0002\u0002", - "\u0002\u0004\u01b9\u0003\u0002\u0002\u0002\u0004\u01bb\u0003\u0002\u0002", - "\u0002\u0004\u01bd\u0003\u0002\u0002\u0002\u0004\u01bf\u0003\u0002\u0002", - "\u0002\u0004\u01c1\u0003\u0002\u0002\u0002\u0004\u01c3\u0003\u0002\u0002", - "\u0002\u0005\u01c5\u0003\u0002\u0002\u0002\u0006\u01c7\u0003\u0002\u0002", - "\u0002\u0006\u01c9\u0003\u0002\u0002\u0002\u0006\u01cb\u0003\u0002\u0002", - "\u0002\u0006\u01cd\u0003\u0002\u0002\u0002\u0006\u01cf\u0003\u0002\u0002", - "\u0002\u0006\u01d1\u0003\u0002\u0002\u0002\u0006\u01d3\u0003\u0002\u0002", - "\u0002\u0007\u0221\u0003\u0002\u0002\u0002\t\u0226\u0003\u0002\u0002", - "\u0002\u000b\u022c\u0003\u0002\u0002\u0002\r\u0231\u0003\u0002\u0002", - "\u0002\u000f\u0236\u0003\u0002\u0002\u0002\u0011\u023c\u0003\u0002\u0002", - "\u0002\u0013\u0245\u0003\u0002\u0002\u0002\u0015\u024d\u0003\u0002\u0002", - "\u0002\u0017\u0250\u0003\u0002\u0002\u0002\u0019\u0257\u0003\u0002\u0002", - "\u0002\u001b\u025c\u0003\u0002\u0002\u0002\u001d\u0261\u0003\u0002\u0002", - "\u0002\u001f\u0268\u0003\u0002\u0002\u0002!\u026e\u0003\u0002\u0002", - "\u0002#\u0272\u0003\u0002\u0002\u0002%\u0277\u0003\u0002\u0002\u0002", - "\'\u027a\u0003\u0002\u0002\u0002)\u0281\u0003\u0002\u0002\u0002+\u0285", - "\u0003\u0002\u0002\u0002-\u028a\u0003\u0002\u0002\u0002/\u0293\u0003", - "\u0002\u0002\u00021\u029c\u0003\u0002\u0002\u00023\u02a3\u0003\u0002", - "\u0002\u00025\u02a9\u0003\u0002\u0002\u00027\u02b0\u0003\u0002\u0002", - "\u00029\u02b7\u0003\u0002\u0002\u0002;\u02be\u0003\u0002\u0002\u0002", - "=\u02c5\u0003\u0002\u0002\u0002?\u02cc\u0003\u0002\u0002\u0002A\u02d4", - "\u0003\u0002\u0002\u0002C\u02da\u0003\u0002\u0002\u0002E\u02e3\u0003", - "\u0002\u0002\u0002G\u02e8\u0003\u0002\u0002\u0002I\u02f1\u0003\u0002", - "\u0002\u0002K\u02f7\u0003\u0002\u0002\u0002M\u02fd\u0003\u0002\u0002", - "\u0002O\u0306\u0003\u0002\u0002\u0002Q\u0311\u0003\u0002\u0002\u0002", - "S\u0316\u0003\u0002\u0002\u0002U\u031c\u0003\u0002\u0002\u0002W\u0321", - "\u0003\u0002\u0002\u0002Y\u0327\u0003\u0002\u0002\u0002[\u032e\u0003", - "\u0002\u0002\u0002]\u0334\u0003\u0002\u0002\u0002_\u0337\u0003\u0002", - "\u0002\u0002a\u033b\u0003\u0002\u0002\u0002c\u033e\u0003\u0002\u0002", - "\u0002e\u0344\u0003\u0002\u0002\u0002g\u0348\u0003\u0002\u0002\u0002", - "i\u034b\u0003\u0002\u0002\u0002k\u0350\u0003\u0002\u0002\u0002m\u0357", - "\u0003\u0002\u0002\u0002o\u035b\u0003\u0002\u0002\u0002q\u0364\u0003", - "\u0002\u0002\u0002s\u0368\u0003\u0002\u0002\u0002u\u036d\u0003\u0002", - "\u0002\u0002w\u0373\u0003\u0002\u0002\u0002y\u0377\u0003\u0002\u0002", - "\u0002{\u0388\u0003\u0002\u0002\u0002}\u038f\u0003\u0002\u0002\u0002", - "\u007f\u0396\u0003\u0002\u0002\u0002\u0081\u039f\u0003\u0002\u0002\u0002", - "\u0083\u03a7\u0003\u0002\u0002\u0002\u0085\u03ac\u0003\u0002\u0002\u0002", - "\u0087\u03b5\u0003\u0002\u0002\u0002\u0089\u03c5\u0003\u0002\u0002\u0002", - "\u008b\u03de\u0003\u0002\u0002\u0002\u008d\u03e0\u0003\u0002\u0002\u0002", - "\u008f\u03e9\u0003\u0002\u0002\u0002\u0091\u03f3\u0003\u0002\u0002\u0002", - "\u0093\u03fd\u0003\u0002\u0002\u0002\u0095\u0406\u0003\u0002\u0002\u0002", - "\u0097\u0410\u0003\u0002\u0002\u0002\u0099\u041b\u0003\u0002\u0002\u0002", - "\u009b\u0423\u0003\u0002\u0002\u0002\u009d\u042d\u0003\u0002\u0002\u0002", - "\u009f\u0437\u0003\u0002\u0002\u0002\u00a1\u0445\u0003\u0002\u0002\u0002", - "\u00a3\u0451\u0003\u0002\u0002\u0002\u00a5\u0458\u0003\u0002\u0002\u0002", - "\u00a7\u045d\u0003\u0002\u0002\u0002\u00a9\u0464\u0003\u0002\u0002\u0002", - "\u00ab\u046e\u0003\u0002\u0002\u0002\u00ad\u0475\u0003\u0002\u0002\u0002", - "\u00af\u0483\u0003\u0002\u0002\u0002\u00b1\u0493\u0003\u0002\u0002\u0002", - "\u00b3\u049b\u0003\u0002\u0002\u0002\u00b5\u04a4\u0003\u0002\u0002\u0002", - "\u00b7\u04b6\u0003\u0002\u0002\u0002\u00b9\u04c8\u0003\u0002\u0002\u0002", - "\u00bb\u04d4\u0003\u0002\u0002\u0002\u00bd\u04e4\u0003\u0002\u0002\u0002", - "\u00bf\u04f1\u0003\u0002\u0002\u0002\u00c1\u04fa\u0003\u0002\u0002\u0002", - "\u00c3\u051b\u0003\u0002\u0002\u0002\u00c5\u051d\u0003\u0002\u0002\u0002", - "\u00c7\u0531\u0003\u0002\u0002\u0002\u00c9\u053a\u0003\u0002\u0002\u0002", - "\u00cb\u0574\u0003\u0002\u0002\u0002\u00cd\u0591\u0003\u0002\u0002\u0002", - "\u00cf\u05ab\u0003\u0002\u0002\u0002\u00d1\u05ad\u0003\u0002\u0002\u0002", - "\u00d3\u05bd\u0003\u0002\u0002\u0002\u00d5\u05c7\u0003\u0002\u0002\u0002", - "\u00d7\u05cf\u0003\u0002\u0002\u0002\u00d9\u05da\u0003\u0002\u0002\u0002", - "\u00db\u05e1\u0003\u0002\u0002\u0002\u00dd\u05e6\u0003\u0002\u0002\u0002", - "\u00df\u05ed\u0003\u0002\u0002\u0002\u00e1\u05f4\u0003\u0002\u0002\u0002", - "\u00e3\u05fb\u0003\u0002\u0002\u0002\u00e5\u0604\u0003\u0002\u0002\u0002", - "\u00e7\u060e\u0003\u0002\u0002\u0002\u00e9\u0613\u0003\u0002\u0002\u0002", - "\u00eb\u0625\u0003\u0002\u0002\u0002\u00ed\u062e\u0003\u0002\u0002\u0002", - "\u00ef\u0641\u0003\u0002\u0002\u0002\u00f1\u064f\u0003\u0002\u0002\u0002", - "\u00f3\u065d\u0003\u0002\u0002\u0002\u00f5\u067d\u0003\u0002\u0002\u0002", - "\u00f7\u069c\u0003\u0002\u0002\u0002\u00f9\u06ab\u0003\u0002\u0002\u0002", - "\u00fb\u06bf\u0003\u0002\u0002\u0002\u00fd\u06d2\u0003\u0002\u0002\u0002", - "\u00ff\u06e6\u0003\u0002\u0002\u0002\u0101\u06ed\u0003\u0002\u0002\u0002", - "\u0103\u06ef\u0003\u0002\u0002\u0002\u0105\u06f1\u0003\u0002\u0002\u0002", - "\u0107\u06f3\u0003\u0002\u0002\u0002\u0109\u06f5\u0003\u0002\u0002\u0002", - "\u010b\u06f7\u0003\u0002\u0002\u0002\u010d\u06f9\u0003\u0002\u0002\u0002", - "\u010f\u06fb\u0003\u0002\u0002\u0002\u0111\u06fd\u0003\u0002\u0002\u0002", - "\u0113\u06ff\u0003\u0002\u0002\u0002\u0115\u0702\u0003\u0002\u0002\u0002", - "\u0117\u0704\u0003\u0002\u0002\u0002\u0119\u0706\u0003\u0002\u0002\u0002", - "\u011b\u0708\u0003\u0002\u0002\u0002\u011d\u070a\u0003\u0002\u0002\u0002", - "\u011f\u070c\u0003\u0002\u0002\u0002\u0121\u070e\u0003\u0002\u0002\u0002", - "\u0123\u0710\u0003\u0002\u0002\u0002\u0125\u0712\u0003\u0002\u0002\u0002", - "\u0127\u0715\u0003\u0002\u0002\u0002\u0129\u0718\u0003\u0002\u0002\u0002", - "\u012b\u071b\u0003\u0002\u0002\u0002\u012d\u071e\u0003\u0002\u0002\u0002", - "\u012f\u0721\u0003\u0002\u0002\u0002\u0131\u0724\u0003\u0002\u0002\u0002", - "\u0133\u0727\u0003\u0002\u0002\u0002\u0135\u072a\u0003\u0002\u0002\u0002", - "\u0137\u072c\u0003\u0002\u0002\u0002\u0139\u072e\u0003\u0002\u0002\u0002", - "\u013b\u0730\u0003\u0002\u0002\u0002\u013d\u0732\u0003\u0002\u0002\u0002", - "\u013f\u0734\u0003\u0002\u0002\u0002\u0141\u0736\u0003\u0002\u0002\u0002", - "\u0143\u0738\u0003\u0002\u0002\u0002\u0145\u073a\u0003\u0002\u0002\u0002", - "\u0147\u073d\u0003\u0002\u0002\u0002\u0149\u0740\u0003\u0002\u0002\u0002", - "\u014b\u0743\u0003\u0002\u0002\u0002\u014d\u0746\u0003\u0002\u0002\u0002", - "\u014f\u0749\u0003\u0002\u0002\u0002\u0151\u074c\u0003\u0002\u0002\u0002", - "\u0153\u074f\u0003\u0002\u0002\u0002\u0155\u0752\u0003\u0002\u0002\u0002", - "\u0157\u0756\u0003\u0002\u0002\u0002\u0159\u075a\u0003\u0002\u0002\u0002", - "\u015b\u075e\u0003\u0002\u0002\u0002\u015d\u0765\u0003\u0002\u0002\u0002", - "\u015f\u0769\u0003\u0002\u0002\u0002\u0161\u0773\u0003\u0002\u0002\u0002", - "\u0163\u077c\u0003\u0002\u0002\u0002\u0165\u0787\u0003\u0002\u0002\u0002", - "\u0167\u07b4\u0003\u0002\u0002\u0002\u0169\u07b6\u0003\u0002\u0002\u0002", - "\u016b\u07bd\u0003\u0002\u0002\u0002\u016d\u07c3\u0003\u0002\u0002\u0002", - "\u016f\u07d1\u0003\u0002\u0002\u0002\u0171\u07dc\u0003\u0002\u0002\u0002", - "\u0173\u07e0\u0003\u0002\u0002\u0002\u0175\u07e5\u0003\u0002\u0002\u0002", - "\u0177\u07ed\u0003\u0002\u0002\u0002\u0179\u07f2\u0003\u0002\u0002\u0002", - "\u017b\u07f8\u0003\u0002\u0002\u0002\u017d\u07fe\u0003\u0002\u0002\u0002", - "\u017f\u080d\u0003\u0002\u0002\u0002\u0181\u081d\u0003\u0002\u0002\u0002", - "\u0183\u0827\u0003\u0002\u0002\u0002\u0185\u0836\u0003\u0002\u0002\u0002", - "\u0187\u0840\u0003\u0002\u0002\u0002\u0189\u0845\u0003\u0002\u0002\u0002", - "\u018b\u084c\u0003\u0002\u0002\u0002\u018d\u0853\u0003\u0002\u0002\u0002", - "\u018f\u085b\u0003\u0002\u0002\u0002\u0191\u0863\u0003\u0002\u0002\u0002", - "\u0193\u086c\u0003\u0002\u0002\u0002\u0195\u0874\u0003\u0002\u0002\u0002", - "\u0197\u087b\u0003\u0002\u0002\u0002\u0199\u0883\u0003\u0002\u0002\u0002", - "\u019b\u088c\u0003\u0002\u0002\u0002\u019d\u0897\u0003\u0002\u0002\u0002", - "\u019f\u089b\u0003\u0002\u0002\u0002\u01a1\u089f\u0003\u0002\u0002\u0002", - "\u01a3\u08a3\u0003\u0002\u0002\u0002\u01a5\u08a8\u0003\u0002\u0002\u0002", - "\u01a7\u08ad\u0003\u0002\u0002\u0002\u01a9\u08b2\u0003\u0002\u0002\u0002", - "\u01ab\u08b7\u0003\u0002\u0002\u0002\u01ad\u08bb\u0003\u0002\u0002\u0002", - "\u01af\u08bf\u0003\u0002\u0002\u0002\u01b1\u08c4\u0003\u0002\u0002\u0002", - "\u01b3\u08ca\u0003\u0002\u0002\u0002\u01b5\u08d1\u0003\u0002\u0002\u0002", - "\u01b7\u08d6\u0003\u0002\u0002\u0002\u01b9\u08e0\u0003\u0002\u0002\u0002", - "\u01bb\u08f8\u0003\u0002\u0002\u0002\u01bd\u08fd\u0003\u0002\u0002\u0002", - "\u01bf\u0904\u0003\u0002\u0002\u0002\u01c1\u0912\u0003\u0002\u0002\u0002", - "\u01c3\u091d\u0003\u0002\u0002\u0002\u01c5\u0925\u0003\u0002\u0002\u0002", - "\u01c7\u093b\u0003\u0002\u0002\u0002\u01c9\u0943\u0003\u0002\u0002\u0002", - "\u01cb\u094a\u0003\u0002\u0002\u0002\u01cd\u0952\u0003\u0002\u0002\u0002", - "\u01cf\u0961\u0003\u0002\u0002\u0002\u01d1\u096d\u0003\u0002\u0002\u0002", - "\u01d3\u0973\u0003\u0002\u0002\u0002\u01d5\u097b\u0003\u0002\u0002\u0002", - "\u01d7\u0982\u0003\u0002\u0002\u0002\u01d9\u0984\u0003\u0002\u0002\u0002", - "\u01db\u098b\u0003\u0002\u0002\u0002\u01dd\u0994\u0003\u0002\u0002\u0002", - "\u01df\u0996\u0003\u0002\u0002\u0002\u01e1\u099f\u0003\u0002\u0002\u0002", - "\u01e3\u09a7\u0003\u0002\u0002\u0002\u01e5\u09b2\u0003\u0002\u0002\u0002", - "\u01e7\u09b4\u0003\u0002\u0002\u0002\u01e9\u09bb\u0003\u0002\u0002\u0002", - "\u01eb\u09bd\u0003\u0002\u0002\u0002\u01ed\u09bf\u0003\u0002\u0002\u0002", - "\u01ef\u09c1\u0003\u0002\u0002\u0002\u01f1\u09c3\u0003\u0002\u0002\u0002", - "\u01f3\u09c5\u0003\u0002\u0002\u0002\u01f5\u09c7\u0003\u0002\u0002\u0002", - "\u01f7\u09c9\u0003\u0002\u0002\u0002\u01f9\u09cb\u0003\u0002\u0002\u0002", - "\u01fb\u09cd\u0003\u0002\u0002\u0002\u01fd\u09cf\u0003\u0002\u0002\u0002", - "\u01ff\u09d1\u0003\u0002\u0002\u0002\u0201\u09d3\u0003\u0002\u0002\u0002", - "\u0203\u09d5\u0003\u0002\u0002\u0002\u0205\u09d7\u0003\u0002\u0002\u0002", - "\u0207\u09d9\u0003\u0002\u0002\u0002\u0209\u09db\u0003\u0002\u0002\u0002", - "\u020b\u09dd\u0003\u0002\u0002\u0002\u020d\u09df\u0003\u0002\u0002\u0002", - "\u020f\u09e1\u0003\u0002\u0002\u0002\u0211\u09e3\u0003\u0002\u0002\u0002", - "\u0213\u09e5\u0003\u0002\u0002\u0002\u0215\u09e7\u0003\u0002\u0002\u0002", - "\u0217\u09e9\u0003\u0002\u0002\u0002\u0219\u09eb\u0003\u0002\u0002\u0002", - "\u021b\u09ed\u0003\u0002\u0002\u0002\u021d\u09ef\u0003\u0002\u0002\u0002", - "\u021f\u09f1\u0003\u0002\u0002\u0002\u0221\u0222\u0007c\u0002\u0002", - "\u0222\u0223\u0007w\u0002\u0002\u0223\u0224\u0007v\u0002\u0002\u0224", - "\u0225\u0007q\u0002\u0002\u0225\b\u0003\u0002\u0002\u0002\u0226\u0227", - "\u0007d\u0002\u0002\u0227\u0228\u0007t\u0002\u0002\u0228\u0229\u0007", - "g\u0002\u0002\u0229\u022a\u0007c\u0002\u0002\u022a\u022b\u0007m\u0002", - "\u0002\u022b\n\u0003\u0002\u0002\u0002\u022c\u022d\u0007e\u0002\u0002", - "\u022d\u022e\u0007c\u0002\u0002\u022e\u022f\u0007u\u0002\u0002\u022f", - "\u0230\u0007g\u0002\u0002\u0230\f\u0003\u0002\u0002\u0002\u0231\u0232", - "\u0007e\u0002\u0002\u0232\u0233\u0007j\u0002\u0002\u0233\u0234\u0007", - "c\u0002\u0002\u0234\u0235\u0007t\u0002\u0002\u0235\u000e\u0003\u0002", - "\u0002\u0002\u0236\u0237\u0007e\u0002\u0002\u0237\u0238\u0007q\u0002", - "\u0002\u0238\u0239\u0007p\u0002\u0002\u0239\u023a\u0007u\u0002\u0002", - "\u023a\u023b\u0007v\u0002\u0002\u023b\u0010\u0003\u0002\u0002\u0002", - "\u023c\u023d\u0007e\u0002\u0002\u023d\u023e\u0007q\u0002\u0002\u023e", - "\u023f\u0007p\u0002\u0002\u023f\u0240\u0007v\u0002\u0002\u0240\u0241", - "\u0007k\u0002\u0002\u0241\u0242\u0007p\u0002\u0002\u0242\u0243\u0007", - "w\u0002\u0002\u0243\u0244\u0007g\u0002\u0002\u0244\u0012\u0003\u0002", - "\u0002\u0002\u0245\u0246\u0007f\u0002\u0002\u0246\u0247\u0007g\u0002", - "\u0002\u0247\u0248\u0007h\u0002\u0002\u0248\u0249\u0007c\u0002\u0002", - "\u0249\u024a\u0007w\u0002\u0002\u024a\u024b\u0007n\u0002\u0002\u024b", - "\u024c\u0007v\u0002\u0002\u024c\u0014\u0003\u0002\u0002\u0002\u024d", - "\u024e\u0007f\u0002\u0002\u024e\u024f\u0007q\u0002\u0002\u024f\u0016", - "\u0003\u0002\u0002\u0002\u0250\u0251\u0007f\u0002\u0002\u0251\u0252", - "\u0007q\u0002\u0002\u0252\u0253\u0007w\u0002\u0002\u0253\u0254\u0007", - "d\u0002\u0002\u0254\u0255\u0007n\u0002\u0002\u0255\u0256\u0007g\u0002", - "\u0002\u0256\u0018\u0003\u0002\u0002\u0002\u0257\u0258\u0007g\u0002", - "\u0002\u0258\u0259\u0007n\u0002\u0002\u0259\u025a\u0007u\u0002\u0002", - "\u025a\u025b\u0007g\u0002\u0002\u025b\u001a\u0003\u0002\u0002\u0002", - "\u025c\u025d\u0007g\u0002\u0002\u025d\u025e\u0007p\u0002\u0002\u025e", - "\u025f\u0007w\u0002\u0002\u025f\u0260\u0007o\u0002\u0002\u0260\u001c", - "\u0003\u0002\u0002\u0002\u0261\u0262\u0007g\u0002\u0002\u0262\u0263", - "\u0007z\u0002\u0002\u0263\u0264\u0007v\u0002\u0002\u0264\u0265\u0007", - "g\u0002\u0002\u0265\u0266\u0007t\u0002\u0002\u0266\u0267\u0007p\u0002", - "\u0002\u0267\u001e\u0003\u0002\u0002\u0002\u0268\u0269\u0007h\u0002", - "\u0002\u0269\u026a\u0007n\u0002\u0002\u026a\u026b\u0007q\u0002\u0002", - "\u026b\u026c\u0007c\u0002\u0002\u026c\u026d\u0007v\u0002\u0002\u026d", - " \u0003\u0002\u0002\u0002\u026e\u026f\u0007h\u0002\u0002\u026f\u0270", - "\u0007q\u0002\u0002\u0270\u0271\u0007t\u0002\u0002\u0271\"\u0003\u0002", - "\u0002\u0002\u0272\u0273\u0007i\u0002\u0002\u0273\u0274\u0007q\u0002", - "\u0002\u0274\u0275\u0007v\u0002\u0002\u0275\u0276\u0007q\u0002\u0002", - "\u0276$\u0003\u0002\u0002\u0002\u0277\u0278\u0007k\u0002\u0002\u0278", - "\u0279\u0007h\u0002\u0002\u0279&\u0003\u0002\u0002\u0002\u027a\u027b", - "\u0007k\u0002\u0002\u027b\u027c\u0007p\u0002\u0002\u027c\u027d\u0007", - "n\u0002\u0002\u027d\u027e\u0007k\u0002\u0002\u027e\u027f\u0007p\u0002", - "\u0002\u027f\u0280\u0007g\u0002\u0002\u0280(\u0003\u0002\u0002\u0002", - "\u0281\u0282\u0007k\u0002\u0002\u0282\u0283\u0007p\u0002\u0002\u0283", - "\u0284\u0007v\u0002\u0002\u0284*\u0003\u0002\u0002\u0002\u0285\u0286", - "\u0007n\u0002\u0002\u0286\u0287\u0007q\u0002\u0002\u0287\u0288\u0007", - "p\u0002\u0002\u0288\u0289\u0007i\u0002\u0002\u0289,\u0003\u0002\u0002", - "\u0002\u028a\u028b\u0007t\u0002\u0002\u028b\u028c\u0007g\u0002\u0002", - "\u028c\u028d\u0007i\u0002\u0002\u028d\u028e\u0007k\u0002\u0002\u028e", - "\u028f\u0007u\u0002\u0002\u028f\u0290\u0007v\u0002\u0002\u0290\u0291", - "\u0007g\u0002\u0002\u0291\u0292\u0007t\u0002\u0002\u0292.\u0003\u0002", - "\u0002\u0002\u0293\u0294\u0007t\u0002\u0002\u0294\u0295\u0007g\u0002", - "\u0002\u0295\u0296\u0007u\u0002\u0002\u0296\u0297\u0007v\u0002\u0002", - "\u0297\u0298\u0007t\u0002\u0002\u0298\u0299\u0007k\u0002\u0002\u0299", - "\u029a\u0007e\u0002\u0002\u029a\u029b\u0007v\u0002\u0002\u029b0\u0003", - "\u0002\u0002\u0002\u029c\u029d\u0007t\u0002\u0002\u029d\u029e\u0007", - "g\u0002\u0002\u029e\u029f\u0007v\u0002\u0002\u029f\u02a0\u0007w\u0002", - "\u0002\u02a0\u02a1\u0007t\u0002\u0002\u02a1\u02a2\u0007p\u0002\u0002", - "\u02a22\u0003\u0002\u0002\u0002\u02a3\u02a4\u0007u\u0002\u0002\u02a4", - "\u02a5\u0007j\u0002\u0002\u02a5\u02a6\u0007q\u0002\u0002\u02a6\u02a7", - "\u0007t\u0002\u0002\u02a7\u02a8\u0007v\u0002\u0002\u02a84\u0003\u0002", - "\u0002\u0002\u02a9\u02aa\u0007u\u0002\u0002\u02aa\u02ab\u0007k\u0002", - "\u0002\u02ab\u02ac\u0007i\u0002\u0002\u02ac\u02ad\u0007p\u0002\u0002", - "\u02ad\u02ae\u0007g\u0002\u0002\u02ae\u02af\u0007f\u0002\u0002\u02af", - "6\u0003\u0002\u0002\u0002\u02b0\u02b1\u0007u\u0002\u0002\u02b1\u02b2", - "\u0007k\u0002\u0002\u02b2\u02b3\u0007|\u0002\u0002\u02b3\u02b4\u0007", - "g\u0002\u0002\u02b4\u02b5\u0007q\u0002\u0002\u02b5\u02b6\u0007h\u0002", - "\u0002\u02b68\u0003\u0002\u0002\u0002\u02b7\u02b8\u0007u\u0002\u0002", - "\u02b8\u02b9\u0007v\u0002\u0002\u02b9\u02ba\u0007c\u0002\u0002\u02ba", - "\u02bb\u0007v\u0002\u0002\u02bb\u02bc\u0007k\u0002\u0002\u02bc\u02bd", - "\u0007e\u0002\u0002\u02bd:\u0003\u0002\u0002\u0002\u02be\u02bf\u0007", - "u\u0002\u0002\u02bf\u02c0\u0007v\u0002\u0002\u02c0\u02c1\u0007t\u0002", - "\u0002\u02c1\u02c2\u0007w\u0002\u0002\u02c2\u02c3\u0007e\u0002\u0002", - "\u02c3\u02c4\u0007v\u0002\u0002\u02c4<\u0003\u0002\u0002\u0002\u02c5", - "\u02c6\u0007u\u0002\u0002\u02c6\u02c7\u0007y\u0002\u0002\u02c7\u02c8", - "\u0007k\u0002\u0002\u02c8\u02c9\u0007v\u0002\u0002\u02c9\u02ca\u0007", - "e\u0002\u0002\u02ca\u02cb\u0007j\u0002\u0002\u02cb>\u0003\u0002\u0002", - "\u0002\u02cc\u02cd\u0007v\u0002\u0002\u02cd\u02ce\u0007{\u0002\u0002", - "\u02ce\u02cf\u0007r\u0002\u0002\u02cf\u02d0\u0007g\u0002\u0002\u02d0", - "\u02d1\u0007f\u0002\u0002\u02d1\u02d2\u0007g\u0002\u0002\u02d2\u02d3", - "\u0007h\u0002\u0002\u02d3@\u0003\u0002\u0002\u0002\u02d4\u02d5\u0007", - "w\u0002\u0002\u02d5\u02d6\u0007p\u0002\u0002\u02d6\u02d7\u0007k\u0002", - "\u0002\u02d7\u02d8\u0007q\u0002\u0002\u02d8\u02d9\u0007p\u0002\u0002", - "\u02d9B\u0003\u0002\u0002\u0002\u02da\u02db\u0007w\u0002\u0002\u02db", - "\u02dc\u0007p\u0002\u0002\u02dc\u02dd\u0007u\u0002\u0002\u02dd\u02de", - "\u0007k\u0002\u0002\u02de\u02df\u0007i\u0002\u0002\u02df\u02e0\u0007", - "p\u0002\u0002\u02e0\u02e1\u0007g\u0002\u0002\u02e1\u02e2\u0007f\u0002", - "\u0002\u02e2D\u0003\u0002\u0002\u0002\u02e3\u02e4\u0007x\u0002\u0002", - "\u02e4\u02e5\u0007q\u0002\u0002\u02e5\u02e6\u0007k\u0002\u0002\u02e6", - "\u02e7\u0007f\u0002\u0002\u02e7F\u0003\u0002\u0002\u0002\u02e8\u02e9", - "\u0007x\u0002\u0002\u02e9\u02ea\u0007q\u0002\u0002\u02ea\u02eb\u0007", - "n\u0002\u0002\u02eb\u02ec\u0007c\u0002\u0002\u02ec\u02ed\u0007v\u0002", - "\u0002\u02ed\u02ee\u0007k\u0002\u0002\u02ee\u02ef\u0007n\u0002\u0002", - "\u02ef\u02f0\u0007g\u0002\u0002\u02f0H\u0003\u0002\u0002\u0002\u02f1", - "\u02f2\u0007y\u0002\u0002\u02f2\u02f3\u0007j\u0002\u0002\u02f3\u02f4", - "\u0007k\u0002\u0002\u02f4\u02f5\u0007n\u0002\u0002\u02f5\u02f6\u0007", - "g\u0002\u0002\u02f6J\u0003\u0002\u0002\u0002\u02f7\u02f8\u0007a\u0002", - "\u0002\u02f8\u02f9\u0007D\u0002\u0002\u02f9\u02fa\u0007q\u0002\u0002", - "\u02fa\u02fb\u0007q\u0002\u0002\u02fb\u02fc\u0007n\u0002\u0002\u02fc", - "L\u0003\u0002\u0002\u0002\u02fd\u02fe\u0007a\u0002\u0002\u02fe\u02ff", - "\u0007E\u0002\u0002\u02ff\u0300\u0007q\u0002\u0002\u0300\u0301\u0007", - "o\u0002\u0002\u0301\u0302\u0007r\u0002\u0002\u0302\u0303\u0007n\u0002", - "\u0002\u0303\u0304\u0007g\u0002\u0002\u0304\u0305\u0007z\u0002\u0002", - "\u0305N\u0003\u0002\u0002\u0002\u0306\u0307\u0007a\u0002\u0002\u0307", - "\u0308\u0007K\u0002\u0002\u0308\u0309\u0007o\u0002\u0002\u0309\u030a", - "\u0007c\u0002\u0002\u030a\u030b\u0007i\u0002\u0002\u030b\u030c\u0007", - "k\u0002\u0002\u030c\u030d\u0007p\u0002\u0002\u030d\u030e\u0007g\u0002", - "\u0002\u030e\u030f\u0007t\u0002\u0002\u030f\u0310\u0007{\u0002\u0002", - "\u0310P\u0003\u0002\u0002\u0002\u0311\u0312\u0007v\u0002\u0002\u0312", - "\u0313\u0007t\u0002\u0002\u0313\u0314\u0007w\u0002\u0002\u0314\u0315", - "\u0007g\u0002\u0002\u0315R\u0003\u0002\u0002\u0002\u0316\u0317\u0007", - "h\u0002\u0002\u0317\u0318\u0007c\u0002\u0002\u0318\u0319\u0007n\u0002", - "\u0002\u0319\u031a\u0007u\u0002\u0002\u031a\u031b\u0007g\u0002\u0002", - "\u031bT\u0003\u0002\u0002\u0002\u031c\u031d\u0007D\u0002\u0002\u031d", - "\u031e\u0007Q\u0002\u0002\u031e\u031f\u0007Q\u0002\u0002\u031f\u0320", - "\u0007N\u0002\u0002\u0320V\u0003\u0002\u0002\u0002\u0321\u0322\u0007", - "E\u0002\u0002\u0322\u0323\u0007n\u0002\u0002\u0323\u0324\u0007c\u0002", - "\u0002\u0324\u0325\u0007u\u0002\u0002\u0325\u0326\u0007u\u0002\u0002", - "\u0326X\u0003\u0002\u0002\u0002\u0327\u0328\u0007d\u0002\u0002\u0328", - "\u0329\u0007{\u0002\u0002\u0329\u032a\u0007e\u0002\u0002\u032a\u032b", - "\u0007q\u0002\u0002\u032b\u032c\u0007r\u0002\u0002\u032c\u032d\u0007", - "{\u0002\u0002\u032dZ\u0003\u0002\u0002\u0002\u032e\u032f\u0007d\u0002", - "\u0002\u032f\u0330\u0007{\u0002\u0002\u0330\u0331\u0007t\u0002\u0002", - "\u0331\u0332\u0007g\u0002\u0002\u0332\u0333\u0007h\u0002\u0002\u0333", - "\\\u0003\u0002\u0002\u0002\u0334\u0335\u0007k\u0002\u0002\u0335\u0336", - "\u0007f\u0002\u0002\u0336^\u0003\u0002\u0002\u0002\u0337\u0338\u0007", - "K\u0002\u0002\u0338\u0339\u0007O\u0002\u0002\u0339\u033a\u0007R\u0002", - "\u0002\u033a`\u0003\u0002\u0002\u0002\u033b\u033c\u0007k\u0002\u0002", - "\u033c\u033d\u0007p\u0002\u0002\u033db\u0003\u0002\u0002\u0002\u033e", - "\u033f\u0007k\u0002\u0002\u033f\u0340\u0007p\u0002\u0002\u0340\u0341", - "\u0007q\u0002\u0002\u0341\u0342\u0007w\u0002\u0002\u0342\u0343\u0007", - "v\u0002\u0002\u0343d\u0003\u0002\u0002\u0002\u0344\u0345\u0007p\u0002", - "\u0002\u0345\u0346\u0007k\u0002\u0002\u0346\u0347\u0007n\u0002\u0002", - "\u0347f\u0003\u0002\u0002\u0002\u0348\u0349\u0007P\u0002\u0002\u0349", - "\u034a\u0007Q\u0002\u0002\u034ah\u0003\u0002\u0002\u0002\u034b\u034c", - "\u0007P\u0002\u0002\u034c\u034d\u0007W\u0002\u0002\u034d\u034e\u0007", - "N\u0002\u0002\u034e\u034f\u0007N\u0002\u0002\u034fj\u0003\u0002\u0002", - "\u0002\u0350\u0351\u0007q\u0002\u0002\u0351\u0352\u0007p\u0002\u0002", - "\u0352\u0353\u0007g\u0002\u0002\u0353\u0354\u0007y\u0002\u0002\u0354", - "\u0355\u0007c\u0002\u0002\u0355\u0356\u0007{\u0002\u0002\u0356l\u0003", - "\u0002\u0002\u0002\u0357\u0358\u0007q\u0002\u0002\u0358\u0359\u0007", - "w\u0002\u0002\u0359\u035a\u0007v\u0002\u0002\u035an\u0003\u0002\u0002", - "\u0002\u035b\u035c\u0007R\u0002\u0002\u035c\u035d\u0007t\u0002\u0002", - "\u035d\u035e\u0007q\u0002\u0002\u035e\u035f\u0007v\u0002\u0002\u035f", - "\u0360\u0007q\u0002\u0002\u0360\u0361\u0007e\u0002\u0002\u0361\u0362", - "\u0007q\u0002\u0002\u0362\u0363\u0007n\u0002\u0002\u0363p\u0003\u0002", - "\u0002\u0002\u0364\u0365\u0007U\u0002\u0002\u0365\u0366\u0007G\u0002", - "\u0002\u0366\u0367\u0007N\u0002\u0002\u0367r\u0003\u0002\u0002\u0002", - "\u0368\u0369\u0007u\u0002\u0002\u0369\u036a\u0007g\u0002\u0002\u036a", - "\u036b\u0007n\u0002\u0002\u036b\u036c\u0007h\u0002\u0002\u036ct\u0003", - "\u0002\u0002\u0002\u036d\u036e\u0007u\u0002\u0002\u036e\u036f\u0007", - "w\u0002\u0002\u036f\u0370\u0007r\u0002\u0002\u0370\u0371\u0007g\u0002", - "\u0002\u0371\u0372\u0007t\u0002\u0002\u0372v\u0003\u0002\u0002\u0002", - "\u0373\u0374\u0007[\u0002\u0002\u0374\u0375\u0007G\u0002\u0002\u0375", - "\u0376\u0007U\u0002\u0002\u0376x\u0003\u0002\u0002\u0002\u0377\u0378", - "\u0007B\u0002\u0002\u0378\u0379\u0007c\u0002\u0002\u0379\u037a\u0007", - "w\u0002\u0002\u037a\u037b\u0007v\u0002\u0002\u037b\u037c\u0007q\u0002", - "\u0002\u037c\u037d\u0007t\u0002\u0002\u037d\u037e\u0007g\u0002\u0002", - "\u037e\u037f\u0007n\u0002\u0002\u037f\u0380\u0007g\u0002\u0002\u0380", - "\u0381\u0007c\u0002\u0002\u0381\u0382\u0007u\u0002\u0002\u0382\u0383", - "\u0007g\u0002\u0002\u0383\u0384\u0007r\u0002\u0002\u0384\u0385\u0007", - "q\u0002\u0002\u0385\u0386\u0007q\u0002\u0002\u0386\u0387\u0007n\u0002", - "\u0002\u0387z\u0003\u0002\u0002\u0002\u0388\u0389\u0007B\u0002\u0002", - "\u0389\u038a\u0007e\u0002\u0002\u038a\u038b\u0007c\u0002\u0002\u038b", - "\u038c\u0007v\u0002\u0002\u038c\u038d\u0007e\u0002\u0002\u038d\u038e", - "\u0007j\u0002\u0002\u038e|\u0003\u0002\u0002\u0002\u038f\u0390\u0007", - "B\u0002\u0002\u0390\u0391\u0007e\u0002\u0002\u0391\u0392\u0007n\u0002", - "\u0002\u0392\u0393\u0007c\u0002\u0002\u0393\u0394\u0007u\u0002\u0002", - "\u0394\u0395\u0007u\u0002\u0002\u0395~\u0003\u0002\u0002\u0002\u0396", - "\u0397\u0007B\u0002\u0002\u0397\u0398\u0007f\u0002\u0002\u0398\u0399", - "\u0007{\u0002\u0002\u0399\u039a\u0007p\u0002\u0002\u039a\u039b\u0007", - "c\u0002\u0002\u039b\u039c\u0007o\u0002\u0002\u039c\u039d\u0007k\u0002", - "\u0002\u039d\u039e\u0007e\u0002\u0002\u039e\u0080\u0003\u0002\u0002", - "\u0002\u039f\u03a0\u0007B\u0002\u0002\u03a0\u03a1\u0007g\u0002\u0002", - "\u03a1\u03a2\u0007p\u0002\u0002\u03a2\u03a3\u0007e\u0002\u0002\u03a3", - "\u03a4\u0007q\u0002\u0002\u03a4\u03a5\u0007f\u0002\u0002\u03a5\u03a6", - "\u0007g\u0002\u0002\u03a6\u0082\u0003\u0002\u0002\u0002\u03a7\u03a8", - "\u0007B\u0002\u0002\u03a8\u03a9\u0007g\u0002\u0002\u03a9\u03aa\u0007", - "p\u0002\u0002\u03aa\u03ab\u0007f\u0002\u0002\u03ab\u0084\u0003\u0002", - "\u0002\u0002\u03ac\u03ad\u0007B\u0002\u0002\u03ad\u03ae\u0007h\u0002", - "\u0002\u03ae\u03af\u0007k\u0002\u0002\u03af\u03b0\u0007p\u0002\u0002", - "\u03b0\u03b1\u0007c\u0002\u0002\u03b1\u03b2\u0007n\u0002\u0002\u03b2", - "\u03b3\u0007n\u0002\u0002\u03b3\u03b4\u0007{\u0002\u0002\u03b4\u0086", - "\u0003\u0002\u0002\u0002\u03b5\u03b6\u0007B\u0002\u0002\u03b6\u03b7", - "\u0007k\u0002\u0002\u03b7\u03b8\u0007o\u0002\u0002\u03b8\u03b9\u0007", - "r\u0002\u0002\u03b9\u03ba\u0007n\u0002\u0002\u03ba\u03bb\u0007g\u0002", - "\u0002\u03bb\u03bc\u0007o\u0002\u0002\u03bc\u03bd\u0007g\u0002\u0002", - "\u03bd\u03be\u0007p\u0002\u0002\u03be\u03bf\u0007v\u0002\u0002\u03bf", - "\u03c0\u0007c\u0002\u0002\u03c0\u03c1\u0007v\u0002\u0002\u03c1\u03c2", - "\u0007k\u0002\u0002\u03c2\u03c3\u0007q\u0002\u0002\u03c3\u03c4\u0007", - "p\u0002\u0002\u03c4\u0088\u0003\u0002\u0002\u0002\u03c5\u03c6\u0007", - "B\u0002\u0002\u03c6\u03c7\u0007k\u0002\u0002\u03c7\u03c8\u0007p\u0002", - "\u0002\u03c8\u03c9\u0007v\u0002\u0002\u03c9\u03ca\u0007g\u0002\u0002", - "\u03ca\u03cb\u0007t\u0002\u0002\u03cb\u03cc\u0007h\u0002\u0002\u03cc", - "\u03cd\u0007c\u0002\u0002\u03cd\u03ce\u0007e\u0002\u0002\u03ce\u03cf", - "\u0007g\u0002\u0002\u03cf\u008a\u0003\u0002\u0002\u0002\u03d0\u03d1", - "\u0007B\u0002\u0002\u03d1\u03d2\u0007k\u0002\u0002\u03d2\u03d3\u0007", - "o\u0002\u0002\u03d3\u03d4\u0007r\u0002\u0002\u03d4\u03d5\u0007q\u0002", - "\u0002\u03d5\u03d6\u0007t\u0002\u0002\u03d6\u03df\u0007v\u0002\u0002", - "\u03d7\u03d8\u0007%\u0002\u0002\u03d8\u03d9\u0007k\u0002\u0002\u03d9", - "\u03da\u0007o\u0002\u0002\u03da\u03db\u0007r\u0002\u0002\u03db\u03dc", - "\u0007q\u0002\u0002\u03dc\u03dd\u0007t\u0002\u0002\u03dd\u03df\u0007", - "v\u0002\u0002\u03de\u03d0\u0003\u0002\u0002\u0002\u03de\u03d7\u0003", - "\u0002\u0002\u0002\u03df\u008c\u0003\u0002\u0002\u0002\u03e0\u03e1\u0007", - "B\u0002\u0002\u03e1\u03e2\u0007r\u0002\u0002\u03e2\u03e3\u0007c\u0002", - "\u0002\u03e3\u03e4\u0007e\u0002\u0002\u03e4\u03e5\u0007m\u0002\u0002", - "\u03e5\u03e6\u0007c\u0002\u0002\u03e6\u03e7\u0007i\u0002\u0002\u03e7", - "\u03e8\u0007g\u0002\u0002\u03e8\u008e\u0003\u0002\u0002\u0002\u03e9", - "\u03ea\u0007B\u0002\u0002\u03ea\u03eb\u0007r\u0002\u0002\u03eb\u03ec", - "\u0007t\u0002\u0002\u03ec\u03ed\u0007q\u0002\u0002\u03ed\u03ee\u0007", - "v\u0002\u0002\u03ee\u03ef\u0007q\u0002\u0002\u03ef\u03f0\u0007e\u0002", - "\u0002\u03f0\u03f1\u0007q\u0002\u0002\u03f1\u03f2\u0007n\u0002\u0002", - "\u03f2\u0090\u0003\u0002\u0002\u0002\u03f3\u03f4\u0007B\u0002\u0002", - "\u03f4\u03f5\u0007q\u0002\u0002\u03f5\u03f6\u0007r\u0002\u0002\u03f6", - "\u03f7\u0007v\u0002\u0002\u03f7\u03f8\u0007k\u0002\u0002\u03f8\u03f9", - "\u0007q\u0002\u0002\u03f9\u03fa\u0007p\u0002\u0002\u03fa\u03fb\u0007", - "c\u0002\u0002\u03fb\u03fc\u0007n\u0002\u0002\u03fc\u0092\u0003\u0002", - "\u0002\u0002\u03fd\u03fe\u0007B\u0002\u0002\u03fe\u03ff\u0007r\u0002", - "\u0002\u03ff\u0400\u0007t\u0002\u0002\u0400\u0401\u0007k\u0002\u0002", - "\u0401\u0402\u0007x\u0002\u0002\u0402\u0403\u0007c\u0002\u0002\u0403", - "\u0404\u0007v\u0002\u0002\u0404\u0405\u0007g\u0002\u0002\u0405\u0094", - "\u0003\u0002\u0002\u0002\u0406\u0407\u0007B\u0002\u0002\u0407\u0408", - "\u0007r\u0002\u0002\u0408\u0409\u0007t\u0002\u0002\u0409\u040a\u0007", - "q\u0002\u0002\u040a\u040b\u0007r\u0002\u0002\u040b\u040c\u0007g\u0002", - "\u0002\u040c\u040d\u0007t\u0002\u0002\u040d\u040e\u0007v\u0002\u0002", - "\u040e\u040f\u0007{\u0002\u0002\u040f\u0096\u0003\u0002\u0002\u0002", - "\u0410\u0411\u0007B\u0002\u0002\u0411\u0412\u0007r\u0002\u0002\u0412", - "\u0413\u0007t\u0002\u0002\u0413\u0414\u0007q\u0002\u0002\u0414\u0415", - "\u0007v\u0002\u0002\u0415\u0416\u0007g\u0002\u0002\u0416\u0417\u0007", - "e\u0002\u0002\u0417\u0418\u0007v\u0002\u0002\u0418\u0419\u0007g\u0002", - "\u0002\u0419\u041a\u0007f\u0002\u0002\u041a\u0098\u0003\u0002\u0002", - "\u0002\u041b\u041c\u0007B\u0002\u0002\u041c\u041d\u0007r\u0002\u0002", - "\u041d\u041e\u0007w\u0002\u0002\u041e\u041f\u0007d\u0002\u0002\u041f", - "\u0420\u0007n\u0002\u0002\u0420\u0421\u0007k\u0002\u0002\u0421\u0422", - "\u0007e\u0002\u0002\u0422\u009a\u0003\u0002\u0002\u0002\u0423\u0424", - "\u0007B\u0002\u0002\u0424\u0425\u0007t\u0002\u0002\u0425\u0426\u0007", - "g\u0002\u0002\u0426\u0427\u0007s\u0002\u0002\u0427\u0428\u0007w\u0002", - "\u0002\u0428\u0429\u0007k\u0002\u0002\u0429\u042a\u0007t\u0002\u0002", - "\u042a\u042b\u0007g\u0002\u0002\u042b\u042c\u0007f\u0002\u0002\u042c", - "\u009c\u0003\u0002\u0002\u0002\u042d\u042e\u0007B\u0002\u0002\u042e", - "\u042f\u0007u\u0002\u0002\u042f\u0430\u0007g\u0002\u0002\u0430\u0431", - "\u0007n\u0002\u0002\u0431\u0432\u0007g\u0002\u0002\u0432\u0433\u0007", - "e\u0002\u0002\u0433\u0434\u0007v\u0002\u0002\u0434\u0435\u0007q\u0002", - "\u0002\u0435\u0436\u0007t\u0002\u0002\u0436\u009e\u0003\u0002\u0002", - "\u0002\u0437\u0438\u0007B\u0002\u0002\u0438\u0439\u0007u\u0002\u0002", - "\u0439\u043a\u0007{\u0002\u0002\u043a\u043b\u0007p\u0002\u0002\u043b", - "\u043c\u0007e\u0002\u0002\u043c\u043d\u0007j\u0002\u0002\u043d\u043e", - "\u0007t\u0002\u0002\u043e\u043f\u0007q\u0002\u0002\u043f\u0440\u0007", - "p\u0002\u0002\u0440\u0441\u0007k\u0002\u0002\u0441\u0442\u0007|\u0002", - "\u0002\u0442\u0443\u0007g\u0002\u0002\u0443\u0444\u0007f\u0002\u0002", - "\u0444\u00a0\u0003\u0002\u0002\u0002\u0445\u0446\u0007B\u0002\u0002", - "\u0446\u0447\u0007u\u0002\u0002\u0447\u0448\u0007{\u0002\u0002\u0448", - "\u0449\u0007p\u0002\u0002\u0449\u044a\u0007v\u0002\u0002\u044a\u044b", - "\u0007j\u0002\u0002\u044b\u044c\u0007g\u0002\u0002\u044c\u044d\u0007", - "u\u0002\u0002\u044d\u044e\u0007k\u0002\u0002\u044e\u044f\u0007|\u0002", - "\u0002\u044f\u0450\u0007g\u0002\u0002\u0450\u00a2\u0003\u0002\u0002", - "\u0002\u0451\u0452\u0007B\u0002\u0002\u0452\u0453\u0007v\u0002\u0002", - "\u0453\u0454\u0007j\u0002\u0002\u0454\u0455\u0007t\u0002\u0002\u0455", - "\u0456\u0007q\u0002\u0002\u0456\u0457\u0007y\u0002\u0002\u0457\u00a4", - "\u0003\u0002\u0002\u0002\u0458\u0459\u0007B\u0002\u0002\u0459\u045a", - "\u0007v\u0002\u0002\u045a\u045b\u0007t\u0002\u0002\u045b\u045c\u0007", - "{\u0002\u0002\u045c\u00a6\u0003\u0002\u0002\u0002\u045d\u045e\u0007", - "c\u0002\u0002\u045e\u045f\u0007v\u0002\u0002\u045f\u0460\u0007q\u0002", - "\u0002\u0460\u0461\u0007o\u0002\u0002\u0461\u0462\u0007k\u0002\u0002", - "\u0462\u0463\u0007e\u0002\u0002\u0463\u00a8\u0003\u0002\u0002\u0002", - "\u0464\u0465\u0007p\u0002\u0002\u0465\u0466\u0007q\u0002\u0002\u0466", - "\u0467\u0007p\u0002\u0002\u0467\u0468\u0007c\u0002\u0002\u0468\u0469", - "\u0007v\u0002\u0002\u0469\u046a\u0007q\u0002\u0002\u046a\u046b\u0007", - "o\u0002\u0002\u046b\u046c\u0007k\u0002\u0002\u046c\u046d\u0007e\u0002", - "\u0002\u046d\u00aa\u0003\u0002\u0002\u0002\u046e\u046f\u0007t\u0002", - "\u0002\u046f\u0470\u0007g\u0002\u0002\u0470\u0471\u0007v\u0002\u0002", - "\u0471\u0472\u0007c\u0002\u0002\u0472\u0473\u0007k\u0002\u0002\u0473", - "\u0474\u0007p\u0002\u0002\u0474\u00ac\u0003\u0002\u0002\u0002\u0475", - "\u0476\u0007a\u0002\u0002\u0476\u0477\u0007a\u0002\u0002\u0477\u0478", + "\u0002\u021d\u0002\u021f\u0002\u0221\u0002\u0223\u0002\u0225\u0002\u0227", + "\u0002\u0229\u0002\u022b\u0002\u022d\u0002\u022f\u0002\u0231\u0002\u0233", + "\u0002\u0235\u0002\u0237\u0002\u0239\u0002\u0007\u0002\u0003\u0004\u0005", + "\u00064\u0004\u0002\f\f\u000f\u000f\u0004\u0002C\\aa\u0003\u0002++\u0004", + "\u0002))^^\u0004\u0002ZZzz\u0003\u000229\u0004\u0002DDdd\u0003\u0002", + "23\u0003\u00022;\u0004\u0002$$^^\u0004\u0002\u000b\u000b\"\"\u0006\u0002", + "\u000b\u000b\"\"..00\u0006\u0002\f\f\u000f\u000f11^^\u0006\u0002&&C", + "\\aac|\u0004\u0002\u0002\u0101\ud802\udc01\u0003\u0002\ud802\udc01\u0003", + "\u0002\udc02\ue001\u0003\u0002\u00eb\u00eb\u0006\u0002NNWWnnww\u0004", + "\u0002GGgg\u0004\u0002--//\u0006\u0002FFHHffhh\u0004\u0002BBNN\n\u0002", + "$$))^^ddhhppttvv\u0003\u000225\u0005\u00022;CHch\u0005\u0002\u000b\f", + "\u000e\u000f\"\"\u0004\u0002CCcc\u0004\u0002EEee\u0004\u0002FFff\u0004", + "\u0002HHhh\u0004\u0002IIii\u0004\u0002JJjj\u0004\u0002KKkk\u0004\u0002", + "LLll\u0004\u0002MMmm\u0004\u0002NNnn\u0004\u0002OOoo\u0004\u0002PPp", + "p\u0004\u0002QQqq\u0004\u0002RRrr\u0004\u0002SSss\u0004\u0002TTtt\u0004", + "\u0002UUuu\u0004\u0002VVvv\u0004\u0002WWww\u0004\u0002XXxx\u0004\u0002", + "YYyy\u0004\u0002[[{{\u0004\u0002\\\\||\u0002\u0a99\u0002\u0007\u0003", + "\u0002\u0002\u0002\u0002\t\u0003\u0002\u0002\u0002\u0002\u000b\u0003", + "\u0002\u0002\u0002\u0002\r\u0003\u0002\u0002\u0002\u0002\u000f\u0003", + "\u0002\u0002\u0002\u0002\u0011\u0003\u0002\u0002\u0002\u0002\u0013\u0003", + "\u0002\u0002\u0002\u0002\u0015\u0003\u0002\u0002\u0002\u0002\u0017\u0003", + "\u0002\u0002\u0002\u0002\u0019\u0003\u0002\u0002\u0002\u0002\u001b\u0003", + "\u0002\u0002\u0002\u0002\u001d\u0003\u0002\u0002\u0002\u0002\u001f\u0003", + "\u0002\u0002\u0002\u0002!\u0003\u0002\u0002\u0002\u0002#\u0003\u0002", + "\u0002\u0002\u0002%\u0003\u0002\u0002\u0002\u0002\'\u0003\u0002\u0002", + "\u0002\u0002)\u0003\u0002\u0002\u0002\u0002+\u0003\u0002\u0002\u0002", + "\u0002-\u0003\u0002\u0002\u0002\u0002/\u0003\u0002\u0002\u0002\u0002", + "1\u0003\u0002\u0002\u0002\u00023\u0003\u0002\u0002\u0002\u00025\u0003", + "\u0002\u0002\u0002\u00027\u0003\u0002\u0002\u0002\u00029\u0003\u0002", + "\u0002\u0002\u0002;\u0003\u0002\u0002\u0002\u0002=\u0003\u0002\u0002", + "\u0002\u0002?\u0003\u0002\u0002\u0002\u0002A\u0003\u0002\u0002\u0002", + "\u0002C\u0003\u0002\u0002\u0002\u0002E\u0003\u0002\u0002\u0002\u0002", + "G\u0003\u0002\u0002\u0002\u0002I\u0003\u0002\u0002\u0002\u0002K\u0003", + "\u0002\u0002\u0002\u0002M\u0003\u0002\u0002\u0002\u0002O\u0003\u0002", + "\u0002\u0002\u0002Q\u0003\u0002\u0002\u0002\u0002S\u0003\u0002\u0002", + "\u0002\u0002U\u0003\u0002\u0002\u0002\u0002W\u0003\u0002\u0002\u0002", + "\u0002Y\u0003\u0002\u0002\u0002\u0002[\u0003\u0002\u0002\u0002\u0002", + "]\u0003\u0002\u0002\u0002\u0002_\u0003\u0002\u0002\u0002\u0002a\u0003", + "\u0002\u0002\u0002\u0002c\u0003\u0002\u0002\u0002\u0002e\u0003\u0002", + "\u0002\u0002\u0002g\u0003\u0002\u0002\u0002\u0002i\u0003\u0002\u0002", + "\u0002\u0002k\u0003\u0002\u0002\u0002\u0002m\u0003\u0002\u0002\u0002", + "\u0002o\u0003\u0002\u0002\u0002\u0002q\u0003\u0002\u0002\u0002\u0002", + "s\u0003\u0002\u0002\u0002\u0002u\u0003\u0002\u0002\u0002\u0002w\u0003", + "\u0002\u0002\u0002\u0002y\u0003\u0002\u0002\u0002\u0002{\u0003\u0002", + "\u0002\u0002\u0002}\u0003\u0002\u0002\u0002\u0002\u007f\u0003\u0002", + "\u0002\u0002\u0002\u0081\u0003\u0002\u0002\u0002\u0002\u0083\u0003\u0002", + "\u0002\u0002\u0002\u0085\u0003\u0002\u0002\u0002\u0002\u0087\u0003\u0002", + "\u0002\u0002\u0002\u0089\u0003\u0002\u0002\u0002\u0002\u008b\u0003\u0002", + "\u0002\u0002\u0002\u008d\u0003\u0002\u0002\u0002\u0002\u008f\u0003\u0002", + "\u0002\u0002\u0002\u0091\u0003\u0002\u0002\u0002\u0002\u0093\u0003\u0002", + "\u0002\u0002\u0002\u0095\u0003\u0002\u0002\u0002\u0002\u0097\u0003\u0002", + "\u0002\u0002\u0002\u0099\u0003\u0002\u0002\u0002\u0002\u009b\u0003\u0002", + "\u0002\u0002\u0002\u009d\u0003\u0002\u0002\u0002\u0002\u009f\u0003\u0002", + "\u0002\u0002\u0002\u00a1\u0003\u0002\u0002\u0002\u0002\u00a3\u0003\u0002", + "\u0002\u0002\u0002\u00a5\u0003\u0002\u0002\u0002\u0002\u00a7\u0003\u0002", + "\u0002\u0002\u0002\u00a9\u0003\u0002\u0002\u0002\u0002\u00ab\u0003\u0002", + "\u0002\u0002\u0002\u00ad\u0003\u0002\u0002\u0002\u0002\u00af\u0003\u0002", + "\u0002\u0002\u0002\u00b1\u0003\u0002\u0002\u0002\u0002\u00b3\u0003\u0002", + "\u0002\u0002\u0002\u00b5\u0003\u0002\u0002\u0002\u0002\u00b7\u0003\u0002", + "\u0002\u0002\u0002\u00b9\u0003\u0002\u0002\u0002\u0002\u00bb\u0003\u0002", + "\u0002\u0002\u0002\u00bd\u0003\u0002\u0002\u0002\u0002\u00bf\u0003\u0002", + "\u0002\u0002\u0002\u00c1\u0003\u0002\u0002\u0002\u0002\u00c3\u0003\u0002", + "\u0002\u0002\u0002\u00c5\u0003\u0002\u0002\u0002\u0002\u00c7\u0003\u0002", + "\u0002\u0002\u0002\u00c9\u0003\u0002\u0002\u0002\u0002\u00cb\u0003\u0002", + "\u0002\u0002\u0002\u00cd\u0003\u0002\u0002\u0002\u0002\u00cf\u0003\u0002", + "\u0002\u0002\u0002\u00d1\u0003\u0002\u0002\u0002\u0002\u00d3\u0003\u0002", + "\u0002\u0002\u0002\u00d5\u0003\u0002\u0002\u0002\u0002\u00d7\u0003\u0002", + "\u0002\u0002\u0002\u00d9\u0003\u0002\u0002\u0002\u0002\u00db\u0003\u0002", + "\u0002\u0002\u0002\u00dd\u0003\u0002\u0002\u0002\u0002\u00df\u0003\u0002", + "\u0002\u0002\u0002\u00e1\u0003\u0002\u0002\u0002\u0002\u00e3\u0003\u0002", + "\u0002\u0002\u0002\u00e5\u0003\u0002\u0002\u0002\u0002\u00e7\u0003\u0002", + "\u0002\u0002\u0002\u00e9\u0003\u0002\u0002\u0002\u0002\u00eb\u0003\u0002", + "\u0002\u0002\u0002\u00ed\u0003\u0002\u0002\u0002\u0002\u00ef\u0003\u0002", + "\u0002\u0002\u0002\u00f1\u0003\u0002\u0002\u0002\u0002\u00f3\u0003\u0002", + "\u0002\u0002\u0002\u00f5\u0003\u0002\u0002\u0002\u0002\u00f7\u0003\u0002", + "\u0002\u0002\u0002\u00f9\u0003\u0002\u0002\u0002\u0002\u00fb\u0003\u0002", + "\u0002\u0002\u0002\u00fd\u0003\u0002\u0002\u0002\u0002\u00ff\u0003\u0002", + "\u0002\u0002\u0002\u0101\u0003\u0002\u0002\u0002\u0002\u0103\u0003\u0002", + "\u0002\u0002\u0002\u0105\u0003\u0002\u0002\u0002\u0002\u0107\u0003\u0002", + "\u0002\u0002\u0002\u0109\u0003\u0002\u0002\u0002\u0002\u010b\u0003\u0002", + "\u0002\u0002\u0002\u010d\u0003\u0002\u0002\u0002\u0002\u010f\u0003\u0002", + "\u0002\u0002\u0002\u0111\u0003\u0002\u0002\u0002\u0002\u0113\u0003\u0002", + "\u0002\u0002\u0002\u0115\u0003\u0002\u0002\u0002\u0002\u0117\u0003\u0002", + "\u0002\u0002\u0002\u0119\u0003\u0002\u0002\u0002\u0002\u011b\u0003\u0002", + "\u0002\u0002\u0002\u011d\u0003\u0002\u0002\u0002\u0002\u011f\u0003\u0002", + "\u0002\u0002\u0002\u0121\u0003\u0002\u0002\u0002\u0002\u0123\u0003\u0002", + "\u0002\u0002\u0002\u0125\u0003\u0002\u0002\u0002\u0002\u0127\u0003\u0002", + "\u0002\u0002\u0002\u0129\u0003\u0002\u0002\u0002\u0002\u012b\u0003\u0002", + "\u0002\u0002\u0002\u012d\u0003\u0002\u0002\u0002\u0002\u012f\u0003\u0002", + "\u0002\u0002\u0002\u0131\u0003\u0002\u0002\u0002\u0002\u0133\u0003\u0002", + "\u0002\u0002\u0002\u0135\u0003\u0002\u0002\u0002\u0002\u0137\u0003\u0002", + "\u0002\u0002\u0002\u0139\u0003\u0002\u0002\u0002\u0002\u013b\u0003\u0002", + "\u0002\u0002\u0002\u013d\u0003\u0002\u0002\u0002\u0002\u013f\u0003\u0002", + "\u0002\u0002\u0002\u0141\u0003\u0002\u0002\u0002\u0002\u0143\u0003\u0002", + "\u0002\u0002\u0002\u0145\u0003\u0002\u0002\u0002\u0002\u0147\u0003\u0002", + "\u0002\u0002\u0002\u0149\u0003\u0002\u0002\u0002\u0002\u014b\u0003\u0002", + "\u0002\u0002\u0002\u014d\u0003\u0002\u0002\u0002\u0002\u014f\u0003\u0002", + "\u0002\u0002\u0002\u0151\u0003\u0002\u0002\u0002\u0002\u0153\u0003\u0002", + "\u0002\u0002\u0002\u0155\u0003\u0002\u0002\u0002\u0002\u0157\u0003\u0002", + "\u0002\u0002\u0002\u0159\u0003\u0002\u0002\u0002\u0002\u015b\u0003\u0002", + "\u0002\u0002\u0002\u015d\u0003\u0002\u0002\u0002\u0002\u015f\u0003\u0002", + "\u0002\u0002\u0002\u0161\u0003\u0002\u0002\u0002\u0002\u0163\u0003\u0002", + "\u0002\u0002\u0002\u0165\u0003\u0002\u0002\u0002\u0002\u0167\u0003\u0002", + "\u0002\u0002\u0002\u0169\u0003\u0002\u0002\u0002\u0002\u016b\u0003\u0002", + "\u0002\u0002\u0002\u016d\u0003\u0002\u0002\u0002\u0002\u016f\u0003\u0002", + "\u0002\u0002\u0002\u0171\u0003\u0002\u0002\u0002\u0002\u0173\u0003\u0002", + "\u0002\u0002\u0002\u0175\u0003\u0002\u0002\u0002\u0002\u0177\u0003\u0002", + "\u0002\u0002\u0002\u0179\u0003\u0002\u0002\u0002\u0002\u017b\u0003\u0002", + "\u0002\u0002\u0003\u017d\u0003\u0002\u0002\u0002\u0003\u017f\u0003\u0002", + "\u0002\u0002\u0003\u0181\u0003\u0002\u0002\u0002\u0003\u0183\u0003\u0002", + "\u0002\u0002\u0004\u0185\u0003\u0002\u0002\u0002\u0004\u0187\u0003\u0002", + "\u0002\u0002\u0004\u0189\u0003\u0002\u0002\u0002\u0004\u018b\u0003\u0002", + "\u0002\u0002\u0004\u018d\u0003\u0002\u0002\u0002\u0004\u018f\u0003\u0002", + "\u0002\u0002\u0004\u0191\u0003\u0002\u0002\u0002\u0004\u0193\u0003\u0002", + "\u0002\u0002\u0004\u0195\u0003\u0002\u0002\u0002\u0004\u0197\u0003\u0002", + "\u0002\u0002\u0004\u0199\u0003\u0002\u0002\u0002\u0004\u019b\u0003\u0002", + "\u0002\u0002\u0004\u019d\u0003\u0002\u0002\u0002\u0004\u019f\u0003\u0002", + "\u0002\u0002\u0004\u01a1\u0003\u0002\u0002\u0002\u0004\u01a3\u0003\u0002", + "\u0002\u0002\u0004\u01a5\u0003\u0002\u0002\u0002\u0004\u01a7\u0003\u0002", + "\u0002\u0002\u0004\u01a9\u0003\u0002\u0002\u0002\u0004\u01ab\u0003\u0002", + "\u0002\u0002\u0004\u01ad\u0003\u0002\u0002\u0002\u0004\u01af\u0003\u0002", + "\u0002\u0002\u0004\u01b1\u0003\u0002\u0002\u0002\u0004\u01b3\u0003\u0002", + "\u0002\u0002\u0004\u01b5\u0003\u0002\u0002\u0002\u0004\u01b7\u0003\u0002", + "\u0002\u0002\u0004\u01b9\u0003\u0002\u0002\u0002\u0004\u01bb\u0003\u0002", + "\u0002\u0002\u0004\u01bd\u0003\u0002\u0002\u0002\u0004\u01bf\u0003\u0002", + "\u0002\u0002\u0004\u01c1\u0003\u0002\u0002\u0002\u0004\u01c3\u0003\u0002", + "\u0002\u0002\u0004\u01c5\u0003\u0002\u0002\u0002\u0004\u01c7\u0003\u0002", + "\u0002\u0002\u0004\u01c9\u0003\u0002\u0002\u0002\u0004\u01cb\u0003\u0002", + "\u0002\u0002\u0004\u01cd\u0003\u0002\u0002\u0002\u0004\u01cf\u0003\u0002", + "\u0002\u0002\u0004\u01d1\u0003\u0002\u0002\u0002\u0004\u01d3\u0003\u0002", + "\u0002\u0002\u0004\u01d5\u0003\u0002\u0002\u0002\u0004\u01d7\u0003\u0002", + "\u0002\u0002\u0004\u01d9\u0003\u0002\u0002\u0002\u0004\u01db\u0003\u0002", + "\u0002\u0002\u0004\u01dd\u0003\u0002\u0002\u0002\u0005\u01df\u0003\u0002", + "\u0002\u0002\u0006\u01e1\u0003\u0002\u0002\u0002\u0006\u01e3\u0003\u0002", + "\u0002\u0002\u0006\u01e5\u0003\u0002\u0002\u0002\u0006\u01e7\u0003\u0002", + "\u0002\u0002\u0006\u01e9\u0003\u0002\u0002\u0002\u0006\u01eb\u0003\u0002", + "\u0002\u0002\u0006\u01ed\u0003\u0002\u0002\u0002\u0007\u023b\u0003\u0002", + "\u0002\u0002\t\u0240\u0003\u0002\u0002\u0002\u000b\u0246\u0003\u0002", + "\u0002\u0002\r\u024b\u0003\u0002\u0002\u0002\u000f\u0250\u0003\u0002", + "\u0002\u0002\u0011\u0256\u0003\u0002\u0002\u0002\u0013\u025f\u0003\u0002", + "\u0002\u0002\u0015\u0267\u0003\u0002\u0002\u0002\u0017\u026a\u0003\u0002", + "\u0002\u0002\u0019\u0271\u0003\u0002\u0002\u0002\u001b\u0276\u0003\u0002", + "\u0002\u0002\u001d\u027b\u0003\u0002\u0002\u0002\u001f\u0282\u0003\u0002", + "\u0002\u0002!\u0288\u0003\u0002\u0002\u0002#\u028c\u0003\u0002\u0002", + "\u0002%\u0291\u0003\u0002\u0002\u0002\'\u0294\u0003\u0002\u0002\u0002", + ")\u029b\u0003\u0002\u0002\u0002+\u029f\u0003\u0002\u0002\u0002-\u02a4", + "\u0003\u0002\u0002\u0002/\u02ad\u0003\u0002\u0002\u00021\u02b6\u0003", + "\u0002\u0002\u00023\u02bd\u0003\u0002\u0002\u00025\u02c3\u0003\u0002", + "\u0002\u00027\u02ca\u0003\u0002\u0002\u00029\u02d1\u0003\u0002\u0002", + "\u0002;\u02d8\u0003\u0002\u0002\u0002=\u02df\u0003\u0002\u0002\u0002", + "?\u02e6\u0003\u0002\u0002\u0002A\u02ee\u0003\u0002\u0002\u0002C\u02f4", + "\u0003\u0002\u0002\u0002E\u02fd\u0003\u0002\u0002\u0002G\u0302\u0003", + "\u0002\u0002\u0002I\u030b\u0003\u0002\u0002\u0002K\u0311\u0003\u0002", + "\u0002\u0002M\u0317\u0003\u0002\u0002\u0002O\u0320\u0003\u0002\u0002", + "\u0002Q\u032b\u0003\u0002\u0002\u0002S\u0330\u0003\u0002\u0002\u0002", + "U\u0336\u0003\u0002\u0002\u0002W\u033b\u0003\u0002\u0002\u0002Y\u0341", + "\u0003\u0002\u0002\u0002[\u0348\u0003\u0002\u0002\u0002]\u034e\u0003", + "\u0002\u0002\u0002_\u0351\u0003\u0002\u0002\u0002a\u0355\u0003\u0002", + "\u0002\u0002c\u0358\u0003\u0002\u0002\u0002e\u035e\u0003\u0002\u0002", + "\u0002g\u0362\u0003\u0002\u0002\u0002i\u0365\u0003\u0002\u0002\u0002", + "k\u036a\u0003\u0002\u0002\u0002m\u0371\u0003\u0002\u0002\u0002o\u0375", + "\u0003\u0002\u0002\u0002q\u037e\u0003\u0002\u0002\u0002s\u0382\u0003", + "\u0002\u0002\u0002u\u0387\u0003\u0002\u0002\u0002w\u038d\u0003\u0002", + "\u0002\u0002y\u0391\u0003\u0002\u0002\u0002{\u03a2\u0003\u0002\u0002", + "\u0002}\u03a9\u0003\u0002\u0002\u0002\u007f\u03b0\u0003\u0002\u0002", + "\u0002\u0081\u03b9\u0003\u0002\u0002\u0002\u0083\u03c1\u0003\u0002\u0002", + "\u0002\u0085\u03c6\u0003\u0002\u0002\u0002\u0087\u03cf\u0003\u0002\u0002", + "\u0002\u0089\u03df\u0003\u0002\u0002\u0002\u008b\u03f8\u0003\u0002\u0002", + "\u0002\u008d\u03fa\u0003\u0002\u0002\u0002\u008f\u0403\u0003\u0002\u0002", + "\u0002\u0091\u040d\u0003\u0002\u0002\u0002\u0093\u0417\u0003\u0002\u0002", + "\u0002\u0095\u0420\u0003\u0002\u0002\u0002\u0097\u042a\u0003\u0002\u0002", + "\u0002\u0099\u0435\u0003\u0002\u0002\u0002\u009b\u043d\u0003\u0002\u0002", + "\u0002\u009d\u0447\u0003\u0002\u0002\u0002\u009f\u0451\u0003\u0002\u0002", + "\u0002\u00a1\u045f\u0003\u0002\u0002\u0002\u00a3\u046b\u0003\u0002\u0002", + "\u0002\u00a5\u0472\u0003\u0002\u0002\u0002\u00a7\u0477\u0003\u0002\u0002", + "\u0002\u00a9\u047e\u0003\u0002\u0002\u0002\u00ab\u0488\u0003\u0002\u0002", + "\u0002\u00ad\u048f\u0003\u0002\u0002\u0002\u00af\u049d\u0003\u0002\u0002", + "\u0002\u00b1\u04ad\u0003\u0002\u0002\u0002\u00b3\u04b5\u0003\u0002\u0002", + "\u0002\u00b5\u04be\u0003\u0002\u0002\u0002\u00b7\u04d0\u0003\u0002\u0002", + "\u0002\u00b9\u04e2\u0003\u0002\u0002\u0002\u00bb\u04ee\u0003\u0002\u0002", + "\u0002\u00bd\u04fe\u0003\u0002\u0002\u0002\u00bf\u050b\u0003\u0002\u0002", + "\u0002\u00c1\u0514\u0003\u0002\u0002\u0002\u00c3\u0535\u0003\u0002\u0002", + "\u0002\u00c5\u0537\u0003\u0002\u0002\u0002\u00c7\u054b\u0003\u0002\u0002", + "\u0002\u00c9\u0554\u0003\u0002\u0002\u0002\u00cb\u058e\u0003\u0002\u0002", + "\u0002\u00cd\u05ab\u0003\u0002\u0002\u0002\u00cf\u05c5\u0003\u0002\u0002", + "\u0002\u00d1\u05c7\u0003\u0002\u0002\u0002\u00d3\u05d7\u0003\u0002\u0002", + "\u0002\u00d5\u05e1\u0003\u0002\u0002\u0002\u00d7\u05e9\u0003\u0002\u0002", + "\u0002\u00d9\u05f4\u0003\u0002\u0002\u0002\u00db\u0603\u0003\u0002\u0002", + "\u0002\u00dd\u061c\u0003\u0002\u0002\u0002\u00df\u062a\u0003\u0002\u0002", + "\u0002\u00e1\u0631\u0003\u0002\u0002\u0002\u00e3\u0636\u0003\u0002\u0002", + "\u0002\u00e5\u063d\u0003\u0002\u0002\u0002\u00e7\u0644\u0003\u0002\u0002", + "\u0002\u00e9\u064b\u0003\u0002\u0002\u0002\u00eb\u0654\u0003\u0002\u0002", + "\u0002\u00ed\u065e\u0003\u0002\u0002\u0002\u00ef\u0663\u0003\u0002\u0002", + "\u0002\u00f1\u0675\u0003\u0002\u0002\u0002\u00f3\u067e\u0003\u0002\u0002", + "\u0002\u00f5\u0691\u0003\u0002\u0002\u0002\u00f7\u069f\u0003\u0002\u0002", + "\u0002\u00f9\u06ad\u0003\u0002\u0002\u0002\u00fb\u06cd\u0003\u0002\u0002", + "\u0002\u00fd\u06ec\u0003\u0002\u0002\u0002\u00ff\u06fb\u0003\u0002\u0002", + "\u0002\u0101\u070f\u0003\u0002\u0002\u0002\u0103\u0722\u0003\u0002\u0002", + "\u0002\u0105\u0736\u0003\u0002\u0002\u0002\u0107\u0744\u0003\u0002\u0002", + "\u0002\u0109\u074b\u0003\u0002\u0002\u0002\u010b\u074d\u0003\u0002\u0002", + "\u0002\u010d\u074f\u0003\u0002\u0002\u0002\u010f\u0751\u0003\u0002\u0002", + "\u0002\u0111\u0753\u0003\u0002\u0002\u0002\u0113\u0755\u0003\u0002\u0002", + "\u0002\u0115\u0757\u0003\u0002\u0002\u0002\u0117\u0759\u0003\u0002\u0002", + "\u0002\u0119\u075b\u0003\u0002\u0002\u0002\u011b\u075d\u0003\u0002\u0002", + "\u0002\u011d\u0760\u0003\u0002\u0002\u0002\u011f\u0762\u0003\u0002\u0002", + "\u0002\u0121\u0764\u0003\u0002\u0002\u0002\u0123\u0766\u0003\u0002\u0002", + "\u0002\u0125\u0768\u0003\u0002\u0002\u0002\u0127\u076a\u0003\u0002\u0002", + "\u0002\u0129\u076c\u0003\u0002\u0002\u0002\u012b\u076e\u0003\u0002\u0002", + "\u0002\u012d\u0770\u0003\u0002\u0002\u0002\u012f\u0773\u0003\u0002\u0002", + "\u0002\u0131\u0776\u0003\u0002\u0002\u0002\u0133\u0779\u0003\u0002\u0002", + "\u0002\u0135\u077c\u0003\u0002\u0002\u0002\u0137\u077f\u0003\u0002\u0002", + "\u0002\u0139\u0782\u0003\u0002\u0002\u0002\u013b\u0785\u0003\u0002\u0002", + "\u0002\u013d\u0788\u0003\u0002\u0002\u0002\u013f\u078a\u0003\u0002\u0002", + "\u0002\u0141\u078c\u0003\u0002\u0002\u0002\u0143\u078e\u0003\u0002\u0002", + "\u0002\u0145\u0790\u0003\u0002\u0002\u0002\u0147\u0792\u0003\u0002\u0002", + "\u0002\u0149\u0794\u0003\u0002\u0002\u0002\u014b\u0796\u0003\u0002\u0002", + "\u0002\u014d\u0798\u0003\u0002\u0002\u0002\u014f\u079b\u0003\u0002\u0002", + "\u0002\u0151\u079e\u0003\u0002\u0002\u0002\u0153\u07a1\u0003\u0002\u0002", + "\u0002\u0155\u07a4\u0003\u0002\u0002\u0002\u0157\u07a7\u0003\u0002\u0002", + "\u0002\u0159\u07aa\u0003\u0002\u0002\u0002\u015b\u07ad\u0003\u0002\u0002", + "\u0002\u015d\u07b0\u0003\u0002\u0002\u0002\u015f\u07b4\u0003\u0002\u0002", + "\u0002\u0161\u07b8\u0003\u0002\u0002\u0002\u0163\u07bc\u0003\u0002\u0002", + "\u0002\u0165\u07c3\u0003\u0002\u0002\u0002\u0167\u07c7\u0003\u0002\u0002", + "\u0002\u0169\u07d1\u0003\u0002\u0002\u0002\u016b\u07da\u0003\u0002\u0002", + "\u0002\u016d\u07e5\u0003\u0002\u0002\u0002\u016f\u0812\u0003\u0002\u0002", + "\u0002\u0171\u0814\u0003\u0002\u0002\u0002\u0173\u081b\u0003\u0002\u0002", + "\u0002\u0175\u0821\u0003\u0002\u0002\u0002\u0177\u082f\u0003\u0002\u0002", + "\u0002\u0179\u083a\u0003\u0002\u0002\u0002\u017b\u083e\u0003\u0002\u0002", + "\u0002\u017d\u0843\u0003\u0002\u0002\u0002\u017f\u084b\u0003\u0002\u0002", + "\u0002\u0181\u0850\u0003\u0002\u0002\u0002\u0183\u0856\u0003\u0002\u0002", + "\u0002\u0185\u085c\u0003\u0002\u0002\u0002\u0187\u086b\u0003\u0002\u0002", + "\u0002\u0189\u087b\u0003\u0002\u0002\u0002\u018b\u0885\u0003\u0002\u0002", + "\u0002\u018d\u0894\u0003\u0002\u0002\u0002\u018f\u089e\u0003\u0002\u0002", + "\u0002\u0191\u08a3\u0003\u0002\u0002\u0002\u0193\u08aa\u0003\u0002\u0002", + "\u0002\u0195\u08b1\u0003\u0002\u0002\u0002\u0197\u08b9\u0003\u0002\u0002", + "\u0002\u0199\u08c1\u0003\u0002\u0002\u0002\u019b\u08ca\u0003\u0002\u0002", + "\u0002\u019d\u08d2\u0003\u0002\u0002\u0002\u019f\u08d9\u0003\u0002\u0002", + "\u0002\u01a1\u08e1\u0003\u0002\u0002\u0002\u01a3\u08ea\u0003\u0002\u0002", + "\u0002\u01a5\u08f5\u0003\u0002\u0002\u0002\u01a7\u08f9\u0003\u0002\u0002", + "\u0002\u01a9\u08fd\u0003\u0002\u0002\u0002\u01ab\u0901\u0003\u0002\u0002", + "\u0002\u01ad\u0906\u0003\u0002\u0002\u0002\u01af\u090b\u0003\u0002\u0002", + "\u0002\u01b1\u0910\u0003\u0002\u0002\u0002\u01b3\u0915\u0003\u0002\u0002", + "\u0002\u01b5\u0919\u0003\u0002\u0002\u0002\u01b7\u091d\u0003\u0002\u0002", + "\u0002\u01b9\u0922\u0003\u0002\u0002\u0002\u01bb\u0927\u0003\u0002\u0002", + "\u0002\u01bd\u092b\u0003\u0002\u0002\u0002\u01bf\u092f\u0003\u0002\u0002", + "\u0002\u01c1\u0933\u0003\u0002\u0002\u0002\u01c3\u0937\u0003\u0002\u0002", + "\u0002\u01c5\u093b\u0003\u0002\u0002\u0002\u01c7\u093f\u0003\u0002\u0002", + "\u0002\u01c9\u0943\u0003\u0002\u0002\u0002\u01cb\u0947\u0003\u0002\u0002", + "\u0002\u01cd\u094c\u0003\u0002\u0002\u0002\u01cf\u0953\u0003\u0002\u0002", + "\u0002\u01d1\u0958\u0003\u0002\u0002\u0002\u01d3\u0962\u0003\u0002\u0002", + "\u0002\u01d5\u097a\u0003\u0002\u0002\u0002\u01d7\u097f\u0003\u0002\u0002", + "\u0002\u01d9\u0986\u0003\u0002\u0002\u0002\u01db\u0994\u0003\u0002\u0002", + "\u0002\u01dd\u099f\u0003\u0002\u0002\u0002\u01df\u09a7\u0003\u0002\u0002", + "\u0002\u01e1\u09bd\u0003\u0002\u0002\u0002\u01e3\u09c5\u0003\u0002\u0002", + "\u0002\u01e5\u09cc\u0003\u0002\u0002\u0002\u01e7\u09d4\u0003\u0002\u0002", + "\u0002\u01e9\u09e3\u0003\u0002\u0002\u0002\u01eb\u09ef\u0003\u0002\u0002", + "\u0002\u01ed\u09f5\u0003\u0002\u0002\u0002\u01ef\u09fd\u0003\u0002\u0002", + "\u0002\u01f1\u0a04\u0003\u0002\u0002\u0002\u01f3\u0a06\u0003\u0002\u0002", + "\u0002\u01f5\u0a0d\u0003\u0002\u0002\u0002\u01f7\u0a16\u0003\u0002\u0002", + "\u0002\u01f9\u0a18\u0003\u0002\u0002\u0002\u01fb\u0a21\u0003\u0002\u0002", + "\u0002\u01fd\u0a29\u0003\u0002\u0002\u0002\u01ff\u0a34\u0003\u0002\u0002", + "\u0002\u0201\u0a36\u0003\u0002\u0002\u0002\u0203\u0a3d\u0003\u0002\u0002", + "\u0002\u0205\u0a3f\u0003\u0002\u0002\u0002\u0207\u0a41\u0003\u0002\u0002", + "\u0002\u0209\u0a43\u0003\u0002\u0002\u0002\u020b\u0a45\u0003\u0002\u0002", + "\u0002\u020d\u0a47\u0003\u0002\u0002\u0002\u020f\u0a49\u0003\u0002\u0002", + "\u0002\u0211\u0a4b\u0003\u0002\u0002\u0002\u0213\u0a4d\u0003\u0002\u0002", + "\u0002\u0215\u0a4f\u0003\u0002\u0002\u0002\u0217\u0a51\u0003\u0002\u0002", + "\u0002\u0219\u0a53\u0003\u0002\u0002\u0002\u021b\u0a55\u0003\u0002\u0002", + "\u0002\u021d\u0a57\u0003\u0002\u0002\u0002\u021f\u0a59\u0003\u0002\u0002", + "\u0002\u0221\u0a5b\u0003\u0002\u0002\u0002\u0223\u0a5d\u0003\u0002\u0002", + "\u0002\u0225\u0a5f\u0003\u0002\u0002\u0002\u0227\u0a61\u0003\u0002\u0002", + "\u0002\u0229\u0a63\u0003\u0002\u0002\u0002\u022b\u0a65\u0003\u0002\u0002", + "\u0002\u022d\u0a67\u0003\u0002\u0002\u0002\u022f\u0a69\u0003\u0002\u0002", + "\u0002\u0231\u0a6b\u0003\u0002\u0002\u0002\u0233\u0a6d\u0003\u0002\u0002", + "\u0002\u0235\u0a6f\u0003\u0002\u0002\u0002\u0237\u0a71\u0003\u0002\u0002", + "\u0002\u0239\u0a73\u0003\u0002\u0002\u0002\u023b\u023c\u0007c\u0002", + "\u0002\u023c\u023d\u0007w\u0002\u0002\u023d\u023e\u0007v\u0002\u0002", + "\u023e\u023f\u0007q\u0002\u0002\u023f\b\u0003\u0002\u0002\u0002\u0240", + "\u0241\u0007d\u0002\u0002\u0241\u0242\u0007t\u0002\u0002\u0242\u0243", + "\u0007g\u0002\u0002\u0243\u0244\u0007c\u0002\u0002\u0244\u0245\u0007", + "m\u0002\u0002\u0245\n\u0003\u0002\u0002\u0002\u0246\u0247\u0007e\u0002", + "\u0002\u0247\u0248\u0007c\u0002\u0002\u0248\u0249\u0007u\u0002\u0002", + "\u0249\u024a\u0007g\u0002\u0002\u024a\f\u0003\u0002\u0002\u0002\u024b", + "\u024c\u0007e\u0002\u0002\u024c\u024d\u0007j\u0002\u0002\u024d\u024e", + "\u0007c\u0002\u0002\u024e\u024f\u0007t\u0002\u0002\u024f\u000e\u0003", + "\u0002\u0002\u0002\u0250\u0251\u0007e\u0002\u0002\u0251\u0252\u0007", + "q\u0002\u0002\u0252\u0253\u0007p\u0002\u0002\u0253\u0254\u0007u\u0002", + "\u0002\u0254\u0255\u0007v\u0002\u0002\u0255\u0010\u0003\u0002\u0002", + "\u0002\u0256\u0257\u0007e\u0002\u0002\u0257\u0258\u0007q\u0002\u0002", + "\u0258\u0259\u0007p\u0002\u0002\u0259\u025a\u0007v\u0002\u0002\u025a", + "\u025b\u0007k\u0002\u0002\u025b\u025c\u0007p\u0002\u0002\u025c\u025d", + "\u0007w\u0002\u0002\u025d\u025e\u0007g\u0002\u0002\u025e\u0012\u0003", + "\u0002\u0002\u0002\u025f\u0260\u0007f\u0002\u0002\u0260\u0261\u0007", + "g\u0002\u0002\u0261\u0262\u0007h\u0002\u0002\u0262\u0263\u0007c\u0002", + "\u0002\u0263\u0264\u0007w\u0002\u0002\u0264\u0265\u0007n\u0002\u0002", + "\u0265\u0266\u0007v\u0002\u0002\u0266\u0014\u0003\u0002\u0002\u0002", + "\u0267\u0268\u0007f\u0002\u0002\u0268\u0269\u0007q\u0002\u0002\u0269", + "\u0016\u0003\u0002\u0002\u0002\u026a\u026b\u0007f\u0002\u0002\u026b", + "\u026c\u0007q\u0002\u0002\u026c\u026d\u0007w\u0002\u0002\u026d\u026e", + "\u0007d\u0002\u0002\u026e\u026f\u0007n\u0002\u0002\u026f\u0270\u0007", + "g\u0002\u0002\u0270\u0018\u0003\u0002\u0002\u0002\u0271\u0272\u0007", + "g\u0002\u0002\u0272\u0273\u0007n\u0002\u0002\u0273\u0274\u0007u\u0002", + "\u0002\u0274\u0275\u0007g\u0002\u0002\u0275\u001a\u0003\u0002\u0002", + "\u0002\u0276\u0277\u0007g\u0002\u0002\u0277\u0278\u0007p\u0002\u0002", + "\u0278\u0279\u0007w\u0002\u0002\u0279\u027a\u0007o\u0002\u0002\u027a", + "\u001c\u0003\u0002\u0002\u0002\u027b\u027c\u0007g\u0002\u0002\u027c", + "\u027d\u0007z\u0002\u0002\u027d\u027e\u0007v\u0002\u0002\u027e\u027f", + "\u0007g\u0002\u0002\u027f\u0280\u0007t\u0002\u0002\u0280\u0281\u0007", + "p\u0002\u0002\u0281\u001e\u0003\u0002\u0002\u0002\u0282\u0283\u0007", + "h\u0002\u0002\u0283\u0284\u0007n\u0002\u0002\u0284\u0285\u0007q\u0002", + "\u0002\u0285\u0286\u0007c\u0002\u0002\u0286\u0287\u0007v\u0002\u0002", + "\u0287 \u0003\u0002\u0002\u0002\u0288\u0289\u0007h\u0002\u0002\u0289", + "\u028a\u0007q\u0002\u0002\u028a\u028b\u0007t\u0002\u0002\u028b\"\u0003", + "\u0002\u0002\u0002\u028c\u028d\u0007i\u0002\u0002\u028d\u028e\u0007", + "q\u0002\u0002\u028e\u028f\u0007v\u0002\u0002\u028f\u0290\u0007q\u0002", + "\u0002\u0290$\u0003\u0002\u0002\u0002\u0291\u0292\u0007k\u0002\u0002", + "\u0292\u0293\u0007h\u0002\u0002\u0293&\u0003\u0002\u0002\u0002\u0294", + "\u0295\u0007k\u0002\u0002\u0295\u0296\u0007p\u0002\u0002\u0296\u0297", + "\u0007n\u0002\u0002\u0297\u0298\u0007k\u0002\u0002\u0298\u0299\u0007", + "p\u0002\u0002\u0299\u029a\u0007g\u0002\u0002\u029a(\u0003\u0002\u0002", + "\u0002\u029b\u029c\u0007k\u0002\u0002\u029c\u029d\u0007p\u0002\u0002", + "\u029d\u029e\u0007v\u0002\u0002\u029e*\u0003\u0002\u0002\u0002\u029f", + "\u02a0\u0007n\u0002\u0002\u02a0\u02a1\u0007q\u0002\u0002\u02a1\u02a2", + "\u0007p\u0002\u0002\u02a2\u02a3\u0007i\u0002\u0002\u02a3,\u0003\u0002", + "\u0002\u0002\u02a4\u02a5\u0007t\u0002\u0002\u02a5\u02a6\u0007g\u0002", + "\u0002\u02a6\u02a7\u0007i\u0002\u0002\u02a7\u02a8\u0007k\u0002\u0002", + "\u02a8\u02a9\u0007u\u0002\u0002\u02a9\u02aa\u0007v\u0002\u0002\u02aa", + "\u02ab\u0007g\u0002\u0002\u02ab\u02ac\u0007t\u0002\u0002\u02ac.\u0003", + "\u0002\u0002\u0002\u02ad\u02ae\u0007t\u0002\u0002\u02ae\u02af\u0007", + "g\u0002\u0002\u02af\u02b0\u0007u\u0002\u0002\u02b0\u02b1\u0007v\u0002", + "\u0002\u02b1\u02b2\u0007t\u0002\u0002\u02b2\u02b3\u0007k\u0002\u0002", + "\u02b3\u02b4\u0007e\u0002\u0002\u02b4\u02b5\u0007v\u0002\u0002\u02b5", + "0\u0003\u0002\u0002\u0002\u02b6\u02b7\u0007t\u0002\u0002\u02b7\u02b8", + "\u0007g\u0002\u0002\u02b8\u02b9\u0007v\u0002\u0002\u02b9\u02ba\u0007", + "w\u0002\u0002\u02ba\u02bb\u0007t\u0002\u0002\u02bb\u02bc\u0007p\u0002", + "\u0002\u02bc2\u0003\u0002\u0002\u0002\u02bd\u02be\u0007u\u0002\u0002", + "\u02be\u02bf\u0007j\u0002\u0002\u02bf\u02c0\u0007q\u0002\u0002\u02c0", + "\u02c1\u0007t\u0002\u0002\u02c1\u02c2\u0007v\u0002\u0002\u02c24\u0003", + "\u0002\u0002\u0002\u02c3\u02c4\u0007u\u0002\u0002\u02c4\u02c5\u0007", + "k\u0002\u0002\u02c5\u02c6\u0007i\u0002\u0002\u02c6\u02c7\u0007p\u0002", + "\u0002\u02c7\u02c8\u0007g\u0002\u0002\u02c8\u02c9\u0007f\u0002\u0002", + "\u02c96\u0003\u0002\u0002\u0002\u02ca\u02cb\u0007u\u0002\u0002\u02cb", + "\u02cc\u0007k\u0002\u0002\u02cc\u02cd\u0007|\u0002\u0002\u02cd\u02ce", + "\u0007g\u0002\u0002\u02ce\u02cf\u0007q\u0002\u0002\u02cf\u02d0\u0007", + "h\u0002\u0002\u02d08\u0003\u0002\u0002\u0002\u02d1\u02d2\u0007u\u0002", + "\u0002\u02d2\u02d3\u0007v\u0002\u0002\u02d3\u02d4\u0007c\u0002\u0002", + "\u02d4\u02d5\u0007v\u0002\u0002\u02d5\u02d6\u0007k\u0002\u0002\u02d6", + "\u02d7\u0007e\u0002\u0002\u02d7:\u0003\u0002\u0002\u0002\u02d8\u02d9", + "\u0007u\u0002\u0002\u02d9\u02da\u0007v\u0002\u0002\u02da\u02db\u0007", + "t\u0002\u0002\u02db\u02dc\u0007w\u0002\u0002\u02dc\u02dd\u0007e\u0002", + "\u0002\u02dd\u02de\u0007v\u0002\u0002\u02de<\u0003\u0002\u0002\u0002", + "\u02df\u02e0\u0007u\u0002\u0002\u02e0\u02e1\u0007y\u0002\u0002\u02e1", + "\u02e2\u0007k\u0002\u0002\u02e2\u02e3\u0007v\u0002\u0002\u02e3\u02e4", + "\u0007e\u0002\u0002\u02e4\u02e5\u0007j\u0002\u0002\u02e5>\u0003\u0002", + "\u0002\u0002\u02e6\u02e7\u0007v\u0002\u0002\u02e7\u02e8\u0007{\u0002", + "\u0002\u02e8\u02e9\u0007r\u0002\u0002\u02e9\u02ea\u0007g\u0002\u0002", + "\u02ea\u02eb\u0007f\u0002\u0002\u02eb\u02ec\u0007g\u0002\u0002\u02ec", + "\u02ed\u0007h\u0002\u0002\u02ed@\u0003\u0002\u0002\u0002\u02ee\u02ef", + "\u0007w\u0002\u0002\u02ef\u02f0\u0007p\u0002\u0002\u02f0\u02f1\u0007", + "k\u0002\u0002\u02f1\u02f2\u0007q\u0002\u0002\u02f2\u02f3\u0007p\u0002", + "\u0002\u02f3B\u0003\u0002\u0002\u0002\u02f4\u02f5\u0007w\u0002\u0002", + "\u02f5\u02f6\u0007p\u0002\u0002\u02f6\u02f7\u0007u\u0002\u0002\u02f7", + "\u02f8\u0007k\u0002\u0002\u02f8\u02f9\u0007i\u0002\u0002\u02f9\u02fa", + "\u0007p\u0002\u0002\u02fa\u02fb\u0007g\u0002\u0002\u02fb\u02fc\u0007", + "f\u0002\u0002\u02fcD\u0003\u0002\u0002\u0002\u02fd\u02fe\u0007x\u0002", + "\u0002\u02fe\u02ff\u0007q\u0002\u0002\u02ff\u0300\u0007k\u0002\u0002", + "\u0300\u0301\u0007f\u0002\u0002\u0301F\u0003\u0002\u0002\u0002\u0302", + "\u0303\u0007x\u0002\u0002\u0303\u0304\u0007q\u0002\u0002\u0304\u0305", + "\u0007n\u0002\u0002\u0305\u0306\u0007c\u0002\u0002\u0306\u0307\u0007", + "v\u0002\u0002\u0307\u0308\u0007k\u0002\u0002\u0308\u0309\u0007n\u0002", + "\u0002\u0309\u030a\u0007g\u0002\u0002\u030aH\u0003\u0002\u0002\u0002", + "\u030b\u030c\u0007y\u0002\u0002\u030c\u030d\u0007j\u0002\u0002\u030d", + "\u030e\u0007k\u0002\u0002\u030e\u030f\u0007n\u0002\u0002\u030f\u0310", + "\u0007g\u0002\u0002\u0310J\u0003\u0002\u0002\u0002\u0311\u0312\u0007", + "a\u0002\u0002\u0312\u0313\u0007D\u0002\u0002\u0313\u0314\u0007q\u0002", + "\u0002\u0314\u0315\u0007q\u0002\u0002\u0315\u0316\u0007n\u0002\u0002", + "\u0316L\u0003\u0002\u0002\u0002\u0317\u0318\u0007a\u0002\u0002\u0318", + "\u0319\u0007E\u0002\u0002\u0319\u031a\u0007q\u0002\u0002\u031a\u031b", + "\u0007o\u0002\u0002\u031b\u031c\u0007r\u0002\u0002\u031c\u031d\u0007", + "n\u0002\u0002\u031d\u031e\u0007g\u0002\u0002\u031e\u031f\u0007z\u0002", + "\u0002\u031fN\u0003\u0002\u0002\u0002\u0320\u0321\u0007a\u0002\u0002", + "\u0321\u0322\u0007K\u0002\u0002\u0322\u0323\u0007o\u0002\u0002\u0323", + "\u0324\u0007c\u0002\u0002\u0324\u0325\u0007i\u0002\u0002\u0325\u0326", + "\u0007k\u0002\u0002\u0326\u0327\u0007p\u0002\u0002\u0327\u0328\u0007", + "g\u0002\u0002\u0328\u0329\u0007t\u0002\u0002\u0329\u032a\u0007{\u0002", + "\u0002\u032aP\u0003\u0002\u0002\u0002\u032b\u032c\u0007v\u0002\u0002", + "\u032c\u032d\u0007t\u0002\u0002\u032d\u032e\u0007w\u0002\u0002\u032e", + "\u032f\u0007g\u0002\u0002\u032fR\u0003\u0002\u0002\u0002\u0330\u0331", + "\u0007h\u0002\u0002\u0331\u0332\u0007c\u0002\u0002\u0332\u0333\u0007", + "n\u0002\u0002\u0333\u0334\u0007u\u0002\u0002\u0334\u0335\u0007g\u0002", + "\u0002\u0335T\u0003\u0002\u0002\u0002\u0336\u0337\u0007D\u0002\u0002", + "\u0337\u0338\u0007Q\u0002\u0002\u0338\u0339\u0007Q\u0002\u0002\u0339", + "\u033a\u0007N\u0002\u0002\u033aV\u0003\u0002\u0002\u0002\u033b\u033c", + "\u0007E\u0002\u0002\u033c\u033d\u0007n\u0002\u0002\u033d\u033e\u0007", + "c\u0002\u0002\u033e\u033f\u0007u\u0002\u0002\u033f\u0340\u0007u\u0002", + "\u0002\u0340X\u0003\u0002\u0002\u0002\u0341\u0342\u0007d\u0002\u0002", + "\u0342\u0343\u0007{\u0002\u0002\u0343\u0344\u0007e\u0002\u0002\u0344", + "\u0345\u0007q\u0002\u0002\u0345\u0346\u0007r\u0002\u0002\u0346\u0347", + "\u0007{\u0002\u0002\u0347Z\u0003\u0002\u0002\u0002\u0348\u0349\u0007", + "d\u0002\u0002\u0349\u034a\u0007{\u0002\u0002\u034a\u034b\u0007t\u0002", + "\u0002\u034b\u034c\u0007g\u0002\u0002\u034c\u034d\u0007h\u0002\u0002", + "\u034d\\\u0003\u0002\u0002\u0002\u034e\u034f\u0007k\u0002\u0002\u034f", + "\u0350\u0007f\u0002\u0002\u0350^\u0003\u0002\u0002\u0002\u0351\u0352", + "\u0007K\u0002\u0002\u0352\u0353\u0007O\u0002\u0002\u0353\u0354\u0007", + "R\u0002\u0002\u0354`\u0003\u0002\u0002\u0002\u0355\u0356\u0007k\u0002", + "\u0002\u0356\u0357\u0007p\u0002\u0002\u0357b\u0003\u0002\u0002\u0002", + "\u0358\u0359\u0007k\u0002\u0002\u0359\u035a\u0007p\u0002\u0002\u035a", + "\u035b\u0007q\u0002\u0002\u035b\u035c\u0007w\u0002\u0002\u035c\u035d", + "\u0007v\u0002\u0002\u035dd\u0003\u0002\u0002\u0002\u035e\u035f\u0007", + "p\u0002\u0002\u035f\u0360\u0007k\u0002\u0002\u0360\u0361\u0007n\u0002", + "\u0002\u0361f\u0003\u0002\u0002\u0002\u0362\u0363\u0007P\u0002\u0002", + "\u0363\u0364\u0007Q\u0002\u0002\u0364h\u0003\u0002\u0002\u0002\u0365", + "\u0366\u0007P\u0002\u0002\u0366\u0367\u0007W\u0002\u0002\u0367\u0368", + "\u0007N\u0002\u0002\u0368\u0369\u0007N\u0002\u0002\u0369j\u0003\u0002", + "\u0002\u0002\u036a\u036b\u0007q\u0002\u0002\u036b\u036c\u0007p\u0002", + "\u0002\u036c\u036d\u0007g\u0002\u0002\u036d\u036e\u0007y\u0002\u0002", + "\u036e\u036f\u0007c\u0002\u0002\u036f\u0370\u0007{\u0002\u0002\u0370", + "l\u0003\u0002\u0002\u0002\u0371\u0372\u0007q\u0002\u0002\u0372\u0373", + "\u0007w\u0002\u0002\u0373\u0374\u0007v\u0002\u0002\u0374n\u0003\u0002", + "\u0002\u0002\u0375\u0376\u0007R\u0002\u0002\u0376\u0377\u0007t\u0002", + "\u0002\u0377\u0378\u0007q\u0002\u0002\u0378\u0379\u0007v\u0002\u0002", + "\u0379\u037a\u0007q\u0002\u0002\u037a\u037b\u0007e\u0002\u0002\u037b", + "\u037c\u0007q\u0002\u0002\u037c\u037d\u0007n\u0002\u0002\u037dp\u0003", + "\u0002\u0002\u0002\u037e\u037f\u0007U\u0002\u0002\u037f\u0380\u0007", + "G\u0002\u0002\u0380\u0381\u0007N\u0002\u0002\u0381r\u0003\u0002\u0002", + "\u0002\u0382\u0383\u0007u\u0002\u0002\u0383\u0384\u0007g\u0002\u0002", + "\u0384\u0385\u0007n\u0002\u0002\u0385\u0386\u0007h\u0002\u0002\u0386", + "t\u0003\u0002\u0002\u0002\u0387\u0388\u0007u\u0002\u0002\u0388\u0389", + "\u0007w\u0002\u0002\u0389\u038a\u0007r\u0002\u0002\u038a\u038b\u0007", + "g\u0002\u0002\u038b\u038c\u0007t\u0002\u0002\u038cv\u0003\u0002\u0002", + "\u0002\u038d\u038e\u0007[\u0002\u0002\u038e\u038f\u0007G\u0002\u0002", + "\u038f\u0390\u0007U\u0002\u0002\u0390x\u0003\u0002\u0002\u0002\u0391", + "\u0392\u0007B\u0002\u0002\u0392\u0393\u0007c\u0002\u0002\u0393\u0394", + "\u0007w\u0002\u0002\u0394\u0395\u0007v\u0002\u0002\u0395\u0396\u0007", + "q\u0002\u0002\u0396\u0397\u0007t\u0002\u0002\u0397\u0398\u0007g\u0002", + "\u0002\u0398\u0399\u0007n\u0002\u0002\u0399\u039a\u0007g\u0002\u0002", + "\u039a\u039b\u0007c\u0002\u0002\u039b\u039c\u0007u\u0002\u0002\u039c", + "\u039d\u0007g\u0002\u0002\u039d\u039e\u0007r\u0002\u0002\u039e\u039f", + "\u0007q\u0002\u0002\u039f\u03a0\u0007q\u0002\u0002\u03a0\u03a1\u0007", + "n\u0002\u0002\u03a1z\u0003\u0002\u0002\u0002\u03a2\u03a3\u0007B\u0002", + "\u0002\u03a3\u03a4\u0007e\u0002\u0002\u03a4\u03a5\u0007c\u0002\u0002", + "\u03a5\u03a6\u0007v\u0002\u0002\u03a6\u03a7\u0007e\u0002\u0002\u03a7", + "\u03a8\u0007j\u0002\u0002\u03a8|\u0003\u0002\u0002\u0002\u03a9\u03aa", + "\u0007B\u0002\u0002\u03aa\u03ab\u0007e\u0002\u0002\u03ab\u03ac\u0007", + "n\u0002\u0002\u03ac\u03ad\u0007c\u0002\u0002\u03ad\u03ae\u0007u\u0002", + "\u0002\u03ae\u03af\u0007u\u0002\u0002\u03af~\u0003\u0002\u0002\u0002", + "\u03b0\u03b1\u0007B\u0002\u0002\u03b1\u03b2\u0007f\u0002\u0002\u03b2", + "\u03b3\u0007{\u0002\u0002\u03b3\u03b4\u0007p\u0002\u0002\u03b4\u03b5", + "\u0007c\u0002\u0002\u03b5\u03b6\u0007o\u0002\u0002\u03b6\u03b7\u0007", + "k\u0002\u0002\u03b7\u03b8\u0007e\u0002\u0002\u03b8\u0080\u0003\u0002", + "\u0002\u0002\u03b9\u03ba\u0007B\u0002\u0002\u03ba\u03bb\u0007g\u0002", + "\u0002\u03bb\u03bc\u0007p\u0002\u0002\u03bc\u03bd\u0007e\u0002\u0002", + "\u03bd\u03be\u0007q\u0002\u0002\u03be\u03bf\u0007f\u0002\u0002\u03bf", + "\u03c0\u0007g\u0002\u0002\u03c0\u0082\u0003\u0002\u0002\u0002\u03c1", + "\u03c2\u0007B\u0002\u0002\u03c2\u03c3\u0007g\u0002\u0002\u03c3\u03c4", + "\u0007p\u0002\u0002\u03c4\u03c5\u0007f\u0002\u0002\u03c5\u0084\u0003", + "\u0002\u0002\u0002\u03c6\u03c7\u0007B\u0002\u0002\u03c7\u03c8\u0007", + "h\u0002\u0002\u03c8\u03c9\u0007k\u0002\u0002\u03c9\u03ca\u0007p\u0002", + "\u0002\u03ca\u03cb\u0007c\u0002\u0002\u03cb\u03cc\u0007n\u0002\u0002", + "\u03cc\u03cd\u0007n\u0002\u0002\u03cd\u03ce\u0007{\u0002\u0002\u03ce", + "\u0086\u0003\u0002\u0002\u0002\u03cf\u03d0\u0007B\u0002\u0002\u03d0", + "\u03d1\u0007k\u0002\u0002\u03d1\u03d2\u0007o\u0002\u0002\u03d2\u03d3", + "\u0007r\u0002\u0002\u03d3\u03d4\u0007n\u0002\u0002\u03d4\u03d5\u0007", + "g\u0002\u0002\u03d5\u03d6\u0007o\u0002\u0002\u03d6\u03d7\u0007g\u0002", + "\u0002\u03d7\u03d8\u0007p\u0002\u0002\u03d8\u03d9\u0007v\u0002\u0002", + "\u03d9\u03da\u0007c\u0002\u0002\u03da\u03db\u0007v\u0002\u0002\u03db", + "\u03dc\u0007k\u0002\u0002\u03dc\u03dd\u0007q\u0002\u0002\u03dd\u03de", + "\u0007p\u0002\u0002\u03de\u0088\u0003\u0002\u0002\u0002\u03df\u03e0", + "\u0007B\u0002\u0002\u03e0\u03e1\u0007k\u0002\u0002\u03e1\u03e2\u0007", + "p\u0002\u0002\u03e2\u03e3\u0007v\u0002\u0002\u03e3\u03e4\u0007g\u0002", + "\u0002\u03e4\u03e5\u0007t\u0002\u0002\u03e5\u03e6\u0007h\u0002\u0002", + "\u03e6\u03e7\u0007c\u0002\u0002\u03e7\u03e8\u0007e\u0002\u0002\u03e8", + "\u03e9\u0007g\u0002\u0002\u03e9\u008a\u0003\u0002\u0002\u0002\u03ea", + "\u03eb\u0007B\u0002\u0002\u03eb\u03ec\u0007k\u0002\u0002\u03ec\u03ed", + "\u0007o\u0002\u0002\u03ed\u03ee\u0007r\u0002\u0002\u03ee\u03ef\u0007", + "q\u0002\u0002\u03ef\u03f0\u0007t\u0002\u0002\u03f0\u03f9\u0007v\u0002", + "\u0002\u03f1\u03f2\u0007%\u0002\u0002\u03f2\u03f3\u0007k\u0002\u0002", + "\u03f3\u03f4\u0007o\u0002\u0002\u03f4\u03f5\u0007r\u0002\u0002\u03f5", + "\u03f6\u0007q\u0002\u0002\u03f6\u03f7\u0007t\u0002\u0002\u03f7\u03f9", + "\u0007v\u0002\u0002\u03f8\u03ea\u0003\u0002\u0002\u0002\u03f8\u03f1", + "\u0003\u0002\u0002\u0002\u03f9\u008c\u0003\u0002\u0002\u0002\u03fa\u03fb", + "\u0007B\u0002\u0002\u03fb\u03fc\u0007r\u0002\u0002\u03fc\u03fd\u0007", + "c\u0002\u0002\u03fd\u03fe\u0007e\u0002\u0002\u03fe\u03ff\u0007m\u0002", + "\u0002\u03ff\u0400\u0007c\u0002\u0002\u0400\u0401\u0007i\u0002\u0002", + "\u0401\u0402\u0007g\u0002\u0002\u0402\u008e\u0003\u0002\u0002\u0002", + "\u0403\u0404\u0007B\u0002\u0002\u0404\u0405\u0007r\u0002\u0002\u0405", + "\u0406\u0007t\u0002\u0002\u0406\u0407\u0007q\u0002\u0002\u0407\u0408", + "\u0007v\u0002\u0002\u0408\u0409\u0007q\u0002\u0002\u0409\u040a\u0007", + "e\u0002\u0002\u040a\u040b\u0007q\u0002\u0002\u040b\u040c\u0007n\u0002", + "\u0002\u040c\u0090\u0003\u0002\u0002\u0002\u040d\u040e\u0007B\u0002", + "\u0002\u040e\u040f\u0007q\u0002\u0002\u040f\u0410\u0007r\u0002\u0002", + "\u0410\u0411\u0007v\u0002\u0002\u0411\u0412\u0007k\u0002\u0002\u0412", + "\u0413\u0007q\u0002\u0002\u0413\u0414\u0007p\u0002\u0002\u0414\u0415", + "\u0007c\u0002\u0002\u0415\u0416\u0007n\u0002\u0002\u0416\u0092\u0003", + "\u0002\u0002\u0002\u0417\u0418\u0007B\u0002\u0002\u0418\u0419\u0007", + "r\u0002\u0002\u0419\u041a\u0007t\u0002\u0002\u041a\u041b\u0007k\u0002", + "\u0002\u041b\u041c\u0007x\u0002\u0002\u041c\u041d\u0007c\u0002\u0002", + "\u041d\u041e\u0007v\u0002\u0002\u041e\u041f\u0007g\u0002\u0002\u041f", + "\u0094\u0003\u0002\u0002\u0002\u0420\u0421\u0007B\u0002\u0002\u0421", + "\u0422\u0007r\u0002\u0002\u0422\u0423\u0007t\u0002\u0002\u0423\u0424", + "\u0007q\u0002\u0002\u0424\u0425\u0007r\u0002\u0002\u0425\u0426\u0007", + "g\u0002\u0002\u0426\u0427\u0007t\u0002\u0002\u0427\u0428\u0007v\u0002", + "\u0002\u0428\u0429\u0007{\u0002\u0002\u0429\u0096\u0003\u0002\u0002", + "\u0002\u042a\u042b\u0007B\u0002\u0002\u042b\u042c\u0007r\u0002\u0002", + "\u042c\u042d\u0007t\u0002\u0002\u042d\u042e\u0007q\u0002\u0002\u042e", + "\u042f\u0007v\u0002\u0002\u042f\u0430\u0007g\u0002\u0002\u0430\u0431", + "\u0007e\u0002\u0002\u0431\u0432\u0007v\u0002\u0002\u0432\u0433\u0007", + "g\u0002\u0002\u0433\u0434\u0007f\u0002\u0002\u0434\u0098\u0003\u0002", + "\u0002\u0002\u0435\u0436\u0007B\u0002\u0002\u0436\u0437\u0007r\u0002", + "\u0002\u0437\u0438\u0007w\u0002\u0002\u0438\u0439\u0007d\u0002\u0002", + "\u0439\u043a\u0007n\u0002\u0002\u043a\u043b\u0007k\u0002\u0002\u043b", + "\u043c\u0007e\u0002\u0002\u043c\u009a\u0003\u0002\u0002\u0002\u043d", + "\u043e\u0007B\u0002\u0002\u043e\u043f\u0007t\u0002\u0002\u043f\u0440", + "\u0007g\u0002\u0002\u0440\u0441\u0007s\u0002\u0002\u0441\u0442\u0007", + "w\u0002\u0002\u0442\u0443\u0007k\u0002\u0002\u0443\u0444\u0007t\u0002", + "\u0002\u0444\u0445\u0007g\u0002\u0002\u0445\u0446\u0007f\u0002\u0002", + "\u0446\u009c\u0003\u0002\u0002\u0002\u0447\u0448\u0007B\u0002\u0002", + "\u0448\u0449\u0007u\u0002\u0002\u0449\u044a\u0007g\u0002\u0002\u044a", + "\u044b\u0007n\u0002\u0002\u044b\u044c\u0007g\u0002\u0002\u044c\u044d", + "\u0007e\u0002\u0002\u044d\u044e\u0007v\u0002\u0002\u044e\u044f\u0007", + "q\u0002\u0002\u044f\u0450\u0007t\u0002\u0002\u0450\u009e\u0003\u0002", + "\u0002\u0002\u0451\u0452\u0007B\u0002\u0002\u0452\u0453\u0007u\u0002", + "\u0002\u0453\u0454\u0007{\u0002\u0002\u0454\u0455\u0007p\u0002\u0002", + "\u0455\u0456\u0007e\u0002\u0002\u0456\u0457\u0007j\u0002\u0002\u0457", + "\u0458\u0007t\u0002\u0002\u0458\u0459\u0007q\u0002\u0002\u0459\u045a", + "\u0007p\u0002\u0002\u045a\u045b\u0007k\u0002\u0002\u045b\u045c\u0007", + "|\u0002\u0002\u045c\u045d\u0007g\u0002\u0002\u045d\u045e\u0007f\u0002", + "\u0002\u045e\u00a0\u0003\u0002\u0002\u0002\u045f\u0460\u0007B\u0002", + "\u0002\u0460\u0461\u0007u\u0002\u0002\u0461\u0462\u0007{\u0002\u0002", + "\u0462\u0463\u0007p\u0002\u0002\u0463\u0464\u0007v\u0002\u0002\u0464", + "\u0465\u0007j\u0002\u0002\u0465\u0466\u0007g\u0002\u0002\u0466\u0467", + "\u0007u\u0002\u0002\u0467\u0468\u0007k\u0002\u0002\u0468\u0469\u0007", + "|\u0002\u0002\u0469\u046a\u0007g\u0002\u0002\u046a\u00a2\u0003\u0002", + "\u0002\u0002\u046b\u046c\u0007B\u0002\u0002\u046c\u046d\u0007v\u0002", + "\u0002\u046d\u046e\u0007j\u0002\u0002\u046e\u046f\u0007t\u0002\u0002", + "\u046f\u0470\u0007q\u0002\u0002\u0470\u0471\u0007y\u0002\u0002\u0471", + "\u00a4\u0003\u0002\u0002\u0002\u0472\u0473\u0007B\u0002\u0002\u0473", + "\u0474\u0007v\u0002\u0002\u0474\u0475\u0007t\u0002\u0002\u0475\u0476", + "\u0007{\u0002\u0002\u0476\u00a6\u0003\u0002\u0002\u0002\u0477\u0478", "\u0007c\u0002\u0002\u0478\u0479\u0007v\u0002\u0002\u0479\u047a\u0007", - "v\u0002\u0002\u047a\u047b\u0007t\u0002\u0002\u047b\u047c\u0007k\u0002", - "\u0002\u047c\u047d\u0007d\u0002\u0002\u047d\u047e\u0007w\u0002\u0002", - "\u047e\u047f\u0007v\u0002\u0002\u047f\u0480\u0007g\u0002\u0002\u0480", - "\u0481\u0007a\u0002\u0002\u0481\u0482\u0007a\u0002\u0002\u0482\u00ae", - "\u0003\u0002\u0002\u0002\u0483\u0484\u0007a\u0002\u0002\u0484\u0485", - "\u0007a\u0002\u0002\u0485\u0486\u0007c\u0002\u0002\u0486\u0487\u0007", - "w\u0002\u0002\u0487\u0488\u0007v\u0002\u0002\u0488\u0489\u0007q\u0002", - "\u0002\u0489\u048a\u0007t\u0002\u0002\u048a\u048b\u0007g\u0002\u0002", - "\u048b\u048c\u0007n\u0002\u0002\u048c\u048d\u0007g\u0002\u0002\u048d", - "\u048e\u0007c\u0002\u0002\u048e\u048f\u0007u\u0002\u0002\u048f\u0490", - "\u0007k\u0002\u0002\u0490\u0491\u0007p\u0002\u0002\u0491\u0492\u0007", - "i\u0002\u0002\u0492\u00b0\u0003\u0002\u0002\u0002\u0493\u0494\u0007", - "a\u0002\u0002\u0494\u0495\u0007a\u0002\u0002\u0495\u0496\u0007d\u0002", - "\u0002\u0496\u0497\u0007n\u0002\u0002\u0497\u0498\u0007q\u0002\u0002", - "\u0498\u0499\u0007e\u0002\u0002\u0499\u049a\u0007m\u0002\u0002\u049a", - "\u00b2\u0003\u0002\u0002\u0002\u049b\u049c\u0007a\u0002\u0002\u049c", - "\u049d\u0007a\u0002\u0002\u049d\u049e\u0007d\u0002\u0002\u049e\u049f", - "\u0007t\u0002\u0002\u049f\u04a0\u0007k\u0002\u0002\u04a0\u04a1\u0007", - "f\u0002\u0002\u04a1\u04a2\u0007i\u0002\u0002\u04a2\u04a3\u0007g\u0002", - "\u0002\u04a3\u00b4\u0003\u0002\u0002\u0002\u04a4\u04a5\u0007a\u0002", - "\u0002\u04a5\u04a6\u0007a\u0002\u0002\u04a6\u04a7\u0007d\u0002\u0002", - "\u04a7\u04a8\u0007t\u0002\u0002\u04a8\u04a9\u0007k\u0002\u0002\u04a9", - "\u04aa\u0007f\u0002\u0002\u04aa\u04ab\u0007i\u0002\u0002\u04ab\u04ac", - "\u0007g\u0002\u0002\u04ac\u04ad\u0007a\u0002\u0002\u04ad\u04ae\u0007", - "t\u0002\u0002\u04ae\u04af\u0007g\u0002\u0002\u04af\u04b0\u0007v\u0002", - "\u0002\u04b0\u04b1\u0007c\u0002\u0002\u04b1\u04b2\u0007k\u0002\u0002", - "\u04b2\u04b3\u0007p\u0002\u0002\u04b3\u04b4\u0007g\u0002\u0002\u04b4", - "\u04b5\u0007f\u0002\u0002\u04b5\u00b6\u0003\u0002\u0002\u0002\u04b6", - "\u04b7\u0007a\u0002\u0002\u04b7\u04b8\u0007a\u0002\u0002\u04b8\u04b9", - "\u0007d\u0002\u0002\u04b9\u04ba\u0007t\u0002\u0002\u04ba\u04bb\u0007", - "k\u0002\u0002\u04bb\u04bc\u0007f\u0002\u0002\u04bc\u04bd\u0007i\u0002", - "\u0002\u04bd\u04be\u0007g\u0002\u0002\u04be\u04bf\u0007a\u0002\u0002", - "\u04bf\u04c0\u0007v\u0002\u0002\u04c0\u04c1\u0007t\u0002\u0002\u04c1", - "\u04c2\u0007c\u0002\u0002\u04c2\u04c3\u0007p\u0002\u0002\u04c3\u04c4", - "\u0007u\u0002\u0002\u04c4\u04c5\u0007h\u0002\u0002\u04c5\u04c6\u0007", - "g\u0002\u0002\u04c6\u04c7\u0007t\u0002\u0002\u04c7\u00b8\u0003\u0002", - "\u0002\u0002\u04c8\u04c9\u0007a\u0002\u0002\u04c9\u04ca\u0007a\u0002", - "\u0002\u04ca\u04cb\u0007e\u0002\u0002\u04cb\u04cc\u0007q\u0002\u0002", - "\u04cc\u04cd\u0007x\u0002\u0002\u04cd\u04ce\u0007c\u0002\u0002\u04ce", - "\u04cf\u0007t\u0002\u0002\u04cf\u04d0\u0007k\u0002\u0002\u04d0\u04d1", - "\u0007c\u0002\u0002\u04d1\u04d2\u0007p\u0002\u0002\u04d2\u04d3\u0007", - "v\u0002\u0002\u04d3\u00ba\u0003\u0002\u0002\u0002\u04d4\u04d5\u0007", - "a\u0002\u0002\u04d5\u04d6\u0007a\u0002\u0002\u04d6\u04d7\u0007e\u0002", - "\u0002\u04d7\u04d8\u0007q\u0002\u0002\u04d8\u04d9\u0007p\u0002\u0002", - "\u04d9\u04da\u0007v\u0002\u0002\u04da\u04db\u0007t\u0002\u0002\u04db", - "\u04dc\u0007c\u0002\u0002\u04dc\u04dd\u0007x\u0002\u0002\u04dd\u04de", - "\u0007c\u0002\u0002\u04de\u04df\u0007t\u0002\u0002\u04df\u04e0\u0007", - "k\u0002\u0002\u04e0\u04e1\u0007c\u0002\u0002\u04e1\u04e2\u0007p\u0002", - "\u0002\u04e2\u04e3\u0007v\u0002\u0002\u04e3\u00bc\u0003\u0002\u0002", - "\u0002\u04e4\u04e5\u0007a\u0002\u0002\u04e5\u04e6\u0007a\u0002\u0002", - "\u04e6\u04e7\u0007f\u0002\u0002\u04e7\u04e8\u0007g\u0002\u0002\u04e8", - "\u04e9\u0007r\u0002\u0002\u04e9\u04ea\u0007t\u0002\u0002\u04ea\u04eb", - "\u0007g\u0002\u0002\u04eb\u04ec\u0007e\u0002\u0002\u04ec\u04ed\u0007", - "c\u0002\u0002\u04ed\u04ee\u0007v\u0002\u0002\u04ee\u04ef\u0007g\u0002", - "\u0002\u04ef\u04f0\u0007f\u0002\u0002\u04f0\u00be\u0003\u0002\u0002", - "\u0002\u04f1\u04f2\u0007a\u0002\u0002\u04f2\u04f3\u0007a\u0002\u0002", - "\u04f3\u04f4\u0007m\u0002\u0002\u04f4\u04f5\u0007k\u0002\u0002\u04f5", - "\u04f6\u0007p\u0002\u0002\u04f6\u04f7\u0007f\u0002\u0002\u04f7\u04f8", - "\u0007q\u0002\u0002\u04f8\u04f9\u0007h\u0002\u0002\u04f9\u00c0\u0003", - "\u0002\u0002\u0002\u04fa\u04fb\u0007a\u0002\u0002\u04fb\u04fc\u0007", - "a\u0002\u0002\u04fc\u04fd\u0007u\u0002\u0002\u04fd\u04fe\u0007v\u0002", - "\u0002\u04fe\u04ff\u0007t\u0002\u0002\u04ff\u0500\u0007q\u0002\u0002", - "\u0500\u0501\u0007p\u0002\u0002\u0501\u0502\u0007i\u0002\u0002\u0502", - "\u00c2\u0003\u0002\u0002\u0002\u0503\u0504\u0007v\u0002\u0002\u0504", - "\u0505\u0007{\u0002\u0002\u0505\u0506\u0007r\u0002\u0002\u0506\u0507", - "\u0007g\u0002\u0002\u0507\u0508\u0007q\u0002\u0002\u0508\u051c\u0007", - "h\u0002\u0002\u0509\u050a\u0007a\u0002\u0002\u050a\u050b\u0007a\u0002", - "\u0002\u050b\u050c\u0007v\u0002\u0002\u050c\u050d\u0007{\u0002\u0002", - "\u050d\u050e\u0007r\u0002\u0002\u050e\u050f\u0007g\u0002\u0002\u050f", - "\u0510\u0007q\u0002\u0002\u0510\u051c\u0007h\u0002\u0002\u0511\u0512", - "\u0007a\u0002\u0002\u0512\u0513\u0007a\u0002\u0002\u0513\u0514\u0007", - "v\u0002\u0002\u0514\u0515\u0007{\u0002\u0002\u0515\u0516\u0007r\u0002", - "\u0002\u0516\u0517\u0007g\u0002\u0002\u0517\u0518\u0007q\u0002\u0002", - "\u0518\u0519\u0007h\u0002\u0002\u0519\u051a\u0007a\u0002\u0002\u051a", - "\u051c\u0007a\u0002\u0002\u051b\u0503\u0003\u0002\u0002\u0002\u051b", - "\u0509\u0003\u0002\u0002\u0002\u051b\u0511\u0003\u0002\u0002\u0002\u051c", - "\u00c4\u0003\u0002\u0002\u0002\u051d\u051e\u0007a\u0002\u0002\u051e", - "\u051f\u0007a\u0002\u0002\u051f\u0520\u0007w\u0002\u0002\u0520\u0521", - "\u0007p\u0002\u0002\u0521\u0522\u0007u\u0002\u0002\u0522\u0523\u0007", - "c\u0002\u0002\u0523\u0524\u0007h\u0002\u0002\u0524\u0525\u0007g\u0002", - "\u0002\u0525\u0526\u0007a\u0002\u0002\u0526\u0527\u0007w\u0002\u0002", - "\u0527\u0528\u0007p\u0002\u0002\u0528\u0529\u0007t\u0002\u0002\u0529", - "\u052a\u0007g\u0002\u0002\u052a\u052b\u0007v\u0002\u0002\u052b\u052c", - "\u0007c\u0002\u0002\u052c\u052d\u0007k\u0002\u0002\u052d\u052e\u0007", - "p\u0002\u0002\u052e\u052f\u0007g\u0002\u0002\u052f\u0530\u0007f\u0002", - "\u0002\u0530\u00c6\u0003\u0002\u0002\u0002\u0531\u0532\u0007a\u0002", - "\u0002\u0532\u0533\u0007a\u0002\u0002\u0533\u0534\u0007w\u0002\u0002", - "\u0534\u0535\u0007p\u0002\u0002\u0535\u0536\u0007w\u0002\u0002\u0536", - "\u0537\u0007u\u0002\u0002\u0537\u0538\u0007g\u0002\u0002\u0538\u0539", - "\u0007f\u0002\u0002\u0539\u00c8\u0003\u0002\u0002\u0002\u053a\u053b", - "\u0007a\u0002\u0002\u053b\u053c\u0007a\u0002\u0002\u053c\u053d\u0007", - "y\u0002\u0002\u053d\u053e\u0007g\u0002\u0002\u053e\u053f\u0007c\u0002", - "\u0002\u053f\u0540\u0007m\u0002\u0002\u0540\u00ca\u0003\u0002\u0002", - "\u0002\u0541\u0542\u0007p\u0002\u0002\u0542\u0543\u0007w\u0002\u0002", - "\u0543\u0544\u0007n\u0002\u0002\u0544\u0545\u0007n\u0002\u0002\u0545", - "\u0546\u0007a\u0002\u0002\u0546\u0547\u0007w\u0002\u0002\u0547\u0548", - "\u0007p\u0002\u0002\u0548\u0549\u0007u\u0002\u0002\u0549\u054a\u0007", - "r\u0002\u0002\u054a\u054b\u0007g\u0002\u0002\u054b\u054c\u0007e\u0002", - "\u0002\u054c\u054d\u0007k\u0002\u0002\u054d\u054e\u0007h\u0002\u0002", - "\u054e\u054f\u0007k\u0002\u0002\u054f\u0550\u0007g\u0002\u0002\u0550", - "\u0575\u0007f\u0002\u0002\u0551\u0552\u0007a\u0002\u0002\u0552\u0553", - "\u0007a\u0002\u0002\u0553\u0554\u0007p\u0002\u0002\u0554\u0555\u0007", - "w\u0002\u0002\u0555\u0556\u0007n\u0002\u0002\u0556\u0557\u0007n\u0002", - "\u0002\u0557\u0558\u0007a\u0002\u0002\u0558\u0559\u0007w\u0002\u0002", - "\u0559\u055a\u0007p\u0002\u0002\u055a\u055b\u0007u\u0002\u0002\u055b", - "\u055c\u0007r\u0002\u0002\u055c\u055d\u0007g\u0002\u0002\u055d\u055e", - "\u0007e\u0002\u0002\u055e\u055f\u0007k\u0002\u0002\u055f\u0560\u0007", - "h\u0002\u0002\u0560\u0561\u0007k\u0002\u0002\u0561\u0562\u0007g\u0002", - "\u0002\u0562\u0575\u0007f\u0002\u0002\u0563\u0564\u0007a\u0002\u0002", - "\u0564\u0565\u0007P\u0002\u0002\u0565\u0566\u0007w\u0002\u0002\u0566", - "\u0567\u0007n\u0002\u0002\u0567\u0568\u0007n\u0002\u0002\u0568\u0569", - "\u0007a\u0002\u0002\u0569\u056a\u0007w\u0002\u0002\u056a\u056b\u0007", - "p\u0002\u0002\u056b\u056c\u0007u\u0002\u0002\u056c\u056d\u0007r\u0002", - "\u0002\u056d\u056e\u0007g\u0002\u0002\u056e\u056f\u0007e\u0002\u0002", - "\u056f\u0570\u0007k\u0002\u0002\u0570\u0571\u0007h\u0002\u0002\u0571", - "\u0572\u0007k\u0002\u0002\u0572\u0573\u0007g\u0002\u0002\u0573\u0575", - "\u0007f\u0002\u0002\u0574\u0541\u0003\u0002\u0002\u0002\u0574\u0551", - "\u0003\u0002\u0002\u0002\u0574\u0563\u0003\u0002\u0002\u0002\u0575\u00cc", - "\u0003\u0002\u0002\u0002\u0576\u0577\u0007p\u0002\u0002\u0577\u0578", - "\u0007w\u0002\u0002\u0578\u0579\u0007n\u0002\u0002\u0579\u057a\u0007", - "n\u0002\u0002\u057a\u057b\u0007c\u0002\u0002\u057b\u057c\u0007d\u0002", - "\u0002\u057c\u057d\u0007n\u0002\u0002\u057d\u0592\u0007g\u0002\u0002", - "\u057e\u057f\u0007a\u0002\u0002\u057f\u0580\u0007a\u0002\u0002\u0580", - "\u0581\u0007p\u0002\u0002\u0581\u0582\u0007w\u0002\u0002\u0582\u0583", - "\u0007n\u0002\u0002\u0583\u0584\u0007n\u0002\u0002\u0584\u0585\u0007", - "c\u0002\u0002\u0585\u0586\u0007d\u0002\u0002\u0586\u0587\u0007n\u0002", - "\u0002\u0587\u0592\u0007g\u0002\u0002\u0588\u0589\u0007a\u0002\u0002", - "\u0589\u058a\u0007P\u0002\u0002\u058a\u058b\u0007w\u0002\u0002\u058b", - "\u058c\u0007n\u0002\u0002\u058c\u058d\u0007n\u0002\u0002\u058d\u058e", - "\u0007c\u0002\u0002\u058e\u058f\u0007d\u0002\u0002\u058f\u0590\u0007", - "n\u0002\u0002\u0590\u0592\u0007g\u0002\u0002\u0591\u0576\u0003\u0002", - "\u0002\u0002\u0591\u057e\u0003\u0002\u0002\u0002\u0591\u0588\u0003\u0002", - "\u0002\u0002\u0592\u00ce\u0003\u0002\u0002\u0002\u0593\u0594\u0007p", - "\u0002\u0002\u0594\u0595\u0007q\u0002\u0002\u0595\u0596\u0007p\u0002", - "\u0002\u0596\u0597\u0007p\u0002\u0002\u0597\u0598\u0007w\u0002\u0002", - "\u0598\u0599\u0007n\u0002\u0002\u0599\u05ac\u0007n\u0002\u0002\u059a", - "\u059b\u0007a\u0002\u0002\u059b\u059c\u0007a\u0002\u0002\u059c\u059d", - "\u0007p\u0002\u0002\u059d\u059e\u0007q\u0002\u0002\u059e\u059f\u0007", - "p\u0002\u0002\u059f\u05a0\u0007p\u0002\u0002\u05a0\u05a1\u0007w\u0002", - "\u0002\u05a1\u05a2\u0007n\u0002\u0002\u05a2\u05ac\u0007n\u0002\u0002", - "\u05a3\u05a4\u0007a\u0002\u0002\u05a4\u05a5\u0007P\u0002\u0002\u05a5", - "\u05a6\u0007q\u0002\u0002\u05a6\u05a7\u0007p\u0002\u0002\u05a7\u05a8", - "\u0007p\u0002\u0002\u05a8\u05a9\u0007w\u0002\u0002\u05a9\u05aa\u0007", - "n\u0002\u0002\u05aa\u05ac\u0007n\u0002\u0002\u05ab\u0593\u0003\u0002", - "\u0002\u0002\u05ab\u059a\u0003\u0002\u0002\u0002\u05ab\u05a3\u0003\u0002", - "\u0002\u0002\u05ac\u00d0\u0003\u0002\u0002\u0002\u05ad\u05ae\u0007p", - "\u0002\u0002\u05ae\u05af\u0007w\u0002\u0002\u05af\u05b0\u0007n\u0002", - "\u0002\u05b0\u05b1\u0007n\u0002\u0002\u05b1\u05b2\u0007a\u0002\u0002", - "\u05b2\u05b3\u0007t\u0002\u0002\u05b3\u05b4\u0007g\u0002\u0002\u05b4", - "\u05b5\u0007u\u0002\u0002\u05b5\u05b6\u0007g\u0002\u0002\u05b6\u05b7", - "\u0007v\u0002\u0002\u05b7\u05b8\u0007v\u0002\u0002\u05b8\u05b9\u0007", - "c\u0002\u0002\u05b9\u05ba\u0007d\u0002\u0002\u05ba\u05bb\u0007n\u0002", - "\u0002\u05bb\u05bc\u0007g\u0002\u0002\u05bc\u00d2\u0003\u0002\u0002", - "\u0002\u05bd\u05be\u0007P\u0002\u0002\u05be\u05bf\u0007U\u0002\u0002", - "\u05bf\u05c0\u0007a\u0002\u0002\u05c0\u05c1\u0007K\u0002\u0002\u05c1", - "\u05c2\u0007P\u0002\u0002\u05c2\u05c3\u0007N\u0002\u0002\u05c3\u05c4", - "\u0007K\u0002\u0002\u05c4\u05c5\u0007P\u0002\u0002\u05c5\u05c6\u0007", - "G\u0002\u0002\u05c6\u00d4\u0003\u0002\u0002\u0002\u05c7\u05c8\u0007", - "P\u0002\u0002\u05c8\u05c9\u0007U\u0002\u0002\u05c9\u05ca\u0007a\u0002", - "\u0002\u05ca\u05cb\u0007G\u0002\u0002\u05cb\u05cc\u0007P\u0002\u0002", - "\u05cc\u05cd\u0007W\u0002\u0002\u05cd\u05ce\u0007O\u0002\u0002\u05ce", - "\u00d6\u0003\u0002\u0002\u0002\u05cf\u05d0\u0007P\u0002\u0002\u05d0", - "\u05d1\u0007U\u0002\u0002\u05d1\u05d2\u0007a\u0002\u0002\u05d2\u05d3", - "\u0007Q\u0002\u0002\u05d3\u05d4\u0007R\u0002\u0002\u05d4\u05d5\u0007", - "V\u0002\u0002\u05d5\u05d6\u0007K\u0002\u0002\u05d6\u05d7\u0007Q\u0002", + "q\u0002\u0002\u047a\u047b\u0007o\u0002\u0002\u047b\u047c\u0007k\u0002", + "\u0002\u047c\u047d\u0007e\u0002\u0002\u047d\u00a8\u0003\u0002\u0002", + "\u0002\u047e\u047f\u0007p\u0002\u0002\u047f\u0480\u0007q\u0002\u0002", + "\u0480\u0481\u0007p\u0002\u0002\u0481\u0482\u0007c\u0002\u0002\u0482", + "\u0483\u0007v\u0002\u0002\u0483\u0484\u0007q\u0002\u0002\u0484\u0485", + "\u0007o\u0002\u0002\u0485\u0486\u0007k\u0002\u0002\u0486\u0487\u0007", + "e\u0002\u0002\u0487\u00aa\u0003\u0002\u0002\u0002\u0488\u0489\u0007", + "t\u0002\u0002\u0489\u048a\u0007g\u0002\u0002\u048a\u048b\u0007v\u0002", + "\u0002\u048b\u048c\u0007c\u0002\u0002\u048c\u048d\u0007k\u0002\u0002", + "\u048d\u048e\u0007p\u0002\u0002\u048e\u00ac\u0003\u0002\u0002\u0002", + "\u048f\u0490\u0007a\u0002\u0002\u0490\u0491\u0007a\u0002\u0002\u0491", + "\u0492\u0007c\u0002\u0002\u0492\u0493\u0007v\u0002\u0002\u0493\u0494", + "\u0007v\u0002\u0002\u0494\u0495\u0007t\u0002\u0002\u0495\u0496\u0007", + "k\u0002\u0002\u0496\u0497\u0007d\u0002\u0002\u0497\u0498\u0007w\u0002", + "\u0002\u0498\u0499\u0007v\u0002\u0002\u0499\u049a\u0007g\u0002\u0002", + "\u049a\u049b\u0007a\u0002\u0002\u049b\u049c\u0007a\u0002\u0002\u049c", + "\u00ae\u0003\u0002\u0002\u0002\u049d\u049e\u0007a\u0002\u0002\u049e", + "\u049f\u0007a\u0002\u0002\u049f\u04a0\u0007c\u0002\u0002\u04a0\u04a1", + "\u0007w\u0002\u0002\u04a1\u04a2\u0007v\u0002\u0002\u04a2\u04a3\u0007", + "q\u0002\u0002\u04a3\u04a4\u0007t\u0002\u0002\u04a4\u04a5\u0007g\u0002", + "\u0002\u04a5\u04a6\u0007n\u0002\u0002\u04a6\u04a7\u0007g\u0002\u0002", + "\u04a7\u04a8\u0007c\u0002\u0002\u04a8\u04a9\u0007u\u0002\u0002\u04a9", + "\u04aa\u0007k\u0002\u0002\u04aa\u04ab\u0007p\u0002\u0002\u04ab\u04ac", + "\u0007i\u0002\u0002\u04ac\u00b0\u0003\u0002\u0002\u0002\u04ad\u04ae", + "\u0007a\u0002\u0002\u04ae\u04af\u0007a\u0002\u0002\u04af\u04b0\u0007", + "d\u0002\u0002\u04b0\u04b1\u0007n\u0002\u0002\u04b1\u04b2\u0007q\u0002", + "\u0002\u04b2\u04b3\u0007e\u0002\u0002\u04b3\u04b4\u0007m\u0002\u0002", + "\u04b4\u00b2\u0003\u0002\u0002\u0002\u04b5\u04b6\u0007a\u0002\u0002", + "\u04b6\u04b7\u0007a\u0002\u0002\u04b7\u04b8\u0007d\u0002\u0002\u04b8", + "\u04b9\u0007t\u0002\u0002\u04b9\u04ba\u0007k\u0002\u0002\u04ba\u04bb", + "\u0007f\u0002\u0002\u04bb\u04bc\u0007i\u0002\u0002\u04bc\u04bd\u0007", + "g\u0002\u0002\u04bd\u00b4\u0003\u0002\u0002\u0002\u04be\u04bf\u0007", + "a\u0002\u0002\u04bf\u04c0\u0007a\u0002\u0002\u04c0\u04c1\u0007d\u0002", + "\u0002\u04c1\u04c2\u0007t\u0002\u0002\u04c2\u04c3\u0007k\u0002\u0002", + "\u04c3\u04c4\u0007f\u0002\u0002\u04c4\u04c5\u0007i\u0002\u0002\u04c5", + "\u04c6\u0007g\u0002\u0002\u04c6\u04c7\u0007a\u0002\u0002\u04c7\u04c8", + "\u0007t\u0002\u0002\u04c8\u04c9\u0007g\u0002\u0002\u04c9\u04ca\u0007", + "v\u0002\u0002\u04ca\u04cb\u0007c\u0002\u0002\u04cb\u04cc\u0007k\u0002", + "\u0002\u04cc\u04cd\u0007p\u0002\u0002\u04cd\u04ce\u0007g\u0002\u0002", + "\u04ce\u04cf\u0007f\u0002\u0002\u04cf\u00b6\u0003\u0002\u0002\u0002", + "\u04d0\u04d1\u0007a\u0002\u0002\u04d1\u04d2\u0007a\u0002\u0002\u04d2", + "\u04d3\u0007d\u0002\u0002\u04d3\u04d4\u0007t\u0002\u0002\u04d4\u04d5", + "\u0007k\u0002\u0002\u04d5\u04d6\u0007f\u0002\u0002\u04d6\u04d7\u0007", + "i\u0002\u0002\u04d7\u04d8\u0007g\u0002\u0002\u04d8\u04d9\u0007a\u0002", + "\u0002\u04d9\u04da\u0007v\u0002\u0002\u04da\u04db\u0007t\u0002\u0002", + "\u04db\u04dc\u0007c\u0002\u0002\u04dc\u04dd\u0007p\u0002\u0002\u04dd", + "\u04de\u0007u\u0002\u0002\u04de\u04df\u0007h\u0002\u0002\u04df\u04e0", + "\u0007g\u0002\u0002\u04e0\u04e1\u0007t\u0002\u0002\u04e1\u00b8\u0003", + "\u0002\u0002\u0002\u04e2\u04e3\u0007a\u0002\u0002\u04e3\u04e4\u0007", + "a\u0002\u0002\u04e4\u04e5\u0007e\u0002\u0002\u04e5\u04e6\u0007q\u0002", + "\u0002\u04e6\u04e7\u0007x\u0002\u0002\u04e7\u04e8\u0007c\u0002\u0002", + "\u04e8\u04e9\u0007t\u0002\u0002\u04e9\u04ea\u0007k\u0002\u0002\u04ea", + "\u04eb\u0007c\u0002\u0002\u04eb\u04ec\u0007p\u0002\u0002\u04ec\u04ed", + "\u0007v\u0002\u0002\u04ed\u00ba\u0003\u0002\u0002\u0002\u04ee\u04ef", + "\u0007a\u0002\u0002\u04ef\u04f0\u0007a\u0002\u0002\u04f0\u04f1\u0007", + "e\u0002\u0002\u04f1\u04f2\u0007q\u0002\u0002\u04f2\u04f3\u0007p\u0002", + "\u0002\u04f3\u04f4\u0007v\u0002\u0002\u04f4\u04f5\u0007t\u0002\u0002", + "\u04f5\u04f6\u0007c\u0002\u0002\u04f6\u04f7\u0007x\u0002\u0002\u04f7", + "\u04f8\u0007c\u0002\u0002\u04f8\u04f9\u0007t\u0002\u0002\u04f9\u04fa", + "\u0007k\u0002\u0002\u04fa\u04fb\u0007c\u0002\u0002\u04fb\u04fc\u0007", + "p\u0002\u0002\u04fc\u04fd\u0007v\u0002\u0002\u04fd\u00bc\u0003\u0002", + "\u0002\u0002\u04fe\u04ff\u0007a\u0002\u0002\u04ff\u0500\u0007a\u0002", + "\u0002\u0500\u0501\u0007f\u0002\u0002\u0501\u0502\u0007g\u0002\u0002", + "\u0502\u0503\u0007r\u0002\u0002\u0503\u0504\u0007t\u0002\u0002\u0504", + "\u0505\u0007g\u0002\u0002\u0505\u0506\u0007e\u0002\u0002\u0506\u0507", + "\u0007c\u0002\u0002\u0507\u0508\u0007v\u0002\u0002\u0508\u0509\u0007", + "g\u0002\u0002\u0509\u050a\u0007f\u0002\u0002\u050a\u00be\u0003\u0002", + "\u0002\u0002\u050b\u050c\u0007a\u0002\u0002\u050c\u050d\u0007a\u0002", + "\u0002\u050d\u050e\u0007m\u0002\u0002\u050e\u050f\u0007k\u0002\u0002", + "\u050f\u0510\u0007p\u0002\u0002\u0510\u0511\u0007f\u0002\u0002\u0511", + "\u0512\u0007q\u0002\u0002\u0512\u0513\u0007h\u0002\u0002\u0513\u00c0", + "\u0003\u0002\u0002\u0002\u0514\u0515\u0007a\u0002\u0002\u0515\u0516", + "\u0007a\u0002\u0002\u0516\u0517\u0007u\u0002\u0002\u0517\u0518\u0007", + "v\u0002\u0002\u0518\u0519\u0007t\u0002\u0002\u0519\u051a\u0007q\u0002", + "\u0002\u051a\u051b\u0007p\u0002\u0002\u051b\u051c\u0007i\u0002\u0002", + "\u051c\u00c2\u0003\u0002\u0002\u0002\u051d\u051e\u0007v\u0002\u0002", + "\u051e\u051f\u0007{\u0002\u0002\u051f\u0520\u0007r\u0002\u0002\u0520", + "\u0521\u0007g\u0002\u0002\u0521\u0522\u0007q\u0002\u0002\u0522\u0536", + "\u0007h\u0002\u0002\u0523\u0524\u0007a\u0002\u0002\u0524\u0525\u0007", + "a\u0002\u0002\u0525\u0526\u0007v\u0002\u0002\u0526\u0527\u0007{\u0002", + "\u0002\u0527\u0528\u0007r\u0002\u0002\u0528\u0529\u0007g\u0002\u0002", + "\u0529\u052a\u0007q\u0002\u0002\u052a\u0536\u0007h\u0002\u0002\u052b", + "\u052c\u0007a\u0002\u0002\u052c\u052d\u0007a\u0002\u0002\u052d\u052e", + "\u0007v\u0002\u0002\u052e\u052f\u0007{\u0002\u0002\u052f\u0530\u0007", + "r\u0002\u0002\u0530\u0531\u0007g\u0002\u0002\u0531\u0532\u0007q\u0002", + "\u0002\u0532\u0533\u0007h\u0002\u0002\u0533\u0534\u0007a\u0002\u0002", + "\u0534\u0536\u0007a\u0002\u0002\u0535\u051d\u0003\u0002\u0002\u0002", + "\u0535\u0523\u0003\u0002\u0002\u0002\u0535\u052b\u0003\u0002\u0002\u0002", + "\u0536\u00c4\u0003\u0002\u0002\u0002\u0537\u0538\u0007a\u0002\u0002", + "\u0538\u0539\u0007a\u0002\u0002\u0539\u053a\u0007w\u0002\u0002\u053a", + "\u053b\u0007p\u0002\u0002\u053b\u053c\u0007u\u0002\u0002\u053c\u053d", + "\u0007c\u0002\u0002\u053d\u053e\u0007h\u0002\u0002\u053e\u053f\u0007", + "g\u0002\u0002\u053f\u0540\u0007a\u0002\u0002\u0540\u0541\u0007w\u0002", + "\u0002\u0541\u0542\u0007p\u0002\u0002\u0542\u0543\u0007t\u0002\u0002", + "\u0543\u0544\u0007g\u0002\u0002\u0544\u0545\u0007v\u0002\u0002\u0545", + "\u0546\u0007c\u0002\u0002\u0546\u0547\u0007k\u0002\u0002\u0547\u0548", + "\u0007p\u0002\u0002\u0548\u0549\u0007g\u0002\u0002\u0549\u054a\u0007", + "f\u0002\u0002\u054a\u00c6\u0003\u0002\u0002\u0002\u054b\u054c\u0007", + "a\u0002\u0002\u054c\u054d\u0007a\u0002\u0002\u054d\u054e\u0007w\u0002", + "\u0002\u054e\u054f\u0007p\u0002\u0002\u054f\u0550\u0007w\u0002\u0002", + "\u0550\u0551\u0007u\u0002\u0002\u0551\u0552\u0007g\u0002\u0002\u0552", + "\u0553\u0007f\u0002\u0002\u0553\u00c8\u0003\u0002\u0002\u0002\u0554", + "\u0555\u0007a\u0002\u0002\u0555\u0556\u0007a\u0002\u0002\u0556\u0557", + "\u0007y\u0002\u0002\u0557\u0558\u0007g\u0002\u0002\u0558\u0559\u0007", + "c\u0002\u0002\u0559\u055a\u0007m\u0002\u0002\u055a\u00ca\u0003\u0002", + "\u0002\u0002\u055b\u055c\u0007p\u0002\u0002\u055c\u055d\u0007w\u0002", + "\u0002\u055d\u055e\u0007n\u0002\u0002\u055e\u055f\u0007n\u0002\u0002", + "\u055f\u0560\u0007a\u0002\u0002\u0560\u0561\u0007w\u0002\u0002\u0561", + "\u0562\u0007p\u0002\u0002\u0562\u0563\u0007u\u0002\u0002\u0563\u0564", + "\u0007r\u0002\u0002\u0564\u0565\u0007g\u0002\u0002\u0565\u0566\u0007", + "e\u0002\u0002\u0566\u0567\u0007k\u0002\u0002\u0567\u0568\u0007h\u0002", + "\u0002\u0568\u0569\u0007k\u0002\u0002\u0569\u056a\u0007g\u0002\u0002", + "\u056a\u058f\u0007f\u0002\u0002\u056b\u056c\u0007a\u0002\u0002\u056c", + "\u056d\u0007a\u0002\u0002\u056d\u056e\u0007p\u0002\u0002\u056e\u056f", + "\u0007w\u0002\u0002\u056f\u0570\u0007n\u0002\u0002\u0570\u0571\u0007", + "n\u0002\u0002\u0571\u0572\u0007a\u0002\u0002\u0572\u0573\u0007w\u0002", + "\u0002\u0573\u0574\u0007p\u0002\u0002\u0574\u0575\u0007u\u0002\u0002", + "\u0575\u0576\u0007r\u0002\u0002\u0576\u0577\u0007g\u0002\u0002\u0577", + "\u0578\u0007e\u0002\u0002\u0578\u0579\u0007k\u0002\u0002\u0579\u057a", + "\u0007h\u0002\u0002\u057a\u057b\u0007k\u0002\u0002\u057b\u057c\u0007", + "g\u0002\u0002\u057c\u058f\u0007f\u0002\u0002\u057d\u057e\u0007a\u0002", + "\u0002\u057e\u057f\u0007P\u0002\u0002\u057f\u0580\u0007w\u0002\u0002", + "\u0580\u0581\u0007n\u0002\u0002\u0581\u0582\u0007n\u0002\u0002\u0582", + "\u0583\u0007a\u0002\u0002\u0583\u0584\u0007w\u0002\u0002\u0584\u0585", + "\u0007p\u0002\u0002\u0585\u0586\u0007u\u0002\u0002\u0586\u0587\u0007", + "r\u0002\u0002\u0587\u0588\u0007g\u0002\u0002\u0588\u0589\u0007e\u0002", + "\u0002\u0589\u058a\u0007k\u0002\u0002\u058a\u058b\u0007h\u0002\u0002", + "\u058b\u058c\u0007k\u0002\u0002\u058c\u058d\u0007g\u0002\u0002\u058d", + "\u058f\u0007f\u0002\u0002\u058e\u055b\u0003\u0002\u0002\u0002\u058e", + "\u056b\u0003\u0002\u0002\u0002\u058e\u057d\u0003\u0002\u0002\u0002\u058f", + "\u00cc\u0003\u0002\u0002\u0002\u0590\u0591\u0007p\u0002\u0002\u0591", + "\u0592\u0007w\u0002\u0002\u0592\u0593\u0007n\u0002\u0002\u0593\u0594", + "\u0007n\u0002\u0002\u0594\u0595\u0007c\u0002\u0002\u0595\u0596\u0007", + "d\u0002\u0002\u0596\u0597\u0007n\u0002\u0002\u0597\u05ac\u0007g\u0002", + "\u0002\u0598\u0599\u0007a\u0002\u0002\u0599\u059a\u0007a\u0002\u0002", + "\u059a\u059b\u0007p\u0002\u0002\u059b\u059c\u0007w\u0002\u0002\u059c", + "\u059d\u0007n\u0002\u0002\u059d\u059e\u0007n\u0002\u0002\u059e\u059f", + "\u0007c\u0002\u0002\u059f\u05a0\u0007d\u0002\u0002\u05a0\u05a1\u0007", + "n\u0002\u0002\u05a1\u05ac\u0007g\u0002\u0002\u05a2\u05a3\u0007a\u0002", + "\u0002\u05a3\u05a4\u0007P\u0002\u0002\u05a4\u05a5\u0007w\u0002\u0002", + "\u05a5\u05a6\u0007n\u0002\u0002\u05a6\u05a7\u0007n\u0002\u0002\u05a7", + "\u05a8\u0007c\u0002\u0002\u05a8\u05a9\u0007d\u0002\u0002\u05a9\u05aa", + "\u0007n\u0002\u0002\u05aa\u05ac\u0007g\u0002\u0002\u05ab\u0590\u0003", + "\u0002\u0002\u0002\u05ab\u0598\u0003\u0002\u0002\u0002\u05ab\u05a2\u0003", + "\u0002\u0002\u0002\u05ac\u00ce\u0003\u0002\u0002\u0002\u05ad\u05ae\u0007", + "p\u0002\u0002\u05ae\u05af\u0007q\u0002\u0002\u05af\u05b0\u0007p\u0002", + "\u0002\u05b0\u05b1\u0007p\u0002\u0002\u05b1\u05b2\u0007w\u0002\u0002", + "\u05b2\u05b3\u0007n\u0002\u0002\u05b3\u05c6\u0007n\u0002\u0002\u05b4", + "\u05b5\u0007a\u0002\u0002\u05b5\u05b6\u0007a\u0002\u0002\u05b6\u05b7", + "\u0007p\u0002\u0002\u05b7\u05b8\u0007q\u0002\u0002\u05b8\u05b9\u0007", + "p\u0002\u0002\u05b9\u05ba\u0007p\u0002\u0002\u05ba\u05bb\u0007w\u0002", + "\u0002\u05bb\u05bc\u0007n\u0002\u0002\u05bc\u05c6\u0007n\u0002\u0002", + "\u05bd\u05be\u0007a\u0002\u0002\u05be\u05bf\u0007P\u0002\u0002\u05bf", + "\u05c0\u0007q\u0002\u0002\u05c0\u05c1\u0007p\u0002\u0002\u05c1\u05c2", + "\u0007p\u0002\u0002\u05c2\u05c3\u0007w\u0002\u0002\u05c3\u05c4\u0007", + "n\u0002\u0002\u05c4\u05c6\u0007n\u0002\u0002\u05c5\u05ad\u0003\u0002", + "\u0002\u0002\u05c5\u05b4\u0003\u0002\u0002\u0002\u05c5\u05bd\u0003\u0002", + "\u0002\u0002\u05c6\u00d0\u0003\u0002\u0002\u0002\u05c7\u05c8\u0007p", + "\u0002\u0002\u05c8\u05c9\u0007w\u0002\u0002\u05c9\u05ca\u0007n\u0002", + "\u0002\u05ca\u05cb\u0007n\u0002\u0002\u05cb\u05cc\u0007a\u0002\u0002", + "\u05cc\u05cd\u0007t\u0002\u0002\u05cd\u05ce\u0007g\u0002\u0002\u05ce", + "\u05cf\u0007u\u0002\u0002\u05cf\u05d0\u0007g\u0002\u0002\u05d0\u05d1", + "\u0007v\u0002\u0002\u05d1\u05d2\u0007v\u0002\u0002\u05d2\u05d3\u0007", + "c\u0002\u0002\u05d3\u05d4\u0007d\u0002\u0002\u05d4\u05d5\u0007n\u0002", + "\u0002\u05d5\u05d6\u0007g\u0002\u0002\u05d6\u00d2\u0003\u0002\u0002", "\u0002\u05d7\u05d8\u0007P\u0002\u0002\u05d8\u05d9\u0007U\u0002\u0002", - "\u05d9\u00d8\u0003\u0002\u0002\u0002\u05da\u05db\u0007c\u0002\u0002", - "\u05db\u05dc\u0007u\u0002\u0002\u05dc\u05dd\u0007u\u0002\u0002\u05dd", - "\u05de\u0007k\u0002\u0002\u05de\u05df\u0007i\u0002\u0002\u05df\u05e0", - "\u0007p\u0002\u0002\u05e0\u00da\u0003\u0002\u0002\u0002\u05e1\u05e2", - "\u0007e\u0002\u0002\u05e2\u05e3\u0007q\u0002\u0002\u05e3\u05e4\u0007", - "r\u0002\u0002\u05e4\u05e5\u0007{\u0002\u0002\u05e5\u00dc\u0003\u0002", - "\u0002\u0002\u05e6\u05e7\u0007i\u0002\u0002\u05e7\u05e8\u0007g\u0002", - "\u0002\u05e8\u05e9\u0007v\u0002\u0002\u05e9\u05ea\u0007v\u0002\u0002", - "\u05ea\u05eb\u0007g\u0002\u0002\u05eb\u05ec\u0007t\u0002\u0002\u05ec", - "\u00de\u0003\u0002\u0002\u0002\u05ed\u05ee\u0007u\u0002\u0002\u05ee", - "\u05ef\u0007g\u0002\u0002\u05ef\u05f0\u0007v\u0002\u0002\u05f0\u05f1", - "\u0007v\u0002\u0002\u05f1\u05f2\u0007g\u0002\u0002\u05f2\u05f3\u0007", - "t\u0002\u0002\u05f3\u00e0\u0003\u0002\u0002\u0002\u05f4\u05f5\u0007", - "u\u0002\u0002\u05f5\u05f6\u0007v\u0002\u0002\u05f6\u05f7\u0007t\u0002", - "\u0002\u05f7\u05f8\u0007q\u0002\u0002\u05f8\u05f9\u0007p\u0002\u0002", - "\u05f9\u05fa\u0007i\u0002\u0002\u05fa\u00e2\u0003\u0002\u0002\u0002", - "\u05fb\u05fc\u0007t\u0002\u0002\u05fc\u05fd\u0007g\u0002\u0002\u05fd", - "\u05fe\u0007c\u0002\u0002\u05fe\u05ff\u0007f\u0002\u0002\u05ff\u0600", - "\u0007q\u0002\u0002\u0600\u0601\u0007p\u0002\u0002\u0601\u0602\u0007", - "n\u0002\u0002\u0602\u0603\u0007{\u0002\u0002\u0603\u00e4\u0003\u0002", - "\u0002\u0002\u0604\u0605\u0007t\u0002\u0002\u0605\u0606\u0007g\u0002", - "\u0002\u0606\u0607\u0007c\u0002\u0002\u0607\u0608\u0007f\u0002\u0002", - "\u0608\u0609\u0007y\u0002\u0002\u0609\u060a\u0007t\u0002\u0002\u060a", - "\u060b\u0007k\u0002\u0002\u060b\u060c\u0007v\u0002\u0002\u060c\u060d", - "\u0007g\u0002\u0002\u060d\u00e6\u0003\u0002\u0002\u0002\u060e\u060f", - "\u0007y\u0002\u0002\u060f\u0610\u0007g\u0002\u0002\u0610\u0611\u0007", - "c\u0002\u0002\u0611\u0612\u0007m\u0002\u0002\u0612\u00e8\u0003\u0002", - "\u0002\u0002\u0613\u0614\u0007w\u0002\u0002\u0614\u0615\u0007p\u0002", - "\u0002\u0615\u0616\u0007u\u0002\u0002\u0616\u0617\u0007c\u0002\u0002", - "\u0617\u0618\u0007h\u0002\u0002\u0618\u0619\u0007g\u0002\u0002\u0619", - "\u061a\u0007a\u0002\u0002\u061a\u061b\u0007w\u0002\u0002\u061b\u061c", - "\u0007p\u0002\u0002\u061c\u061d\u0007t\u0002\u0002\u061d\u061e\u0007", - "g\u0002\u0002\u061e\u061f\u0007v\u0002\u0002\u061f\u0620\u0007c\u0002", - "\u0002\u0620\u0621\u0007k\u0002\u0002\u0621\u0622\u0007p\u0002\u0002", - "\u0622\u0623\u0007g\u0002\u0002\u0623\u0624\u0007f\u0002\u0002\u0624", - "\u00ea\u0003\u0002\u0002\u0002\u0625\u0626\u0007K\u0002\u0002\u0626", - "\u0627\u0007D\u0002\u0002\u0627\u0628\u0007Q\u0002\u0002\u0628\u0629", - "\u0007w\u0002\u0002\u0629\u062a\u0007v\u0002\u0002\u062a\u062b\u0007", - "n\u0002\u0002\u062b\u062c\u0007g\u0002\u0002\u062c\u062d\u0007v\u0002", - "\u0002\u062d\u00ec\u0003\u0002\u0002\u0002\u062e\u062f\u0007K\u0002", - "\u0002\u062f\u0630\u0007D\u0002\u0002\u0630\u0631\u0007Q\u0002\u0002", - "\u0631\u0632\u0007w\u0002\u0002\u0632\u0633\u0007v\u0002\u0002\u0633", - "\u0634\u0007n\u0002\u0002\u0634\u0635\u0007g\u0002\u0002\u0635\u0636", - "\u0007v\u0002\u0002\u0636\u0637\u0007E\u0002\u0002\u0637\u0638\u0007", - "q\u0002\u0002\u0638\u0639\u0007n\u0002\u0002\u0639\u063a\u0007n\u0002", - "\u0002\u063a\u063b\u0007g\u0002\u0002\u063b\u063c\u0007e\u0002\u0002", - "\u063c\u063d\u0007v\u0002\u0002\u063d\u063e\u0007k\u0002\u0002\u063e", - "\u063f\u0007q\u0002\u0002\u063f\u0640\u0007p\u0002\u0002\u0640\u00ee", - "\u0003\u0002\u0002\u0002\u0641\u0642\u0007K\u0002\u0002\u0642\u0643", - "\u0007D\u0002\u0002\u0643\u0644\u0007K\u0002\u0002\u0644\u0645\u0007", - "p\u0002\u0002\u0645\u0646\u0007u\u0002\u0002\u0646\u0647\u0007r\u0002", - "\u0002\u0647\u0648\u0007g\u0002\u0002\u0648\u0649\u0007e\u0002\u0002", - "\u0649\u064a\u0007v\u0002\u0002\u064a\u064b\u0007c\u0002\u0002\u064b", - "\u064c\u0007d\u0002\u0002\u064c\u064d\u0007n\u0002\u0002\u064d\u064e", - "\u0007g\u0002\u0002\u064e\u00f0\u0003\u0002\u0002\u0002\u064f\u0650", - "\u0007K\u0002\u0002\u0650\u0651\u0007D\u0002\u0002\u0651\u0652\u0007", - "a\u0002\u0002\u0652\u0653\u0007F\u0002\u0002\u0653\u0654\u0007G\u0002", - "\u0002\u0654\u0655\u0007U\u0002\u0002\u0655\u0656\u0007K\u0002\u0002", - "\u0656\u0657\u0007I\u0002\u0002\u0657\u0658\u0007P\u0002\u0002\u0658", - "\u0659\u0007C\u0002\u0002\u0659\u065a\u0007D\u0002\u0002\u065a\u065b", - "\u0007N\u0002\u0002\u065b\u065c\u0007G\u0002\u0002\u065c\u00f2\u0003", - "\u0002\u0002\u0002\u065d\u065e\u0007P\u0002\u0002\u065e\u065f\u0007", - "U\u0002\u0002\u065f\u0660\u0007a\u0002\u0002\u0660\u0661\u0007C\u0002", - "\u0002\u0661\u0662\u0007U\u0002\u0002\u0662\u0663\u0007U\u0002\u0002", - "\u0663\u0664\u0007W\u0002\u0002\u0664\u0665\u0007O\u0002\u0002\u0665", - "\u0666\u0007G\u0002\u0002\u0666\u0667\u0007a\u0002\u0002\u0667\u0668", - "\u0007P\u0002\u0002\u0668\u0669\u0007Q\u0002\u0002\u0669\u066a\u0007", - "P\u0002\u0002\u066a\u066b\u0007P\u0002\u0002\u066b\u066c\u0007W\u0002", - "\u0002\u066c\u066d\u0007N\u0002\u0002\u066d\u066e\u0007N\u0002\u0002", - "\u066e\u066f\u0007a\u0002\u0002\u066f\u0670\u0007D\u0002\u0002\u0670", - "\u0671\u0007G\u0002\u0002\u0671\u0672\u0007I\u0002\u0002\u0672\u0673", - "\u0007K\u0002\u0002\u0673\u0674\u0007P\u0002\u0002\u0674\u0678\u0003", - "\u0002\u0002\u0002\u0675\u0677\n\u0002\u0002\u0002\u0676\u0675\u0003", - "\u0002\u0002\u0002\u0677\u067a\u0003\u0002\u0002\u0002\u0678\u0676\u0003", - "\u0002\u0002\u0002\u0678\u0679\u0003\u0002\u0002\u0002\u0679\u067b\u0003", - "\u0002\u0002\u0002\u067a\u0678\u0003\u0002\u0002\u0002\u067b\u067c\b", - "x\u0002\u0002\u067c\u00f4\u0003\u0002\u0002\u0002\u067d\u067e\u0007", - "P\u0002\u0002\u067e\u067f\u0007U\u0002\u0002\u067f\u0680\u0007a\u0002", - "\u0002\u0680\u0681\u0007C\u0002\u0002\u0681\u0682\u0007U\u0002\u0002", - "\u0682\u0683\u0007U\u0002\u0002\u0683\u0684\u0007W\u0002\u0002\u0684", - "\u0685\u0007O\u0002\u0002\u0685\u0686\u0007G\u0002\u0002\u0686\u0687", - "\u0007a\u0002\u0002\u0687\u0688\u0007P\u0002\u0002\u0688\u0689\u0007", - "Q\u0002\u0002\u0689\u068a\u0007P\u0002\u0002\u068a\u068b\u0007P\u0002", - "\u0002\u068b\u068c\u0007W\u0002\u0002\u068c\u068d\u0007N\u0002\u0002", - "\u068d\u068e\u0007N\u0002\u0002\u068e\u068f\u0007a\u0002\u0002\u068f", - "\u0690\u0007G\u0002\u0002\u0690\u0691\u0007P\u0002\u0002\u0691\u0692", - "\u0007F\u0002\u0002\u0692\u0696\u0003\u0002\u0002\u0002\u0693\u0695", - "\n\u0002\u0002\u0002\u0694\u0693\u0003\u0002\u0002\u0002\u0695\u0698", - "\u0003\u0002\u0002\u0002\u0696\u0694\u0003\u0002\u0002\u0002\u0696\u0697", - "\u0003\u0002\u0002\u0002\u0697\u0699\u0003\u0002\u0002\u0002\u0698\u0696", - "\u0003\u0002\u0002\u0002\u0699\u069a\by\u0002\u0002\u069a\u00f6\u0003", - "\u0002\u0002\u0002\u069b\u069d\t\u0003\u0002\u0002\u069c\u069b\u0003", - "\u0002\u0002\u0002\u069d\u069e\u0003\u0002\u0002\u0002\u069e\u069c\u0003", - "\u0002\u0002\u0002\u069e\u069f\u0003\u0002\u0002\u0002\u069f\u06a0\u0003", - "\u0002\u0002\u0002\u06a0\u06a1\u0007a\u0002\u0002\u06a1\u06a2\u0007", - "G\u0002\u0002\u06a2\u06a3\u0007Z\u0002\u0002\u06a3\u06a4\u0007V\u0002", - "\u0002\u06a4\u06a5\u0007G\u0002\u0002\u06a5\u06a6\u0007T\u0002\u0002", - "\u06a6\u06a7\u0007P\u0002\u0002\u06a7\u06a8\u0003\u0002\u0002\u0002", - "\u06a8\u06a9\bz\u0002\u0002\u06a9\u00f8\u0003\u0002\u0002\u0002\u06aa", - "\u06ac\t\u0003\u0002\u0002\u06ab\u06aa\u0003\u0002\u0002\u0002\u06ac", - "\u06ad\u0003\u0002\u0002\u0002\u06ad\u06ab\u0003\u0002\u0002\u0002\u06ad", - "\u06ae\u0003\u0002\u0002\u0002\u06ae\u06af\u0003\u0002\u0002\u0002\u06af", - "\u06b0\u0007a\u0002\u0002\u06b0\u06b1\u0007K\u0002\u0002\u06b1\u06b2", - "\u0007Q\u0002\u0002\u06b2\u06b3\u0007U\u0002\u0002\u06b3\u06b4\u0007", - "*\u0002\u0002\u06b4\u06b6\u0003\u0002\u0002\u0002\u06b5\u06b7\n\u0004", - "\u0002\u0002\u06b6\u06b5\u0003\u0002\u0002\u0002\u06b7\u06b8\u0003\u0002", - "\u0002\u0002\u06b8\u06b6\u0003\u0002\u0002\u0002\u06b8\u06b9\u0003\u0002", - "\u0002\u0002\u06b9\u06ba\u0003\u0002\u0002\u0002\u06ba\u06bb\u0007+", - "\u0002\u0002\u06bb\u06bc\u0003\u0002\u0002\u0002\u06bc\u06bd\b{\u0002", - "\u0002\u06bd\u00fa\u0003\u0002\u0002\u0002\u06be\u06c0\t\u0003\u0002", - "\u0002\u06bf\u06be\u0003\u0002\u0002\u0002\u06c0\u06c1\u0003\u0002\u0002", - "\u0002\u06c1\u06bf\u0003\u0002\u0002\u0002\u06c1\u06c2\u0003\u0002\u0002", - "\u0002\u06c2\u06c3\u0003\u0002\u0002\u0002\u06c3\u06c4\u0007a\u0002", - "\u0002\u06c4\u06c5\u0007O\u0002\u0002\u06c5\u06c6\u0007C\u0002\u0002", - "\u06c6\u06c7\u0007E\u0002\u0002\u06c7\u06c8\u0007*\u0002\u0002\u06c8", - "\u06ca\u0003\u0002\u0002\u0002\u06c9\u06cb\n\u0004\u0002\u0002\u06ca", - "\u06c9\u0003\u0002\u0002\u0002\u06cb\u06cc\u0003\u0002\u0002\u0002\u06cc", - "\u06ca\u0003\u0002\u0002\u0002\u06cc\u06cd\u0003\u0002\u0002\u0002\u06cd", - "\u06ce\u0003\u0002\u0002\u0002\u06ce\u06cf\u0007+\u0002\u0002\u06cf", - "\u06d0\u0003\u0002\u0002\u0002\u06d0\u06d1\b|\u0002\u0002\u06d1\u00fc", - "\u0003\u0002\u0002\u0002\u06d2\u06d3\u0007a\u0002\u0002\u06d3\u06d4", - "\u0007a\u0002\u0002\u06d4\u06d5\u0007V\u0002\u0002\u06d5\u06d6\u0007", - "X\u0002\u0002\u06d6\u06d7\u0007Q\u0002\u0002\u06d7\u06d8\u0007U\u0002", - "\u0002\u06d8\u06d9\u0007a\u0002\u0002\u06d9\u06da\u0007R\u0002\u0002", - "\u06da\u06db\u0007T\u0002\u0002\u06db\u06dc\u0007Q\u0002\u0002\u06dc", - "\u06dd\u0007J\u0002\u0002\u06dd\u06de\u0007K\u0002\u0002\u06de\u06df", - "\u0007D\u0002\u0002\u06df\u06e0\u0007K\u0002\u0002\u06e0\u06e1\u0007", - "V\u0002\u0002\u06e1\u06e2\u0007G\u0002\u0002\u06e2\u06e3\u0007F\u0002", - "\u0002\u06e3\u06e4\u0003\u0002\u0002\u0002\u06e4\u06e5\b}\u0002\u0002", - "\u06e5\u00fe\u0003\u0002\u0002\u0002\u06e6\u06ea\u0005\u01d7\u00ea\u0002", - "\u06e7\u06e9\u0005\u01d5\u00e9\u0002\u06e8\u06e7\u0003\u0002\u0002\u0002", - "\u06e9\u06ec\u0003\u0002\u0002\u0002\u06ea\u06e8\u0003\u0002\u0002\u0002", - "\u06ea\u06eb\u0003\u0002\u0002\u0002\u06eb\u0100\u0003\u0002\u0002\u0002", - "\u06ec\u06ea\u0003\u0002\u0002\u0002\u06ed\u06ee\u0007*\u0002\u0002", - "\u06ee\u0102\u0003\u0002\u0002\u0002\u06ef\u06f0\u0007+\u0002\u0002", - "\u06f0\u0104\u0003\u0002\u0002\u0002\u06f1\u06f2\u0007}\u0002\u0002", - "\u06f2\u0106\u0003\u0002\u0002\u0002\u06f3\u06f4\u0007\u007f\u0002\u0002", - "\u06f4\u0108\u0003\u0002\u0002\u0002\u06f5\u06f6\u0007]\u0002\u0002", - "\u06f6\u010a\u0003\u0002\u0002\u0002\u06f7\u06f8\u0007_\u0002\u0002", - "\u06f8\u010c\u0003\u0002\u0002\u0002\u06f9\u06fa\u0007=\u0002\u0002", - "\u06fa\u010e\u0003\u0002\u0002\u0002\u06fb\u06fc\u0007.\u0002\u0002", - "\u06fc\u0110\u0003\u0002\u0002\u0002\u06fd\u06fe\u00070\u0002\u0002", - "\u06fe\u0112\u0003\u0002\u0002\u0002\u06ff\u0700\u0007/\u0002\u0002", - "\u0700\u0701\u0007@\u0002\u0002\u0701\u0114\u0003\u0002\u0002\u0002", - "\u0702\u0703\u0007B\u0002\u0002\u0703\u0116\u0003\u0002\u0002\u0002", - "\u0704\u0705\u0007?\u0002\u0002\u0705\u0118\u0003\u0002\u0002\u0002", - "\u0706\u0707\u0007@\u0002\u0002\u0707\u011a\u0003\u0002\u0002\u0002", - "\u0708\u0709\u0007>\u0002\u0002\u0709\u011c\u0003\u0002\u0002\u0002", - "\u070a\u070b\u0007#\u0002\u0002\u070b\u011e\u0003\u0002\u0002\u0002", - "\u070c\u070d\u0007\u0080\u0002\u0002\u070d\u0120\u0003\u0002\u0002\u0002", - "\u070e\u070f\u0007A\u0002\u0002\u070f\u0122\u0003\u0002\u0002\u0002", - "\u0710\u0711\u0007<\u0002\u0002\u0711\u0124\u0003\u0002\u0002\u0002", - "\u0712\u0713\u0007?\u0002\u0002\u0713\u0714\u0007?\u0002\u0002\u0714", - "\u0126\u0003\u0002\u0002\u0002\u0715\u0716\u0007>\u0002\u0002\u0716", - "\u0717\u0007?\u0002\u0002\u0717\u0128\u0003\u0002\u0002\u0002\u0718", - "\u0719\u0007@\u0002\u0002\u0719\u071a\u0007?\u0002\u0002\u071a\u012a", - "\u0003\u0002\u0002\u0002\u071b\u071c\u0007#\u0002\u0002\u071c\u071d", - "\u0007?\u0002\u0002\u071d\u012c\u0003\u0002\u0002\u0002\u071e\u071f", - "\u0007(\u0002\u0002\u071f\u0720\u0007(\u0002\u0002\u0720\u012e\u0003", - "\u0002\u0002\u0002\u0721\u0722\u0007~\u0002\u0002\u0722\u0723\u0007", - "~\u0002\u0002\u0723\u0130\u0003\u0002\u0002\u0002\u0724\u0725\u0007", - "-\u0002\u0002\u0725\u0726\u0007-\u0002\u0002\u0726\u0132\u0003\u0002", - "\u0002\u0002\u0727\u0728\u0007/\u0002\u0002\u0728\u0729\u0007/\u0002", - "\u0002\u0729\u0134\u0003\u0002\u0002\u0002\u072a\u072b\u0007-\u0002", - "\u0002\u072b\u0136\u0003\u0002\u0002\u0002\u072c\u072d\u0007/\u0002", - "\u0002\u072d\u0138\u0003\u0002\u0002\u0002\u072e\u072f\u0007,\u0002", - "\u0002\u072f\u013a\u0003\u0002\u0002\u0002\u0730\u0731\u00071\u0002", - "\u0002\u0731\u013c\u0003\u0002\u0002\u0002\u0732\u0733\u0007(\u0002", - "\u0002\u0733\u013e\u0003\u0002\u0002\u0002\u0734\u0735\u0007~\u0002", - "\u0002\u0735\u0140\u0003\u0002\u0002\u0002\u0736\u0737\u0007`\u0002", - "\u0002\u0737\u0142\u0003\u0002\u0002\u0002\u0738\u0739\u0007\'\u0002", - "\u0002\u0739\u0144\u0003\u0002\u0002\u0002\u073a\u073b\u0007-\u0002", - "\u0002\u073b\u073c\u0007?\u0002\u0002\u073c\u0146\u0003\u0002\u0002", - "\u0002\u073d\u073e\u0007/\u0002\u0002\u073e\u073f\u0007?\u0002\u0002", - "\u073f\u0148\u0003\u0002\u0002\u0002\u0740\u0741\u0007,\u0002\u0002", - "\u0741\u0742\u0007?\u0002\u0002\u0742\u014a\u0003\u0002\u0002\u0002", - "\u0743\u0744\u00071\u0002\u0002\u0744\u0745\u0007?\u0002\u0002\u0745", - "\u014c\u0003\u0002\u0002\u0002\u0746\u0747\u0007(\u0002\u0002\u0747", - "\u0748\u0007?\u0002\u0002\u0748\u014e\u0003\u0002\u0002\u0002\u0749", - "\u074a\u0007~\u0002\u0002\u074a\u074b\u0007?\u0002\u0002\u074b\u0150", - "\u0003\u0002\u0002\u0002\u074c\u074d\u0007`\u0002\u0002\u074d\u074e", - "\u0007?\u0002\u0002\u074e\u0152\u0003\u0002\u0002\u0002\u074f\u0750", - "\u0007\'\u0002\u0002\u0750\u0751\u0007?\u0002\u0002\u0751\u0154\u0003", - "\u0002\u0002\u0002\u0752\u0753\u0007>\u0002\u0002\u0753\u0754\u0007", - ">\u0002\u0002\u0754\u0755\u0007?\u0002\u0002\u0755\u0156\u0003\u0002", - "\u0002\u0002\u0756\u0757\u0007@\u0002\u0002\u0757\u0758\u0007@\u0002", - "\u0002\u0758\u0759\u0007?\u0002\u0002\u0759\u0158\u0003\u0002\u0002", - "\u0002\u075a\u075b\u00070\u0002\u0002\u075b\u075c\u00070\u0002\u0002", - "\u075c\u075d\u00070\u0002\u0002\u075d\u015a\u0003\u0002\u0002\u0002", - "\u075e\u0761\u0007)\u0002\u0002\u075f\u0762\u0005\u01e3\u00f0\u0002", - "\u0760\u0762\n\u0005\u0002\u0002\u0761\u075f\u0003\u0002\u0002\u0002", - "\u0761\u0760\u0003\u0002\u0002\u0002\u0762\u0763\u0003\u0002\u0002\u0002", - "\u0763\u0764\u0007)\u0002\u0002\u0764\u015c\u0003\u0002\u0002\u0002", - "\u0765\u0766\u0005\u01e1\u00ef\u0002\u0766\u0767\u0003\u0002\u0002\u0002", - "\u0767\u0768\b\u00ad\u0003\u0002\u0768\u015e\u0003\u0002\u0002\u0002", - "\u0769\u076a\u00072\u0002\u0002\u076a\u076c\t\u0006\u0002\u0002\u076b", - "\u076d\u0005\u01e9\u00f3\u0002\u076c\u076b\u0003\u0002\u0002\u0002\u076d", - "\u076e\u0003\u0002\u0002\u0002\u076e\u076c\u0003\u0002\u0002\u0002\u076e", - "\u076f\u0003\u0002\u0002\u0002\u076f\u0771\u0003\u0002\u0002\u0002\u0770", - "\u0772\u0005\u01d9\u00eb\u0002\u0771\u0770\u0003\u0002\u0002\u0002\u0771", - "\u0772\u0003\u0002\u0002\u0002\u0772\u0160\u0003\u0002\u0002\u0002\u0773", - "\u0775\u00072\u0002\u0002\u0774\u0776\t\u0007\u0002\u0002\u0775\u0774", - "\u0003\u0002\u0002\u0002\u0776\u0777\u0003\u0002\u0002\u0002\u0777\u0775", - "\u0003\u0002\u0002\u0002\u0777\u0778\u0003\u0002\u0002\u0002\u0778\u077a", - "\u0003\u0002\u0002\u0002\u0779\u077b\u0005\u01d9\u00eb\u0002\u077a\u0779", - "\u0003\u0002\u0002\u0002\u077a\u077b\u0003\u0002\u0002\u0002\u077b\u0162", - "\u0003\u0002\u0002\u0002\u077c\u077d\u00072\u0002\u0002\u077d\u077f", - "\t\b\u0002\u0002\u077e\u0780\t\t\u0002\u0002\u077f\u077e\u0003\u0002", - "\u0002\u0002\u0780\u0781\u0003\u0002\u0002\u0002\u0781\u077f\u0003\u0002", - "\u0002\u0002\u0781\u0782\u0003\u0002\u0002\u0002\u0782\u0784\u0003\u0002", - "\u0002\u0002\u0783\u0785\u0005\u01d9\u00eb\u0002\u0784\u0783\u0003\u0002", - "\u0002\u0002\u0784\u0785\u0003\u0002\u0002\u0002\u0785\u0164\u0003\u0002", - "\u0002\u0002\u0786\u0788\t\n\u0002\u0002\u0787\u0786\u0003\u0002\u0002", - "\u0002\u0788\u0789\u0003\u0002\u0002\u0002\u0789\u0787\u0003\u0002\u0002", - "\u0002\u0789\u078a\u0003\u0002\u0002\u0002\u078a\u078c\u0003\u0002\u0002", - "\u0002\u078b\u078d\u0005\u01d9\u00eb\u0002\u078c\u078b\u0003\u0002\u0002", - "\u0002\u078c\u078d\u0003\u0002\u0002\u0002\u078d\u0166\u0003\u0002\u0002", - "\u0002\u078e\u0790\u0005\u01dd\u00ed\u0002\u078f\u078e\u0003\u0002\u0002", - "\u0002\u0790\u0791\u0003\u0002\u0002\u0002\u0791\u078f\u0003\u0002\u0002", - "\u0002\u0791\u0792\u0003\u0002\u0002\u0002\u0792\u0793\u0003\u0002\u0002", - "\u0002\u0793\u0797\u00070\u0002\u0002\u0794\u0796\u0005\u01dd\u00ed", - "\u0002\u0795\u0794\u0003\u0002\u0002\u0002\u0796\u0799\u0003\u0002\u0002", - "\u0002\u0797\u0795\u0003\u0002\u0002\u0002\u0797\u0798\u0003\u0002\u0002", - "\u0002\u0798\u07a1\u0003\u0002\u0002\u0002\u0799\u0797\u0003\u0002\u0002", - "\u0002\u079a\u079c\u00070\u0002\u0002\u079b\u079d\u0005\u01dd\u00ed", - "\u0002\u079c\u079b\u0003\u0002\u0002\u0002\u079d\u079e\u0003\u0002\u0002", - "\u0002\u079e\u079c\u0003\u0002\u0002\u0002\u079e\u079f\u0003\u0002\u0002", - "\u0002\u079f\u07a1\u0003\u0002\u0002\u0002\u07a0\u078f\u0003\u0002\u0002", - "\u0002\u07a0\u079a\u0003\u0002\u0002\u0002\u07a1\u07a3\u0003\u0002\u0002", - "\u0002\u07a2\u07a4\u0005\u01db\u00ec\u0002\u07a3\u07a2\u0003\u0002\u0002", - "\u0002\u07a3\u07a4\u0003\u0002\u0002\u0002\u07a4\u07a6\u0003\u0002\u0002", - "\u0002\u07a5\u07a7\u0005\u01df\u00ee\u0002\u07a6\u07a5\u0003\u0002\u0002", - "\u0002\u07a6\u07a7\u0003\u0002\u0002\u0002\u07a7\u07b5\u0003\u0002\u0002", - "\u0002\u07a8\u07aa\u0005\u01dd\u00ed\u0002\u07a9\u07a8\u0003\u0002\u0002", - "\u0002\u07aa\u07ab\u0003\u0002\u0002\u0002\u07ab\u07a9\u0003\u0002\u0002", - "\u0002\u07ab\u07ac\u0003\u0002\u0002\u0002\u07ac\u07b2\u0003\u0002\u0002", - "\u0002\u07ad\u07af\u0005\u01db\u00ec\u0002\u07ae\u07b0\u0005\u01df\u00ee", - "\u0002\u07af\u07ae\u0003\u0002\u0002\u0002\u07af\u07b0\u0003\u0002\u0002", - "\u0002\u07b0\u07b3\u0003\u0002\u0002\u0002\u07b1\u07b3\u0005\u01df\u00ee", - "\u0002\u07b2\u07ad\u0003\u0002\u0002\u0002\u07b2\u07b1\u0003\u0002\u0002", - "\u0002\u07b3\u07b5\u0003\u0002\u0002\u0002\u07b4\u07a0\u0003\u0002\u0002", - "\u0002\u07b4\u07a9\u0003\u0002\u0002\u0002\u07b5\u0168\u0003\u0002\u0002", - "\u0002\u07b6\u07ba\u0005\u0167\u00b2\u0002\u07b7\u07b8\u0005\u0111\u0087", - "\u0002\u07b8\u07b9\u0005\u0165\u00b1\u0002\u07b9\u07bb\u0003\u0002\u0002", - "\u0002\u07ba\u07b7\u0003\u0002\u0002\u0002\u07ba\u07bb\u0003\u0002\u0002", - "\u0002\u07bb\u016a\u0003\u0002\u0002\u0002\u07bc\u07be\u0005\u01eb\u00f4", - "\u0002\u07bd\u07bc\u0003\u0002\u0002\u0002\u07be\u07bf\u0003\u0002\u0002", - "\u0002\u07bf\u07bd\u0003\u0002\u0002\u0002\u07bf\u07c0\u0003\u0002\u0002", - "\u0002\u07c0\u07c1\u0003\u0002\u0002\u0002\u07c1\u07c2\b\u00b4\u0004", - "\u0002\u07c2\u016c\u0003\u0002\u0002\u0002\u07c3\u07c4\u00071\u0002", - "\u0002\u07c4\u07c5\u0007,\u0002\u0002\u07c5\u07c9\u0003\u0002\u0002", - "\u0002\u07c6\u07c8\u000b\u0002\u0002\u0002\u07c7\u07c6\u0003\u0002\u0002", - "\u0002\u07c8\u07cb\u0003\u0002\u0002\u0002\u07c9\u07ca\u0003\u0002\u0002", - "\u0002\u07c9\u07c7\u0003\u0002\u0002\u0002\u07ca\u07cc\u0003\u0002\u0002", - "\u0002\u07cb\u07c9\u0003\u0002\u0002\u0002\u07cc\u07cd\u0007,\u0002", - "\u0002\u07cd\u07ce\u00071\u0002\u0002\u07ce\u07cf\u0003\u0002\u0002", - "\u0002\u07cf\u07d0\b\u00b5\u0005\u0002\u07d0\u016e\u0003\u0002\u0002", - "\u0002\u07d1\u07d2\u00071\u0002\u0002\u07d2\u07d3\u00071\u0002\u0002", - "\u07d3\u07d7\u0003\u0002\u0002\u0002\u07d4\u07d6\n\u0002\u0002\u0002", - "\u07d5\u07d4\u0003\u0002\u0002\u0002\u07d6\u07d9\u0003\u0002\u0002\u0002", - "\u07d7\u07d5\u0003\u0002\u0002\u0002\u07d7\u07d8\u0003\u0002\u0002\u0002", - "\u07d8\u07da\u0003\u0002\u0002\u0002\u07d9\u07d7\u0003\u0002\u0002\u0002", - "\u07da\u07db\b\u00b6\u0005\u0002\u07db\u0170\u0003\u0002\u0002\u0002", - "\u07dc\u07dd\u0007^\u0002\u0002\u07dd\u07de\u0003\u0002\u0002\u0002", - "\u07de\u07df\b\u00b7\u0004\u0002\u07df\u0172\u0003\u0002\u0002\u0002", - "\u07e0\u07e1\u0007%\u0002\u0002\u07e1\u07e2\u0003\u0002\u0002\u0002", - "\u07e2\u07e3\b\u00b8\u0006\u0002\u07e3\u07e4\b\u00b8\u0007\u0002\u07e4", - "\u0174\u0003\u0002\u0002\u0002\u07e5\u07e7\u0007^\u0002\u0002\u07e6", - "\u07e8\u0007\u000f\u0002\u0002\u07e7\u07e6\u0003\u0002\u0002\u0002\u07e7", - "\u07e8\u0003\u0002\u0002\u0002\u07e8\u07e9\u0003\u0002\u0002\u0002\u07e9", - "\u07ea\u0007\f\u0002\u0002\u07ea\u07eb\u0003\u0002\u0002\u0002\u07eb", - "\u07ec\b\u00b9\b\u0002\u07ec\u0176\u0003\u0002\u0002\u0002\u07ed\u07ee", - "\u0005\u01e3\u00f0\u0002\u07ee\u07ef\u0003\u0002\u0002\u0002\u07ef\u07f0", - "\b\u00ba\b\u0002\u07f0\u07f1\b\u00ba\t\u0002\u07f1\u0178\u0003\u0002", - "\u0002\u0002\u07f2\u07f3\u0007$\u0002\u0002\u07f3\u07f4\u0003\u0002", - "\u0002\u0002\u07f4\u07f5\b\u00bb\b\u0002\u07f5\u07f6\b\u00bb\n\u0002", - "\u07f6\u017a\u0003\u0002\u0002\u0002\u07f7\u07f9\n\u000b\u0002\u0002", - "\u07f8\u07f7\u0003\u0002\u0002\u0002\u07f9\u07fa\u0003\u0002\u0002\u0002", - "\u07fa\u07f8\u0003\u0002\u0002\u0002\u07fa\u07fb\u0003\u0002\u0002\u0002", - "\u07fb\u07fc\u0003\u0002\u0002\u0002\u07fc\u07fd\b\u00bc\b\u0002\u07fd", - "\u017c\u0003\u0002\u0002\u0002\u07fe\u07ff\u0007k\u0002\u0002\u07ff", - "\u0800\u0007o\u0002\u0002\u0800\u0801\u0007r\u0002\u0002\u0801\u0802", - "\u0007q\u0002\u0002\u0802\u0803\u0007t\u0002\u0002\u0803\u0804\u0007", - "v\u0002\u0002\u0804\u0806\u0003\u0002\u0002\u0002\u0805\u0807\t\f\u0002", - "\u0002\u0806\u0805\u0003\u0002\u0002\u0002\u0807\u0808\u0003\u0002\u0002", - "\u0002\u0808\u0806\u0003\u0002\u0002\u0002\u0808\u0809\u0003\u0002\u0002", - "\u0002\u0809\u080a\u0003\u0002\u0002\u0002\u080a\u080b\b\u00bd\u0006", - "\u0002\u080b\u080c\b\u00bd\u000b\u0002\u080c\u017e\u0003\u0002\u0002", - "\u0002\u080d\u080e\u0007k\u0002\u0002\u080e\u080f\u0007p\u0002\u0002", - "\u080f\u0810\u0007e\u0002\u0002\u0810\u0811\u0007n\u0002\u0002\u0811", - "\u0812\u0007w\u0002\u0002\u0812\u0813\u0007f\u0002\u0002\u0813\u0814", - "\u0007g\u0002\u0002\u0814\u0816\u0003\u0002\u0002\u0002\u0815\u0817", - "\t\f\u0002\u0002\u0816\u0815\u0003\u0002\u0002\u0002\u0817\u0818\u0003", - "\u0002\u0002\u0002\u0818\u0816\u0003\u0002\u0002\u0002\u0818\u0819\u0003", - "\u0002\u0002\u0002\u0819\u081a\u0003\u0002\u0002\u0002\u081a\u081b\b", - "\u00be\u0006\u0002\u081b\u081c\b\u00be\u000b\u0002\u081c\u0180\u0003", - "\u0002\u0002\u0002\u081d\u081e\u0007r\u0002\u0002\u081e\u081f\u0007", - "t\u0002\u0002\u081f\u0820\u0007c\u0002\u0002\u0820\u0821\u0007i\u0002", - "\u0002\u0821\u0822\u0007o\u0002\u0002\u0822\u0823\u0007c\u0002\u0002", - "\u0823\u0824\u0003\u0002\u0002\u0002\u0824\u0825\b\u00bf\u0006\u0002", - "\u0825\u0826\b\u00bf\u000b\u0002\u0826\u0182\u0003\u0002\u0002\u0002", - "\u0827\u0828\u0007f\u0002\u0002\u0828\u0829\u0007g\u0002\u0002\u0829", - "\u082a\u0007h\u0002\u0002\u082a\u082b\u0007k\u0002\u0002\u082b\u082c", - "\u0007p\u0002\u0002\u082c\u082d\u0007g\u0002\u0002\u082d\u082f\u0003", - "\u0002\u0002\u0002\u082e\u0830\t\f\u0002\u0002\u082f\u082e\u0003\u0002", - "\u0002\u0002\u0830\u0831\u0003\u0002\u0002\u0002\u0831\u082f\u0003\u0002", - "\u0002\u0002\u0831\u0832\u0003\u0002\u0002\u0002\u0832\u0833\u0003\u0002", - "\u0002\u0002\u0833\u0834\b\u00c0\u0006\u0002\u0834\u0835\b\u00c0\f\u0002", - "\u0835\u0184\u0003\u0002\u0002\u0002\u0836\u0837\u0007f\u0002\u0002", - "\u0837\u0838\u0007g\u0002\u0002\u0838\u0839\u0007h\u0002\u0002\u0839", - "\u083a\u0007k\u0002\u0002\u083a\u083b\u0007p\u0002\u0002\u083b\u083c", - "\u0007g\u0002\u0002\u083c\u083d\u0007f\u0002\u0002\u083d\u083e\u0003", - "\u0002\u0002\u0002\u083e\u083f\b\u00c1\u0006\u0002\u083f\u0186\u0003", - "\u0002\u0002\u0002\u0840\u0841\u0007k\u0002\u0002\u0841\u0842\u0007", - "h\u0002\u0002\u0842\u0843\u0003\u0002\u0002\u0002\u0843\u0844\b\u00c2", - "\u0006\u0002\u0844\u0188\u0003\u0002\u0002\u0002\u0845\u0846\u0007g", - "\u0002\u0002\u0846\u0847\u0007n\u0002\u0002\u0847\u0848\u0007k\u0002", - "\u0002\u0848\u0849\u0007h\u0002\u0002\u0849\u084a\u0003\u0002\u0002", - "\u0002\u084a\u084b\b\u00c3\u0006\u0002\u084b\u018a\u0003\u0002\u0002", - "\u0002\u084c\u084d\u0007g\u0002\u0002\u084d\u084e\u0007n\u0002\u0002", - "\u084e\u084f\u0007u\u0002\u0002\u084f\u0850\u0007g\u0002\u0002\u0850", - "\u0851\u0003\u0002\u0002\u0002\u0851\u0852\b\u00c4\u0006\u0002\u0852", - "\u018c\u0003\u0002\u0002\u0002\u0853\u0854\u0007w\u0002\u0002\u0854", - "\u0855\u0007p\u0002\u0002\u0855\u0856\u0007f\u0002\u0002\u0856\u0857", - "\u0007g\u0002\u0002\u0857\u0858\u0007h\u0002\u0002\u0858\u0859\u0003", - "\u0002\u0002\u0002\u0859\u085a\b\u00c5\u0006\u0002\u085a\u018e\u0003", - "\u0002\u0002\u0002\u085b\u085c\u0007k\u0002\u0002\u085c\u085d\u0007", - "h\u0002\u0002\u085d\u085e\u0007f\u0002\u0002\u085e\u085f\u0007g\u0002", - "\u0002\u085f\u0860\u0007h\u0002\u0002\u0860\u0861\u0003\u0002\u0002", - "\u0002\u0861\u0862\b\u00c6\u0006\u0002\u0862\u0190\u0003\u0002\u0002", - "\u0002\u0863\u0864\u0007k\u0002\u0002\u0864\u0865\u0007h\u0002\u0002", - "\u0865\u0866\u0007p\u0002\u0002\u0866\u0867\u0007f\u0002\u0002\u0867", - "\u0868\u0007g\u0002\u0002\u0868\u0869\u0007h\u0002\u0002\u0869\u086a", - "\u0003\u0002\u0002\u0002\u086a\u086b\b\u00c7\u0006\u0002\u086b\u0192", - "\u0003\u0002\u0002\u0002\u086c\u086d\u0007g\u0002\u0002\u086d\u086e", - "\u0007p\u0002\u0002\u086e\u086f\u0007f\u0002\u0002\u086f\u0870\u0007", - "k\u0002\u0002\u0870\u0871\u0007h\u0002\u0002\u0871\u0872\u0003\u0002", - "\u0002\u0002\u0872\u0873\b\u00c8\u0006\u0002\u0873\u0194\u0003\u0002", - "\u0002\u0002\u0874\u0875\u0005\u0213\u0108\u0002\u0875\u0876\u0005\u020f", - "\u0106\u0002\u0876\u0877\u0005\u0215\u0109\u0002\u0877\u0878\u0005\u01f5", - "\u00f9\u0002\u0878\u0879\u0003\u0002\u0002\u0002\u0879\u087a\b\u00c9", - "\u0006\u0002\u087a\u0196\u0003\u0002\u0002\u0002\u087b\u087c\u0005\u01f7", - "\u00fa\u0002\u087c\u087d\u0005\u01ed\u00f5\u0002\u087d\u087e\u0005\u0203", - "\u0100\u0002\u087e\u087f\u0005\u0211\u0107\u0002\u087f\u0880\u0005\u01f5", - "\u00f9\u0002\u0880\u0881\u0003\u0002\u0002\u0002\u0881\u0882\b\u00ca", - "\u0006\u0002\u0882\u0198\u0003\u0002\u0002\u0002\u0883\u0884\u0007g", - "\u0002\u0002\u0884\u0885\u0007t\u0002\u0002\u0885\u0886\u0007t\u0002", - "\u0002\u0886\u0887\u0007q\u0002\u0002\u0887\u0888\u0007t\u0002\u0002", - "\u0888\u0889\u0003\u0002\u0002\u0002\u0889\u088a\b\u00cb\u0006\u0002", - "\u088a\u088b\b\u00cb\u000b\u0002\u088b\u019a\u0003\u0002\u0002\u0002", - "\u088c\u088d\u0007y\u0002\u0002\u088d\u088e\u0007c\u0002\u0002\u088e", - "\u088f\u0007t\u0002\u0002\u088f\u0890\u0007p\u0002\u0002\u0890\u0891", - "\u0007k\u0002\u0002\u0891\u0892\u0007p\u0002\u0002\u0892\u0893\u0007", - "i\u0002\u0002\u0893\u0894\u0003\u0002\u0002\u0002\u0894\u0895\b\u00cc", - "\u0006\u0002\u0895\u0896\b\u00cc\u000b\u0002\u0896\u019c\u0003\u0002", - "\u0002\u0002\u0897\u0898\u0007#\u0002\u0002\u0898\u0899\u0003\u0002", - "\u0002\u0002\u0899\u089a\b\u00cd\u0006\u0002\u089a\u019e\u0003\u0002", - "\u0002\u0002\u089b\u089c\u0007*\u0002\u0002\u089c\u089d\u0003\u0002", - "\u0002\u0002\u089d\u089e\b\u00ce\u0006\u0002\u089e\u01a0\u0003\u0002", - "\u0002\u0002\u089f\u08a0\u0007+\u0002\u0002\u08a0\u08a1\u0003\u0002", - "\u0002\u0002\u08a1\u08a2\b\u00cf\u0006\u0002\u08a2\u01a2\u0003\u0002", - "\u0002\u0002\u08a3\u08a4\u0007?\u0002\u0002\u08a4\u08a5\u0007?\u0002", - "\u0002\u08a5\u08a6\u0003\u0002\u0002\u0002\u08a6\u08a7\b\u00d0\u0006", - "\u0002\u08a7\u01a4\u0003\u0002\u0002\u0002\u08a8\u08a9\u0007#\u0002", - "\u0002\u08a9\u08aa\u0007?\u0002\u0002\u08aa\u08ab\u0003\u0002\u0002", - "\u0002\u08ab\u08ac\b\u00d1\u0006\u0002\u08ac\u01a6\u0003\u0002\u0002", - "\u0002\u08ad\u08ae\u0007(\u0002\u0002\u08ae\u08af\u0007(\u0002\u0002", - "\u08af\u08b0\u0003\u0002\u0002\u0002\u08b0\u08b1\b\u00d2\u0006\u0002", - "\u08b1\u01a8\u0003\u0002\u0002\u0002\u08b2\u08b3\u0007~\u0002\u0002", - "\u08b3\u08b4\u0007~\u0002\u0002\u08b4\u08b5\u0003\u0002\u0002\u0002", - "\u08b5\u08b6\b\u00d3\u0006\u0002\u08b6\u01aa\u0003\u0002\u0002\u0002", - "\u08b7\u08b8\u0007>\u0002\u0002\u08b8\u08b9\u0003\u0002\u0002\u0002", - "\u08b9\u08ba\b\u00d4\u0006\u0002\u08ba\u01ac\u0003\u0002\u0002\u0002", - "\u08bb\u08bc\u0007@\u0002\u0002\u08bc\u08bd\u0003\u0002\u0002\u0002", - "\u08bd\u08be\b\u00d5\u0006\u0002\u08be\u01ae\u0003\u0002\u0002\u0002", - "\u08bf\u08c0\u0007>\u0002\u0002\u08c0\u08c1\u0007?\u0002\u0002\u08c1", - "\u08c2\u0003\u0002\u0002\u0002\u08c2\u08c3\b\u00d6\u0006\u0002\u08c3", - "\u01b0\u0003\u0002\u0002\u0002\u08c4\u08c5\u0007@\u0002\u0002\u08c5", - "\u08c6\u0007?\u0002\u0002\u08c6\u08c7\u0003\u0002\u0002\u0002\u08c7", - "\u08c8\b\u00d7\u0006\u0002\u08c8\u01b2\u0003\u0002\u0002\u0002\u08c9", - "\u08cb\t\f\u0002\u0002\u08ca\u08c9\u0003\u0002\u0002\u0002\u08cb\u08cc", - "\u0003\u0002\u0002\u0002\u08cc\u08ca\u0003\u0002\u0002\u0002\u08cc\u08cd", - "\u0003\u0002\u0002\u0002\u08cd\u08ce\u0003\u0002\u0002\u0002\u08ce\u08cf", - "\b\u00d8\u0004\u0002\u08cf\u08d0\b\u00d8\r\u0002\u08d0\u01b4\u0003\u0002", - "\u0002\u0002\u08d1\u08d2\u0005\u01e1\u00ef\u0002\u08d2\u08d3\u0003\u0002", - "\u0002\u0002\u08d3\u08d4\b\u00d9\b\u0002\u08d4\u08d5\b\u00d9\u0003\u0002", - "\u08d5\u01b6\u0003\u0002\u0002\u0002\u08d6\u08da\u0005\u01d7\u00ea\u0002", - "\u08d7\u08d9\u0005\u01d5\u00e9\u0002\u08d8\u08d7\u0003\u0002\u0002\u0002", - "\u08d9\u08dc\u0003\u0002\u0002\u0002\u08da\u08d8\u0003\u0002\u0002\u0002", - "\u08da\u08db\u0003\u0002\u0002\u0002\u08db\u08dd\u0003\u0002\u0002\u0002", - "\u08dc\u08da\u0003\u0002\u0002\u0002\u08dd\u08de\b\u00da\u0006\u0002", - "\u08de\u01b8\u0003\u0002\u0002\u0002\u08df\u08e1\u0005\u01dd\u00ed\u0002", - "\u08e0\u08df\u0003\u0002\u0002\u0002\u08e1\u08e2\u0003\u0002\u0002\u0002", - "\u08e2\u08e0\u0003\u0002\u0002\u0002\u08e2\u08e3\u0003\u0002\u0002\u0002", - "\u08e3\u08e4\u0003\u0002\u0002\u0002\u08e4\u08e5\b\u00db\u0006\u0002", - "\u08e5\u01ba\u0003\u0002\u0002\u0002\u08e6\u08e8\u0005\u01dd\u00ed\u0002", - "\u08e7\u08e6\u0003\u0002\u0002\u0002\u08e8\u08e9\u0003\u0002\u0002\u0002", - "\u08e9\u08e7\u0003\u0002\u0002\u0002\u08e9\u08ea\u0003\u0002\u0002\u0002", - "\u08ea\u08eb\u0003\u0002\u0002\u0002\u08eb\u08ef\u00070\u0002\u0002", - "\u08ec\u08ee\u0005\u01dd\u00ed\u0002\u08ed\u08ec\u0003\u0002\u0002\u0002", - "\u08ee\u08f1\u0003\u0002\u0002\u0002\u08ef\u08ed\u0003\u0002\u0002\u0002", - "\u08ef\u08f0\u0003\u0002\u0002\u0002\u08f0\u08f9\u0003\u0002\u0002\u0002", - "\u08f1\u08ef\u0003\u0002\u0002\u0002\u08f2\u08f4\u00070\u0002\u0002", - "\u08f3\u08f5\u0005\u01dd\u00ed\u0002\u08f4\u08f3\u0003\u0002\u0002\u0002", - "\u08f5\u08f6\u0003\u0002\u0002\u0002\u08f6\u08f4\u0003\u0002\u0002\u0002", - "\u08f6\u08f7\u0003\u0002\u0002\u0002\u08f7\u08f9\u0003\u0002\u0002\u0002", - "\u08f8\u08e7\u0003\u0002\u0002\u0002\u08f8\u08f2\u0003\u0002\u0002\u0002", - "\u08f9\u08fa\u0003\u0002\u0002\u0002\u08fa\u08fb\b\u00dc\u0006\u0002", - "\u08fb\u01bc\u0003\u0002\u0002\u0002\u08fc\u08fe\u0007\u000f\u0002\u0002", - "\u08fd\u08fc\u0003\u0002\u0002\u0002\u08fd\u08fe\u0003\u0002\u0002\u0002", - "\u08fe\u08ff\u0003\u0002\u0002\u0002\u08ff\u0900\u0007\f\u0002\u0002", - "\u0900\u0901\u0003\u0002\u0002\u0002\u0901\u0902\b\u00dd\u0004\u0002", - "\u0902\u0903\b\u00dd\n\u0002\u0903\u01be\u0003\u0002\u0002\u0002\u0904", - "\u0905\u00071\u0002\u0002\u0905\u0906\u0007,\u0002\u0002\u0906\u090a", - "\u0003\u0002\u0002\u0002\u0907\u0909\u000b\u0002\u0002\u0002\u0908\u0907", - "\u0003\u0002\u0002\u0002\u0909\u090c\u0003\u0002\u0002\u0002\u090a\u090b", - "\u0003\u0002\u0002\u0002\u090a\u0908\u0003\u0002\u0002\u0002\u090b\u090d", - "\u0003\u0002\u0002\u0002\u090c\u090a\u0003\u0002\u0002\u0002\u090d\u090e", - "\u0007,\u0002\u0002\u090e\u090f\u00071\u0002\u0002\u090f\u0910\u0003", - "\u0002\u0002\u0002\u0910\u0911\b\u00de\u0005\u0002\u0911\u01c0\u0003", - "\u0002\u0002\u0002\u0912\u0913\u00071\u0002\u0002\u0913\u0914\u0007", - "1\u0002\u0002\u0914\u0918\u0003\u0002\u0002\u0002\u0915\u0917\n\u0002", - "\u0002\u0002\u0916\u0915\u0003\u0002\u0002\u0002\u0917\u091a\u0003\u0002", - "\u0002\u0002\u0918\u0916\u0003\u0002\u0002\u0002\u0918\u0919\u0003\u0002", - "\u0002\u0002\u0919\u091b\u0003\u0002\u0002\u0002\u091a\u0918\u0003\u0002", - "\u0002\u0002\u091b\u091c\b\u00df\u0005\u0002\u091c\u01c2\u0003\u0002", - "\u0002\u0002\u091d\u091f\u0007^\u0002\u0002\u091e\u0920\u0007\u000f", - "\u0002\u0002\u091f\u091e\u0003\u0002\u0002\u0002\u091f\u0920\u0003\u0002", - "\u0002\u0002\u0920\u0921\u0003\u0002\u0002\u0002\u0921\u0922\u0007\f", - "\u0002\u0002\u0922\u0923\u0003\u0002\u0002\u0002\u0923\u0924\b\u00e0", - "\u000e\u0002\u0924\u01c4\u0003\u0002\u0002\u0002\u0925\u0929\u0005\u01d7", - "\u00ea\u0002\u0926\u0928\u0005\u01d5\u00e9\u0002\u0927\u0926\u0003\u0002", - "\u0002\u0002\u0928\u092b\u0003\u0002\u0002\u0002\u0929\u0927\u0003\u0002", - "\u0002\u0002\u0929\u092a\u0003\u0002\u0002\u0002\u092a\u0935\u0003\u0002", - "\u0002\u0002\u092b\u0929\u0003\u0002\u0002\u0002\u092c\u0931\u0007*", - "\u0002\u0002\u092d\u0930\u0005\u01d5\u00e9\u0002\u092e\u0930\t\r\u0002", - "\u0002\u092f\u092d\u0003\u0002\u0002\u0002\u092f\u092e\u0003\u0002\u0002", - "\u0002\u0930\u0933\u0003\u0002\u0002\u0002\u0931\u092f\u0003\u0002\u0002", - "\u0002\u0931\u0932\u0003\u0002\u0002\u0002\u0932\u0934\u0003\u0002\u0002", - "\u0002\u0933\u0931\u0003\u0002\u0002\u0002\u0934\u0936\u0007+\u0002", - "\u0002\u0935\u092c\u0003\u0002\u0002\u0002\u0935\u0936\u0003\u0002\u0002", - "\u0002\u0936\u0937\u0003\u0002\u0002\u0002\u0937\u0938\b\u00e1\u0006", - "\u0002\u0938\u0939\b\u00e1\u000f\u0002\u0939\u093a\b\u00e1\u000b\u0002", - "\u093a\u01c6\u0003\u0002\u0002\u0002\u093b\u093d\u0007^\u0002\u0002", - "\u093c\u093e\u0007\u000f\u0002\u0002\u093d\u093c\u0003\u0002\u0002\u0002", - "\u093d\u093e\u0003\u0002\u0002\u0002\u093e\u093f\u0003\u0002\u0002\u0002", - "\u093f\u0940\u0007\f\u0002\u0002\u0940\u0941\u0003\u0002\u0002\u0002", - "\u0941\u0942\b\u00e2\u0006\u0002\u0942\u01c8\u0003\u0002\u0002\u0002", - "\u0943\u0944\u0007^\u0002\u0002\u0944\u0945\u000b\u0002\u0002\u0002", - "\u0945\u0946\u0003\u0002\u0002\u0002\u0946\u0947\b\u00e3\u0006\u0002", - "\u0947\u0948\b\u00e3\u0010\u0002\u0948\u01ca\u0003\u0002\u0002\u0002", - "\u0949\u094b\u0007\u000f\u0002\u0002\u094a\u0949\u0003\u0002\u0002\u0002", - "\u094a\u094b\u0003\u0002\u0002\u0002\u094b\u094c\u0003\u0002\u0002\u0002", - "\u094c\u094d\u0007\f\u0002\u0002\u094d\u094e\u0003\u0002\u0002\u0002", - "\u094e\u094f\b\u00e4\u0004\u0002\u094f\u0950\b\u00e4\u0011\u0002\u0950", - "\u0951\b\u00e4\n\u0002\u0951\u01cc\u0003\u0002\u0002\u0002\u0952\u0953", - "\u00071\u0002\u0002\u0953\u0954\u0007,\u0002\u0002\u0954\u0958\u0003", - "\u0002\u0002\u0002\u0955\u0957\u000b\u0002\u0002\u0002\u0956\u0955\u0003", - "\u0002\u0002\u0002\u0957\u095a\u0003\u0002\u0002\u0002\u0958\u0959\u0003", - "\u0002\u0002\u0002\u0958\u0956\u0003\u0002\u0002\u0002\u0959\u095b\u0003", - "\u0002\u0002\u0002\u095a\u0958\u0003\u0002\u0002\u0002\u095b\u095c\u0007", - ",\u0002\u0002\u095c\u095d\u00071\u0002\u0002\u095d\u095e\u0003\u0002", - "\u0002\u0002\u095e\u095f\b\u00e5\u0005\u0002\u095f\u0960\b\u00e5\u0012", - "\u0002\u0960\u01ce\u0003\u0002\u0002\u0002\u0961\u0962\u00071\u0002", - "\u0002\u0962\u0963\u00071\u0002\u0002\u0963\u0967\u0003\u0002\u0002", - "\u0002\u0964\u0966\n\u0002\u0002\u0002\u0965\u0964\u0003\u0002\u0002", - "\u0002\u0966\u0969\u0003\u0002\u0002\u0002\u0967\u0965\u0003\u0002\u0002", - "\u0002\u0967\u0968\u0003\u0002\u0002\u0002\u0968\u096a\u0003\u0002\u0002", - "\u0002\u0969\u0967\u0003\u0002\u0002\u0002\u096a\u096b\b\u00e6\u0005", - "\u0002\u096b\u096c\b\u00e6\u0013\u0002\u096c\u01d0\u0003\u0002\u0002", - "\u0002\u096d\u096e\u00071\u0002\u0002\u096e\u096f\u0003\u0002\u0002", - "\u0002\u096f\u0970\b\u00e7\u0006\u0002\u0970\u0971\b\u00e7\u0010\u0002", - "\u0971\u01d2\u0003\u0002\u0002\u0002\u0972\u0974\n\u000e\u0002\u0002", - "\u0973\u0972\u0003\u0002\u0002\u0002\u0974\u0975\u0003\u0002\u0002\u0002", - "\u0975\u0973\u0003\u0002\u0002\u0002\u0975\u0976\u0003\u0002\u0002\u0002", - "\u0976\u0977\u0003\u0002\u0002\u0002\u0977\u0978\b\u00e8\u0006\u0002", - "\u0978\u01d4\u0003\u0002\u0002\u0002\u0979\u097c\u0005\u01d7\u00ea\u0002", - "\u097a\u097c\u0005\u01dd\u00ed\u0002\u097b\u0979\u0003\u0002\u0002\u0002", - "\u097b\u097a\u0003\u0002\u0002\u0002\u097c\u01d6\u0003\u0002\u0002\u0002", - "\u097d\u0983\t\u000f\u0002\u0002\u097e\u0983\n\u0010\u0002\u0002\u097f", - "\u0980\t\u0011\u0002\u0002\u0980\u0983\t\u0012\u0002\u0002\u0981\u0983", - "\t\u0013\u0002\u0002\u0982\u097d\u0003\u0002\u0002\u0002\u0982\u097e", - "\u0003\u0002\u0002\u0002\u0982\u097f\u0003\u0002\u0002\u0002\u0982\u0981", - "\u0003\u0002\u0002\u0002\u0983\u01d8\u0003\u0002\u0002\u0002\u0984\u0986", - "\t\u0014\u0002\u0002\u0985\u0987\t\u0014\u0002\u0002\u0986\u0985\u0003", - "\u0002\u0002\u0002\u0986\u0987\u0003\u0002\u0002\u0002\u0987\u0989\u0003", - "\u0002\u0002\u0002\u0988\u098a\t\u0014\u0002\u0002\u0989\u0988\u0003", - "\u0002\u0002\u0002\u0989\u098a\u0003\u0002\u0002\u0002\u098a\u01da\u0003", - "\u0002\u0002\u0002\u098b\u098d\t\u0015\u0002\u0002\u098c\u098e\t\u0016", - "\u0002\u0002\u098d\u098c\u0003\u0002\u0002\u0002\u098d\u098e\u0003\u0002", - "\u0002\u0002\u098e\u0990\u0003\u0002\u0002\u0002\u098f\u0991\u0005\u01dd", - "\u00ed\u0002\u0990\u098f\u0003\u0002\u0002\u0002\u0991\u0992\u0003\u0002", - "\u0002\u0002\u0992\u0990\u0003\u0002\u0002\u0002\u0992\u0993\u0003\u0002", - "\u0002\u0002\u0993\u01dc\u0003\u0002\u0002\u0002\u0994\u0995\t\n\u0002", - "\u0002\u0995\u01de\u0003\u0002\u0002\u0002\u0996\u0997\t\u0017\u0002", - "\u0002\u0997\u01e0\u0003\u0002\u0002\u0002\u0998\u099c\t\u0018\u0002", - "\u0002\u0999\u099b\u0005\u01eb\u00f4\u0002\u099a\u0999\u0003\u0002\u0002", - "\u0002\u099b\u099e\u0003\u0002\u0002\u0002\u099c\u099a\u0003\u0002\u0002", - "\u0002\u099c\u099d\u0003\u0002\u0002\u0002\u099d\u09a0\u0003\u0002\u0002", - "\u0002\u099e\u099c\u0003\u0002\u0002\u0002\u099f\u0998\u0003\u0002\u0002", - "\u0002\u099f\u09a0\u0003\u0002\u0002\u0002\u09a0\u09a1\u0003\u0002\u0002", - "\u0002\u09a1\u09a2\u0007$\u0002\u0002\u09a2\u01e2\u0003\u0002\u0002", - "\u0002\u09a3\u09a4\u0007^\u0002\u0002\u09a4\u09a8\t\u0019\u0002\u0002", - "\u09a5\u09a8\u0005\u01e5\u00f1\u0002\u09a6\u09a8\u0005\u01e7\u00f2\u0002", - "\u09a7\u09a3\u0003\u0002\u0002\u0002\u09a7\u09a5\u0003\u0002\u0002\u0002", - "\u09a7\u09a6\u0003\u0002\u0002\u0002\u09a8\u01e4\u0003\u0002\u0002\u0002", - "\u09a9\u09aa\u0007^\u0002\u0002\u09aa\u09ab\t\u001a\u0002\u0002\u09ab", - "\u09ac\t\u0007\u0002\u0002\u09ac\u09b3\t\u0007\u0002\u0002\u09ad\u09ae", - "\u0007^\u0002\u0002\u09ae\u09af\t\u0007\u0002\u0002\u09af\u09b3\t\u0007", - "\u0002\u0002\u09b0\u09b1\u0007^\u0002\u0002\u09b1\u09b3\t\u0007\u0002", - "\u0002\u09b2\u09a9\u0003\u0002\u0002\u0002\u09b2\u09ad\u0003\u0002\u0002", - "\u0002\u09b2\u09b0\u0003\u0002\u0002\u0002\u09b3\u01e6\u0003\u0002\u0002", - "\u0002\u09b4\u09b5\u0007^\u0002\u0002\u09b5\u09b6\u0007w\u0002\u0002", - "\u09b6\u09b7\u0005\u01e9\u00f3\u0002\u09b7\u09b8\u0005\u01e9\u00f3\u0002", - "\u09b8\u09b9\u0005\u01e9\u00f3\u0002\u09b9\u09ba\u0005\u01e9\u00f3\u0002", - "\u09ba\u01e8\u0003\u0002\u0002\u0002\u09bb\u09bc\t\u001b\u0002\u0002", - "\u09bc\u01ea\u0003\u0002\u0002\u0002\u09bd\u09be\t\u001c\u0002\u0002", - "\u09be\u01ec\u0003\u0002\u0002\u0002\u09bf\u09c0\t\u001d\u0002\u0002", - "\u09c0\u01ee\u0003\u0002\u0002\u0002\u09c1\u09c2\t\b\u0002\u0002\u09c2", - "\u01f0\u0003\u0002\u0002\u0002\u09c3\u09c4\t\u001e\u0002\u0002\u09c4", - "\u01f2\u0003\u0002\u0002\u0002\u09c5\u09c6\t\u001f\u0002\u0002\u09c6", - "\u01f4\u0003\u0002\u0002\u0002\u09c7\u09c8\t\u0015\u0002\u0002\u09c8", - "\u01f6\u0003\u0002\u0002\u0002\u09c9\u09ca\t \u0002\u0002\u09ca\u01f8", - "\u0003\u0002\u0002\u0002\u09cb\u09cc\t!\u0002\u0002\u09cc\u01fa\u0003", - "\u0002\u0002\u0002\u09cd\u09ce\t\"\u0002\u0002\u09ce\u01fc\u0003\u0002", - "\u0002\u0002\u09cf\u09d0\t#\u0002\u0002\u09d0\u01fe\u0003\u0002\u0002", - "\u0002\u09d1\u09d2\t$\u0002\u0002\u09d2\u0200\u0003\u0002\u0002\u0002", - "\u09d3\u09d4\t%\u0002\u0002\u09d4\u0202\u0003\u0002\u0002\u0002\u09d5", - "\u09d6\t&\u0002\u0002\u09d6\u0204\u0003\u0002\u0002\u0002\u09d7\u09d8", - "\t\'\u0002\u0002\u09d8\u0206\u0003\u0002\u0002\u0002\u09d9\u09da\t(", - "\u0002\u0002\u09da\u0208\u0003\u0002\u0002\u0002\u09db\u09dc\t)\u0002", - "\u0002\u09dc\u020a\u0003\u0002\u0002\u0002\u09dd\u09de\t*\u0002\u0002", - "\u09de\u020c\u0003\u0002\u0002\u0002\u09df\u09e0\t+\u0002\u0002\u09e0", - "\u020e\u0003\u0002\u0002\u0002\u09e1\u09e2\t,\u0002\u0002\u09e2\u0210", - "\u0003\u0002\u0002\u0002\u09e3\u09e4\t-\u0002\u0002\u09e4\u0212\u0003", - "\u0002\u0002\u0002\u09e5\u09e6\t.\u0002\u0002\u09e6\u0214\u0003\u0002", - "\u0002\u0002\u09e7\u09e8\t/\u0002\u0002\u09e8\u0216\u0003\u0002\u0002", - "\u0002\u09e9\u09ea\t0\u0002\u0002\u09ea\u0218\u0003\u0002\u0002\u0002", - "\u09eb\u09ec\t1\u0002\u0002\u09ec\u021a\u0003\u0002\u0002\u0002\u09ed", - "\u09ee\t\u0006\u0002\u0002\u09ee\u021c\u0003\u0002\u0002\u0002\u09ef", - "\u09f0\t2\u0002\u0002\u09f0\u021e\u0003\u0002\u0002\u0002\u09f1\u09f2", - "\t3\u0002\u0002\u09f2\u0220\u0003\u0002\u0002\u0002N\u0002\u0003\u0004", - "\u0005\u0006\u03de\u051b\u0574\u0591\u05ab\u0678\u0696\u069e\u06ad\u06b8", - "\u06c1\u06cc\u06ea\u0761\u076e\u0771\u0777\u077a\u0781\u0784\u0789\u078c", - "\u0791\u0797\u079e\u07a0\u07a3\u07a6\u07ab\u07af\u07b2\u07b4\u07ba\u07bf", - "\u07c9\u07d7\u07e7\u07fa\u0808\u0818\u0831\u08cc\u08da\u08e2\u08e9\u08ef", - "\u08f6\u08f8\u08fd\u090a\u0918\u091f\u0929\u092f\u0931\u0935\u093d\u094a", - "\u0958\u0967\u0975\u097b\u0982\u0986\u0989\u098d\u0992\u099c\u099f\u09a7", - "\u09b2\u0014\u0002\u0006\u0002\u0004\u0003\u0002\u0002\u0003\u0002\u0002", - "\u0004\u0002\u0002\u0005\u0002\u0004\u0004\u0002\u0002\u0002\u0002\t", - "\u00bc\u0002\u0004\u0002\u0002\u0004\u0006\u0002\u0004\u0005\u0002\t", - "\u00b5\u0002\b\u0002\u0002\t\u00d9\u0002\t\u00e1\u0002\t\u00dc\u0002", - "\t\u00dd\u0002\t\u00de\u0002"].join(""); + "\u05d9\u05da\u0007a\u0002\u0002\u05da\u05db\u0007K\u0002\u0002\u05db", + "\u05dc\u0007P\u0002\u0002\u05dc\u05dd\u0007N\u0002\u0002\u05dd\u05de", + "\u0007K\u0002\u0002\u05de\u05df\u0007P\u0002\u0002\u05df\u05e0\u0007", + "G\u0002\u0002\u05e0\u00d4\u0003\u0002\u0002\u0002\u05e1\u05e2\u0007", + "P\u0002\u0002\u05e2\u05e3\u0007U\u0002\u0002\u05e3\u05e4\u0007a\u0002", + "\u0002\u05e4\u05e5\u0007G\u0002\u0002\u05e5\u05e6\u0007P\u0002\u0002", + "\u05e6\u05e7\u0007W\u0002\u0002\u05e7\u05e8\u0007O\u0002\u0002\u05e8", + "\u00d6\u0003\u0002\u0002\u0002\u05e9\u05ea\u0007P\u0002\u0002\u05ea", + "\u05eb\u0007U\u0002\u0002\u05eb\u05ec\u0007a\u0002\u0002\u05ec\u05ed", + "\u0007Q\u0002\u0002\u05ed\u05ee\u0007R\u0002\u0002\u05ee\u05ef\u0007", + "V\u0002\u0002\u05ef\u05f0\u0007K\u0002\u0002\u05f0\u05f1\u0007Q\u0002", + "\u0002\u05f1\u05f2\u0007P\u0002\u0002\u05f2\u05f3\u0007U\u0002\u0002", + "\u05f3\u00d8\u0003\u0002\u0002\u0002\u05f4\u05f5\u0007P\u0002\u0002", + "\u05f5\u05f6\u0007U\u0002\u0002\u05f6\u05f7\u0007a\u0002\u0002\u05f7", + "\u05f8\u0007E\u0002\u0002\u05f8\u05f9\u0007N\u0002\u0002\u05f9\u05fa", + "\u0007Q\u0002\u0002\u05fa\u05fb\u0007U\u0002\u0002\u05fb\u05fc\u0007", + "G\u0002\u0002\u05fc\u05fd\u0007F\u0002\u0002\u05fd\u05fe\u0007a\u0002", + "\u0002\u05fe\u05ff\u0007G\u0002\u0002\u05ff\u0600\u0007P\u0002\u0002", + "\u0600\u0601\u0007W\u0002\u0002\u0601\u0602\u0007O\u0002\u0002\u0602", + "\u00da\u0003\u0002\u0002\u0002\u0603\u0604\u0007P\u0002\u0002\u0604", + "\u0605\u0007U\u0002\u0002\u0605\u0606\u0007a\u0002\u0002\u0606\u0607", + "\u0007V\u0002\u0002\u0607\u0608\u0007[\u0002\u0002\u0608\u0609\u0007", + "R\u0002\u0002\u0609\u060a\u0007G\u0002\u0002\u060a\u060b\u0007F\u0002", + "\u0002\u060b\u060c\u0007a\u0002\u0002\u060c\u060d\u0007G\u0002\u0002", + "\u060d\u060e\u0007Z\u0002\u0002\u060e\u060f\u0007V\u0002\u0002\u060f", + "\u0610\u0007G\u0002\u0002\u0610\u0611\u0007P\u0002\u0002\u0611\u0612", + "\u0007U\u0002\u0002\u0612\u0613\u0007K\u0002\u0002\u0613\u0614\u0007", + "D\u0002\u0002\u0614\u0615\u0007N\u0002\u0002\u0615\u0616\u0007G\u0002", + "\u0002\u0616\u0617\u0007a\u0002\u0002\u0617\u0618\u0007G\u0002\u0002", + "\u0618\u0619\u0007P\u0002\u0002\u0619\u061a\u0007W\u0002\u0002\u061a", + "\u061b\u0007O\u0002\u0002\u061b\u00dc\u0003\u0002\u0002\u0002\u061c", + "\u061d\u0007P\u0002\u0002\u061d\u061e\u0007U\u0002\u0002\u061e\u061f", + "\u0007a\u0002\u0002\u061f\u0620\u0007G\u0002\u0002\u0620\u0621\u0007", + "T\u0002\u0002\u0621\u0622\u0007T\u0002\u0002\u0622\u0623\u0007Q\u0002", + "\u0002\u0623\u0624\u0007T\u0002\u0002\u0624\u0625\u0007a\u0002\u0002", + "\u0625\u0626\u0007G\u0002\u0002\u0626\u0627\u0007P\u0002\u0002\u0627", + "\u0628\u0007W\u0002\u0002\u0628\u0629\u0007O\u0002\u0002\u0629\u00de", + "\u0003\u0002\u0002\u0002\u062a\u062b\u0007c\u0002\u0002\u062b\u062c", + "\u0007u\u0002\u0002\u062c\u062d\u0007u\u0002\u0002\u062d\u062e\u0007", + "k\u0002\u0002\u062e\u062f\u0007i\u0002\u0002\u062f\u0630\u0007p\u0002", + "\u0002\u0630\u00e0\u0003\u0002\u0002\u0002\u0631\u0632\u0007e\u0002", + "\u0002\u0632\u0633\u0007q\u0002\u0002\u0633\u0634\u0007r\u0002\u0002", + "\u0634\u0635\u0007{\u0002\u0002\u0635\u00e2\u0003\u0002\u0002\u0002", + "\u0636\u0637\u0007i\u0002\u0002\u0637\u0638\u0007g\u0002\u0002\u0638", + "\u0639\u0007v\u0002\u0002\u0639\u063a\u0007v\u0002\u0002\u063a\u063b", + "\u0007g\u0002\u0002\u063b\u063c\u0007t\u0002\u0002\u063c\u00e4\u0003", + "\u0002\u0002\u0002\u063d\u063e\u0007u\u0002\u0002\u063e\u063f\u0007", + "g\u0002\u0002\u063f\u0640\u0007v\u0002\u0002\u0640\u0641\u0007v\u0002", + "\u0002\u0641\u0642\u0007g\u0002\u0002\u0642\u0643\u0007t\u0002\u0002", + "\u0643\u00e6\u0003\u0002\u0002\u0002\u0644\u0645\u0007u\u0002\u0002", + "\u0645\u0646\u0007v\u0002\u0002\u0646\u0647\u0007t\u0002\u0002\u0647", + "\u0648\u0007q\u0002\u0002\u0648\u0649\u0007p\u0002\u0002\u0649\u064a", + "\u0007i\u0002\u0002\u064a\u00e8\u0003\u0002\u0002\u0002\u064b\u064c", + "\u0007t\u0002\u0002\u064c\u064d\u0007g\u0002\u0002\u064d\u064e\u0007", + "c\u0002\u0002\u064e\u064f\u0007f\u0002\u0002\u064f\u0650\u0007q\u0002", + "\u0002\u0650\u0651\u0007p\u0002\u0002\u0651\u0652\u0007n\u0002\u0002", + "\u0652\u0653\u0007{\u0002\u0002\u0653\u00ea\u0003\u0002\u0002\u0002", + "\u0654\u0655\u0007t\u0002\u0002\u0655\u0656\u0007g\u0002\u0002\u0656", + "\u0657\u0007c\u0002\u0002\u0657\u0658\u0007f\u0002\u0002\u0658\u0659", + "\u0007y\u0002\u0002\u0659\u065a\u0007t\u0002\u0002\u065a\u065b\u0007", + "k\u0002\u0002\u065b\u065c\u0007v\u0002\u0002\u065c\u065d\u0007g\u0002", + "\u0002\u065d\u00ec\u0003\u0002\u0002\u0002\u065e\u065f\u0007y\u0002", + "\u0002\u065f\u0660\u0007g\u0002\u0002\u0660\u0661\u0007c\u0002\u0002", + "\u0661\u0662\u0007m\u0002\u0002\u0662\u00ee\u0003\u0002\u0002\u0002", + "\u0663\u0664\u0007w\u0002\u0002\u0664\u0665\u0007p\u0002\u0002\u0665", + "\u0666\u0007u\u0002\u0002\u0666\u0667\u0007c\u0002\u0002\u0667\u0668", + "\u0007h\u0002\u0002\u0668\u0669\u0007g\u0002\u0002\u0669\u066a\u0007", + "a\u0002\u0002\u066a\u066b\u0007w\u0002\u0002\u066b\u066c\u0007p\u0002", + "\u0002\u066c\u066d\u0007t\u0002\u0002\u066d\u066e\u0007g\u0002\u0002", + "\u066e\u066f\u0007v\u0002\u0002\u066f\u0670\u0007c\u0002\u0002\u0670", + "\u0671\u0007k\u0002\u0002\u0671\u0672\u0007p\u0002\u0002\u0672\u0673", + "\u0007g\u0002\u0002\u0673\u0674\u0007f\u0002\u0002\u0674\u00f0\u0003", + "\u0002\u0002\u0002\u0675\u0676\u0007K\u0002\u0002\u0676\u0677\u0007", + "D\u0002\u0002\u0677\u0678\u0007Q\u0002\u0002\u0678\u0679\u0007w\u0002", + "\u0002\u0679\u067a\u0007v\u0002\u0002\u067a\u067b\u0007n\u0002\u0002", + "\u067b\u067c\u0007g\u0002\u0002\u067c\u067d\u0007v\u0002\u0002\u067d", + "\u00f2\u0003\u0002\u0002\u0002\u067e\u067f\u0007K\u0002\u0002\u067f", + "\u0680\u0007D\u0002\u0002\u0680\u0681\u0007Q\u0002\u0002\u0681\u0682", + "\u0007w\u0002\u0002\u0682\u0683\u0007v\u0002\u0002\u0683\u0684\u0007", + "n\u0002\u0002\u0684\u0685\u0007g\u0002\u0002\u0685\u0686\u0007v\u0002", + "\u0002\u0686\u0687\u0007E\u0002\u0002\u0687\u0688\u0007q\u0002\u0002", + "\u0688\u0689\u0007n\u0002\u0002\u0689\u068a\u0007n\u0002\u0002\u068a", + "\u068b\u0007g\u0002\u0002\u068b\u068c\u0007e\u0002\u0002\u068c\u068d", + "\u0007v\u0002\u0002\u068d\u068e\u0007k\u0002\u0002\u068e\u068f\u0007", + "q\u0002\u0002\u068f\u0690\u0007p\u0002\u0002\u0690\u00f4\u0003\u0002", + "\u0002\u0002\u0691\u0692\u0007K\u0002\u0002\u0692\u0693\u0007D\u0002", + "\u0002\u0693\u0694\u0007K\u0002\u0002\u0694\u0695\u0007p\u0002\u0002", + "\u0695\u0696\u0007u\u0002\u0002\u0696\u0697\u0007r\u0002\u0002\u0697", + "\u0698\u0007g\u0002\u0002\u0698\u0699\u0007e\u0002\u0002\u0699\u069a", + "\u0007v\u0002\u0002\u069a\u069b\u0007c\u0002\u0002\u069b\u069c\u0007", + "d\u0002\u0002\u069c\u069d\u0007n\u0002\u0002\u069d\u069e\u0007g\u0002", + "\u0002\u069e\u00f6\u0003\u0002\u0002\u0002\u069f\u06a0\u0007K\u0002", + "\u0002\u06a0\u06a1\u0007D\u0002\u0002\u06a1\u06a2\u0007a\u0002\u0002", + "\u06a2\u06a3\u0007F\u0002\u0002\u06a3\u06a4\u0007G\u0002\u0002\u06a4", + "\u06a5\u0007U\u0002\u0002\u06a5\u06a6\u0007K\u0002\u0002\u06a6\u06a7", + "\u0007I\u0002\u0002\u06a7\u06a8\u0007P\u0002\u0002\u06a8\u06a9\u0007", + "C\u0002\u0002\u06a9\u06aa\u0007D\u0002\u0002\u06aa\u06ab\u0007N\u0002", + "\u0002\u06ab\u06ac\u0007G\u0002\u0002\u06ac\u00f8\u0003\u0002\u0002", + "\u0002\u06ad\u06ae\u0007P\u0002\u0002\u06ae\u06af\u0007U\u0002\u0002", + "\u06af\u06b0\u0007a\u0002\u0002\u06b0\u06b1\u0007C\u0002\u0002\u06b1", + "\u06b2\u0007U\u0002\u0002\u06b2\u06b3\u0007U\u0002\u0002\u06b3\u06b4", + "\u0007W\u0002\u0002\u06b4\u06b5\u0007O\u0002\u0002\u06b5\u06b6\u0007", + "G\u0002\u0002\u06b6\u06b7\u0007a\u0002\u0002\u06b7\u06b8\u0007P\u0002", + "\u0002\u06b8\u06b9\u0007Q\u0002\u0002\u06b9\u06ba\u0007P\u0002\u0002", + "\u06ba\u06bb\u0007P\u0002\u0002\u06bb\u06bc\u0007W\u0002\u0002\u06bc", + "\u06bd\u0007N\u0002\u0002\u06bd\u06be\u0007N\u0002\u0002\u06be\u06bf", + "\u0007a\u0002\u0002\u06bf\u06c0\u0007D\u0002\u0002\u06c0\u06c1\u0007", + "G\u0002\u0002\u06c1\u06c2\u0007I\u0002\u0002\u06c2\u06c3\u0007K\u0002", + "\u0002\u06c3\u06c4\u0007P\u0002\u0002\u06c4\u06c8\u0003\u0002\u0002", + "\u0002\u06c5\u06c7\n\u0002\u0002\u0002\u06c6\u06c5\u0003\u0002\u0002", + "\u0002\u06c7\u06ca\u0003\u0002\u0002\u0002\u06c8\u06c6\u0003\u0002\u0002", + "\u0002\u06c8\u06c9\u0003\u0002\u0002\u0002\u06c9\u06cb\u0003\u0002\u0002", + "\u0002\u06ca\u06c8\u0003\u0002\u0002\u0002\u06cb\u06cc\b{\u0002\u0002", + "\u06cc\u00fa\u0003\u0002\u0002\u0002\u06cd\u06ce\u0007P\u0002\u0002", + "\u06ce\u06cf\u0007U\u0002\u0002\u06cf\u06d0\u0007a\u0002\u0002\u06d0", + "\u06d1\u0007C\u0002\u0002\u06d1\u06d2\u0007U\u0002\u0002\u06d2\u06d3", + "\u0007U\u0002\u0002\u06d3\u06d4\u0007W\u0002\u0002\u06d4\u06d5\u0007", + "O\u0002\u0002\u06d5\u06d6\u0007G\u0002\u0002\u06d6\u06d7\u0007a\u0002", + "\u0002\u06d7\u06d8\u0007P\u0002\u0002\u06d8\u06d9\u0007Q\u0002\u0002", + "\u06d9\u06da\u0007P\u0002\u0002\u06da\u06db\u0007P\u0002\u0002\u06db", + "\u06dc\u0007W\u0002\u0002\u06dc\u06dd\u0007N\u0002\u0002\u06dd\u06de", + "\u0007N\u0002\u0002\u06de\u06df\u0007a\u0002\u0002\u06df\u06e0\u0007", + "G\u0002\u0002\u06e0\u06e1\u0007P\u0002\u0002\u06e1\u06e2\u0007F\u0002", + "\u0002\u06e2\u06e6\u0003\u0002\u0002\u0002\u06e3\u06e5\n\u0002\u0002", + "\u0002\u06e4\u06e3\u0003\u0002\u0002\u0002\u06e5\u06e8\u0003\u0002\u0002", + "\u0002\u06e6\u06e4\u0003\u0002\u0002\u0002\u06e6\u06e7\u0003\u0002\u0002", + "\u0002\u06e7\u06e9\u0003\u0002\u0002\u0002\u06e8\u06e6\u0003\u0002\u0002", + "\u0002\u06e9\u06ea\b|\u0002\u0002\u06ea\u00fc\u0003\u0002\u0002\u0002", + "\u06eb\u06ed\t\u0003\u0002\u0002\u06ec\u06eb\u0003\u0002\u0002\u0002", + "\u06ed\u06ee\u0003\u0002\u0002\u0002\u06ee\u06ec\u0003\u0002\u0002\u0002", + "\u06ee\u06ef\u0003\u0002\u0002\u0002\u06ef\u06f0\u0003\u0002\u0002\u0002", + "\u06f0\u06f1\u0007a\u0002\u0002\u06f1\u06f2\u0007G\u0002\u0002\u06f2", + "\u06f3\u0007Z\u0002\u0002\u06f3\u06f4\u0007V\u0002\u0002\u06f4\u06f5", + "\u0007G\u0002\u0002\u06f5\u06f6\u0007T\u0002\u0002\u06f6\u06f7\u0007", + "P\u0002\u0002\u06f7\u06f8\u0003\u0002\u0002\u0002\u06f8\u06f9\b}\u0002", + "\u0002\u06f9\u00fe\u0003\u0002\u0002\u0002\u06fa\u06fc\t\u0003\u0002", + "\u0002\u06fb\u06fa\u0003\u0002\u0002\u0002\u06fc\u06fd\u0003\u0002\u0002", + "\u0002\u06fd\u06fb\u0003\u0002\u0002\u0002\u06fd\u06fe\u0003\u0002\u0002", + "\u0002\u06fe\u06ff\u0003\u0002\u0002\u0002\u06ff\u0700\u0007a\u0002", + "\u0002\u0700\u0701\u0007K\u0002\u0002\u0701\u0702\u0007Q\u0002\u0002", + "\u0702\u0703\u0007U\u0002\u0002\u0703\u0704\u0007*\u0002\u0002\u0704", + "\u0706\u0003\u0002\u0002\u0002\u0705\u0707\n\u0004\u0002\u0002\u0706", + "\u0705\u0003\u0002\u0002\u0002\u0707\u0708\u0003\u0002\u0002\u0002\u0708", + "\u0706\u0003\u0002\u0002\u0002\u0708\u0709\u0003\u0002\u0002\u0002\u0709", + "\u070a\u0003\u0002\u0002\u0002\u070a\u070b\u0007+\u0002\u0002\u070b", + "\u070c\u0003\u0002\u0002\u0002\u070c\u070d\b~\u0002\u0002\u070d\u0100", + "\u0003\u0002\u0002\u0002\u070e\u0710\t\u0003\u0002\u0002\u070f\u070e", + "\u0003\u0002\u0002\u0002\u0710\u0711\u0003\u0002\u0002\u0002\u0711\u070f", + "\u0003\u0002\u0002\u0002\u0711\u0712\u0003\u0002\u0002\u0002\u0712\u0713", + "\u0003\u0002\u0002\u0002\u0713\u0714\u0007a\u0002\u0002\u0714\u0715", + "\u0007O\u0002\u0002\u0715\u0716\u0007C\u0002\u0002\u0716\u0717\u0007", + "E\u0002\u0002\u0717\u0718\u0007*\u0002\u0002\u0718\u071a\u0003\u0002", + "\u0002\u0002\u0719\u071b\n\u0004\u0002\u0002\u071a\u0719\u0003\u0002", + "\u0002\u0002\u071b\u071c\u0003\u0002\u0002\u0002\u071c\u071a\u0003\u0002", + "\u0002\u0002\u071c\u071d\u0003\u0002\u0002\u0002\u071d\u071e\u0003\u0002", + "\u0002\u0002\u071e\u071f\u0007+\u0002\u0002\u071f\u0720\u0003\u0002", + "\u0002\u0002\u0720\u0721\b\u007f\u0002\u0002\u0721\u0102\u0003\u0002", + "\u0002\u0002\u0722\u0723\u0007a\u0002\u0002\u0723\u0724\u0007a\u0002", + "\u0002\u0724\u0725\u0007V\u0002\u0002\u0725\u0726\u0007X\u0002\u0002", + "\u0726\u0727\u0007Q\u0002\u0002\u0727\u0728\u0007U\u0002\u0002\u0728", + "\u0729\u0007a\u0002\u0002\u0729\u072a\u0007R\u0002\u0002\u072a\u072b", + "\u0007T\u0002\u0002\u072b\u072c\u0007Q\u0002\u0002\u072c\u072d\u0007", + "J\u0002\u0002\u072d\u072e\u0007K\u0002\u0002\u072e\u072f\u0007D\u0002", + "\u0002\u072f\u0730\u0007K\u0002\u0002\u0730\u0731\u0007V\u0002\u0002", + "\u0731\u0732\u0007G\u0002\u0002\u0732\u0733\u0007F\u0002\u0002\u0733", + "\u0734\u0003\u0002\u0002\u0002\u0734\u0735\b\u0080\u0002\u0002\u0735", + "\u0104\u0003\u0002\u0002\u0002\u0736\u0737\u0007P\u0002\u0002\u0737", + "\u0738\u0007U\u0002\u0002\u0738\u0739\u0007a\u0002\u0002\u0739\u073a", + "\u0007P\u0002\u0002\u073a\u073b\u0007Q\u0002\u0002\u073b\u073c\u0007", + "G\u0002\u0002\u073c\u073d\u0007U\u0002\u0002\u073d\u073e\u0007E\u0002", + "\u0002\u073e\u073f\u0007C\u0002\u0002\u073f\u0740\u0007R\u0002\u0002", + "\u0740\u0741\u0007G\u0002\u0002\u0741\u0742\u0003\u0002\u0002\u0002", + "\u0742\u0743\b\u0081\u0002\u0002\u0743\u0106\u0003\u0002\u0002\u0002", + "\u0744\u0748\u0005\u01f1\u00f7\u0002\u0745\u0747\u0005\u01ef\u00f6\u0002", + "\u0746\u0745\u0003\u0002\u0002\u0002\u0747\u074a\u0003\u0002\u0002\u0002", + "\u0748\u0746\u0003\u0002\u0002\u0002\u0748\u0749\u0003\u0002\u0002\u0002", + "\u0749\u0108\u0003\u0002\u0002\u0002\u074a\u0748\u0003\u0002\u0002\u0002", + "\u074b\u074c\u0007*\u0002\u0002\u074c\u010a\u0003\u0002\u0002\u0002", + "\u074d\u074e\u0007+\u0002\u0002\u074e\u010c\u0003\u0002\u0002\u0002", + "\u074f\u0750\u0007}\u0002\u0002\u0750\u010e\u0003\u0002\u0002\u0002", + "\u0751\u0752\u0007\u007f\u0002\u0002\u0752\u0110\u0003\u0002\u0002\u0002", + "\u0753\u0754\u0007]\u0002\u0002\u0754\u0112\u0003\u0002\u0002\u0002", + "\u0755\u0756\u0007_\u0002\u0002\u0756\u0114\u0003\u0002\u0002\u0002", + "\u0757\u0758\u0007=\u0002\u0002\u0758\u0116\u0003\u0002\u0002\u0002", + "\u0759\u075a\u0007.\u0002\u0002\u075a\u0118\u0003\u0002\u0002\u0002", + "\u075b\u075c\u00070\u0002\u0002\u075c\u011a\u0003\u0002\u0002\u0002", + "\u075d\u075e\u0007/\u0002\u0002\u075e\u075f\u0007@\u0002\u0002\u075f", + "\u011c\u0003\u0002\u0002\u0002\u0760\u0761\u0007B\u0002\u0002\u0761", + "\u011e\u0003\u0002\u0002\u0002\u0762\u0763\u0007?\u0002\u0002\u0763", + "\u0120\u0003\u0002\u0002\u0002\u0764\u0765\u0007@\u0002\u0002\u0765", + "\u0122\u0003\u0002\u0002\u0002\u0766\u0767\u0007>\u0002\u0002\u0767", + "\u0124\u0003\u0002\u0002\u0002\u0768\u0769\u0007#\u0002\u0002\u0769", + "\u0126\u0003\u0002\u0002\u0002\u076a\u076b\u0007\u0080\u0002\u0002\u076b", + "\u0128\u0003\u0002\u0002\u0002\u076c\u076d\u0007A\u0002\u0002\u076d", + "\u012a\u0003\u0002\u0002\u0002\u076e\u076f\u0007<\u0002\u0002\u076f", + "\u012c\u0003\u0002\u0002\u0002\u0770\u0771\u0007?\u0002\u0002\u0771", + "\u0772\u0007?\u0002\u0002\u0772\u012e\u0003\u0002\u0002\u0002\u0773", + "\u0774\u0007>\u0002\u0002\u0774\u0775\u0007?\u0002\u0002\u0775\u0130", + "\u0003\u0002\u0002\u0002\u0776\u0777\u0007@\u0002\u0002\u0777\u0778", + "\u0007?\u0002\u0002\u0778\u0132\u0003\u0002\u0002\u0002\u0779\u077a", + "\u0007#\u0002\u0002\u077a\u077b\u0007?\u0002\u0002\u077b\u0134\u0003", + "\u0002\u0002\u0002\u077c\u077d\u0007(\u0002\u0002\u077d\u077e\u0007", + "(\u0002\u0002\u077e\u0136\u0003\u0002\u0002\u0002\u077f\u0780\u0007", + "~\u0002\u0002\u0780\u0781\u0007~\u0002\u0002\u0781\u0138\u0003\u0002", + "\u0002\u0002\u0782\u0783\u0007-\u0002\u0002\u0783\u0784\u0007-\u0002", + "\u0002\u0784\u013a\u0003\u0002\u0002\u0002\u0785\u0786\u0007/\u0002", + "\u0002\u0786\u0787\u0007/\u0002\u0002\u0787\u013c\u0003\u0002\u0002", + "\u0002\u0788\u0789\u0007-\u0002\u0002\u0789\u013e\u0003\u0002\u0002", + "\u0002\u078a\u078b\u0007/\u0002\u0002\u078b\u0140\u0003\u0002\u0002", + "\u0002\u078c\u078d\u0007,\u0002\u0002\u078d\u0142\u0003\u0002\u0002", + "\u0002\u078e\u078f\u00071\u0002\u0002\u078f\u0144\u0003\u0002\u0002", + "\u0002\u0790\u0791\u0007(\u0002\u0002\u0791\u0146\u0003\u0002\u0002", + "\u0002\u0792\u0793\u0007~\u0002\u0002\u0793\u0148\u0003\u0002\u0002", + "\u0002\u0794\u0795\u0007`\u0002\u0002\u0795\u014a\u0003\u0002\u0002", + "\u0002\u0796\u0797\u0007\'\u0002\u0002\u0797\u014c\u0003\u0002\u0002", + "\u0002\u0798\u0799\u0007-\u0002\u0002\u0799\u079a\u0007?\u0002\u0002", + "\u079a\u014e\u0003\u0002\u0002\u0002\u079b\u079c\u0007/\u0002\u0002", + "\u079c\u079d\u0007?\u0002\u0002\u079d\u0150\u0003\u0002\u0002\u0002", + "\u079e\u079f\u0007,\u0002\u0002\u079f\u07a0\u0007?\u0002\u0002\u07a0", + "\u0152\u0003\u0002\u0002\u0002\u07a1\u07a2\u00071\u0002\u0002\u07a2", + "\u07a3\u0007?\u0002\u0002\u07a3\u0154\u0003\u0002\u0002\u0002\u07a4", + "\u07a5\u0007(\u0002\u0002\u07a5\u07a6\u0007?\u0002\u0002\u07a6\u0156", + "\u0003\u0002\u0002\u0002\u07a7\u07a8\u0007~\u0002\u0002\u07a8\u07a9", + "\u0007?\u0002\u0002\u07a9\u0158\u0003\u0002\u0002\u0002\u07aa\u07ab", + "\u0007`\u0002\u0002\u07ab\u07ac\u0007?\u0002\u0002\u07ac\u015a\u0003", + "\u0002\u0002\u0002\u07ad\u07ae\u0007\'\u0002\u0002\u07ae\u07af\u0007", + "?\u0002\u0002\u07af\u015c\u0003\u0002\u0002\u0002\u07b0\u07b1\u0007", + ">\u0002\u0002\u07b1\u07b2\u0007>\u0002\u0002\u07b2\u07b3\u0007?\u0002", + "\u0002\u07b3\u015e\u0003\u0002\u0002\u0002\u07b4\u07b5\u0007@\u0002", + "\u0002\u07b5\u07b6\u0007@\u0002\u0002\u07b6\u07b7\u0007?\u0002\u0002", + "\u07b7\u0160\u0003\u0002\u0002\u0002\u07b8\u07b9\u00070\u0002\u0002", + "\u07b9\u07ba\u00070\u0002\u0002\u07ba\u07bb\u00070\u0002\u0002\u07bb", + "\u0162\u0003\u0002\u0002\u0002\u07bc\u07bf\u0007)\u0002\u0002\u07bd", + "\u07c0\u0005\u01fd\u00fd\u0002\u07be\u07c0\n\u0005\u0002\u0002\u07bf", + "\u07bd\u0003\u0002\u0002\u0002\u07bf\u07be\u0003\u0002\u0002\u0002\u07c0", + "\u07c1\u0003\u0002\u0002\u0002\u07c1\u07c2\u0007)\u0002\u0002\u07c2", + "\u0164\u0003\u0002\u0002\u0002\u07c3\u07c4\u0005\u01fb\u00fc\u0002\u07c4", + "\u07c5\u0003\u0002\u0002\u0002\u07c5\u07c6\b\u00b1\u0003\u0002\u07c6", + "\u0166\u0003\u0002\u0002\u0002\u07c7\u07c8\u00072\u0002\u0002\u07c8", + "\u07ca\t\u0006\u0002\u0002\u07c9\u07cb\u0005\u0203\u0100\u0002\u07ca", + "\u07c9\u0003\u0002\u0002\u0002\u07cb\u07cc\u0003\u0002\u0002\u0002\u07cc", + "\u07ca\u0003\u0002\u0002\u0002\u07cc\u07cd\u0003\u0002\u0002\u0002\u07cd", + "\u07cf\u0003\u0002\u0002\u0002\u07ce\u07d0\u0005\u01f3\u00f8\u0002\u07cf", + "\u07ce\u0003\u0002\u0002\u0002\u07cf\u07d0\u0003\u0002\u0002\u0002\u07d0", + "\u0168\u0003\u0002\u0002\u0002\u07d1\u07d3\u00072\u0002\u0002\u07d2", + "\u07d4\t\u0007\u0002\u0002\u07d3\u07d2\u0003\u0002\u0002\u0002\u07d4", + "\u07d5\u0003\u0002\u0002\u0002\u07d5\u07d3\u0003\u0002\u0002\u0002\u07d5", + "\u07d6\u0003\u0002\u0002\u0002\u07d6\u07d8\u0003\u0002\u0002\u0002\u07d7", + "\u07d9\u0005\u01f3\u00f8\u0002\u07d8\u07d7\u0003\u0002\u0002\u0002\u07d8", + "\u07d9\u0003\u0002\u0002\u0002\u07d9\u016a\u0003\u0002\u0002\u0002\u07da", + "\u07db\u00072\u0002\u0002\u07db\u07dd\t\b\u0002\u0002\u07dc\u07de\t", + "\t\u0002\u0002\u07dd\u07dc\u0003\u0002\u0002\u0002\u07de\u07df\u0003", + "\u0002\u0002\u0002\u07df\u07dd\u0003\u0002\u0002\u0002\u07df\u07e0\u0003", + "\u0002\u0002\u0002\u07e0\u07e2\u0003\u0002\u0002\u0002\u07e1\u07e3\u0005", + "\u01f3\u00f8\u0002\u07e2\u07e1\u0003\u0002\u0002\u0002\u07e2\u07e3\u0003", + "\u0002\u0002\u0002\u07e3\u016c\u0003\u0002\u0002\u0002\u07e4\u07e6\t", + "\n\u0002\u0002\u07e5\u07e4\u0003\u0002\u0002\u0002\u07e6\u07e7\u0003", + "\u0002\u0002\u0002\u07e7\u07e5\u0003\u0002\u0002\u0002\u07e7\u07e8\u0003", + "\u0002\u0002\u0002\u07e8\u07ea\u0003\u0002\u0002\u0002\u07e9\u07eb\u0005", + "\u01f3\u00f8\u0002\u07ea\u07e9\u0003\u0002\u0002\u0002\u07ea\u07eb\u0003", + "\u0002\u0002\u0002\u07eb\u016e\u0003\u0002\u0002\u0002\u07ec\u07ee\u0005", + "\u01f7\u00fa\u0002\u07ed\u07ec\u0003\u0002\u0002\u0002\u07ee\u07ef\u0003", + "\u0002\u0002\u0002\u07ef\u07ed\u0003\u0002\u0002\u0002\u07ef\u07f0\u0003", + "\u0002\u0002\u0002\u07f0\u07f1\u0003\u0002\u0002\u0002\u07f1\u07f5\u0007", + "0\u0002\u0002\u07f2\u07f4\u0005\u01f7\u00fa\u0002\u07f3\u07f2\u0003", + "\u0002\u0002\u0002\u07f4\u07f7\u0003\u0002\u0002\u0002\u07f5\u07f3\u0003", + "\u0002\u0002\u0002\u07f5\u07f6\u0003\u0002\u0002\u0002\u07f6\u07ff\u0003", + "\u0002\u0002\u0002\u07f7\u07f5\u0003\u0002\u0002\u0002\u07f8\u07fa\u0007", + "0\u0002\u0002\u07f9\u07fb\u0005\u01f7\u00fa\u0002\u07fa\u07f9\u0003", + "\u0002\u0002\u0002\u07fb\u07fc\u0003\u0002\u0002\u0002\u07fc\u07fa\u0003", + "\u0002\u0002\u0002\u07fc\u07fd\u0003\u0002\u0002\u0002\u07fd\u07ff\u0003", + "\u0002\u0002\u0002\u07fe\u07ed\u0003\u0002\u0002\u0002\u07fe\u07f8\u0003", + "\u0002\u0002\u0002\u07ff\u0801\u0003\u0002\u0002\u0002\u0800\u0802\u0005", + "\u01f5\u00f9\u0002\u0801\u0800\u0003\u0002\u0002\u0002\u0801\u0802\u0003", + "\u0002\u0002\u0002\u0802\u0804\u0003\u0002\u0002\u0002\u0803\u0805\u0005", + "\u01f9\u00fb\u0002\u0804\u0803\u0003\u0002\u0002\u0002\u0804\u0805\u0003", + "\u0002\u0002\u0002\u0805\u0813\u0003\u0002\u0002\u0002\u0806\u0808\u0005", + "\u01f7\u00fa\u0002\u0807\u0806\u0003\u0002\u0002\u0002\u0808\u0809\u0003", + "\u0002\u0002\u0002\u0809\u0807\u0003\u0002\u0002\u0002\u0809\u080a\u0003", + "\u0002\u0002\u0002\u080a\u0810\u0003\u0002\u0002\u0002\u080b\u080d\u0005", + "\u01f5\u00f9\u0002\u080c\u080e\u0005\u01f9\u00fb\u0002\u080d\u080c\u0003", + "\u0002\u0002\u0002\u080d\u080e\u0003\u0002\u0002\u0002\u080e\u0811\u0003", + "\u0002\u0002\u0002\u080f\u0811\u0005\u01f9\u00fb\u0002\u0810\u080b\u0003", + "\u0002\u0002\u0002\u0810\u080f\u0003\u0002\u0002\u0002\u0811\u0813\u0003", + "\u0002\u0002\u0002\u0812\u07fe\u0003\u0002\u0002\u0002\u0812\u0807\u0003", + "\u0002\u0002\u0002\u0813\u0170\u0003\u0002\u0002\u0002\u0814\u0818\u0005", + "\u016f\u00b6\u0002\u0815\u0816\u0005\u0119\u008b\u0002\u0816\u0817\u0005", + "\u016d\u00b5\u0002\u0817\u0819\u0003\u0002\u0002\u0002\u0818\u0815\u0003", + "\u0002\u0002\u0002\u0818\u0819\u0003\u0002\u0002\u0002\u0819\u0172\u0003", + "\u0002\u0002\u0002\u081a\u081c\u0005\u0205\u0101\u0002\u081b\u081a\u0003", + "\u0002\u0002\u0002\u081c\u081d\u0003\u0002\u0002\u0002\u081d\u081b\u0003", + "\u0002\u0002\u0002\u081d\u081e\u0003\u0002\u0002\u0002\u081e\u081f\u0003", + "\u0002\u0002\u0002\u081f\u0820\b\u00b8\u0004\u0002\u0820\u0174\u0003", + "\u0002\u0002\u0002\u0821\u0822\u00071\u0002\u0002\u0822\u0823\u0007", + ",\u0002\u0002\u0823\u0827\u0003\u0002\u0002\u0002\u0824\u0826\u000b", + "\u0002\u0002\u0002\u0825\u0824\u0003\u0002\u0002\u0002\u0826\u0829\u0003", + "\u0002\u0002\u0002\u0827\u0828\u0003\u0002\u0002\u0002\u0827\u0825\u0003", + "\u0002\u0002\u0002\u0828\u082a\u0003\u0002\u0002\u0002\u0829\u0827\u0003", + "\u0002\u0002\u0002\u082a\u082b\u0007,\u0002\u0002\u082b\u082c\u0007", + "1\u0002\u0002\u082c\u082d\u0003\u0002\u0002\u0002\u082d\u082e\b\u00b9", + "\u0005\u0002\u082e\u0176\u0003\u0002\u0002\u0002\u082f\u0830\u00071", + "\u0002\u0002\u0830\u0831\u00071\u0002\u0002\u0831\u0835\u0003\u0002", + "\u0002\u0002\u0832\u0834\n\u0002\u0002\u0002\u0833\u0832\u0003\u0002", + "\u0002\u0002\u0834\u0837\u0003\u0002\u0002\u0002\u0835\u0833\u0003\u0002", + "\u0002\u0002\u0835\u0836\u0003\u0002\u0002\u0002\u0836\u0838\u0003\u0002", + "\u0002\u0002\u0837\u0835\u0003\u0002\u0002\u0002\u0838\u0839\b\u00ba", + "\u0005\u0002\u0839\u0178\u0003\u0002\u0002\u0002\u083a\u083b\u0007^", + "\u0002\u0002\u083b\u083c\u0003\u0002\u0002\u0002\u083c\u083d\b\u00bb", + "\u0004\u0002\u083d\u017a\u0003\u0002\u0002\u0002\u083e\u083f\u0007%", + "\u0002\u0002\u083f\u0840\u0003\u0002\u0002\u0002\u0840\u0841\b\u00bc", + "\u0006\u0002\u0841\u0842\b\u00bc\u0007\u0002\u0842\u017c\u0003\u0002", + "\u0002\u0002\u0843\u0845\u0007^\u0002\u0002\u0844\u0846\u0007\u000f", + "\u0002\u0002\u0845\u0844\u0003\u0002\u0002\u0002\u0845\u0846\u0003\u0002", + "\u0002\u0002\u0846\u0847\u0003\u0002\u0002\u0002\u0847\u0848\u0007\f", + "\u0002\u0002\u0848\u0849\u0003\u0002\u0002\u0002\u0849\u084a\b\u00bd", + "\b\u0002\u084a\u017e\u0003\u0002\u0002\u0002\u084b\u084c\u0005\u01fd", + "\u00fd\u0002\u084c\u084d\u0003\u0002\u0002\u0002\u084d\u084e\b\u00be", + "\b\u0002\u084e\u084f\b\u00be\t\u0002\u084f\u0180\u0003\u0002\u0002\u0002", + "\u0850\u0851\u0007$\u0002\u0002\u0851\u0852\u0003\u0002\u0002\u0002", + "\u0852\u0853\b\u00bf\b\u0002\u0853\u0854\b\u00bf\n\u0002\u0854\u0182", + "\u0003\u0002\u0002\u0002\u0855\u0857\n\u000b\u0002\u0002\u0856\u0855", + "\u0003\u0002\u0002\u0002\u0857\u0858\u0003\u0002\u0002\u0002\u0858\u0856", + "\u0003\u0002\u0002\u0002\u0858\u0859\u0003\u0002\u0002\u0002\u0859\u085a", + "\u0003\u0002\u0002\u0002\u085a\u085b\b\u00c0\b\u0002\u085b\u0184\u0003", + "\u0002\u0002\u0002\u085c\u085d\u0007k\u0002\u0002\u085d\u085e\u0007", + "o\u0002\u0002\u085e\u085f\u0007r\u0002\u0002\u085f\u0860\u0007q\u0002", + "\u0002\u0860\u0861\u0007t\u0002\u0002\u0861\u0862\u0007v\u0002\u0002", + "\u0862\u0864\u0003\u0002\u0002\u0002\u0863\u0865\t\f\u0002\u0002\u0864", + "\u0863\u0003\u0002\u0002\u0002\u0865\u0866\u0003\u0002\u0002\u0002\u0866", + "\u0864\u0003\u0002\u0002\u0002\u0866\u0867\u0003\u0002\u0002\u0002\u0867", + "\u0868\u0003\u0002\u0002\u0002\u0868\u0869\b\u00c1\u0006\u0002\u0869", + "\u086a\b\u00c1\u000b\u0002\u086a\u0186\u0003\u0002\u0002\u0002\u086b", + "\u086c\u0007k\u0002\u0002\u086c\u086d\u0007p\u0002\u0002\u086d\u086e", + "\u0007e\u0002\u0002\u086e\u086f\u0007n\u0002\u0002\u086f\u0870\u0007", + "w\u0002\u0002\u0870\u0871\u0007f\u0002\u0002\u0871\u0872\u0007g\u0002", + "\u0002\u0872\u0874\u0003\u0002\u0002\u0002\u0873\u0875\t\f\u0002\u0002", + "\u0874\u0873\u0003\u0002\u0002\u0002\u0875\u0876\u0003\u0002\u0002\u0002", + "\u0876\u0874\u0003\u0002\u0002\u0002\u0876\u0877\u0003\u0002\u0002\u0002", + "\u0877\u0878\u0003\u0002\u0002\u0002\u0878\u0879\b\u00c2\u0006\u0002", + "\u0879\u087a\b\u00c2\u000b\u0002\u087a\u0188\u0003\u0002\u0002\u0002", + "\u087b\u087c\u0007r\u0002\u0002\u087c\u087d\u0007t\u0002\u0002\u087d", + "\u087e\u0007c\u0002\u0002\u087e\u087f\u0007i\u0002\u0002\u087f\u0880", + "\u0007o\u0002\u0002\u0880\u0881\u0007c\u0002\u0002\u0881\u0882\u0003", + "\u0002\u0002\u0002\u0882\u0883\b\u00c3\u0006\u0002\u0883\u0884\b\u00c3", + "\u000b\u0002\u0884\u018a\u0003\u0002\u0002\u0002\u0885\u0886\u0007f", + "\u0002\u0002\u0886\u0887\u0007g\u0002\u0002\u0887\u0888\u0007h\u0002", + "\u0002\u0888\u0889\u0007k\u0002\u0002\u0889\u088a\u0007p\u0002\u0002", + "\u088a\u088b\u0007g\u0002\u0002\u088b\u088d\u0003\u0002\u0002\u0002", + "\u088c\u088e\t\f\u0002\u0002\u088d\u088c\u0003\u0002\u0002\u0002\u088e", + "\u088f\u0003\u0002\u0002\u0002\u088f\u088d\u0003\u0002\u0002\u0002\u088f", + "\u0890\u0003\u0002\u0002\u0002\u0890\u0891\u0003\u0002\u0002\u0002\u0891", + "\u0892\b\u00c4\u0006\u0002\u0892\u0893\b\u00c4\f\u0002\u0893\u018c\u0003", + "\u0002\u0002\u0002\u0894\u0895\u0007f\u0002\u0002\u0895\u0896\u0007", + "g\u0002\u0002\u0896\u0897\u0007h\u0002\u0002\u0897\u0898\u0007k\u0002", + "\u0002\u0898\u0899\u0007p\u0002\u0002\u0899\u089a\u0007g\u0002\u0002", + "\u089a\u089b\u0007f\u0002\u0002\u089b\u089c\u0003\u0002\u0002\u0002", + "\u089c\u089d\b\u00c5\u0006\u0002\u089d\u018e\u0003\u0002\u0002\u0002", + "\u089e\u089f\u0007k\u0002\u0002\u089f\u08a0\u0007h\u0002\u0002\u08a0", + "\u08a1\u0003\u0002\u0002\u0002\u08a1\u08a2\b\u00c6\u0006\u0002\u08a2", + "\u0190\u0003\u0002\u0002\u0002\u08a3\u08a4\u0007g\u0002\u0002\u08a4", + "\u08a5\u0007n\u0002\u0002\u08a5\u08a6\u0007k\u0002\u0002\u08a6\u08a7", + "\u0007h\u0002\u0002\u08a7\u08a8\u0003\u0002\u0002\u0002\u08a8\u08a9", + "\b\u00c7\u0006\u0002\u08a9\u0192\u0003\u0002\u0002\u0002\u08aa\u08ab", + "\u0007g\u0002\u0002\u08ab\u08ac\u0007n\u0002\u0002\u08ac\u08ad\u0007", + "u\u0002\u0002\u08ad\u08ae\u0007g\u0002\u0002\u08ae\u08af\u0003\u0002", + "\u0002\u0002\u08af\u08b0\b\u00c8\u0006\u0002\u08b0\u0194\u0003\u0002", + "\u0002\u0002\u08b1\u08b2\u0007w\u0002\u0002\u08b2\u08b3\u0007p\u0002", + "\u0002\u08b3\u08b4\u0007f\u0002\u0002\u08b4\u08b5\u0007g\u0002\u0002", + "\u08b5\u08b6\u0007h\u0002\u0002\u08b6\u08b7\u0003\u0002\u0002\u0002", + "\u08b7\u08b8\b\u00c9\u0006\u0002\u08b8\u0196\u0003\u0002\u0002\u0002", + "\u08b9\u08ba\u0007k\u0002\u0002\u08ba\u08bb\u0007h\u0002\u0002\u08bb", + "\u08bc\u0007f\u0002\u0002\u08bc\u08bd\u0007g\u0002\u0002\u08bd\u08be", + "\u0007h\u0002\u0002\u08be\u08bf\u0003\u0002\u0002\u0002\u08bf\u08c0", + "\b\u00ca\u0006\u0002\u08c0\u0198\u0003\u0002\u0002\u0002\u08c1\u08c2", + "\u0007k\u0002\u0002\u08c2\u08c3\u0007h\u0002\u0002\u08c3\u08c4\u0007", + "p\u0002\u0002\u08c4\u08c5\u0007f\u0002\u0002\u08c5\u08c6\u0007g\u0002", + "\u0002\u08c6\u08c7\u0007h\u0002\u0002\u08c7\u08c8\u0003\u0002\u0002", + "\u0002\u08c8\u08c9\b\u00cb\u0006\u0002\u08c9\u019a\u0003\u0002\u0002", + "\u0002\u08ca\u08cb\u0007g\u0002\u0002\u08cb\u08cc\u0007p\u0002\u0002", + "\u08cc\u08cd\u0007f\u0002\u0002\u08cd\u08ce\u0007k\u0002\u0002\u08ce", + "\u08cf\u0007h\u0002\u0002\u08cf\u08d0\u0003\u0002\u0002\u0002\u08d0", + "\u08d1\b\u00cc\u0006\u0002\u08d1\u019c\u0003\u0002\u0002\u0002\u08d2", + "\u08d3\u0005\u022d\u0115\u0002\u08d3\u08d4\u0005\u0229\u0113\u0002\u08d4", + "\u08d5\u0005\u022f\u0116\u0002\u08d5\u08d6\u0005\u020f\u0106\u0002\u08d6", + "\u08d7\u0003\u0002\u0002\u0002\u08d7\u08d8\b\u00cd\u0006\u0002\u08d8", + "\u019e\u0003\u0002\u0002\u0002\u08d9\u08da\u0005\u0211\u0107\u0002\u08da", + "\u08db\u0005\u0207\u0102\u0002\u08db\u08dc\u0005\u021d\u010d\u0002\u08dc", + "\u08dd\u0005\u022b\u0114\u0002\u08dd\u08de\u0005\u020f\u0106\u0002\u08de", + "\u08df\u0003\u0002\u0002\u0002\u08df\u08e0\b\u00ce\u0006\u0002\u08e0", + "\u01a0\u0003\u0002\u0002\u0002\u08e1\u08e2\u0007g\u0002\u0002\u08e2", + "\u08e3\u0007t\u0002\u0002\u08e3\u08e4\u0007t\u0002\u0002\u08e4\u08e5", + "\u0007q\u0002\u0002\u08e5\u08e6\u0007t\u0002\u0002\u08e6\u08e7\u0003", + "\u0002\u0002\u0002\u08e7\u08e8\b\u00cf\u0006\u0002\u08e8\u08e9\b\u00cf", + "\u000b\u0002\u08e9\u01a2\u0003\u0002\u0002\u0002\u08ea\u08eb\u0007y", + "\u0002\u0002\u08eb\u08ec\u0007c\u0002\u0002\u08ec\u08ed\u0007t\u0002", + "\u0002\u08ed\u08ee\u0007p\u0002\u0002\u08ee\u08ef\u0007k\u0002\u0002", + "\u08ef\u08f0\u0007p\u0002\u0002\u08f0\u08f1\u0007i\u0002\u0002\u08f1", + "\u08f2\u0003\u0002\u0002\u0002\u08f2\u08f3\b\u00d0\u0006\u0002\u08f3", + "\u08f4\b\u00d0\u000b\u0002\u08f4\u01a4\u0003\u0002\u0002\u0002\u08f5", + "\u08f6\u0007#\u0002\u0002\u08f6\u08f7\u0003\u0002\u0002\u0002\u08f7", + "\u08f8\b\u00d1\u0006\u0002\u08f8\u01a6\u0003\u0002\u0002\u0002\u08f9", + "\u08fa\u0007*\u0002\u0002\u08fa\u08fb\u0003\u0002\u0002\u0002\u08fb", + "\u08fc\b\u00d2\u0006\u0002\u08fc\u01a8\u0003\u0002\u0002\u0002\u08fd", + "\u08fe\u0007+\u0002\u0002\u08fe\u08ff\u0003\u0002\u0002\u0002\u08ff", + "\u0900\b\u00d3\u0006\u0002\u0900\u01aa\u0003\u0002\u0002\u0002\u0901", + "\u0902\u0007?\u0002\u0002\u0902\u0903\u0007?\u0002\u0002\u0903\u0904", + "\u0003\u0002\u0002\u0002\u0904\u0905\b\u00d4\u0006\u0002\u0905\u01ac", + "\u0003\u0002\u0002\u0002\u0906\u0907\u0007#\u0002\u0002\u0907\u0908", + "\u0007?\u0002\u0002\u0908\u0909\u0003\u0002\u0002\u0002\u0909\u090a", + "\b\u00d5\u0006\u0002\u090a\u01ae\u0003\u0002\u0002\u0002\u090b\u090c", + "\u0007(\u0002\u0002\u090c\u090d\u0007(\u0002\u0002\u090d\u090e\u0003", + "\u0002\u0002\u0002\u090e\u090f\b\u00d6\u0006\u0002\u090f\u01b0\u0003", + "\u0002\u0002\u0002\u0910\u0911\u0007~\u0002\u0002\u0911\u0912\u0007", + "~\u0002\u0002\u0912\u0913\u0003\u0002\u0002\u0002\u0913\u0914\b\u00d7", + "\u0006\u0002\u0914\u01b2\u0003\u0002\u0002\u0002\u0915\u0916\u0007>", + "\u0002\u0002\u0916\u0917\u0003\u0002\u0002\u0002\u0917\u0918\b\u00d8", + "\u0006\u0002\u0918\u01b4\u0003\u0002\u0002\u0002\u0919\u091a\u0007@", + "\u0002\u0002\u091a\u091b\u0003\u0002\u0002\u0002\u091b\u091c\b\u00d9", + "\u0006\u0002\u091c\u01b6\u0003\u0002\u0002\u0002\u091d\u091e\u0007>", + "\u0002\u0002\u091e\u091f\u0007?\u0002\u0002\u091f\u0920\u0003\u0002", + "\u0002\u0002\u0920\u0921\b\u00da\u0006\u0002\u0921\u01b8\u0003\u0002", + "\u0002\u0002\u0922\u0923\u0007@\u0002\u0002\u0923\u0924\u0007?\u0002", + "\u0002\u0924\u0925\u0003\u0002\u0002\u0002\u0925\u0926\b\u00db\u0006", + "\u0002\u0926\u01ba\u0003\u0002\u0002\u0002\u0927\u0928\u0007-\u0002", + "\u0002\u0928\u0929\u0003\u0002\u0002\u0002\u0929\u092a\b\u00dc\u0006", + "\u0002\u092a\u01bc\u0003\u0002\u0002\u0002\u092b\u092c\u0007/\u0002", + "\u0002\u092c\u092d\u0003\u0002\u0002\u0002\u092d\u092e\b\u00dd\u0006", + "\u0002\u092e\u01be\u0003\u0002\u0002\u0002\u092f\u0930\u0007,\u0002", + "\u0002\u0930\u0931\u0003\u0002\u0002\u0002\u0931\u0932\b\u00de\u0006", + "\u0002\u0932\u01c0\u0003\u0002\u0002\u0002\u0933\u0934\u00071\u0002", + "\u0002\u0934\u0935\u0003\u0002\u0002\u0002\u0935\u0936\b\u00df\u0006", + "\u0002\u0936\u01c2\u0003\u0002\u0002\u0002\u0937\u0938\u0007(\u0002", + "\u0002\u0938\u0939\u0003\u0002\u0002\u0002\u0939\u093a\b\u00e0\u0006", + "\u0002\u093a\u01c4\u0003\u0002\u0002\u0002\u093b\u093c\u0007~\u0002", + "\u0002\u093c\u093d\u0003\u0002\u0002\u0002\u093d\u093e\b\u00e1\u0006", + "\u0002\u093e\u01c6\u0003\u0002\u0002\u0002\u093f\u0940\u0007`\u0002", + "\u0002\u0940\u0941\u0003\u0002\u0002\u0002\u0941\u0942\b\u00e2\u0006", + "\u0002\u0942\u01c8\u0003\u0002\u0002\u0002\u0943\u0944\u0007\'\u0002", + "\u0002\u0944\u0945\u0003\u0002\u0002\u0002\u0945\u0946\b\u00e3\u0006", + "\u0002\u0946\u01ca\u0003\u0002\u0002\u0002\u0947\u0948\u00070\u0002", + "\u0002\u0948\u0949\u0003\u0002\u0002\u0002\u0949\u094a\b\u00e4\u0006", + "\u0002\u094a\u01cc\u0003\u0002\u0002\u0002\u094b\u094d\t\f\u0002\u0002", + "\u094c\u094b\u0003\u0002\u0002\u0002\u094d\u094e\u0003\u0002\u0002\u0002", + "\u094e\u094c\u0003\u0002\u0002\u0002\u094e\u094f\u0003\u0002\u0002\u0002", + "\u094f\u0950\u0003\u0002\u0002\u0002\u0950\u0951\b\u00e5\u0004\u0002", + "\u0951\u0952\b\u00e5\r\u0002\u0952\u01ce\u0003\u0002\u0002\u0002\u0953", + "\u0954\u0005\u01fb\u00fc\u0002\u0954\u0955\u0003\u0002\u0002\u0002\u0955", + "\u0956\b\u00e6\b\u0002\u0956\u0957\b\u00e6\u0003\u0002\u0957\u01d0\u0003", + "\u0002\u0002\u0002\u0958\u095c\u0005\u01f1\u00f7\u0002\u0959\u095b\u0005", + "\u01ef\u00f6\u0002\u095a\u0959\u0003\u0002\u0002\u0002\u095b\u095e\u0003", + "\u0002\u0002\u0002\u095c\u095a\u0003\u0002\u0002\u0002\u095c\u095d\u0003", + "\u0002\u0002\u0002\u095d\u095f\u0003\u0002\u0002\u0002\u095e\u095c\u0003", + "\u0002\u0002\u0002\u095f\u0960\b\u00e7\u0006\u0002\u0960\u01d2\u0003", + "\u0002\u0002\u0002\u0961\u0963\u0005\u01f7\u00fa\u0002\u0962\u0961\u0003", + "\u0002\u0002\u0002\u0963\u0964\u0003\u0002\u0002\u0002\u0964\u0962\u0003", + "\u0002\u0002\u0002\u0964\u0965\u0003\u0002\u0002\u0002\u0965\u0966\u0003", + "\u0002\u0002\u0002\u0966\u0967\b\u00e8\u0006\u0002\u0967\u01d4\u0003", + "\u0002\u0002\u0002\u0968\u096a\u0005\u01f7\u00fa\u0002\u0969\u0968\u0003", + "\u0002\u0002\u0002\u096a\u096b\u0003\u0002\u0002\u0002\u096b\u0969\u0003", + "\u0002\u0002\u0002\u096b\u096c\u0003\u0002\u0002\u0002\u096c\u096d\u0003", + "\u0002\u0002\u0002\u096d\u0971\u00070\u0002\u0002\u096e\u0970\u0005", + "\u01f7\u00fa\u0002\u096f\u096e\u0003\u0002\u0002\u0002\u0970\u0973\u0003", + "\u0002\u0002\u0002\u0971\u096f\u0003\u0002\u0002\u0002\u0971\u0972\u0003", + "\u0002\u0002\u0002\u0972\u097b\u0003\u0002\u0002\u0002\u0973\u0971\u0003", + "\u0002\u0002\u0002\u0974\u0976\u00070\u0002\u0002\u0975\u0977\u0005", + "\u01f7\u00fa\u0002\u0976\u0975\u0003\u0002\u0002\u0002\u0977\u0978\u0003", + "\u0002\u0002\u0002\u0978\u0976\u0003\u0002\u0002\u0002\u0978\u0979\u0003", + "\u0002\u0002\u0002\u0979\u097b\u0003\u0002\u0002\u0002\u097a\u0969\u0003", + "\u0002\u0002\u0002\u097a\u0974\u0003\u0002\u0002\u0002\u097b\u097c\u0003", + "\u0002\u0002\u0002\u097c\u097d\b\u00e9\u0006\u0002\u097d\u01d6\u0003", + "\u0002\u0002\u0002\u097e\u0980\u0007\u000f\u0002\u0002\u097f\u097e\u0003", + "\u0002\u0002\u0002\u097f\u0980\u0003\u0002\u0002\u0002\u0980\u0981\u0003", + "\u0002\u0002\u0002\u0981\u0982\u0007\f\u0002\u0002\u0982\u0983\u0003", + "\u0002\u0002\u0002\u0983\u0984\b\u00ea\u0004\u0002\u0984\u0985\b\u00ea", + "\n\u0002\u0985\u01d8\u0003\u0002\u0002\u0002\u0986\u0987\u00071\u0002", + "\u0002\u0987\u0988\u0007,\u0002\u0002\u0988\u098c\u0003\u0002\u0002", + "\u0002\u0989\u098b\u000b\u0002\u0002\u0002\u098a\u0989\u0003\u0002\u0002", + "\u0002\u098b\u098e\u0003\u0002\u0002\u0002\u098c\u098d\u0003\u0002\u0002", + "\u0002\u098c\u098a\u0003\u0002\u0002\u0002\u098d\u098f\u0003\u0002\u0002", + "\u0002\u098e\u098c\u0003\u0002\u0002\u0002\u098f\u0990\u0007,\u0002", + "\u0002\u0990\u0991\u00071\u0002\u0002\u0991\u0992\u0003\u0002\u0002", + "\u0002\u0992\u0993\b\u00eb\u0005\u0002\u0993\u01da\u0003\u0002\u0002", + "\u0002\u0994\u0995\u00071\u0002\u0002\u0995\u0996\u00071\u0002\u0002", + "\u0996\u099a\u0003\u0002\u0002\u0002\u0997\u0999\n\u0002\u0002\u0002", + "\u0998\u0997\u0003\u0002\u0002\u0002\u0999\u099c\u0003\u0002\u0002\u0002", + "\u099a\u0998\u0003\u0002\u0002\u0002\u099a\u099b\u0003\u0002\u0002\u0002", + "\u099b\u099d\u0003\u0002\u0002\u0002\u099c\u099a\u0003\u0002\u0002\u0002", + "\u099d\u099e\b\u00ec\u0005\u0002\u099e\u01dc\u0003\u0002\u0002\u0002", + "\u099f\u09a1\u0007^\u0002\u0002\u09a0\u09a2\u0007\u000f\u0002\u0002", + "\u09a1\u09a0\u0003\u0002\u0002\u0002\u09a1\u09a2\u0003\u0002\u0002\u0002", + "\u09a2\u09a3\u0003\u0002\u0002\u0002\u09a3\u09a4\u0007\f\u0002\u0002", + "\u09a4\u09a5\u0003\u0002\u0002\u0002\u09a5\u09a6\b\u00ed\u000e\u0002", + "\u09a6\u01de\u0003\u0002\u0002\u0002\u09a7\u09ab\u0005\u01f1\u00f7\u0002", + "\u09a8\u09aa\u0005\u01ef\u00f6\u0002\u09a9\u09a8\u0003\u0002\u0002\u0002", + "\u09aa\u09ad\u0003\u0002\u0002\u0002\u09ab\u09a9\u0003\u0002\u0002\u0002", + "\u09ab\u09ac\u0003\u0002\u0002\u0002\u09ac\u09b7\u0003\u0002\u0002\u0002", + "\u09ad\u09ab\u0003\u0002\u0002\u0002\u09ae\u09b3\u0007*\u0002\u0002", + "\u09af\u09b2\u0005\u01ef\u00f6\u0002\u09b0\u09b2\t\r\u0002\u0002\u09b1", + "\u09af\u0003\u0002\u0002\u0002\u09b1\u09b0\u0003\u0002\u0002\u0002\u09b2", + "\u09b5\u0003\u0002\u0002\u0002\u09b3\u09b1\u0003\u0002\u0002\u0002\u09b3", + "\u09b4\u0003\u0002\u0002\u0002\u09b4\u09b6\u0003\u0002\u0002\u0002\u09b5", + "\u09b3\u0003\u0002\u0002\u0002\u09b6\u09b8\u0007+\u0002\u0002\u09b7", + "\u09ae\u0003\u0002\u0002\u0002\u09b7\u09b8\u0003\u0002\u0002\u0002\u09b8", + "\u09b9\u0003\u0002\u0002\u0002\u09b9\u09ba\b\u00ee\u0006\u0002\u09ba", + "\u09bb\b\u00ee\u000f\u0002\u09bb\u09bc\b\u00ee\u000b\u0002\u09bc\u01e0", + "\u0003\u0002\u0002\u0002\u09bd\u09bf\u0007^\u0002\u0002\u09be\u09c0", + "\u0007\u000f\u0002\u0002\u09bf\u09be\u0003\u0002\u0002\u0002\u09bf\u09c0", + "\u0003\u0002\u0002\u0002\u09c0\u09c1\u0003\u0002\u0002\u0002\u09c1\u09c2", + "\u0007\f\u0002\u0002\u09c2\u09c3\u0003\u0002\u0002\u0002\u09c3\u09c4", + "\b\u00ef\u0006\u0002\u09c4\u01e2\u0003\u0002\u0002\u0002\u09c5\u09c6", + "\u0007^\u0002\u0002\u09c6\u09c7\u000b\u0002\u0002\u0002\u09c7\u09c8", + "\u0003\u0002\u0002\u0002\u09c8\u09c9\b\u00f0\u0006\u0002\u09c9\u09ca", + "\b\u00f0\u0010\u0002\u09ca\u01e4\u0003\u0002\u0002\u0002\u09cb\u09cd", + "\u0007\u000f\u0002\u0002\u09cc\u09cb\u0003\u0002\u0002\u0002\u09cc\u09cd", + "\u0003\u0002\u0002\u0002\u09cd\u09ce\u0003\u0002\u0002\u0002\u09ce\u09cf", + "\u0007\f\u0002\u0002\u09cf\u09d0\u0003\u0002\u0002\u0002\u09d0\u09d1", + "\b\u00f1\u0004\u0002\u09d1\u09d2\b\u00f1\u0011\u0002\u09d2\u09d3\b\u00f1", + "\n\u0002\u09d3\u01e6\u0003\u0002\u0002\u0002\u09d4\u09d5\u00071\u0002", + "\u0002\u09d5\u09d6\u0007,\u0002\u0002\u09d6\u09da\u0003\u0002\u0002", + "\u0002\u09d7\u09d9\u000b\u0002\u0002\u0002\u09d8\u09d7\u0003\u0002\u0002", + "\u0002\u09d9\u09dc\u0003\u0002\u0002\u0002\u09da\u09db\u0003\u0002\u0002", + "\u0002\u09da\u09d8\u0003\u0002\u0002\u0002\u09db\u09dd\u0003\u0002\u0002", + "\u0002\u09dc\u09da\u0003\u0002\u0002\u0002\u09dd\u09de\u0007,\u0002", + "\u0002\u09de\u09df\u00071\u0002\u0002\u09df\u09e0\u0003\u0002\u0002", + "\u0002\u09e0\u09e1\b\u00f2\u0005\u0002\u09e1\u09e2\b\u00f2\u0012\u0002", + "\u09e2\u01e8\u0003\u0002\u0002\u0002\u09e3\u09e4\u00071\u0002\u0002", + "\u09e4\u09e5\u00071\u0002\u0002\u09e5\u09e9\u0003\u0002\u0002\u0002", + "\u09e6\u09e8\n\u0002\u0002\u0002\u09e7\u09e6\u0003\u0002\u0002\u0002", + "\u09e8\u09eb\u0003\u0002\u0002\u0002\u09e9\u09e7\u0003\u0002\u0002\u0002", + "\u09e9\u09ea\u0003\u0002\u0002\u0002\u09ea\u09ec\u0003\u0002\u0002\u0002", + "\u09eb\u09e9\u0003\u0002\u0002\u0002\u09ec\u09ed\b\u00f3\u0005\u0002", + "\u09ed\u09ee\b\u00f3\u0013\u0002\u09ee\u01ea\u0003\u0002\u0002\u0002", + "\u09ef\u09f0\u00071\u0002\u0002\u09f0\u09f1\u0003\u0002\u0002\u0002", + "\u09f1\u09f2\b\u00f4\u0006\u0002\u09f2\u09f3\b\u00f4\u0010\u0002\u09f3", + "\u01ec\u0003\u0002\u0002\u0002\u09f4\u09f6\n\u000e\u0002\u0002\u09f5", + "\u09f4\u0003\u0002\u0002\u0002\u09f6\u09f7\u0003\u0002\u0002\u0002\u09f7", + "\u09f5\u0003\u0002\u0002\u0002\u09f7\u09f8\u0003\u0002\u0002\u0002\u09f8", + "\u09f9\u0003\u0002\u0002\u0002\u09f9\u09fa\b\u00f5\u0006\u0002\u09fa", + "\u01ee\u0003\u0002\u0002\u0002\u09fb\u09fe\u0005\u01f1\u00f7\u0002\u09fc", + "\u09fe\u0005\u01f7\u00fa\u0002\u09fd\u09fb\u0003\u0002\u0002\u0002\u09fd", + "\u09fc\u0003\u0002\u0002\u0002\u09fe\u01f0\u0003\u0002\u0002\u0002\u09ff", + "\u0a05\t\u000f\u0002\u0002\u0a00\u0a05\n\u0010\u0002\u0002\u0a01\u0a02", + "\t\u0011\u0002\u0002\u0a02\u0a05\t\u0012\u0002\u0002\u0a03\u0a05\t\u0013", + "\u0002\u0002\u0a04\u09ff\u0003\u0002\u0002\u0002\u0a04\u0a00\u0003\u0002", + "\u0002\u0002\u0a04\u0a01\u0003\u0002\u0002\u0002\u0a04\u0a03\u0003\u0002", + "\u0002\u0002\u0a05\u01f2\u0003\u0002\u0002\u0002\u0a06\u0a08\t\u0014", + "\u0002\u0002\u0a07\u0a09\t\u0014\u0002\u0002\u0a08\u0a07\u0003\u0002", + "\u0002\u0002\u0a08\u0a09\u0003\u0002\u0002\u0002\u0a09\u0a0b\u0003\u0002", + "\u0002\u0002\u0a0a\u0a0c\t\u0014\u0002\u0002\u0a0b\u0a0a\u0003\u0002", + "\u0002\u0002\u0a0b\u0a0c\u0003\u0002\u0002\u0002\u0a0c\u01f4\u0003\u0002", + "\u0002\u0002\u0a0d\u0a0f\t\u0015\u0002\u0002\u0a0e\u0a10\t\u0016\u0002", + "\u0002\u0a0f\u0a0e\u0003\u0002\u0002\u0002\u0a0f\u0a10\u0003\u0002\u0002", + "\u0002\u0a10\u0a12\u0003\u0002\u0002\u0002\u0a11\u0a13\u0005\u01f7\u00fa", + "\u0002\u0a12\u0a11\u0003\u0002\u0002\u0002\u0a13\u0a14\u0003\u0002\u0002", + "\u0002\u0a14\u0a12\u0003\u0002\u0002\u0002\u0a14\u0a15\u0003\u0002\u0002", + "\u0002\u0a15\u01f6\u0003\u0002\u0002\u0002\u0a16\u0a17\t\n\u0002\u0002", + "\u0a17\u01f8\u0003\u0002\u0002\u0002\u0a18\u0a19\t\u0017\u0002\u0002", + "\u0a19\u01fa\u0003\u0002\u0002\u0002\u0a1a\u0a1e\t\u0018\u0002\u0002", + "\u0a1b\u0a1d\u0005\u0205\u0101\u0002\u0a1c\u0a1b\u0003\u0002\u0002\u0002", + "\u0a1d\u0a20\u0003\u0002\u0002\u0002\u0a1e\u0a1c\u0003\u0002\u0002\u0002", + "\u0a1e\u0a1f\u0003\u0002\u0002\u0002\u0a1f\u0a22\u0003\u0002\u0002\u0002", + "\u0a20\u0a1e\u0003\u0002\u0002\u0002\u0a21\u0a1a\u0003\u0002\u0002\u0002", + "\u0a21\u0a22\u0003\u0002\u0002\u0002\u0a22\u0a23\u0003\u0002\u0002\u0002", + "\u0a23\u0a24\u0007$\u0002\u0002\u0a24\u01fc\u0003\u0002\u0002\u0002", + "\u0a25\u0a26\u0007^\u0002\u0002\u0a26\u0a2a\t\u0019\u0002\u0002\u0a27", + "\u0a2a\u0005\u01ff\u00fe\u0002\u0a28\u0a2a\u0005\u0201\u00ff\u0002\u0a29", + "\u0a25\u0003\u0002\u0002\u0002\u0a29\u0a27\u0003\u0002\u0002\u0002\u0a29", + "\u0a28\u0003\u0002\u0002\u0002\u0a2a\u01fe\u0003\u0002\u0002\u0002\u0a2b", + "\u0a2c\u0007^\u0002\u0002\u0a2c\u0a2d\t\u001a\u0002\u0002\u0a2d\u0a2e", + "\t\u0007\u0002\u0002\u0a2e\u0a35\t\u0007\u0002\u0002\u0a2f\u0a30\u0007", + "^\u0002\u0002\u0a30\u0a31\t\u0007\u0002\u0002\u0a31\u0a35\t\u0007\u0002", + "\u0002\u0a32\u0a33\u0007^\u0002\u0002\u0a33\u0a35\t\u0007\u0002\u0002", + "\u0a34\u0a2b\u0003\u0002\u0002\u0002\u0a34\u0a2f\u0003\u0002\u0002\u0002", + "\u0a34\u0a32\u0003\u0002\u0002\u0002\u0a35\u0200\u0003\u0002\u0002\u0002", + "\u0a36\u0a37\u0007^\u0002\u0002\u0a37\u0a38\u0007w\u0002\u0002\u0a38", + "\u0a39\u0005\u0203\u0100\u0002\u0a39\u0a3a\u0005\u0203\u0100\u0002\u0a3a", + "\u0a3b\u0005\u0203\u0100\u0002\u0a3b\u0a3c\u0005\u0203\u0100\u0002\u0a3c", + "\u0202\u0003\u0002\u0002\u0002\u0a3d\u0a3e\t\u001b\u0002\u0002\u0a3e", + "\u0204\u0003\u0002\u0002\u0002\u0a3f\u0a40\t\u001c\u0002\u0002\u0a40", + "\u0206\u0003\u0002\u0002\u0002\u0a41\u0a42\t\u001d\u0002\u0002\u0a42", + "\u0208\u0003\u0002\u0002\u0002\u0a43\u0a44\t\b\u0002\u0002\u0a44\u020a", + "\u0003\u0002\u0002\u0002\u0a45\u0a46\t\u001e\u0002\u0002\u0a46\u020c", + "\u0003\u0002\u0002\u0002\u0a47\u0a48\t\u001f\u0002\u0002\u0a48\u020e", + "\u0003\u0002\u0002\u0002\u0a49\u0a4a\t\u0015\u0002\u0002\u0a4a\u0210", + "\u0003\u0002\u0002\u0002\u0a4b\u0a4c\t \u0002\u0002\u0a4c\u0212\u0003", + "\u0002\u0002\u0002\u0a4d\u0a4e\t!\u0002\u0002\u0a4e\u0214\u0003\u0002", + "\u0002\u0002\u0a4f\u0a50\t\"\u0002\u0002\u0a50\u0216\u0003\u0002\u0002", + "\u0002\u0a51\u0a52\t#\u0002\u0002\u0a52\u0218\u0003\u0002\u0002\u0002", + "\u0a53\u0a54\t$\u0002\u0002\u0a54\u021a\u0003\u0002\u0002\u0002\u0a55", + "\u0a56\t%\u0002\u0002\u0a56\u021c\u0003\u0002\u0002\u0002\u0a57\u0a58", + "\t&\u0002\u0002\u0a58\u021e\u0003\u0002\u0002\u0002\u0a59\u0a5a\t\'", + "\u0002\u0002\u0a5a\u0220\u0003\u0002\u0002\u0002\u0a5b\u0a5c\t(\u0002", + "\u0002\u0a5c\u0222\u0003\u0002\u0002\u0002\u0a5d\u0a5e\t)\u0002\u0002", + "\u0a5e\u0224\u0003\u0002\u0002\u0002\u0a5f\u0a60\t*\u0002\u0002\u0a60", + "\u0226\u0003\u0002\u0002\u0002\u0a61\u0a62\t+\u0002\u0002\u0a62\u0228", + "\u0003\u0002\u0002\u0002\u0a63\u0a64\t,\u0002\u0002\u0a64\u022a\u0003", + "\u0002\u0002\u0002\u0a65\u0a66\t-\u0002\u0002\u0a66\u022c\u0003\u0002", + "\u0002\u0002\u0a67\u0a68\t.\u0002\u0002\u0a68\u022e\u0003\u0002\u0002", + "\u0002\u0a69\u0a6a\t/\u0002\u0002\u0a6a\u0230\u0003\u0002\u0002\u0002", + "\u0a6b\u0a6c\t0\u0002\u0002\u0a6c\u0232\u0003\u0002\u0002\u0002\u0a6d", + "\u0a6e\t1\u0002\u0002\u0a6e\u0234\u0003\u0002\u0002\u0002\u0a6f\u0a70", + "\t\u0006\u0002\u0002\u0a70\u0236\u0003\u0002\u0002\u0002\u0a71\u0a72", + "\t2\u0002\u0002\u0a72\u0238\u0003\u0002\u0002\u0002\u0a73\u0a74\t3\u0002", + "\u0002\u0a74\u023a\u0003\u0002\u0002\u0002N\u0002\u0003\u0004\u0005", + "\u0006\u03f8\u0535\u058e\u05ab\u05c5\u06c8\u06e6\u06ee\u06fd\u0708\u0711", + "\u071c\u0748\u07bf\u07cc\u07cf\u07d5\u07d8\u07df\u07e2\u07e7\u07ea\u07ef", + "\u07f5\u07fc\u07fe\u0801\u0804\u0809\u080d\u0810\u0812\u0818\u081d\u0827", + "\u0835\u0845\u0858\u0866\u0876\u088f\u094e\u095c\u0964\u096b\u0971\u0978", + "\u097a\u097f\u098c\u099a\u09a1\u09ab\u09b1\u09b3\u09b7\u09bf\u09cc\u09da", + "\u09e9\u09f7\u09fd\u0a04\u0a08\u0a0b\u0a0f\u0a14\u0a1e\u0a21\u0a29\u0a34", + "\u0014\u0002\u0006\u0002\u0004\u0003\u0002\u0002\u0003\u0002\u0002\u0004", + "\u0002\u0002\u0005\u0002\u0004\u0004\u0002\u0002\u0002\u0002\t\u00c0", + "\u0002\u0004\u0002\u0002\u0004\u0006\u0002\u0004\u0005\u0002\t\u00b9", + "\u0002\b\u0002\u0002\t\u00e6\u0002\t\u00ee\u0002\t\u00e9\u0002\t\u00ea", + "\u0002\t\u00eb\u0002"].join(""); var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); @@ -1755,124 +1841,137 @@ ObjectiveCLexer.NULL_RESETTABLE = 102; ObjectiveCLexer.NS_INLINE = 103; ObjectiveCLexer.NS_ENUM = 104; ObjectiveCLexer.NS_OPTIONS = 105; -ObjectiveCLexer.ASSIGN = 106; -ObjectiveCLexer.COPY = 107; -ObjectiveCLexer.GETTER = 108; -ObjectiveCLexer.SETTER = 109; -ObjectiveCLexer.STRONG = 110; -ObjectiveCLexer.READONLY = 111; -ObjectiveCLexer.READWRITE = 112; -ObjectiveCLexer.WEAK = 113; -ObjectiveCLexer.UNSAFE_UNRETAINED = 114; -ObjectiveCLexer.IB_OUTLET = 115; -ObjectiveCLexer.IB_OUTLET_COLLECTION = 116; -ObjectiveCLexer.IB_INSPECTABLE = 117; -ObjectiveCLexer.IB_DESIGNABLE = 118; -ObjectiveCLexer.NS_ASSUME_NONNULL_BEGIN = 119; -ObjectiveCLexer.NS_ASSUME_NONNULL_END = 120; -ObjectiveCLexer.EXTERN_SUFFIX = 121; -ObjectiveCLexer.IOS_SUFFIX = 122; -ObjectiveCLexer.MAC_SUFFIX = 123; -ObjectiveCLexer.TVOS_PROHIBITED = 124; -ObjectiveCLexer.IDENTIFIER = 125; -ObjectiveCLexer.LP = 126; -ObjectiveCLexer.RP = 127; -ObjectiveCLexer.LBRACE = 128; -ObjectiveCLexer.RBRACE = 129; -ObjectiveCLexer.LBRACK = 130; -ObjectiveCLexer.RBRACK = 131; -ObjectiveCLexer.SEMI = 132; -ObjectiveCLexer.COMMA = 133; -ObjectiveCLexer.DOT = 134; -ObjectiveCLexer.STRUCTACCESS = 135; -ObjectiveCLexer.AT = 136; -ObjectiveCLexer.ASSIGNMENT = 137; -ObjectiveCLexer.GT = 138; -ObjectiveCLexer.LT = 139; -ObjectiveCLexer.BANG = 140; -ObjectiveCLexer.TILDE = 141; -ObjectiveCLexer.QUESTION = 142; -ObjectiveCLexer.COLON = 143; -ObjectiveCLexer.EQUAL = 144; -ObjectiveCLexer.LE = 145; -ObjectiveCLexer.GE = 146; -ObjectiveCLexer.NOTEQUAL = 147; -ObjectiveCLexer.AND = 148; -ObjectiveCLexer.OR = 149; -ObjectiveCLexer.INC = 150; -ObjectiveCLexer.DEC = 151; -ObjectiveCLexer.ADD = 152; -ObjectiveCLexer.SUB = 153; -ObjectiveCLexer.MUL = 154; -ObjectiveCLexer.DIV = 155; -ObjectiveCLexer.BITAND = 156; -ObjectiveCLexer.BITOR = 157; -ObjectiveCLexer.BITXOR = 158; -ObjectiveCLexer.MOD = 159; -ObjectiveCLexer.ADD_ASSIGN = 160; -ObjectiveCLexer.SUB_ASSIGN = 161; -ObjectiveCLexer.MUL_ASSIGN = 162; -ObjectiveCLexer.DIV_ASSIGN = 163; -ObjectiveCLexer.AND_ASSIGN = 164; -ObjectiveCLexer.OR_ASSIGN = 165; -ObjectiveCLexer.XOR_ASSIGN = 166; -ObjectiveCLexer.MOD_ASSIGN = 167; -ObjectiveCLexer.LSHIFT_ASSIGN = 168; -ObjectiveCLexer.RSHIFT_ASSIGN = 169; -ObjectiveCLexer.ELIPSIS = 170; -ObjectiveCLexer.CHARACTER_LITERAL = 171; -ObjectiveCLexer.STRING_START = 172; -ObjectiveCLexer.HEX_LITERAL = 173; -ObjectiveCLexer.OCTAL_LITERAL = 174; -ObjectiveCLexer.BINARY_LITERAL = 175; -ObjectiveCLexer.DECIMAL_LITERAL = 176; -ObjectiveCLexer.FLOATING_POINT_LITERAL = 177; -ObjectiveCLexer.VERSION_SEMATIC = 178; -ObjectiveCLexer.WS = 179; -ObjectiveCLexer.MULTI_COMMENT = 180; -ObjectiveCLexer.SINGLE_COMMENT = 181; -ObjectiveCLexer.BACKSLASH = 182; -ObjectiveCLexer.SHARP = 183; -ObjectiveCLexer.STRING_NEWLINE = 184; -ObjectiveCLexer.STRING_END = 185; -ObjectiveCLexer.STRING_VALUE = 186; -ObjectiveCLexer.DIRECTIVE_IMPORT = 187; -ObjectiveCLexer.DIRECTIVE_INCLUDE = 188; -ObjectiveCLexer.DIRECTIVE_PRAGMA = 189; -ObjectiveCLexer.DIRECTIVE_DEFINE = 190; -ObjectiveCLexer.DIRECTIVE_DEFINED = 191; -ObjectiveCLexer.DIRECTIVE_IF = 192; -ObjectiveCLexer.DIRECTIVE_ELIF = 193; -ObjectiveCLexer.DIRECTIVE_ELSE = 194; -ObjectiveCLexer.DIRECTIVE_UNDEF = 195; -ObjectiveCLexer.DIRECTIVE_IFDEF = 196; -ObjectiveCLexer.DIRECTIVE_IFNDEF = 197; -ObjectiveCLexer.DIRECTIVE_ENDIF = 198; -ObjectiveCLexer.DIRECTIVE_TRUE = 199; -ObjectiveCLexer.DIRECTIVE_FALSE = 200; -ObjectiveCLexer.DIRECTIVE_ERROR = 201; -ObjectiveCLexer.DIRECTIVE_WARNING = 202; -ObjectiveCLexer.DIRECTIVE_BANG = 203; -ObjectiveCLexer.DIRECTIVE_LP = 204; -ObjectiveCLexer.DIRECTIVE_RP = 205; -ObjectiveCLexer.DIRECTIVE_EQUAL = 206; -ObjectiveCLexer.DIRECTIVE_NOTEQUAL = 207; -ObjectiveCLexer.DIRECTIVE_AND = 208; -ObjectiveCLexer.DIRECTIVE_OR = 209; -ObjectiveCLexer.DIRECTIVE_LT = 210; -ObjectiveCLexer.DIRECTIVE_GT = 211; -ObjectiveCLexer.DIRECTIVE_LE = 212; -ObjectiveCLexer.DIRECTIVE_GE = 213; -ObjectiveCLexer.DIRECTIVE_STRING = 214; -ObjectiveCLexer.DIRECTIVE_ID = 215; -ObjectiveCLexer.DIRECTIVE_DECIMAL_LITERAL = 216; -ObjectiveCLexer.DIRECTIVE_FLOAT = 217; -ObjectiveCLexer.DIRECTIVE_NEWLINE = 218; -ObjectiveCLexer.DIRECTIVE_MULTI_COMMENT = 219; -ObjectiveCLexer.DIRECTIVE_SINGLE_COMMENT = 220; -ObjectiveCLexer.DIRECTIVE_BACKSLASH_NEWLINE = 221; -ObjectiveCLexer.DIRECTIVE_TEXT_NEWLINE = 222; -ObjectiveCLexer.DIRECTIVE_TEXT = 223; +ObjectiveCLexer.NS_CLOSED_ENUM = 106; +ObjectiveCLexer.NS_TYPED_EXTENSIBLE_ENUM = 107; +ObjectiveCLexer.NS_ERROR_ENUM = 108; +ObjectiveCLexer.ASSIGN = 109; +ObjectiveCLexer.COPY = 110; +ObjectiveCLexer.GETTER = 111; +ObjectiveCLexer.SETTER = 112; +ObjectiveCLexer.STRONG = 113; +ObjectiveCLexer.READONLY = 114; +ObjectiveCLexer.READWRITE = 115; +ObjectiveCLexer.WEAK = 116; +ObjectiveCLexer.UNSAFE_UNRETAINED = 117; +ObjectiveCLexer.IB_OUTLET = 118; +ObjectiveCLexer.IB_OUTLET_COLLECTION = 119; +ObjectiveCLexer.IB_INSPECTABLE = 120; +ObjectiveCLexer.IB_DESIGNABLE = 121; +ObjectiveCLexer.NS_ASSUME_NONNULL_BEGIN = 122; +ObjectiveCLexer.NS_ASSUME_NONNULL_END = 123; +ObjectiveCLexer.EXTERN_SUFFIX = 124; +ObjectiveCLexer.IOS_SUFFIX = 125; +ObjectiveCLexer.MAC_SUFFIX = 126; +ObjectiveCLexer.TVOS_PROHIBITED = 127; +ObjectiveCLexer.NS_NOESCAPE = 128; +ObjectiveCLexer.IDENTIFIER = 129; +ObjectiveCLexer.LP = 130; +ObjectiveCLexer.RP = 131; +ObjectiveCLexer.LBRACE = 132; +ObjectiveCLexer.RBRACE = 133; +ObjectiveCLexer.LBRACK = 134; +ObjectiveCLexer.RBRACK = 135; +ObjectiveCLexer.SEMI = 136; +ObjectiveCLexer.COMMA = 137; +ObjectiveCLexer.DOT = 138; +ObjectiveCLexer.STRUCTACCESS = 139; +ObjectiveCLexer.AT = 140; +ObjectiveCLexer.ASSIGNMENT = 141; +ObjectiveCLexer.GT = 142; +ObjectiveCLexer.LT = 143; +ObjectiveCLexer.BANG = 144; +ObjectiveCLexer.TILDE = 145; +ObjectiveCLexer.QUESTION = 146; +ObjectiveCLexer.COLON = 147; +ObjectiveCLexer.EQUAL = 148; +ObjectiveCLexer.LE = 149; +ObjectiveCLexer.GE = 150; +ObjectiveCLexer.NOTEQUAL = 151; +ObjectiveCLexer.AND = 152; +ObjectiveCLexer.OR = 153; +ObjectiveCLexer.INC = 154; +ObjectiveCLexer.DEC = 155; +ObjectiveCLexer.ADD = 156; +ObjectiveCLexer.SUB = 157; +ObjectiveCLexer.MUL = 158; +ObjectiveCLexer.DIV = 159; +ObjectiveCLexer.BITAND = 160; +ObjectiveCLexer.BITOR = 161; +ObjectiveCLexer.BITXOR = 162; +ObjectiveCLexer.MOD = 163; +ObjectiveCLexer.ADD_ASSIGN = 164; +ObjectiveCLexer.SUB_ASSIGN = 165; +ObjectiveCLexer.MUL_ASSIGN = 166; +ObjectiveCLexer.DIV_ASSIGN = 167; +ObjectiveCLexer.AND_ASSIGN = 168; +ObjectiveCLexer.OR_ASSIGN = 169; +ObjectiveCLexer.XOR_ASSIGN = 170; +ObjectiveCLexer.MOD_ASSIGN = 171; +ObjectiveCLexer.LSHIFT_ASSIGN = 172; +ObjectiveCLexer.RSHIFT_ASSIGN = 173; +ObjectiveCLexer.ELIPSIS = 174; +ObjectiveCLexer.CHARACTER_LITERAL = 175; +ObjectiveCLexer.STRING_START = 176; +ObjectiveCLexer.HEX_LITERAL = 177; +ObjectiveCLexer.OCTAL_LITERAL = 178; +ObjectiveCLexer.BINARY_LITERAL = 179; +ObjectiveCLexer.DECIMAL_LITERAL = 180; +ObjectiveCLexer.FLOATING_POINT_LITERAL = 181; +ObjectiveCLexer.VERSION_SEMATIC = 182; +ObjectiveCLexer.WS = 183; +ObjectiveCLexer.MULTI_COMMENT = 184; +ObjectiveCLexer.SINGLE_COMMENT = 185; +ObjectiveCLexer.BACKSLASH = 186; +ObjectiveCLexer.SHARP = 187; +ObjectiveCLexer.STRING_NEWLINE = 188; +ObjectiveCLexer.STRING_END = 189; +ObjectiveCLexer.STRING_VALUE = 190; +ObjectiveCLexer.DIRECTIVE_IMPORT = 191; +ObjectiveCLexer.DIRECTIVE_INCLUDE = 192; +ObjectiveCLexer.DIRECTIVE_PRAGMA = 193; +ObjectiveCLexer.DIRECTIVE_DEFINE = 194; +ObjectiveCLexer.DIRECTIVE_DEFINED = 195; +ObjectiveCLexer.DIRECTIVE_IF = 196; +ObjectiveCLexer.DIRECTIVE_ELIF = 197; +ObjectiveCLexer.DIRECTIVE_ELSE = 198; +ObjectiveCLexer.DIRECTIVE_UNDEF = 199; +ObjectiveCLexer.DIRECTIVE_IFDEF = 200; +ObjectiveCLexer.DIRECTIVE_IFNDEF = 201; +ObjectiveCLexer.DIRECTIVE_ENDIF = 202; +ObjectiveCLexer.DIRECTIVE_TRUE = 203; +ObjectiveCLexer.DIRECTIVE_FALSE = 204; +ObjectiveCLexer.DIRECTIVE_ERROR = 205; +ObjectiveCLexer.DIRECTIVE_WARNING = 206; +ObjectiveCLexer.DIRECTIVE_BANG = 207; +ObjectiveCLexer.DIRECTIVE_LP = 208; +ObjectiveCLexer.DIRECTIVE_RP = 209; +ObjectiveCLexer.DIRECTIVE_EQUAL = 210; +ObjectiveCLexer.DIRECTIVE_NOTEQUAL = 211; +ObjectiveCLexer.DIRECTIVE_AND = 212; +ObjectiveCLexer.DIRECTIVE_OR = 213; +ObjectiveCLexer.DIRECTIVE_LT = 214; +ObjectiveCLexer.DIRECTIVE_GT = 215; +ObjectiveCLexer.DIRECTIVE_LE = 216; +ObjectiveCLexer.DIRECTIVE_GE = 217; +ObjectiveCLexer.DIRECTIVE_ADD = 218; +ObjectiveCLexer.DIRECTIVE_SUB = 219; +ObjectiveCLexer.DIRECTIVE_MUL = 220; +ObjectiveCLexer.DIRECTIVE_DIV = 221; +ObjectiveCLexer.DIRECTIVE_BITAND = 222; +ObjectiveCLexer.DIRECTIVE_BITOR = 223; +ObjectiveCLexer.DIRECTIVE_BITXOR = 224; +ObjectiveCLexer.DIRECTIVE_MOD = 225; +ObjectiveCLexer.DIRECTIVE_DOT = 226; +ObjectiveCLexer.DIRECTIVE_STRING = 227; +ObjectiveCLexer.DIRECTIVE_ID = 228; +ObjectiveCLexer.DIRECTIVE_DECIMAL_LITERAL = 229; +ObjectiveCLexer.DIRECTIVE_FLOAT = 230; +ObjectiveCLexer.DIRECTIVE_NEWLINE = 231; +ObjectiveCLexer.DIRECTIVE_MULTI_COMMENT = 232; +ObjectiveCLexer.DIRECTIVE_SINGLE_COMMENT = 233; +ObjectiveCLexer.DIRECTIVE_BACKSLASH_NEWLINE = 234; +ObjectiveCLexer.DIRECTIVE_TEXT_NEWLINE = 235; +ObjectiveCLexer.DIRECTIVE_TEXT = 236; ObjectiveCLexer.COMMENTS_CHANNEL = 2; ObjectiveCLexer.DIRECTIVE_CHANNEL = 3; @@ -1929,20 +2028,22 @@ ObjectiveCLexer.prototype.literalNames = [ null, "'auto'", "'break'", "'case'", "'__weak'", null, null, null, "'null_resettable'", "'NS_INLINE'", "'NS_ENUM'", "'NS_OPTIONS'", - "'assign'", "'copy'", "'getter'", - "'setter'", "'strong'", "'readonly'", - "'readwrite'", "'weak'", "'unsafe_unretained'", + "'NS_CLOSED_ENUM'", "'NS_TYPED_EXTENSIBLE_ENUM'", + "'NS_ERROR_ENUM'", "'assign'", + "'copy'", "'getter'", "'setter'", + "'strong'", "'readonly'", "'readwrite'", + "'weak'", "'unsafe_unretained'", "'IBOutlet'", "'IBOutletCollection'", "'IBInspectable'", "'IB_DESIGNABLE'", null, null, null, null, null, - "'__TVOS_PROHIBITED'", null, - null, null, "'{'", "'}'", "'['", - "']'", "';'", "','", "'.'", "'->'", - "'@'", "'='", null, null, null, - "'~'", "'?'", "':'", null, null, - null, null, null, null, "'++'", - "'--'", "'+'", "'-'", "'*'", - "'/'", "'&'", "'|'", "'^'", "'%'", + "'__TVOS_PROHIBITED'", "'NS_NOESCAPE'", + null, null, null, "'{'", "'}'", + "'['", "']'", "';'", "','", null, + "'->'", "'@'", "'='", null, null, + null, "'~'", "'?'", "':'", null, + null, null, null, null, null, + "'++'", "'--'", null, null, null, + null, null, null, null, null, "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", "'...'", null, @@ -1989,14 +2090,16 @@ ObjectiveCLexer.prototype.symbolicNames = [ null, "AUTO", "BREAK", "CASE", "NULL_UNSPECIFIED", "NULLABLE", "NONNULL", "NULL_RESETTABLE", "NS_INLINE", "NS_ENUM", "NS_OPTIONS", - "ASSIGN", "COPY", "GETTER", - "SETTER", "STRONG", "READONLY", - "READWRITE", "WEAK", "UNSAFE_UNRETAINED", - "IB_OUTLET", "IB_OUTLET_COLLECTION", - "IB_INSPECTABLE", "IB_DESIGNABLE", - "NS_ASSUME_NONNULL_BEGIN", "NS_ASSUME_NONNULL_END", - "EXTERN_SUFFIX", "IOS_SUFFIX", - "MAC_SUFFIX", "TVOS_PROHIBITED", + "NS_CLOSED_ENUM", "NS_TYPED_EXTENSIBLE_ENUM", + "NS_ERROR_ENUM", "ASSIGN", "COPY", + "GETTER", "SETTER", "STRONG", + "READONLY", "READWRITE", "WEAK", + "UNSAFE_UNRETAINED", "IB_OUTLET", + "IB_OUTLET_COLLECTION", "IB_INSPECTABLE", + "IB_DESIGNABLE", "NS_ASSUME_NONNULL_BEGIN", + "NS_ASSUME_NONNULL_END", "EXTERN_SUFFIX", + "IOS_SUFFIX", "MAC_SUFFIX", + "TVOS_PROHIBITED", "NS_NOESCAPE", "IDENTIFIER", "LP", "RP", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT", "STRUCTACCESS", @@ -2031,8 +2134,13 @@ ObjectiveCLexer.prototype.symbolicNames = [ null, "AUTO", "BREAK", "CASE", "DIRECTIVE_NOTEQUAL", "DIRECTIVE_AND", "DIRECTIVE_OR", "DIRECTIVE_LT", "DIRECTIVE_GT", "DIRECTIVE_LE", - "DIRECTIVE_GE", "DIRECTIVE_STRING", - "DIRECTIVE_ID", "DIRECTIVE_DECIMAL_LITERAL", + "DIRECTIVE_GE", "DIRECTIVE_ADD", + "DIRECTIVE_SUB", "DIRECTIVE_MUL", + "DIRECTIVE_DIV", "DIRECTIVE_BITAND", + "DIRECTIVE_BITOR", "DIRECTIVE_BITXOR", + "DIRECTIVE_MOD", "DIRECTIVE_DOT", + "DIRECTIVE_STRING", "DIRECTIVE_ID", + "DIRECTIVE_DECIMAL_LITERAL", "DIRECTIVE_FLOAT", "DIRECTIVE_NEWLINE", "DIRECTIVE_MULTI_COMMENT", "DIRECTIVE_SINGLE_COMMENT", "DIRECTIVE_BACKSLASH_NEWLINE", @@ -2068,13 +2176,15 @@ ObjectiveCLexer.prototype.ruleNames = [ "AUTO", "BREAK", "CASE", "CHAR", "UNUSED", "WEAK_QUALIFIER", "NULL_UNSPECIFIED", "NULLABLE", "NONNULL", "NULL_RESETTABLE", "NS_INLINE", "NS_ENUM", "NS_OPTIONS", - "ASSIGN", "COPY", "GETTER", "SETTER", - "STRONG", "READONLY", "READWRITE", - "WEAK", "UNSAFE_UNRETAINED", "IB_OUTLET", - "IB_OUTLET_COLLECTION", "IB_INSPECTABLE", - "IB_DESIGNABLE", "NS_ASSUME_NONNULL_BEGIN", - "NS_ASSUME_NONNULL_END", "EXTERN_SUFFIX", - "IOS_SUFFIX", "MAC_SUFFIX", "TVOS_PROHIBITED", + "NS_CLOSED_ENUM", "NS_TYPED_EXTENSIBLE_ENUM", + "NS_ERROR_ENUM", "ASSIGN", "COPY", + "GETTER", "SETTER", "STRONG", "READONLY", + "READWRITE", "WEAK", "UNSAFE_UNRETAINED", + "IB_OUTLET", "IB_OUTLET_COLLECTION", + "IB_INSPECTABLE", "IB_DESIGNABLE", + "NS_ASSUME_NONNULL_BEGIN", "NS_ASSUME_NONNULL_END", + "EXTERN_SUFFIX", "IOS_SUFFIX", "MAC_SUFFIX", + "TVOS_PROHIBITED", "NS_NOESCAPE", "IDENTIFIER", "LP", "RP", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT", "STRUCTACCESS", @@ -2107,13 +2217,18 @@ ObjectiveCLexer.prototype.ruleNames = [ "AUTO", "BREAK", "CASE", "CHAR", "DIRECTIVE_NOTEQUAL", "DIRECTIVE_AND", "DIRECTIVE_OR", "DIRECTIVE_LT", "DIRECTIVE_GT", "DIRECTIVE_LE", - "DIRECTIVE_GE", "DIRECTIVE_WS", - "DIRECTIVE_STRING", "DIRECTIVE_ID", - "DIRECTIVE_DECIMAL_LITERAL", "DIRECTIVE_FLOAT", - "DIRECTIVE_NEWLINE", "DIRECTIVE_MULTI_COMMENT", - "DIRECTIVE_SINGLE_COMMENT", "DIRECTIVE_BACKSLASH_NEWLINE", - "DIRECTIVE_DEFINE_ID", "DIRECTIVE_TEXT_NEWLINE", - "DIRECTIVE_BACKSLASH_ESCAPE", "DIRECTIVE_TEXT_BACKSLASH_NEWLINE", + "DIRECTIVE_GE", "DIRECTIVE_ADD", + "DIRECTIVE_SUB", "DIRECTIVE_MUL", + "DIRECTIVE_DIV", "DIRECTIVE_BITAND", + "DIRECTIVE_BITOR", "DIRECTIVE_BITXOR", + "DIRECTIVE_MOD", "DIRECTIVE_DOT", + "DIRECTIVE_WS", "DIRECTIVE_STRING", + "DIRECTIVE_ID", "DIRECTIVE_DECIMAL_LITERAL", + "DIRECTIVE_FLOAT", "DIRECTIVE_NEWLINE", + "DIRECTIVE_MULTI_COMMENT", "DIRECTIVE_SINGLE_COMMENT", + "DIRECTIVE_BACKSLASH_NEWLINE", "DIRECTIVE_DEFINE_ID", + "DIRECTIVE_TEXT_NEWLINE", "DIRECTIVE_BACKSLASH_ESCAPE", + "DIRECTIVE_TEXT_BACKSLASH_NEWLINE", "DIRECTIVE_TEXT_MULTI_COMMENT", "DIRECTIVE_TEXT_SINGLE_COMMENT", "DIRECTIVE_SLASH", "DIRECTIVE_TEXT", diff --git a/parser/objc/ObjectiveCLexer.tokens b/parser/objc/ObjectiveCLexer.tokens index f848b10..e15d691 100644 --- a/parser/objc/ObjectiveCLexer.tokens +++ b/parser/objc/ObjectiveCLexer.tokens @@ -103,124 +103,137 @@ NULL_RESETTABLE=102 NS_INLINE=103 NS_ENUM=104 NS_OPTIONS=105 -ASSIGN=106 -COPY=107 -GETTER=108 -SETTER=109 -STRONG=110 -READONLY=111 -READWRITE=112 -WEAK=113 -UNSAFE_UNRETAINED=114 -IB_OUTLET=115 -IB_OUTLET_COLLECTION=116 -IB_INSPECTABLE=117 -IB_DESIGNABLE=118 -NS_ASSUME_NONNULL_BEGIN=119 -NS_ASSUME_NONNULL_END=120 -EXTERN_SUFFIX=121 -IOS_SUFFIX=122 -MAC_SUFFIX=123 -TVOS_PROHIBITED=124 -IDENTIFIER=125 -LP=126 -RP=127 -LBRACE=128 -RBRACE=129 -LBRACK=130 -RBRACK=131 -SEMI=132 -COMMA=133 -DOT=134 -STRUCTACCESS=135 -AT=136 -ASSIGNMENT=137 -GT=138 -LT=139 -BANG=140 -TILDE=141 -QUESTION=142 -COLON=143 -EQUAL=144 -LE=145 -GE=146 -NOTEQUAL=147 -AND=148 -OR=149 -INC=150 -DEC=151 -ADD=152 -SUB=153 -MUL=154 -DIV=155 -BITAND=156 -BITOR=157 -BITXOR=158 -MOD=159 -ADD_ASSIGN=160 -SUB_ASSIGN=161 -MUL_ASSIGN=162 -DIV_ASSIGN=163 -AND_ASSIGN=164 -OR_ASSIGN=165 -XOR_ASSIGN=166 -MOD_ASSIGN=167 -LSHIFT_ASSIGN=168 -RSHIFT_ASSIGN=169 -ELIPSIS=170 -CHARACTER_LITERAL=171 -STRING_START=172 -HEX_LITERAL=173 -OCTAL_LITERAL=174 -BINARY_LITERAL=175 -DECIMAL_LITERAL=176 -FLOATING_POINT_LITERAL=177 -VERSION_SEMATIC=178 -WS=179 -MULTI_COMMENT=180 -SINGLE_COMMENT=181 -BACKSLASH=182 -SHARP=183 -STRING_NEWLINE=184 -STRING_END=185 -STRING_VALUE=186 -DIRECTIVE_IMPORT=187 -DIRECTIVE_INCLUDE=188 -DIRECTIVE_PRAGMA=189 -DIRECTIVE_DEFINE=190 -DIRECTIVE_DEFINED=191 -DIRECTIVE_IF=192 -DIRECTIVE_ELIF=193 -DIRECTIVE_ELSE=194 -DIRECTIVE_UNDEF=195 -DIRECTIVE_IFDEF=196 -DIRECTIVE_IFNDEF=197 -DIRECTIVE_ENDIF=198 -DIRECTIVE_TRUE=199 -DIRECTIVE_FALSE=200 -DIRECTIVE_ERROR=201 -DIRECTIVE_WARNING=202 -DIRECTIVE_BANG=203 -DIRECTIVE_LP=204 -DIRECTIVE_RP=205 -DIRECTIVE_EQUAL=206 -DIRECTIVE_NOTEQUAL=207 -DIRECTIVE_AND=208 -DIRECTIVE_OR=209 -DIRECTIVE_LT=210 -DIRECTIVE_GT=211 -DIRECTIVE_LE=212 -DIRECTIVE_GE=213 -DIRECTIVE_STRING=214 -DIRECTIVE_ID=215 -DIRECTIVE_DECIMAL_LITERAL=216 -DIRECTIVE_FLOAT=217 -DIRECTIVE_NEWLINE=218 -DIRECTIVE_MULTI_COMMENT=219 -DIRECTIVE_SINGLE_COMMENT=220 -DIRECTIVE_BACKSLASH_NEWLINE=221 -DIRECTIVE_TEXT_NEWLINE=222 -DIRECTIVE_TEXT=223 +NS_CLOSED_ENUM=106 +NS_TYPED_EXTENSIBLE_ENUM=107 +NS_ERROR_ENUM=108 +ASSIGN=109 +COPY=110 +GETTER=111 +SETTER=112 +STRONG=113 +READONLY=114 +READWRITE=115 +WEAK=116 +UNSAFE_UNRETAINED=117 +IB_OUTLET=118 +IB_OUTLET_COLLECTION=119 +IB_INSPECTABLE=120 +IB_DESIGNABLE=121 +NS_ASSUME_NONNULL_BEGIN=122 +NS_ASSUME_NONNULL_END=123 +EXTERN_SUFFIX=124 +IOS_SUFFIX=125 +MAC_SUFFIX=126 +TVOS_PROHIBITED=127 +NS_NOESCAPE=128 +IDENTIFIER=129 +LP=130 +RP=131 +LBRACE=132 +RBRACE=133 +LBRACK=134 +RBRACK=135 +SEMI=136 +COMMA=137 +DOT=138 +STRUCTACCESS=139 +AT=140 +ASSIGNMENT=141 +GT=142 +LT=143 +BANG=144 +TILDE=145 +QUESTION=146 +COLON=147 +EQUAL=148 +LE=149 +GE=150 +NOTEQUAL=151 +AND=152 +OR=153 +INC=154 +DEC=155 +ADD=156 +SUB=157 +MUL=158 +DIV=159 +BITAND=160 +BITOR=161 +BITXOR=162 +MOD=163 +ADD_ASSIGN=164 +SUB_ASSIGN=165 +MUL_ASSIGN=166 +DIV_ASSIGN=167 +AND_ASSIGN=168 +OR_ASSIGN=169 +XOR_ASSIGN=170 +MOD_ASSIGN=171 +LSHIFT_ASSIGN=172 +RSHIFT_ASSIGN=173 +ELIPSIS=174 +CHARACTER_LITERAL=175 +STRING_START=176 +HEX_LITERAL=177 +OCTAL_LITERAL=178 +BINARY_LITERAL=179 +DECIMAL_LITERAL=180 +FLOATING_POINT_LITERAL=181 +VERSION_SEMATIC=182 +WS=183 +MULTI_COMMENT=184 +SINGLE_COMMENT=185 +BACKSLASH=186 +SHARP=187 +STRING_NEWLINE=188 +STRING_END=189 +STRING_VALUE=190 +DIRECTIVE_IMPORT=191 +DIRECTIVE_INCLUDE=192 +DIRECTIVE_PRAGMA=193 +DIRECTIVE_DEFINE=194 +DIRECTIVE_DEFINED=195 +DIRECTIVE_IF=196 +DIRECTIVE_ELIF=197 +DIRECTIVE_ELSE=198 +DIRECTIVE_UNDEF=199 +DIRECTIVE_IFDEF=200 +DIRECTIVE_IFNDEF=201 +DIRECTIVE_ENDIF=202 +DIRECTIVE_TRUE=203 +DIRECTIVE_FALSE=204 +DIRECTIVE_ERROR=205 +DIRECTIVE_WARNING=206 +DIRECTIVE_BANG=207 +DIRECTIVE_LP=208 +DIRECTIVE_RP=209 +DIRECTIVE_EQUAL=210 +DIRECTIVE_NOTEQUAL=211 +DIRECTIVE_AND=212 +DIRECTIVE_OR=213 +DIRECTIVE_LT=214 +DIRECTIVE_GT=215 +DIRECTIVE_LE=216 +DIRECTIVE_GE=217 +DIRECTIVE_ADD=218 +DIRECTIVE_SUB=219 +DIRECTIVE_MUL=220 +DIRECTIVE_DIV=221 +DIRECTIVE_BITAND=222 +DIRECTIVE_BITOR=223 +DIRECTIVE_BITXOR=224 +DIRECTIVE_MOD=225 +DIRECTIVE_DOT=226 +DIRECTIVE_STRING=227 +DIRECTIVE_ID=228 +DIRECTIVE_DECIMAL_LITERAL=229 +DIRECTIVE_FLOAT=230 +DIRECTIVE_NEWLINE=231 +DIRECTIVE_MULTI_COMMENT=232 +DIRECTIVE_SINGLE_COMMENT=233 +DIRECTIVE_BACKSLASH_NEWLINE=234 +DIRECTIVE_TEXT_NEWLINE=235 +DIRECTIVE_TEXT=236 'auto'=1 'break'=2 'case'=3 @@ -319,58 +332,53 @@ DIRECTIVE_TEXT=223 'NS_INLINE'=103 'NS_ENUM'=104 'NS_OPTIONS'=105 -'assign'=106 -'copy'=107 -'getter'=108 -'setter'=109 -'strong'=110 -'readonly'=111 -'readwrite'=112 -'weak'=113 -'unsafe_unretained'=114 -'IBOutlet'=115 -'IBOutletCollection'=116 -'IBInspectable'=117 -'IB_DESIGNABLE'=118 -'__TVOS_PROHIBITED'=124 -'{'=128 -'}'=129 -'['=130 -']'=131 -';'=132 -','=133 -'.'=134 -'->'=135 -'@'=136 -'='=137 -'~'=141 -'?'=142 -':'=143 -'++'=150 -'--'=151 -'+'=152 -'-'=153 -'*'=154 -'/'=155 -'&'=156 -'|'=157 -'^'=158 -'%'=159 -'+='=160 -'-='=161 -'*='=162 -'/='=163 -'&='=164 -'|='=165 -'^='=166 -'%='=167 -'<<='=168 -'>>='=169 -'...'=170 -'\\'=182 -'defined'=191 -'elif'=193 -'undef'=195 -'ifdef'=196 -'ifndef'=197 -'endif'=198 +'NS_CLOSED_ENUM'=106 +'NS_TYPED_EXTENSIBLE_ENUM'=107 +'NS_ERROR_ENUM'=108 +'assign'=109 +'copy'=110 +'getter'=111 +'setter'=112 +'strong'=113 +'readonly'=114 +'readwrite'=115 +'weak'=116 +'unsafe_unretained'=117 +'IBOutlet'=118 +'IBOutletCollection'=119 +'IBInspectable'=120 +'IB_DESIGNABLE'=121 +'__TVOS_PROHIBITED'=127 +'NS_NOESCAPE'=128 +'{'=132 +'}'=133 +'['=134 +']'=135 +';'=136 +','=137 +'->'=139 +'@'=140 +'='=141 +'~'=145 +'?'=146 +':'=147 +'++'=154 +'--'=155 +'+='=164 +'-='=165 +'*='=166 +'/='=167 +'&='=168 +'|='=169 +'^='=170 +'%='=171 +'<<='=172 +'>>='=173 +'...'=174 +'\\'=186 +'defined'=195 +'elif'=197 +'undef'=199 +'ifdef'=200 +'ifndef'=201 +'endif'=202 diff --git a/parser/objc/ObjectiveCParser.g4 b/parser/objc/ObjectiveCParser.g4 index 71914d6..943f361 100644 --- a/parser/objc/ObjectiveCParser.g4 +++ b/parser/objc/ObjectiveCParser.g4 @@ -61,15 +61,20 @@ importDeclaration ; classInterface - : IB_DESIGNABLE? macro* +: + IB_DESIGNABLE? (macro | attributeSpecifier)* '@interface' - className=genericTypeSpecifier (':' superclassName=identifier)? (LT protocolList GT)? instanceVariables? interfaceDeclarationList? + className = genericTypeSpecifier ( + ':' superclassName = identifier + )? (LT protocols = protocolList GT)? instanceVariables? interfaceDeclarationList? '@end' ; categoryInterface - : '@interface' - categoryName=genericTypeSpecifier LP className=identifier? RP (LT protocolList GT)? instanceVariables? interfaceDeclarationList? + : (macro | attributeSpecifier)* + '@interface' + className = genericTypeSpecifier LP categoryName = identifier? RP ( + LT protocols = protocolList GT)? instanceVariables? interfaceDeclarationList? '@end' ; @@ -81,7 +86,7 @@ classImplementation categoryImplementation : '@implementation' - categoryName=genericTypeSpecifier LP className=identifier RP implementationDefinitionList? + className=genericTypeSpecifier LP categoryName=identifier RP implementationDefinitionList? '@end' ; @@ -90,9 +95,9 @@ genericTypeSpecifier ; protocolDeclaration - : macro* + : (macro | attributeSpecifier)* '@protocol' - name = protocolName (LT protocolList GT)? protocolDeclarationSection* + name = protocolName (LT protocols = protocolList GT)? protocolDeclarationSection* '@end' ; @@ -105,12 +110,17 @@ protocolDeclarationList : '@protocol' protocolList ';' ; +classDeclaration + : + identifier (LT protocolList GT)? + ; + classDeclarationList - : '@class' identifier (',' identifier)* ';' + : '@class' classDeclaration (',' classDeclaration)* ';' ; protocolList - : protocolName (',' protocolName)* + : list += protocolName (',' list += protocolName)* ; propertyDeclaration @@ -139,8 +149,11 @@ propertyAttribute ; protocolName - : LT protocolList GT - | ('__covariant' | '__contravariant')? identifier + : + LT protocolList GT + | ('__covariant' | '__contravariant')? name = typeName ( + ':' typeSpecifier + )? ; instanceVariables @@ -168,15 +181,15 @@ interfaceDeclarationList ; classMethodDeclaration - : '+' methodDeclaration + : ADD methodDeclaration ; instanceMethodDeclaration - : '-' methodDeclaration + : SUB methodDeclaration ; methodDeclaration - : methodType? methodSelector macro* ';' + : methodType? methodSelector (macro | attributeSpecifier)* ';' ; implementationDefinitionList @@ -188,11 +201,11 @@ implementationDefinitionList )+; classMethodDefinition - : '+' methodDefinition + : ADD methodDefinition ; instanceMethodDefinition - : '-' methodDefinition + : SUB methodDefinition ; methodDefinition @@ -200,12 +213,12 @@ methodDefinition ; methodSelector - : selector + : sel = selector | keywordDeclarator+ (',' '...')? ; keywordDeclarator - : selector? ':' methodType* arcBehaviourSpecifier? identifier + : sel = selector? ':' types += methodType* arcBehaviourSpecifier? name = identifier ; selector @@ -231,7 +244,7 @@ propertySynthesizeItem ; blockType - : nullabilitySpecifier? typeSpecifier nullabilitySpecifier? LP '^' (nullabilitySpecifier | typeSpecifier)? RP blockParameters? + : nullabilitySpecifier? typeSpecifier nullabilitySpecifier? LP BITXOR (nullabilitySpecifier | typeSpecifier)? RP blockParameters? ; genericsSpecifier @@ -260,7 +273,10 @@ boxExpression ; blockParameters - : LP ((typeVariableDeclaratorOrName | 'void') (',' typeVariableDeclaratorOrName)*)? RP +: + LP ( + (types += typeVariableDeclaratorOrName | 'void') ( + ',' types += typeVariableDeclaratorOrName)*)? RP ; typeVariableDeclaratorOrName @@ -269,7 +285,7 @@ typeVariableDeclaratorOrName ; blockExpression - : '^' typeSpecifier? nullabilitySpecifier? blockParameters? compoundStatement + : BITXOR typeSpecifier? nullabilitySpecifier? blockParameters? compoundStatement ; messageExpression @@ -337,17 +353,23 @@ autoreleaseStatement ; functionDeclaration - : functionSignature ';' + : functionSignature (macro | attributeSpecifier)* ';' ; functionDefinition - : functionSignature compoundStatement +: + functionSignature (macro | attributeSpecifier)* compoundStatement ; functionSignature : declarationSpecifiers? identifier (LP parameterList? RP) attributeSpecifier? ; +functionPointer: + declarationSpecifiers? ( + LP MUL nullabilitySpecifier? name = identifier? RP) (LP parameterList? RP) attributeSpecifier? + ; + attribute : attributeName attributeParameters? ; @@ -388,15 +410,22 @@ functionCallExpression ; enumDeclaration - : (attributeSpecifier | macro)* TYPEDEF? enumSpecifier name = identifier? macro* ';' + : (macro | attributeSpecifier)* TYPEDEF? enumSpecifier name = identifier? (macro | attributeSpecifier)* ';' ; varDeclaration - : (declarationSpecifiers initDeclaratorList | declarationSpecifiers) ';' + : (declarationSpecifiers initDeclaratorList | declarationSpecifiers) (macro | attributeSpecifier)* ';' ; typedefDeclaration - : attributeSpecifier? TYPEDEF (declarationSpecifiers typeDeclaratorList | declarationSpecifiers) ';' + : + attributeSpecifier? TYPEDEF ( + declarationSpecifiers typeDeclaratorList + | declarationSpecifiers + | functionPointer + | functionSignature + | structOrUnionSpecifier identifier + ) (macro | attributeSpecifier)* ';' ; typeDeclaratorList @@ -419,7 +448,7 @@ declarationSpecifiers ; attributeSpecifier - : '__attribute__' LP LP attribute (',' attribute)* RP RP + : ATTRIBUTE LP LP attribute (',' attribute)* RP RP ; initDeclaratorList @@ -427,16 +456,17 @@ initDeclaratorList ; initDeclarator - : declarator ('=' initializer)? + : declarator (macro | attributeSpecifier)* ('=' initializer)? ; structOrUnionSpecifier : ('struct' | 'union') (identifier | identifier? '{' fieldDeclaration+ '}') ; -fieldDeclaration - : specifierQualifierList fieldDeclaratorList macro* ';' - ; +fieldDeclaration: ( + specifierQualifierList fieldDeclaratorList + | functionPointer + ) (macro | attributeSpecifier)* ';'; specifierQualifierList : (arcBehaviourSpecifier @@ -500,7 +530,7 @@ protocolQualifier ; typeSpecifier - : 'void' + : ('void' | 'char' | 'short' | 'int' @@ -513,7 +543,7 @@ typeSpecifier | genericTypeSpecifier | structOrUnionSpecifier | enumSpecifier - | identifier pointer? + | identifier) pointer? ; typeofExpression @@ -529,17 +559,24 @@ fieldDeclarator | declarator? ':' constant ; -enumSpecifier - : 'enum' (name = identifier? ':' typeName)? (identifier ('{' enumeratorList '}')? | '{' enumeratorList '}') - | type = ('NS_OPTIONS' | 'NS_ENUM') LP typeName ',' name = identifier RP '{' enumeratorList '}' - ; +enumSpecifier: + 'enum' (name = identifier? ':' typeName)? ( + identifier ('{' enumeratorList '}')? + | '{' enumeratorList '}' + ) + | type = ( + NS_OPTIONS + | NS_ENUM + | NS_ERROR_ENUM + | NS_CLOSED_ENUM + ) LP typeName (',' name = identifier)? RP '{' enumeratorList '}'; enumeratorList : list += enumerator (',' list += enumerator)* ','? ; enumerator - : name = enumeratorIdentifier ('=' value = expression)? macro* + : name = enumeratorIdentifier (macro | attributeSpecifier)* ('=' value = expression)? ; enumeratorIdentifier @@ -549,7 +586,7 @@ enumeratorIdentifier directDeclarator : (identifier | LP declarator RP) declaratorSuffix* - | LP '^' nullabilitySpecifier? identifier? RP blockParameters + | LP BITXOR nullabilitySpecifier? identifier? RP blockParameters ; declaratorSuffix @@ -561,7 +598,7 @@ parameterList ; pointer - : '*' declarationSpecifiers? pointer? + : MUL declarationSpecifiers? nextPointer = pointer? ; macro @@ -570,6 +607,7 @@ macro LP ( messages += primaryExpression | osVersions += osVersion + | identifier (DOT identifier)* (LP (identifier ':')* RP)? ) ( ',' ( messages += primaryExpression @@ -584,7 +622,7 @@ arrayInitializer ; structInitializer - : '{' ('.' expression (',' '.' expression)* ','?)? '}' + : '{' (DOT expression (',' DOT expression)* ','?)? '}' ; initializerList @@ -594,6 +632,7 @@ initializerList typeName : specifierQualifierList abstractDeclarator? | blockType + | functionPointer ; abstractDeclarator @@ -612,8 +651,9 @@ parameterDeclarationList ; parameterDeclaration - : declarationSpecifiers declarator + : declarationSpecifiers declarator? | 'void' + | functionPointer ; declarator @@ -755,11 +795,11 @@ unaryExpression ; unaryOperator - : '&' - | '*' - | '+' - | '-' - | '~' + : BITAND + | MUL + | ADD + | SUB + | TILDE | BANG ; @@ -787,8 +827,16 @@ argumentExpression osVersion : (os = identifier) ( - LP min = (FLOATING_POINT_LITERAL | VERSION_SEMATIC) ( - ',' max = (FLOATING_POINT_LITERAL | VERSION_SEMATIC) + LP min = ( + FLOATING_POINT_LITERAL + | VERSION_SEMATIC + | IDENTIFIER + ) ( + ',' max = ( + FLOATING_POINT_LITERAL + | VERSION_SEMATIC + | IDENTIFIER + ) )? RP )?; @@ -812,8 +860,8 @@ constant : HEX_LITERAL | OCTAL_LITERAL | BINARY_LITERAL - | ('+' | '-')? DECIMAL_LITERAL - | ('+' | '-')? FLOATING_POINT_LITERAL + | (ADD | SUB)? DECIMAL_LITERAL + | (ADD | SUB)? FLOATING_POINT_LITERAL | CHARACTER_LITERAL | NIL | NULL diff --git a/parser/objc/ObjectiveCParser.js b/parser/objc/ObjectiveCParser.js index 2bb67bb..ca08b09 100644 --- a/parser/objc/ObjectiveCParser.js +++ b/parser/objc/ObjectiveCParser.js @@ -6,7 +6,7 @@ var grammarFileName = "ObjectiveCParser.g4"; var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964", - "\u0003\u00e1\u06e8\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004", + "\u0003\u00ee\u075f\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004", "\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007", "\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f", "\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010", @@ -33,1208 +33,1303 @@ var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964", "\u0086\t\u0086\u0004\u0087\t\u0087\u0004\u0088\t\u0088\u0004\u0089\t", "\u0089\u0004\u008a\t\u008a\u0004\u008b\t\u008b\u0004\u008c\t\u008c\u0004", "\u008d\t\u008d\u0004\u008e\t\u008e\u0004\u008f\t\u008f\u0004\u0090\t", - "\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0003\u0002\u0007\u0002", - "\u0126\n\u0002\f\u0002\u000e\u0002\u0129\u000b\u0002\u0003\u0002\u0003", - "\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003", - "\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0005", - "\u0003\u0138\n\u0003\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004", - "\u0003\u0004\u0003\u0004\u0005\u0004\u0140\n\u0004\u0003\u0004\u0005", - "\u0004\u0143\n\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004", - "\u0003\u0004\u0003\u0004\u0005\u0004\u014b\n\u0004\u0003\u0005\u0005", - "\u0005\u014e\n\u0005\u0003\u0005\u0007\u0005\u0151\n\u0005\f\u0005\u000e", - "\u0005\u0154\u000b\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005", - "\u0005\u0005\u015a\n\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003", - "\u0005\u0005\u0005\u0160\n\u0005\u0003\u0005\u0005\u0005\u0163\n\u0005", - "\u0003\u0005\u0005\u0005\u0166\n\u0005\u0003\u0005\u0003\u0005\u0003", - "\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0005\u0006\u016e\n\u0006", - "\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0005\u0006", - "\u0175\n\u0006\u0003\u0006\u0005\u0006\u0178\n\u0006\u0003\u0006\u0005", - "\u0006\u017b\n\u0006\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007", - "\u0003\u0007\u0003\u0007\u0005\u0007\u0183\n\u0007\u0003\u0007\u0005", - "\u0007\u0186\n\u0007\u0003\u0007\u0005\u0007\u0189\n\u0007\u0003\u0007", - "\u0003\u0007\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0005\b", - "\u0193\n\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003", - "\t\u0005\t\u019d\n\t\u0003\n\u0007\n\u01a0\n\n\f\n\u000e\n\u01a3\u000b", - "\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0005\n\u01ab\n\n", - "\u0003\n\u0007\n\u01ae\n\n\f\n\u000e\n\u01b1\u000b\n\u0003\n\u0003\n", - "\u0003\u000b\u0003\u000b\u0007\u000b\u01b7\n\u000b\f\u000b\u000e\u000b", - "\u01ba\u000b\u000b\u0003\u000b\u0006\u000b\u01bd\n\u000b\r\u000b\u000e", - "\u000b\u01be\u0005\u000b\u01c1\n\u000b\u0003\f\u0003\f\u0003\f\u0003", - "\f\u0003\r\u0003\r\u0003\r\u0003\r\u0007\r\u01cb\n\r\f\r\u000e\r\u01ce", - "\u000b\r\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0003\u000e\u0007\u000e", - "\u01d5\n\u000e\f\u000e\u000e\u000e\u01d8\u000b\u000e\u0003\u000f\u0003", - "\u000f\u0003\u000f\u0003\u000f\u0003\u000f\u0005\u000f\u01df\n\u000f", - "\u0003\u000f\u0005\u000f\u01e2\n\u000f\u0003\u000f\u0005\u000f\u01e5", - "\n\u000f\u0003\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003\u0010", - "\u0007\u0010\u01ec\n\u0010\f\u0010\u000e\u0010\u01ef\u000b\u0010\u0003", - "\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003", - "\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003", - "\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0003", - "\u0011\u0003\u0011\u0005\u0011\u0205\n\u0011\u0003\u0012\u0003\u0012", - "\u0003\u0012\u0003\u0012\u0003\u0012\u0005\u0012\u020c\n\u0012\u0003", - "\u0012\u0005\u0012\u020f\n\u0012\u0003\u0013\u0003\u0013\u0007\u0013", - "\u0213\n\u0013\f\u0013\u000e\u0013\u0216\u000b\u0013\u0003\u0013\u0003", - "\u0013\u0003\u0014\u0003\u0014\u0007\u0014\u021c\n\u0014\f\u0014\u000e", - "\u0014\u021f\u000b\u0014\u0003\u0014\u0006\u0014\u0222\n\u0014\r\u0014", - "\u000e\u0014\u0223\u0005\u0014\u0226\n\u0014\u0003\u0015\u0003\u0015", - "\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0006\u0016", - "\u022f\n\u0016\r\u0016\u000e\u0016\u0230\u0003\u0017\u0003\u0017\u0003", - "\u0017\u0003\u0018\u0003\u0018\u0003\u0018\u0003\u0019\u0005\u0019\u023a", - "\n\u0019\u0003\u0019\u0003\u0019\u0007\u0019\u023e\n\u0019\f\u0019\u000e", - "\u0019\u0241\u000b\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0003\u001a", - "\u0003\u001a\u0003\u001a\u0003\u001a\u0006\u001a\u024a\n\u001a\r\u001a", - "\u000e\u001a\u024b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001c\u0003", - "\u001c\u0003\u001c\u0003\u001d\u0005\u001d\u0255\n\u001d\u0003\u001d", - "\u0003\u001d\u0005\u001d\u0259\n\u001d\u0003\u001d\u0005\u001d\u025c", - "\n\u001d\u0003\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0006\u001e", - "\u0262\n\u001e\r\u001e\u000e\u001e\u0263\u0003\u001e\u0003\u001e\u0005", - "\u001e\u0268\n\u001e\u0005\u001e\u026a\n\u001e\u0003\u001f\u0005\u001f", - "\u026d\n\u001f\u0003\u001f\u0003\u001f\u0007\u001f\u0271\n\u001f\f\u001f", - "\u000e\u001f\u0274\u000b\u001f\u0003\u001f\u0005\u001f\u0277\n\u001f", - "\u0003\u001f\u0003\u001f\u0003 \u0003 \u0005 \u027d\n \u0003!\u0003", - "!\u0003!\u0003!\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003\"\u0003", - "\"\u0003\"\u0005\"\u028b\n\"\u0003#\u0003#\u0003#\u0007#\u0290\n#\f", - "#\u000e#\u0293\u000b#\u0003$\u0003$\u0003$\u0005$\u0298\n$\u0003%\u0005", - "%\u029b\n%\u0003%\u0003%\u0005%\u029f\n%\u0003%\u0003%\u0003%\u0003", - "%\u0005%\u02a5\n%\u0003%\u0003%\u0005%\u02a9\n%\u0003&\u0003&\u0003", - "&\u0003&\u0007&\u02af\n&\f&\u000e&\u02b2\u000b&\u0005&\u02b4\n&\u0003", - "&\u0003&\u0003\'\u0007\'\u02b9\n\'\f\'\u000e\'\u02bc\u000b\'\u0003\'", - "\u0003\'\u0003(\u0003(\u0003(\u0003(\u0003(\u0007(\u02c5\n(\f(\u000e", - "(\u02c8\u000b(\u0003(\u0005(\u02cb\n(\u0005(\u02cd\n(\u0003(\u0003(", - "\u0003)\u0003)\u0003)\u0003)\u0003*\u0003*\u0003*\u0003*\u0005*\u02d9", - "\n*\u0005*\u02db\n*\u0003*\u0003*\u0003+\u0003+\u0003+\u0003+\u0003", - "+\u0003+\u0003+\u0003+\u0005+\u02e7\n+\u0005+\u02e9\n+\u0003,\u0003", - ",\u0003,\u0005,\u02ee\n,\u0003,\u0003,\u0007,\u02f2\n,\f,\u000e,\u02f5", - "\u000b,\u0005,\u02f7\n,\u0003,\u0003,\u0003-\u0003-\u0005-\u02fd\n-", - "\u0003.\u0003.\u0005.\u0301\n.\u0003.\u0005.\u0304\n.\u0003.\u0005.", - "\u0307\n.\u0003.\u0003.\u0003/\u0003/\u0003/\u0003/\u0003/\u00030\u0003", - "0\u00050\u0312\n0\u00031\u00031\u00061\u0316\n1\r1\u000e1\u0317\u0005", - "1\u031a\n1\u00032\u00052\u031d\n2\u00032\u00032\u00032\u00032\u0007", - "2\u0323\n2\f2\u000e2\u0326\u000b2\u00033\u00033\u00053\u032a\n3\u0003", - "3\u00033\u00033\u00033\u00053\u0330\n3\u00034\u00034\u00034\u00034\u0003", - "4\u00035\u00035\u00055\u0339\n5\u00035\u00065\u033c\n5\r5\u000e5\u033d", - "\u00055\u0340\n5\u00036\u00036\u00036\u00036\u00036\u00037\u00037\u0003", - "7\u00037\u00037\u00038\u00038\u00038\u00039\u00039\u00039\u00039\u0003", - "9\u00039\u00039\u00059\u0356\n9\u0003:\u0003:\u0003:\u0007:\u035b\n", - ":\f:\u000e:\u035e\u000b:\u0003:\u0003:\u0005:\u0362\n:\u0003;\u0003", - ";\u0003;\u0003;\u0003;\u0003;\u0003<\u0003<\u0003<\u0003<\u0003<\u0003", - "<\u0003=\u0003=\u0003=\u0003>\u0003>\u0003>\u0003?\u0003?\u0003?\u0003", - "@\u0005@\u037a\n@\u0003@\u0003@\u0003@\u0005@\u037f\n@\u0003@\u0003", - "@\u0003@\u0005@\u0384\n@\u0003A\u0003A\u0005A\u0388\nA\u0003B\u0003", - "B\u0005B\u038c\nB\u0003C\u0003C\u0005C\u0390\nC\u0003C\u0003C\u0003", - "D\u0003D\u0003D\u0007D\u0397\nD\fD\u000eD\u039a\u000bD\u0003E\u0003", - "E\u0003E\u0003E\u0005E\u03a0\nE\u0003F\u0003F\u0003F\u0003F\u0003F\u0005", - "F\u03a7\nF\u0003G\u0003G\u0003G\u0003G\u0005G\u03ad\nG\u0003H\u0005", - "H\u03b0\nH\u0003H\u0003H\u0005H\u03b4\nH\u0003H\u0003H\u0003H\u0003", - "H\u0003H\u0003I\u0003I\u0007I\u03bd\nI\fI\u000eI\u03c0\u000bI\u0003", - "I\u0005I\u03c3\nI\u0003I\u0003I\u0005I\u03c7\nI\u0003I\u0007I\u03ca", - "\nI\fI\u000eI\u03cd\u000bI\u0003I\u0003I\u0003J\u0003J\u0003J\u0003", - "J\u0005J\u03d5\nJ\u0003J\u0003J\u0003K\u0005K\u03da\nK\u0003K\u0003", - "K\u0003K\u0003K\u0003K\u0005K\u03e1\nK\u0003K\u0003K\u0003L\u0003L\u0003", - "L\u0007L\u03e8\nL\fL\u000eL\u03eb\u000bL\u0003M\u0005M\u03ee\nM\u0003", - "M\u0003M\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0003N\u0006", - "N\u03fa\nN\rN\u000eN\u03fb\u0003O\u0003O\u0003O\u0003O\u0003O\u0003", - "O\u0007O\u0404\nO\fO\u000eO\u0407\u000bO\u0003O\u0003O\u0003O\u0003", - "P\u0003P\u0003P\u0007P\u040f\nP\fP\u000eP\u0412\u000bP\u0003Q\u0003", - "Q\u0003Q\u0005Q\u0417\nQ\u0003R\u0003R\u0003R\u0005R\u041c\nR\u0003", - "R\u0003R\u0006R\u0420\nR\rR\u000eR\u0421\u0003R\u0003R\u0005R\u0426", - "\nR\u0003S\u0003S\u0003S\u0007S\u042b\nS\fS\u000eS\u042e\u000bS\u0003", - "S\u0003S\u0003T\u0003T\u0003T\u0003T\u0003T\u0003T\u0006T\u0438\nT\r", - "T\u000eT\u0439\u0003U\u0003U\u0003U\u0003U\u0003U\u0003U\u0005U\u0442", - "\nU\u0003V\u0003V\u0003W\u0003W\u0003X\u0003X\u0003Y\u0003Y\u0003Z\u0003", - "Z\u0003Z\u0003Z\u0005Z\u0450\nZ\u0003[\u0003[\u0003\\\u0003\\\u0003", - "\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003\\\u0003", - "\\\u0003\\\u0003\\\u0003\\\u0005\\\u0463\n\\\u0005\\\u0465\n\\\u0003", - "]\u0003]\u0003]\u0003]\u0003]\u0003^\u0003^\u0003^\u0007^\u046f\n^\f", - "^\u000e^\u0472\u000b^\u0003_\u0003_\u0005_\u0476\n_\u0003_\u0003_\u0005", - "_\u047a\n_\u0003`\u0003`\u0005`\u047e\n`\u0003`\u0003`\u0005`\u0482", - "\n`\u0003`\u0003`\u0003`\u0003`\u0003`\u0005`\u0489\n`\u0003`\u0003", - "`\u0003`\u0003`\u0005`\u048f\n`\u0003`\u0003`\u0003`\u0003`\u0003`\u0003", - "`\u0003`\u0003`\u0003`\u0003`\u0005`\u049b\n`\u0003a\u0003a\u0003a\u0007", - "a\u04a0\na\fa\u000ea\u04a3\u000ba\u0003a\u0005a\u04a6\na\u0003b\u0003", - "b\u0003b\u0005b\u04ab\nb\u0003b\u0007b\u04ae\nb\fb\u000eb\u04b1\u000b", - "b\u0003c\u0003c\u0005c\u04b5\nc\u0003d\u0003d\u0003d\u0003d\u0003d\u0005", - "d\u04bc\nd\u0003d\u0007d\u04bf\nd\fd\u000ed\u04c2\u000bd\u0003d\u0003", - "d\u0003d\u0005d\u04c7\nd\u0003d\u0005d\u04ca\nd\u0003d\u0003d\u0005", - "d\u04ce\nd\u0003e\u0003e\u0005e\u04d2\ne\u0003e\u0003e\u0003f\u0003", - "f\u0003f\u0005f\u04d9\nf\u0003g\u0003g\u0005g\u04dd\ng\u0003g\u0005", - "g\u04e0\ng\u0003h\u0003h\u0003h\u0003h\u0005h\u04e6\nh\u0003h\u0003", - "h\u0003h\u0005h\u04eb\nh\u0007h\u04ed\nh\fh\u000eh\u04f0\u000bh\u0003", - "h\u0003h\u0005h\u04f4\nh\u0003i\u0003i\u0003i\u0005i\u04f9\ni\u0005", - "i\u04fb\ni\u0003i\u0003i\u0003j\u0003j\u0003j\u0003j\u0003j\u0003j\u0007", - "j\u0505\nj\fj\u000ej\u0508\u000bj\u0003j\u0005j\u050b\nj\u0005j\u050d", - "\nj\u0003j\u0003j\u0003k\u0003k\u0003k\u0007k\u0514\nk\fk\u000ek\u0517", - "\u000bk\u0003k\u0005k\u051a\nk\u0003l\u0003l\u0005l\u051e\nl\u0003l", - "\u0005l\u0521\nl\u0003m\u0003m\u0005m\u0525\nm\u0003m\u0003m\u0005m", - "\u0529\nm\u0003m\u0003m\u0006m\u052d\nm\rm\u000em\u052e\u0003m\u0003", - "m\u0005m\u0533\nm\u0003m\u0006m\u0536\nm\rm\u000em\u0537\u0005m\u053a", - "\nm\u0003n\u0003n\u0005n\u053e\nn\u0003n\u0003n\u0003n\u0005n\u0543", - "\nn\u0003n\u0005n\u0546\nn\u0003o\u0003o\u0003o\u0007o\u054b\no\fo\u000e", - "o\u054e\u000bo\u0003p\u0003p\u0003p\u0003p\u0005p\u0554\np\u0003q\u0005", - "q\u0557\nq\u0003q\u0003q\u0003r\u0003r\u0005r\u055d\nr\u0003r\u0003", - "r\u0005r\u0561\nr\u0003r\u0003r\u0005r\u0565\nr\u0003r\u0003r\u0005", - "r\u0569\nr\u0003r\u0003r\u0005r\u056d\nr\u0003r\u0003r\u0005r\u0571", - "\nr\u0003r\u0003r\u0005r\u0575\nr\u0003r\u0003r\u0005r\u0579\nr\u0003", - "r\u0003r\u0005r\u057d\nr\u0003r\u0003r\u0005r\u0581\nr\u0003r\u0005", - "r\u0584\nr\u0003s\u0003s\u0003s\u0003s\u0003t\u0003t\u0003t\u0005t\u058d", - "\nt\u0003u\u0003u\u0003u\u0007u\u0592\nu\fu\u000eu\u0595\u000bu\u0003", - "u\u0003u\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0005v\u05a0", - "\nv\u0003v\u0005v\u05a3\nv\u0003w\u0003w\u0003w\u0003w\u0003w\u0003", - "w\u0003x\u0003x\u0007x\u05ad\nx\fx\u000ex\u05b0\u000bx\u0003x\u0003", - "x\u0003y\u0006y\u05b5\ny\ry\u000ey\u05b6\u0003y\u0006y\u05ba\ny\ry\u000e", - "y\u05bb\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0005z\u05c4\nz\u0003", - "z\u0003z\u0003z\u0003z\u0005z\u05ca\nz\u0003{\u0003{\u0003{\u0003{\u0005", - "{\u05d0\n{\u0003|\u0003|\u0003|\u0003|\u0003|\u0003|\u0003}\u0003}\u0003", - "}\u0003}\u0003}\u0003}\u0003}\u0003}\u0003~\u0003~\u0003~\u0005~\u05e3", - "\n~\u0003~\u0003~\u0005~\u05e7\n~\u0003~\u0003~\u0005~\u05eb\n~\u0003", - "~\u0003~\u0003~\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0005", - "\u007f\u05f4\n\u007f\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080", - "\u0003\u0080\u0005\u0080\u05fb\n\u0080\u0003\u0080\u0003\u0080\u0003", - "\u0080\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003", - "\u0081\u0005\u0081\u0606\n\u0081\u0005\u0081\u0608\n\u0081\u0003\u0082", - "\u0003\u0082\u0003\u0082\u0007\u0082\u060d\n\u0082\f\u0082\u000e\u0082", - "\u0610\u000b\u0082\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003", - "\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0005", - "\u0083\u061c\n\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083", - "\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083", - "\u0003\u0083\u0005\u0083\u0629\n\u0083\u0003\u0083\u0003\u0083\u0003", - "\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003", - "\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003", - "\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003", - "\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0005\u0083\u0644", - "\n\u0083\u0003\u0083\u0003\u0083\u0007\u0083\u0648\n\u0083\f\u0083\u000e", - "\u0083\u064b\u000b\u0083\u0003\u0084\u0003\u0084\u0003\u0085\u0003\u0085", - "\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0005\u0085", - "\u0656\n\u0085\u0005\u0085\u0658\n\u0085\u0003\u0086\u0003\u0086\u0003", - "\u0086\u0005\u0086\u065d\n\u0086\u0003\u0087\u0003\u0087\u0005\u0087", - "\u0661\n\u0087\u0003\u0088\u0003\u0088\u0003\u0088\u0003\u0088\u0003", - "\u0088\u0003\u0088\u0003\u0088\u0005\u0088\u066a\n\u0088\u0003\u0088", - "\u0003\u0088\u0003\u0088\u0003\u0088\u0003\u0088\u0005\u0088\u0671\n", - "\u0088\u0003\u0089\u0003\u0089\u0003\u008a\u0003\u008a\u0003\u008a\u0007", - "\u008a\u0678\n\u008a\f\u008a\u000e\u008a\u067b\u000b\u008a\u0003\u008a", - "\u0003\u008a\u0003\u008a\u0003\u008a\u0007\u008a\u0681\n\u008a\f\u008a", - "\u000e\u008a\u0684\u000b\u008a\u0007\u008a\u0686\n\u008a\f\u008a\u000e", - "\u008a\u0689\u000b\u008a\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b", - "\u0003\u008b\u0003\u008b\u0005\u008b\u0691\n\u008b\u0003\u008b\u0003", - "\u008b\u0003\u008b\u0003\u008b\u0006\u008b\u0697\n\u008b\r\u008b\u000e", - "\u008b\u0698\u0003\u008b\u0003\u008b\u0005\u008b\u069d\n\u008b\u0003", - "\u008c\u0003\u008c\u0003\u008c\u0007\u008c\u06a2\n\u008c\f\u008c\u000e", - "\u008c\u06a5\u000b\u008c\u0003\u008d\u0003\u008d\u0005\u008d\u06a9\n", - "\u008d\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008e\u0003\u008e\u0005", - "\u008e\u06b0\n\u008e\u0003\u008e\u0005\u008e\u06b3\n\u008e\u0003\u008f", - "\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f", - "\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f", - "\u0003\u008f\u0003\u008f\u0005\u008f\u06c4\n\u008f\u0003\u0090\u0003", - "\u0090\u0003\u0090\u0003\u0090\u0005\u0090\u06ca\n\u0090\u0003\u0090", - "\u0003\u0090\u0005\u0090\u06ce\n\u0090\u0003\u0090\u0003\u0090\u0003", - "\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0005", - "\u0090\u06d8\n\u0090\u0003\u0091\u0003\u0091\u0007\u0091\u06dc\n\u0091", - "\f\u0091\u000e\u0091\u06df\u000b\u0091\u0003\u0091\u0006\u0091\u06e2", - "\n\u0091\r\u0091\u000e\u0091\u06e3\u0003\u0092\u0003\u0092\u0003\u0092", - "\u0002\u0004\u0104\u0112\u0093\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012", - "\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@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\u0002\u0018\u0004\u0002HHMM\u0003\u0002\\]\u0005\u0002", - "FFIIKL\u0004\u0002\u001d\u001d \u0006\u0002WW``bbdd\u0003\u0002eh\u0006", - "\u0002\u0003\u0003\u000e\u000e\u0016\u0016\u001c\u001c\u0006\u0002\u0013", - "\u0013X[__ii\u0005\u0002,-0156\u0003\u0002jk\u0004\u0002\u009c\u009d", - "\u00a1\u00a1\u0003\u0002\u009a\u009b\u0004\u0002\u008c\u008d\u0093\u0094", - "\u0004\u0002\u0092\u0092\u0095\u0095\u0004\u0002\u008b\u008b\u00a2\u00ab", - "\u0003\u0002\u0098\u0099\u0005\u0002\u008e\u008f\u009a\u009c\u009e\u009e", - "\u0003\u0002\u0088\u0089\u0003\u0002\u0081\u0081\u0003\u0002\u00b3\u00b4", - "\u0004\u0002\u00ba\u00ba\u00bc\u00bc\n\u0002*15:SUWXZ_ccex\u007f\u007f", - "\u0002\u07ac\u0002\u0127\u0003\u0002\u0002\u0002\u0004\u0137\u0003\u0002", - "\u0002\u0002\u0006\u0139\u0003\u0002\u0002\u0002\b\u014d\u0003\u0002", - "\u0002\u0002\n\u0169\u0003\u0002\u0002\u0002\f\u017e\u0003\u0002\u0002", - "\u0002\u000e\u018c\u0003\u0002\u0002\u0002\u0010\u0196\u0003\u0002\u0002", - "\u0002\u0012\u01a1\u0003\u0002\u0002\u0002\u0014\u01c0\u0003\u0002\u0002", - "\u0002\u0016\u01c2\u0003\u0002\u0002\u0002\u0018\u01c6\u0003\u0002\u0002", - "\u0002\u001a\u01d1\u0003\u0002\u0002\u0002\u001c\u01d9\u0003\u0002\u0002", - "\u0002\u001e\u01e8\u0003\u0002\u0002\u0002 \u0204\u0003\u0002\u0002", - "\u0002\"\u020e\u0003\u0002\u0002\u0002$\u0210\u0003\u0002\u0002\u0002", - "&\u0225\u0003\u0002\u0002\u0002(\u0227\u0003\u0002\u0002\u0002*\u022e", - "\u0003\u0002\u0002\u0002,\u0232\u0003\u0002\u0002\u0002.\u0235\u0003", - "\u0002\u0002\u00020\u0239\u0003\u0002\u0002\u00022\u0249\u0003\u0002", - "\u0002\u00024\u024d\u0003\u0002\u0002\u00026\u0250\u0003\u0002\u0002", - "\u00028\u0254\u0003\u0002\u0002\u0002:\u0269\u0003\u0002\u0002\u0002", - "<\u026c\u0003\u0002\u0002\u0002>\u027c\u0003\u0002\u0002\u0002@\u027e", - "\u0003\u0002\u0002\u0002B\u028a\u0003\u0002\u0002\u0002D\u028c\u0003", - "\u0002\u0002\u0002F\u0294\u0003\u0002\u0002\u0002H\u029a\u0003\u0002", - "\u0002\u0002J\u02aa\u0003\u0002\u0002\u0002L\u02ba\u0003\u0002\u0002", - "\u0002N\u02bf\u0003\u0002\u0002\u0002P\u02d0\u0003\u0002\u0002\u0002", - "R\u02d4\u0003\u0002\u0002\u0002T\u02e8\u0003\u0002\u0002\u0002V\u02ea", - "\u0003\u0002\u0002\u0002X\u02fc\u0003\u0002\u0002\u0002Z\u02fe\u0003", - "\u0002\u0002\u0002\\\u030a\u0003\u0002\u0002\u0002^\u0311\u0003\u0002", - "\u0002\u0002`\u0319\u0003\u0002\u0002\u0002b\u031c\u0003\u0002\u0002", - "\u0002d\u0327\u0003\u0002\u0002\u0002f\u0331\u0003\u0002\u0002\u0002", - "h\u033f\u0003\u0002\u0002\u0002j\u0341\u0003\u0002\u0002\u0002l\u0346", - "\u0003\u0002\u0002\u0002n\u034b\u0003\u0002\u0002\u0002p\u0355\u0003", - "\u0002\u0002\u0002r\u0357\u0003\u0002\u0002\u0002t\u0363\u0003\u0002", - "\u0002\u0002v\u0369\u0003\u0002\u0002\u0002x\u036f\u0003\u0002\u0002", - "\u0002z\u0372\u0003\u0002\u0002\u0002|\u0375\u0003\u0002\u0002\u0002", - "~\u0379\u0003\u0002\u0002\u0002\u0080\u0385\u0003\u0002\u0002\u0002", - "\u0082\u038b\u0003\u0002\u0002\u0002\u0084\u038d\u0003\u0002\u0002\u0002", - "\u0086\u0393\u0003\u0002\u0002\u0002\u0088\u039f\u0003\u0002\u0002\u0002", - "\u008a\u03a1\u0003\u0002\u0002\u0002\u008c\u03ac\u0003\u0002\u0002\u0002", - "\u008e\u03af\u0003\u0002\u0002\u0002\u0090\u03be\u0003\u0002\u0002\u0002", - "\u0092\u03d4\u0003\u0002\u0002\u0002\u0094\u03d9\u0003\u0002\u0002\u0002", - "\u0096\u03e4\u0003\u0002\u0002\u0002\u0098\u03ed\u0003\u0002\u0002\u0002", - "\u009a\u03f9\u0003\u0002\u0002\u0002\u009c\u03fd\u0003\u0002\u0002\u0002", - "\u009e\u040b\u0003\u0002\u0002\u0002\u00a0\u0413\u0003\u0002\u0002\u0002", - "\u00a2\u0418\u0003\u0002\u0002\u0002\u00a4\u0427\u0003\u0002\u0002\u0002", - "\u00a6\u0437\u0003\u0002\u0002\u0002\u00a8\u0441\u0003\u0002\u0002\u0002", - "\u00aa\u0443\u0003\u0002\u0002\u0002\u00ac\u0445\u0003\u0002\u0002\u0002", - "\u00ae\u0447\u0003\u0002\u0002\u0002\u00b0\u0449\u0003\u0002\u0002\u0002", - "\u00b2\u044f\u0003\u0002\u0002\u0002\u00b4\u0451\u0003\u0002\u0002\u0002", - "\u00b6\u0464\u0003\u0002\u0002\u0002\u00b8\u0466\u0003\u0002\u0002\u0002", - "\u00ba\u046b\u0003\u0002\u0002\u0002\u00bc\u0479\u0003\u0002\u0002\u0002", - "\u00be\u049a\u0003\u0002\u0002\u0002\u00c0\u049c\u0003\u0002\u0002\u0002", - "\u00c2\u04a7\u0003\u0002\u0002\u0002\u00c4\u04b4\u0003\u0002\u0002\u0002", - "\u00c6\u04cd\u0003\u0002\u0002\u0002\u00c8\u04cf\u0003\u0002\u0002\u0002", - "\u00ca\u04d5\u0003\u0002\u0002\u0002\u00cc\u04da\u0003\u0002\u0002\u0002", - "\u00ce\u04e1\u0003\u0002\u0002\u0002\u00d0\u04f5\u0003\u0002\u0002\u0002", - "\u00d2\u04fe\u0003\u0002\u0002\u0002\u00d4\u0510\u0003\u0002\u0002\u0002", - "\u00d6\u0520\u0003\u0002\u0002\u0002\u00d8\u0539\u0003\u0002\u0002\u0002", - "\u00da\u0545\u0003\u0002\u0002\u0002\u00dc\u0547\u0003\u0002\u0002\u0002", - "\u00de\u0553\u0003\u0002\u0002\u0002\u00e0\u0556\u0003\u0002\u0002\u0002", - "\u00e2\u0583\u0003\u0002\u0002\u0002\u00e4\u0585\u0003\u0002\u0002\u0002", - "\u00e6\u0589\u0003\u0002\u0002\u0002\u00e8\u058e\u0003\u0002\u0002\u0002", - "\u00ea\u05a2\u0003\u0002\u0002\u0002\u00ec\u05a4\u0003\u0002\u0002\u0002", - "\u00ee\u05aa\u0003\u0002\u0002\u0002\u00f0\u05b4\u0003\u0002\u0002\u0002", - "\u00f2\u05c9\u0003\u0002\u0002\u0002\u00f4\u05cf\u0003\u0002\u0002\u0002", - "\u00f6\u05d1\u0003\u0002\u0002\u0002\u00f8\u05d7\u0003\u0002\u0002\u0002", - "\u00fa\u05df\u0003\u0002\u0002\u0002\u00fc\u05f3\u0003\u0002\u0002\u0002", - "\u00fe\u05f5\u0003\u0002\u0002\u0002\u0100\u0607\u0003\u0002\u0002\u0002", - "\u0102\u0609\u0003\u0002\u0002\u0002\u0104\u061b\u0003\u0002\u0002\u0002", - "\u0106\u064c\u0003\u0002\u0002\u0002\u0108\u0657\u0003\u0002\u0002\u0002", - "\u010a\u065c\u0003\u0002\u0002\u0002\u010c\u0660\u0003\u0002\u0002\u0002", - "\u010e\u0670\u0003\u0002\u0002\u0002\u0110\u0672\u0003\u0002\u0002\u0002", - "\u0112\u0674\u0003\u0002\u0002\u0002\u0114\u069c\u0003\u0002\u0002\u0002", - "\u0116\u069e\u0003\u0002\u0002\u0002\u0118\u06a8\u0003\u0002\u0002\u0002", - "\u011a\u06aa\u0003\u0002\u0002\u0002\u011c\u06c3\u0003\u0002\u0002\u0002", - "\u011e\u06d7\u0003\u0002\u0002\u0002\u0120\u06e1\u0003\u0002\u0002\u0002", - "\u0122\u06e5\u0003\u0002\u0002\u0002\u0124\u0126\u0005\u0004\u0003\u0002", - "\u0125\u0124\u0003\u0002\u0002\u0002\u0126\u0129\u0003\u0002\u0002\u0002", - "\u0127\u0125\u0003\u0002\u0002\u0002\u0127\u0128\u0003\u0002\u0002\u0002", - "\u0128\u012a\u0003\u0002\u0002\u0002\u0129\u0127\u0003\u0002\u0002\u0002", - "\u012a\u012b\u0007\u0002\u0002\u0003\u012b\u0003\u0003\u0002\u0002\u0002", - "\u012c\u0138\u0005\u0006\u0004\u0002\u012d\u0138\u0005z>\u0002\u012e", - "\u0138\u0005\u008cG\u0002\u012f\u0138\u0005\b\u0005\u0002\u0130\u0138", - "\u0005\f\u0007\u0002\u0131\u0138\u0005\n\u0006\u0002\u0132\u0138\u0005", - "\u000e\b\u0002\u0133\u0138\u0005\u0012\n\u0002\u0134\u0138\u0005\u0016", - "\f\u0002\u0135\u0138\u0005\u0018\r\u0002\u0136\u0138\u0005|?\u0002\u0137", - "\u012c\u0003\u0002\u0002\u0002\u0137\u012d\u0003\u0002\u0002\u0002\u0137", - "\u012e\u0003\u0002\u0002\u0002\u0137\u012f\u0003\u0002\u0002\u0002\u0137", - "\u0130\u0003\u0002\u0002\u0002\u0137\u0131\u0003\u0002\u0002\u0002\u0137", - "\u0132\u0003\u0002\u0002\u0002\u0137\u0133\u0003\u0002\u0002\u0002\u0137", - "\u0134\u0003\u0002\u0002\u0002\u0137\u0135\u0003\u0002\u0002\u0002\u0137", - "\u0136\u0003\u0002\u0002\u0002\u0138\u0005\u0003\u0002\u0002\u0002\u0139", - "\u014a\u0007E\u0002\u0002\u013a\u013b\u0005\u0122\u0092\u0002\u013b", - "\u013c\u0007\u0086\u0002\u0002\u013c\u014b\u0003\u0002\u0002\u0002\u013d", - "\u013f\u0007\u008d\u0002\u0002\u013e\u0140\u0005\u0122\u0092\u0002\u013f", - "\u013e\u0003\u0002\u0002\u0002\u013f\u0140\u0003\u0002\u0002\u0002\u0140", - "\u0142\u0003\u0002\u0002\u0002\u0141\u0143\u0007\u009d\u0002\u0002\u0142", - "\u0141\u0003\u0002\u0002\u0002\u0142\u0143\u0003\u0002\u0002\u0002\u0143", - "\u0144\u0003\u0002\u0002\u0002\u0144\u0145\u0005\u0122\u0092\u0002\u0145", - "\u0146\u0007\u0088\u0002\u0002\u0146\u0147\u0007\u007f\u0002\u0002\u0147", - "\u0148\u0007\u008c\u0002\u0002\u0148\u014b\u0003\u0002\u0002\u0002\u0149", - "\u014b\u0005\u0120\u0091\u0002\u014a\u013a\u0003\u0002\u0002\u0002\u014a", - "\u013d\u0003\u0002\u0002\u0002\u014a\u0149\u0003\u0002\u0002\u0002\u014b", - "\u0007\u0003\u0002\u0002\u0002\u014c\u014e\u0007x\u0002\u0002\u014d", - "\u014c\u0003\u0002\u0002\u0002\u014d\u014e\u0003\u0002\u0002\u0002\u014e", - "\u0152\u0003\u0002\u0002\u0002\u014f\u0151\u0005\u00ceh\u0002\u0150", - "\u014f\u0003\u0002\u0002\u0002\u0151\u0154\u0003\u0002\u0002\u0002\u0152", - "\u0150\u0003\u0002\u0002\u0002\u0152\u0153\u0003\u0002\u0002\u0002\u0153", - "\u0155\u0003\u0002\u0002\u0002\u0154\u0152\u0003\u0002\u0002\u0002\u0155", - "\u0156\u0007D\u0002\u0002\u0156\u0159\u0005\u0010\t\u0002\u0157\u0158", - "\u0007\u0091\u0002\u0002\u0158\u015a\u0005\u0122\u0092\u0002\u0159\u0157", - "\u0003\u0002\u0002\u0002\u0159\u015a\u0003\u0002\u0002\u0002\u015a\u015f", - "\u0003\u0002\u0002\u0002\u015b\u015c\u0007\u008d\u0002\u0002\u015c\u015d", - "\u0005\u001a\u000e\u0002\u015d\u015e\u0007\u008c\u0002\u0002\u015e\u0160", - "\u0003\u0002\u0002\u0002\u015f\u015b\u0003\u0002\u0002\u0002\u015f\u0160", - "\u0003\u0002\u0002\u0002\u0160\u0162\u0003\u0002\u0002\u0002\u0161\u0163", - "\u0005$\u0013\u0002\u0162\u0161\u0003\u0002\u0002\u0002\u0162\u0163", - "\u0003\u0002\u0002\u0002\u0163\u0165\u0003\u0002\u0002\u0002\u0164\u0166", - "\u0005*\u0016\u0002\u0165\u0164\u0003\u0002\u0002\u0002\u0165\u0166", - "\u0003\u0002\u0002\u0002\u0166\u0167\u0003\u0002\u0002\u0002\u0167\u0168", - "\u0007A\u0002\u0002\u0168\t\u0003\u0002\u0002\u0002\u0169\u016a\u0007", - "D\u0002\u0002\u016a\u016b\u0005\u0010\t\u0002\u016b\u016d\u0007\u0080", - "\u0002\u0002\u016c\u016e\u0005\u0122\u0092\u0002\u016d\u016c\u0003\u0002", - "\u0002\u0002\u016d\u016e\u0003\u0002\u0002\u0002\u016e\u016f\u0003\u0002", - "\u0002\u0002\u016f\u0174\u0007\u0081\u0002\u0002\u0170\u0171\u0007\u008d", - "\u0002\u0002\u0171\u0172\u0005\u001a\u000e\u0002\u0172\u0173\u0007\u008c", - "\u0002\u0002\u0173\u0175\u0003\u0002\u0002\u0002\u0174\u0170\u0003\u0002", - "\u0002\u0002\u0174\u0175\u0003\u0002\u0002\u0002\u0175\u0177\u0003\u0002", - "\u0002\u0002\u0176\u0178\u0005$\u0013\u0002\u0177\u0176\u0003\u0002", - "\u0002\u0002\u0177\u0178\u0003\u0002\u0002\u0002\u0178\u017a\u0003\u0002", - "\u0002\u0002\u0179\u017b\u0005*\u0016\u0002\u017a\u0179\u0003\u0002", - "\u0002\u0002\u017a\u017b\u0003\u0002\u0002\u0002\u017b\u017c\u0003\u0002", - "\u0002\u0002\u017c\u017d\u0007A\u0002\u0002\u017d\u000b\u0003\u0002", - "\u0002\u0002\u017e\u017f\u0007C\u0002\u0002\u017f\u0182\u0005\u0010", - "\t\u0002\u0180\u0181\u0007\u0091\u0002\u0002\u0181\u0183\u0005\u0122", - "\u0092\u0002\u0182\u0180\u0003\u0002\u0002\u0002\u0182\u0183\u0003\u0002", - "\u0002\u0002\u0183\u0185\u0003\u0002\u0002\u0002\u0184\u0186\u0005$", - "\u0013\u0002\u0185\u0184\u0003\u0002\u0002\u0002\u0185\u0186\u0003\u0002", - "\u0002\u0002\u0186\u0188\u0003\u0002\u0002\u0002\u0187\u0189\u00052", - "\u001a\u0002\u0188\u0187\u0003\u0002\u0002\u0002\u0188\u0189\u0003\u0002", - "\u0002\u0002\u0189\u018a\u0003\u0002\u0002\u0002\u018a\u018b\u0007A", - "\u0002\u0002\u018b\r\u0003\u0002\u0002\u0002\u018c\u018d\u0007C\u0002", - "\u0002\u018d\u018e\u0005\u0010\t\u0002\u018e\u018f\u0007\u0080\u0002", - "\u0002\u018f\u0190\u0005\u0122\u0092\u0002\u0190\u0192\u0007\u0081\u0002", - "\u0002\u0191\u0193\u00052\u001a\u0002\u0192\u0191\u0003\u0002\u0002", - "\u0002\u0192\u0193\u0003\u0002\u0002\u0002\u0193\u0194\u0003\u0002\u0002", - "\u0002\u0194\u0195\u0007A\u0002\u0002\u0195\u000f\u0003\u0002\u0002", - "\u0002\u0196\u019c\u0005\u0122\u0092\u0002\u0197\u0198\u0007\u008d\u0002", - "\u0002\u0198\u0199\u0005\u001a\u000e\u0002\u0199\u019a\u0007\u008c\u0002", - "\u0002\u019a\u019d\u0003\u0002\u0002\u0002\u019b\u019d\u0005J&\u0002", - "\u019c\u0197\u0003\u0002\u0002\u0002\u019c\u019b\u0003\u0002\u0002\u0002", - "\u019c\u019d\u0003\u0002\u0002\u0002\u019d\u0011\u0003\u0002\u0002\u0002", - "\u019e\u01a0\u0005\u00ceh\u0002\u019f\u019e\u0003\u0002\u0002\u0002", - "\u01a0\u01a3\u0003\u0002\u0002\u0002\u01a1\u019f\u0003\u0002\u0002\u0002", - "\u01a1\u01a2\u0003\u0002\u0002\u0002\u01a2\u01a4\u0003\u0002\u0002\u0002", - "\u01a3\u01a1\u0003\u0002\u0002\u0002\u01a4\u01a5\u0007G\u0002\u0002", - "\u01a5\u01aa\u0005\"\u0012\u0002\u01a6\u01a7\u0007\u008d\u0002\u0002", - "\u01a7\u01a8\u0005\u001a\u000e\u0002\u01a8\u01a9\u0007\u008c\u0002\u0002", - "\u01a9\u01ab\u0003\u0002\u0002\u0002\u01aa\u01a6\u0003\u0002\u0002\u0002", - "\u01aa\u01ab\u0003\u0002\u0002\u0002\u01ab\u01af\u0003\u0002\u0002\u0002", - "\u01ac\u01ae\u0005\u0014\u000b\u0002\u01ad\u01ac\u0003\u0002\u0002\u0002", - "\u01ae\u01b1\u0003\u0002\u0002\u0002\u01af\u01ad\u0003\u0002\u0002\u0002", - "\u01af\u01b0\u0003\u0002\u0002\u0002\u01b0\u01b2\u0003\u0002\u0002\u0002", - "\u01b1\u01af\u0003\u0002\u0002\u0002\u01b2\u01b3\u0007A\u0002\u0002", - "\u01b3\u0013\u0003\u0002\u0002\u0002\u01b4\u01b8\t\u0002\u0002\u0002", - "\u01b5\u01b7\u0005*\u0016\u0002\u01b6\u01b5\u0003\u0002\u0002\u0002", - "\u01b7\u01ba\u0003\u0002\u0002\u0002\u01b8\u01b6\u0003\u0002\u0002\u0002", - "\u01b8\u01b9\u0003\u0002\u0002\u0002\u01b9\u01c1\u0003\u0002\u0002\u0002", - "\u01ba\u01b8\u0003\u0002\u0002\u0002\u01bb\u01bd\u0005*\u0016\u0002", - "\u01bc\u01bb\u0003\u0002\u0002\u0002\u01bd\u01be\u0003\u0002\u0002\u0002", - "\u01be\u01bc\u0003\u0002\u0002\u0002\u01be\u01bf\u0003\u0002\u0002\u0002", - "\u01bf\u01c1\u0003\u0002\u0002\u0002\u01c0\u01b4\u0003\u0002\u0002\u0002", - "\u01c0\u01bc\u0003\u0002\u0002\u0002\u01c1\u0015\u0003\u0002\u0002\u0002", - "\u01c2\u01c3\u0007G\u0002\u0002\u01c3\u01c4\u0005\u001a\u000e\u0002", - "\u01c4\u01c5\u0007\u0086\u0002\u0002\u01c5\u0017\u0003\u0002\u0002\u0002", - "\u01c6\u01c7\u0007>\u0002\u0002\u01c7\u01cc\u0005\u0122\u0092\u0002", - "\u01c8\u01c9\u0007\u0087\u0002\u0002\u01c9\u01cb\u0005\u0122\u0092\u0002", - "\u01ca\u01c8\u0003\u0002\u0002\u0002\u01cb\u01ce\u0003\u0002\u0002\u0002", - "\u01cc\u01ca\u0003\u0002\u0002\u0002\u01cc\u01cd\u0003\u0002\u0002\u0002", - "\u01cd\u01cf\u0003\u0002\u0002\u0002\u01ce\u01cc\u0003\u0002\u0002\u0002", - "\u01cf\u01d0\u0007\u0086\u0002\u0002\u01d0\u0019\u0003\u0002\u0002\u0002", - "\u01d1\u01d6\u0005\"\u0012\u0002\u01d2\u01d3\u0007\u0087\u0002\u0002", - "\u01d3\u01d5\u0005\"\u0012\u0002\u01d4\u01d2\u0003\u0002\u0002\u0002", - "\u01d5\u01d8\u0003\u0002\u0002\u0002\u01d6\u01d4\u0003\u0002\u0002\u0002", - "\u01d6\u01d7\u0003\u0002\u0002\u0002\u01d7\u001b\u0003\u0002\u0002\u0002", - "\u01d8\u01d6\u0003\u0002\u0002\u0002\u01d9\u01de\u0007J\u0002\u0002", - "\u01da\u01db\u0007\u0080\u0002\u0002\u01db\u01dc\u0005\u001e\u0010\u0002", - "\u01dc\u01dd\u0007\u0081\u0002\u0002\u01dd\u01df\u0003\u0002\u0002\u0002", - "\u01de\u01da\u0003\u0002\u0002\u0002\u01de\u01df\u0003\u0002\u0002\u0002", - "\u01df\u01e1\u0003\u0002\u0002\u0002\u01e0\u01e2\u0005\u00a8U\u0002", - "\u01e1\u01e0\u0003\u0002\u0002\u0002\u01e1\u01e2\u0003\u0002\u0002\u0002", - "\u01e2\u01e4\u0003\u0002\u0002\u0002\u01e3\u01e5\u0007w\u0002\u0002", - "\u01e4\u01e3\u0003\u0002\u0002\u0002\u01e4\u01e5\u0003\u0002\u0002\u0002", - "\u01e5\u01e6\u0003\u0002\u0002\u0002\u01e6\u01e7\u0005\u00a4S\u0002", - "\u01e7\u001d\u0003\u0002\u0002\u0002\u01e8\u01ed\u0005 \u0011\u0002", - "\u01e9\u01ea\u0007\u0087\u0002\u0002\u01ea\u01ec\u0005 \u0011\u0002", - "\u01eb\u01e9\u0003\u0002\u0002\u0002\u01ec\u01ef\u0003\u0002\u0002\u0002", - "\u01ed\u01eb\u0003\u0002\u0002\u0002\u01ed\u01ee\u0003\u0002\u0002\u0002", - "\u01ee\u001f\u0003\u0002\u0002\u0002\u01ef\u01ed\u0003\u0002\u0002\u0002", - "\u01f0\u0205\u0007S\u0002\u0002\u01f1\u0205\u0007T\u0002\u0002\u01f2", - "\u0205\u0007p\u0002\u0002\u01f3\u0205\u0007s\u0002\u0002\u01f4\u0205", - "\u0007U\u0002\u0002\u01f5\u0205\u0007l\u0002\u0002\u01f6\u0205\u0007", - "t\u0002\u0002\u01f7\u0205\u0007m\u0002\u0002\u01f8\u0205\u0007q\u0002", - "\u0002\u01f9\u0205\u0007r\u0002\u0002\u01fa\u01fb\u0007n\u0002\u0002", - "\u01fb\u01fc\u0007\u008b\u0002\u0002\u01fc\u0205\u0005\u0122\u0092\u0002", - "\u01fd\u01fe\u0007o\u0002\u0002\u01fe\u01ff\u0007\u008b\u0002\u0002", - "\u01ff\u0200\u0005\u0122\u0092\u0002\u0200\u0201\u0007\u0091\u0002\u0002", - "\u0201\u0205\u0003\u0002\u0002\u0002\u0202\u0205\u0005\u00acW\u0002", - "\u0203\u0205\u0005\u0122\u0092\u0002\u0204\u01f0\u0003\u0002\u0002\u0002", - "\u0204\u01f1\u0003\u0002\u0002\u0002\u0204\u01f2\u0003\u0002\u0002\u0002", - "\u0204\u01f3\u0003\u0002\u0002\u0002\u0204\u01f4\u0003\u0002\u0002\u0002", - "\u0204\u01f5\u0003\u0002\u0002\u0002\u0204\u01f6\u0003\u0002\u0002\u0002", - "\u0204\u01f7\u0003\u0002\u0002\u0002\u0204\u01f8\u0003\u0002\u0002\u0002", - "\u0204\u01f9\u0003\u0002\u0002\u0002\u0204\u01fa\u0003\u0002\u0002\u0002", - "\u0204\u01fd\u0003\u0002\u0002\u0002\u0204\u0202\u0003\u0002\u0002\u0002", - "\u0204\u0203\u0003\u0002\u0002\u0002\u0205!\u0003\u0002\u0002\u0002", - "\u0206\u0207\u0007\u008d\u0002\u0002\u0207\u0208\u0005\u001a\u000e\u0002", - "\u0208\u0209\u0007\u008c\u0002\u0002\u0209\u020f\u0003\u0002\u0002\u0002", - "\u020a\u020c\t\u0003\u0002\u0002\u020b\u020a\u0003\u0002\u0002\u0002", - "\u020b\u020c\u0003\u0002\u0002\u0002\u020c\u020d\u0003\u0002\u0002\u0002", - "\u020d\u020f\u0005\u0122\u0092\u0002\u020e\u0206\u0003\u0002\u0002\u0002", - "\u020e\u020b\u0003\u0002\u0002\u0002\u020f#\u0003\u0002\u0002\u0002", - "\u0210\u0214\u0007\u0082\u0002\u0002\u0211\u0213\u0005&\u0014\u0002", - "\u0212\u0211\u0003\u0002\u0002\u0002\u0213\u0216\u0003\u0002\u0002\u0002", - "\u0214\u0212\u0003\u0002\u0002\u0002\u0214\u0215\u0003\u0002\u0002\u0002", - "\u0215\u0217\u0003\u0002\u0002\u0002\u0216\u0214\u0003\u0002\u0002\u0002", - "\u0217\u0218\u0007\u0083\u0002\u0002\u0218%\u0003\u0002\u0002\u0002", - "\u0219\u021d\u0005(\u0015\u0002\u021a\u021c\u0005\u00a4S\u0002\u021b", - "\u021a\u0003\u0002\u0002\u0002\u021c\u021f\u0003\u0002\u0002\u0002\u021d", - "\u021b\u0003\u0002\u0002\u0002\u021d\u021e\u0003\u0002\u0002\u0002\u021e", - "\u0226\u0003\u0002\u0002\u0002\u021f\u021d\u0003\u0002\u0002\u0002\u0220", - "\u0222\u0005\u00a4S\u0002\u0221\u0220\u0003\u0002\u0002\u0002\u0222", - "\u0223\u0003\u0002\u0002\u0002\u0223\u0221\u0003\u0002\u0002\u0002\u0223", - "\u0224\u0003\u0002\u0002\u0002\u0224\u0226\u0003\u0002\u0002\u0002\u0225", - "\u0219\u0003\u0002\u0002\u0002\u0225\u0221\u0003\u0002\u0002\u0002\u0226", - "\'\u0003\u0002\u0002\u0002\u0227\u0228\t\u0004\u0002\u0002\u0228)\u0003", - "\u0002\u0002\u0002\u0229\u022f\u0005\u008cG\u0002\u022a\u022f\u0005", - ",\u0017\u0002\u022b\u022f\u0005.\u0018\u0002\u022c\u022f\u0005\u001c", - "\u000f\u0002\u022d\u022f\u0005z>\u0002\u022e\u0229\u0003\u0002\u0002", - "\u0002\u022e\u022a\u0003\u0002\u0002\u0002\u022e\u022b\u0003\u0002\u0002", - "\u0002\u022e\u022c\u0003\u0002\u0002\u0002\u022e\u022d\u0003\u0002\u0002", - "\u0002\u022f\u0230\u0003\u0002\u0002\u0002\u0230\u022e\u0003\u0002\u0002", - "\u0002\u0230\u0231\u0003\u0002\u0002\u0002\u0231+\u0003\u0002\u0002", - "\u0002\u0232\u0233\u0007\u009a\u0002\u0002\u0233\u0234\u00050\u0019", - "\u0002\u0234-\u0003\u0002\u0002\u0002\u0235\u0236\u0007\u009b\u0002", - "\u0002\u0236\u0237\u00050\u0019\u0002\u0237/\u0003\u0002\u0002\u0002", - "\u0238\u023a\u0005@!\u0002\u0239\u0238\u0003\u0002\u0002\u0002\u0239", - "\u023a\u0003\u0002\u0002\u0002\u023a\u023b\u0003\u0002\u0002\u0002\u023b", - "\u023f\u0005:\u001e\u0002\u023c\u023e\u0005\u00ceh\u0002\u023d\u023c", - "\u0003\u0002\u0002\u0002\u023e\u0241\u0003\u0002\u0002\u0002\u023f\u023d", - "\u0003\u0002\u0002\u0002\u023f\u0240\u0003\u0002\u0002\u0002\u0240\u0242", - "\u0003\u0002\u0002\u0002\u0241\u023f\u0003\u0002\u0002\u0002\u0242\u0243", - "\u0007\u0086\u0002\u0002\u02431\u0003\u0002\u0002\u0002\u0244\u024a", - "\u0005|?\u0002\u0245\u024a\u0005\u008cG\u0002\u0246\u024a\u00054\u001b", - "\u0002\u0247\u024a\u00056\u001c\u0002\u0248\u024a\u0005B\"\u0002\u0249", - "\u0244\u0003\u0002\u0002\u0002\u0249\u0245\u0003\u0002\u0002\u0002\u0249", - "\u0246\u0003\u0002\u0002\u0002\u0249\u0247\u0003\u0002\u0002\u0002\u0249", - "\u0248\u0003\u0002\u0002\u0002\u024a\u024b\u0003\u0002\u0002\u0002\u024b", - "\u0249\u0003\u0002\u0002\u0002\u024b\u024c\u0003\u0002\u0002\u0002\u024c", - "3\u0003\u0002\u0002\u0002\u024d\u024e\u0007\u009a\u0002\u0002\u024e", - "\u024f\u00058\u001d\u0002\u024f5\u0003\u0002\u0002\u0002\u0250\u0251", - "\u0007\u009b\u0002\u0002\u0251\u0252\u00058\u001d\u0002\u02527\u0003", - "\u0002\u0002\u0002\u0253\u0255\u0005@!\u0002\u0254\u0253\u0003\u0002", - "\u0002\u0002\u0254\u0255\u0003\u0002\u0002\u0002\u0255\u0256\u0003\u0002", - "\u0002\u0002\u0256\u0258\u0005:\u001e\u0002\u0257\u0259\u0005\u009e", - "P\u0002\u0258\u0257\u0003\u0002\u0002\u0002\u0258\u0259\u0003\u0002", - "\u0002\u0002\u0259\u025b\u0003\u0002\u0002\u0002\u025a\u025c\u0007\u0086", - "\u0002\u0002\u025b\u025a\u0003\u0002\u0002\u0002\u025b\u025c\u0003\u0002", - "\u0002\u0002\u025c\u025d\u0003\u0002\u0002\u0002\u025d\u025e\u0005\u00e8", - "u\u0002\u025e9\u0003\u0002\u0002\u0002\u025f\u026a\u0005> \u0002\u0260", - "\u0262\u0005<\u001f\u0002\u0261\u0260\u0003\u0002\u0002\u0002\u0262", - "\u0263\u0003\u0002\u0002\u0002\u0263\u0261\u0003\u0002\u0002\u0002\u0263", - "\u0264\u0003\u0002\u0002\u0002\u0264\u0267\u0003\u0002\u0002\u0002\u0265", - "\u0266\u0007\u0087\u0002\u0002\u0266\u0268\u0007\u00ac\u0002\u0002\u0267", - "\u0265\u0003\u0002\u0002\u0002\u0267\u0268\u0003\u0002\u0002\u0002\u0268", - "\u026a\u0003\u0002\u0002\u0002\u0269\u025f\u0003\u0002\u0002\u0002\u0269", - "\u0261\u0003\u0002\u0002\u0002\u026a;\u0003\u0002\u0002\u0002\u026b", - "\u026d\u0005> \u0002\u026c\u026b\u0003\u0002\u0002\u0002\u026c\u026d", - "\u0003\u0002\u0002\u0002\u026d\u026e\u0003\u0002\u0002\u0002\u026e\u0272", - "\u0007\u0091\u0002\u0002\u026f\u0271\u0005@!\u0002\u0270\u026f\u0003", - "\u0002\u0002\u0002\u0271\u0274\u0003\u0002\u0002\u0002\u0272\u0270\u0003", - "\u0002\u0002\u0002\u0272\u0273\u0003\u0002\u0002\u0002\u0273\u0276\u0003", - "\u0002\u0002\u0002\u0274\u0272\u0003\u0002\u0002\u0002\u0275\u0277\u0005", - "\u00aaV\u0002\u0276\u0275\u0003\u0002\u0002\u0002\u0276\u0277\u0003", - "\u0002\u0002\u0002\u0277\u0278\u0003\u0002\u0002\u0002\u0278\u0279\u0005", - "\u0122\u0092\u0002\u0279=\u0003\u0002\u0002\u0002\u027a\u027d\u0005", - "\u0122\u0092\u0002\u027b\u027d\u0007\u0018\u0002\u0002\u027c\u027a\u0003", - "\u0002\u0002\u0002\u027c\u027b\u0003\u0002\u0002\u0002\u027d?\u0003", - "\u0002\u0002\u0002\u027e\u027f\u0007\u0080\u0002\u0002\u027f\u0280\u0005", - "\u00d6l\u0002\u0280\u0281\u0007\u0081\u0002\u0002\u0281A\u0003\u0002", - "\u0002\u0002\u0282\u0283\u0007P\u0002\u0002\u0283\u0284\u0005D#\u0002", - "\u0284\u0285\u0007\u0086\u0002\u0002\u0285\u028b\u0003\u0002\u0002\u0002", - "\u0286\u0287\u0007?\u0002\u0002\u0287\u0288\u0005D#\u0002\u0288\u0289", - "\u0007\u0086\u0002\u0002\u0289\u028b\u0003\u0002\u0002\u0002\u028a\u0282", - "\u0003\u0002\u0002\u0002\u028a\u0286\u0003\u0002\u0002\u0002\u028bC", - "\u0003\u0002\u0002\u0002\u028c\u0291\u0005F$\u0002\u028d\u028e\u0007", - "\u0087\u0002\u0002\u028e\u0290\u0005F$\u0002\u028f\u028d\u0003\u0002", - "\u0002\u0002\u0290\u0293\u0003\u0002\u0002\u0002\u0291\u028f\u0003\u0002", - "\u0002\u0002\u0291\u0292\u0003\u0002\u0002\u0002\u0292E\u0003\u0002", - "\u0002\u0002\u0293\u0291\u0003\u0002\u0002\u0002\u0294\u0297\u0005\u0122", - "\u0092\u0002\u0295\u0296\u0007\u008b\u0002\u0002\u0296\u0298\u0005\u0122", - "\u0092\u0002\u0297\u0295\u0003\u0002\u0002\u0002\u0297\u0298\u0003\u0002", - "\u0002\u0002\u0298G\u0003\u0002\u0002\u0002\u0299\u029b\u0005\u00ac", - "W\u0002\u029a\u0299\u0003\u0002\u0002\u0002\u029a\u029b\u0003\u0002", - "\u0002\u0002\u029b\u029c\u0003\u0002\u0002\u0002\u029c\u029e\u0005\u00b6", - "\\\u0002\u029d\u029f\u0005\u00acW\u0002\u029e\u029d\u0003\u0002\u0002", - "\u0002\u029e\u029f\u0003\u0002\u0002\u0002\u029f\u02a0\u0003\u0002\u0002", - "\u0002\u02a0\u02a1\u0007\u0080\u0002\u0002\u02a1\u02a4\u0007\u00a0\u0002", - "\u0002\u02a2\u02a5\u0005\u00acW\u0002\u02a3\u02a5\u0005\u00b6\\\u0002", - "\u02a4\u02a2\u0003\u0002\u0002\u0002\u02a4\u02a3\u0003\u0002\u0002\u0002", - "\u02a4\u02a5\u0003\u0002\u0002\u0002\u02a5\u02a6\u0003\u0002\u0002\u0002", - "\u02a6\u02a8\u0007\u0081\u0002\u0002\u02a7\u02a9\u0005V,\u0002\u02a8", - "\u02a7\u0003\u0002\u0002\u0002\u02a8\u02a9\u0003\u0002\u0002\u0002\u02a9", - "I\u0003\u0002\u0002\u0002\u02aa\u02b3\u0007\u008d\u0002\u0002\u02ab", - "\u02b0\u0005L\'\u0002\u02ac\u02ad\u0007\u0087\u0002\u0002\u02ad\u02af", - "\u0005L\'\u0002\u02ae\u02ac\u0003\u0002\u0002\u0002\u02af\u02b2\u0003", - "\u0002\u0002\u0002\u02b0\u02ae\u0003\u0002\u0002\u0002\u02b0\u02b1\u0003", - "\u0002\u0002\u0002\u02b1\u02b4\u0003\u0002\u0002\u0002\u02b2\u02b0\u0003", - "\u0002\u0002\u0002\u02b3\u02ab\u0003\u0002\u0002\u0002\u02b3\u02b4\u0003", - "\u0002\u0002\u0002\u02b4\u02b5\u0003\u0002\u0002\u0002\u02b5\u02b6\u0007", - "\u008c\u0002\u0002\u02b6K\u0003\u0002\u0002\u0002\u02b7\u02b9\u0005", - "\u00b0Y\u0002\u02b8\u02b7\u0003\u0002\u0002\u0002\u02b9\u02bc\u0003", - "\u0002\u0002\u0002\u02ba\u02b8\u0003\u0002\u0002\u0002\u02ba\u02bb\u0003", - "\u0002\u0002\u0002\u02bb\u02bd\u0003\u0002\u0002\u0002\u02bc\u02ba\u0003", - "\u0002\u0002\u0002\u02bd\u02be\u0005\u00b6\\\u0002\u02beM\u0003\u0002", - "\u0002\u0002\u02bf\u02c0\u0007\u008a\u0002\u0002\u02c0\u02cc\u0007\u0082", - "\u0002\u0002\u02c1\u02c6\u0005P)\u0002\u02c2\u02c3\u0007\u0087\u0002", - "\u0002\u02c3\u02c5\u0005P)\u0002\u02c4\u02c2\u0003\u0002\u0002\u0002", - "\u02c5\u02c8\u0003\u0002\u0002\u0002\u02c6\u02c4\u0003\u0002\u0002\u0002", - "\u02c6\u02c7\u0003\u0002\u0002\u0002\u02c7\u02ca\u0003\u0002\u0002\u0002", - "\u02c8\u02c6\u0003\u0002\u0002\u0002\u02c9\u02cb\u0007\u0087\u0002\u0002", - "\u02ca\u02c9\u0003\u0002\u0002\u0002\u02ca\u02cb\u0003\u0002\u0002\u0002", - "\u02cb\u02cd\u0003\u0002\u0002\u0002\u02cc\u02c1\u0003\u0002\u0002\u0002", - "\u02cc\u02cd\u0003\u0002\u0002\u0002\u02cd\u02ce\u0003\u0002\u0002\u0002", - "\u02ce\u02cf\u0007\u0083\u0002\u0002\u02cfO\u0003\u0002\u0002\u0002", - "\u02d0\u02d1\u0005\u0108\u0085\u0002\u02d1\u02d2\u0007\u0091\u0002\u0002", - "\u02d2\u02d3\u0005\u0104\u0083\u0002\u02d3Q\u0003\u0002\u0002\u0002", - "\u02d4\u02d5\u0007\u008a\u0002\u0002\u02d5\u02da\u0007\u0084\u0002\u0002", - "\u02d6\u02d8\u0005\u0102\u0082\u0002\u02d7\u02d9\u0007\u0087\u0002\u0002", - "\u02d8\u02d7\u0003\u0002\u0002\u0002\u02d8\u02d9\u0003\u0002\u0002\u0002", - "\u02d9\u02db\u0003\u0002\u0002\u0002\u02da\u02d6\u0003\u0002\u0002\u0002", - "\u02da\u02db\u0003\u0002\u0002\u0002\u02db\u02dc\u0003\u0002\u0002\u0002", - "\u02dc\u02dd\u0007\u0085\u0002\u0002\u02ddS\u0003\u0002\u0002\u0002", - "\u02de\u02df\u0007\u008a\u0002\u0002\u02df\u02e0\u0007\u0080\u0002\u0002", - "\u02e0\u02e1\u0005\u0104\u0083\u0002\u02e1\u02e2\u0007\u0081\u0002\u0002", - "\u02e2\u02e9\u0003\u0002\u0002\u0002\u02e3\u02e6\u0007\u008a\u0002\u0002", - "\u02e4\u02e7\u0005\u011e\u0090\u0002\u02e5\u02e7\u0005\u0122\u0092\u0002", - "\u02e6\u02e4\u0003\u0002\u0002\u0002\u02e6\u02e5\u0003\u0002\u0002\u0002", - "\u02e7\u02e9\u0003\u0002\u0002\u0002\u02e8\u02de\u0003\u0002\u0002\u0002", - "\u02e8\u02e3\u0003\u0002\u0002\u0002\u02e9U\u0003\u0002\u0002\u0002", - "\u02ea\u02f6\u0007\u0080\u0002\u0002\u02eb\u02ee\u0005X-\u0002\u02ec", - "\u02ee\u0007\"\u0002\u0002\u02ed\u02eb\u0003\u0002\u0002\u0002\u02ed", - "\u02ec\u0003\u0002\u0002\u0002\u02ee\u02f3\u0003\u0002\u0002\u0002\u02ef", - "\u02f0\u0007\u0087\u0002\u0002\u02f0\u02f2\u0005X-\u0002\u02f1\u02ef", - "\u0003\u0002\u0002\u0002\u02f2\u02f5\u0003\u0002\u0002\u0002\u02f3\u02f1", - "\u0003\u0002\u0002\u0002\u02f3\u02f4\u0003\u0002\u0002\u0002\u02f4\u02f7", - "\u0003\u0002\u0002\u0002\u02f5\u02f3\u0003\u0002\u0002\u0002\u02f6\u02ed", - "\u0003\u0002\u0002\u0002\u02f6\u02f7\u0003\u0002\u0002\u0002\u02f7\u02f8", - "\u0003\u0002\u0002\u0002\u02f8\u02f9\u0007\u0081\u0002\u0002\u02f9W", - "\u0003\u0002\u0002\u0002\u02fa\u02fd\u0005n8\u0002\u02fb\u02fd\u0005", - "\u00d6l\u0002\u02fc\u02fa\u0003\u0002\u0002\u0002\u02fc\u02fb\u0003", - "\u0002\u0002\u0002\u02fdY\u0003\u0002\u0002\u0002\u02fe\u0300\u0007", - "\u00a0\u0002\u0002\u02ff\u0301\u0005\u00b6\\\u0002\u0300\u02ff\u0003", - "\u0002\u0002\u0002\u0300\u0301\u0003\u0002\u0002\u0002\u0301\u0303\u0003", - "\u0002\u0002\u0002\u0302\u0304\u0005\u00acW\u0002\u0303\u0302\u0003", - "\u0002\u0002\u0002\u0303\u0304\u0003\u0002\u0002\u0002\u0304\u0306\u0003", - "\u0002\u0002\u0002\u0305\u0307\u0005V,\u0002\u0306\u0305\u0003\u0002", - "\u0002\u0002\u0306\u0307\u0003\u0002\u0002\u0002\u0307\u0308\u0003\u0002", - "\u0002\u0002\u0308\u0309\u0005\u00e8u\u0002\u0309[\u0003\u0002\u0002", - "\u0002\u030a\u030b\u0007\u0084\u0002\u0002\u030b\u030c\u0005^0\u0002", - "\u030c\u030d\u0005`1\u0002\u030d\u030e\u0007\u0085\u0002\u0002\u030e", - "]\u0003\u0002\u0002\u0002\u030f\u0312\u0005\u0104\u0083\u0002\u0310", - "\u0312\u0005\u00b6\\\u0002\u0311\u030f\u0003\u0002\u0002\u0002\u0311", - "\u0310\u0003\u0002\u0002\u0002\u0312_\u0003\u0002\u0002\u0002\u0313", - "\u031a\u0005> \u0002\u0314\u0316\u0005b2\u0002\u0315\u0314\u0003\u0002", - "\u0002\u0002\u0316\u0317\u0003\u0002\u0002\u0002\u0317\u0315\u0003\u0002", - "\u0002\u0002\u0317\u0318\u0003\u0002\u0002\u0002\u0318\u031a\u0003\u0002", - "\u0002\u0002\u0319\u0313\u0003\u0002\u0002\u0002\u0319\u0315\u0003\u0002", - "\u0002\u0002\u031aa\u0003\u0002\u0002\u0002\u031b\u031d\u0005> \u0002", - "\u031c\u031b\u0003\u0002\u0002\u0002\u031c\u031d\u0003\u0002\u0002\u0002", - "\u031d\u031e\u0003\u0002\u0002\u0002\u031e\u031f\u0007\u0091\u0002\u0002", - "\u031f\u0324\u0005d3\u0002\u0320\u0321\u0007\u0087\u0002\u0002\u0321", - "\u0323\u0005d3\u0002\u0322\u0320\u0003\u0002\u0002\u0002\u0323\u0326", - "\u0003\u0002\u0002\u0002\u0324\u0322\u0003\u0002\u0002\u0002\u0324\u0325", - "\u0003\u0002\u0002\u0002\u0325c\u0003\u0002\u0002\u0002\u0326\u0324", - "\u0003\u0002\u0002\u0002\u0327\u0329\u0005\u0102\u0082\u0002\u0328\u032a", - "\u0005\u00acW\u0002\u0329\u0328\u0003\u0002\u0002\u0002\u0329\u032a", - "\u0003\u0002\u0002\u0002\u032a\u032f\u0003\u0002\u0002\u0002\u032b\u032c", - "\u0007\u0082\u0002\u0002\u032c\u032d\u0005\u00d4k\u0002\u032d\u032e", - "\u0007\u0083\u0002\u0002\u032e\u0330\u0003\u0002\u0002\u0002\u032f\u032b", - "\u0003\u0002\u0002\u0002\u032f\u0330\u0003\u0002\u0002\u0002\u0330e", - "\u0003\u0002\u0002\u0002\u0331\u0332\u0007N\u0002\u0002\u0332\u0333", - "\u0007\u0080\u0002\u0002\u0333\u0334\u0005h5\u0002\u0334\u0335\u0007", - "\u0081\u0002\u0002\u0335g\u0003\u0002\u0002\u0002\u0336\u0340\u0005", - "> \u0002\u0337\u0339\u0005> \u0002\u0338\u0337\u0003\u0002\u0002\u0002", - "\u0338\u0339\u0003\u0002\u0002\u0002\u0339\u033a\u0003\u0002\u0002\u0002", - "\u033a\u033c\u0007\u0091\u0002\u0002\u033b\u0338\u0003\u0002\u0002\u0002", - "\u033c\u033d\u0003\u0002\u0002\u0002\u033d\u033b\u0003\u0002\u0002\u0002", - "\u033d\u033e\u0003\u0002\u0002\u0002\u033e\u0340\u0003\u0002\u0002\u0002", - "\u033f\u0336\u0003\u0002\u0002\u0002\u033f\u033b\u0003\u0002\u0002\u0002", - "\u0340i\u0003\u0002\u0002\u0002\u0341\u0342\u0007G\u0002\u0002\u0342", - "\u0343\u0007\u0080\u0002\u0002\u0343\u0344\u0005\"\u0012\u0002\u0344", - "\u0345\u0007\u0081\u0002\u0002\u0345k\u0003\u0002\u0002\u0002\u0346", - "\u0347\u0007@\u0002\u0002\u0347\u0348\u0007\u0080\u0002\u0002\u0348", - "\u0349\u0005\u00d6l\u0002\u0349\u034a\u0007\u0081\u0002\u0002\u034a", - "m\u0003\u0002\u0002\u0002\u034b\u034c\u0005\u009aN\u0002\u034c\u034d", - "\u0005\u00e0q\u0002\u034do\u0003\u0002\u0002\u0002\u034e\u034f\u0007", - "Q\u0002\u0002\u034f\u0350\u0007\u0080\u0002\u0002\u0350\u0351\u0005", - "\u0122\u0092\u0002\u0351\u0352\u0007\u0081\u0002\u0002\u0352\u0356\u0003", - "\u0002\u0002\u0002\u0353\u0354\u0007Q\u0002\u0002\u0354\u0356\u0005", - "\u0104\u0083\u0002\u0355\u034e\u0003\u0002\u0002\u0002\u0355\u0353\u0003", - "\u0002\u0002\u0002\u0356q\u0003\u0002\u0002\u0002\u0357\u0358\u0007", - "R\u0002\u0002\u0358\u035c\u0005\u00e8u\u0002\u0359\u035b\u0005t;\u0002", - "\u035a\u0359\u0003\u0002\u0002\u0002\u035b\u035e\u0003\u0002\u0002\u0002", - "\u035c\u035a\u0003\u0002\u0002\u0002\u035c\u035d\u0003\u0002\u0002\u0002", - "\u035d\u0361\u0003\u0002\u0002\u0002\u035e\u035c\u0003\u0002\u0002\u0002", - "\u035f\u0360\u0007B\u0002\u0002\u0360\u0362\u0005\u00e8u\u0002\u0361", - "\u035f\u0003\u0002\u0002\u0002\u0361\u0362\u0003\u0002\u0002\u0002\u0362", - "s\u0003\u0002\u0002\u0002\u0363\u0364\u0007=\u0002\u0002\u0364\u0365", - "\u0007\u0080\u0002\u0002\u0365\u0366\u0005n8\u0002\u0366\u0367\u0007", - "\u0081\u0002\u0002\u0367\u0368\u0005\u00e8u\u0002\u0368u\u0003\u0002", - "\u0002\u0002\u0369\u036a\u0007O\u0002\u0002\u036a\u036b\u0007\u0080", - "\u0002\u0002\u036b\u036c\u0005\u0104\u0083\u0002\u036c\u036d\u0007\u0081", - "\u0002\u0002\u036d\u036e\u0005\u00e8u\u0002\u036ew\u0003\u0002\u0002", - "\u0002\u036f\u0370\u0007<\u0002\u0002\u0370\u0371\u0005\u00e8u\u0002", - "\u0371y\u0003\u0002\u0002\u0002\u0372\u0373\u0005~@\u0002\u0373\u0374", - "\u0007\u0086\u0002\u0002\u0374{\u0003\u0002\u0002\u0002\u0375\u0376", - "\u0005~@\u0002\u0376\u0377\u0005\u00e8u\u0002\u0377}\u0003\u0002\u0002", - "\u0002\u0378\u037a\u0005\u009aN\u0002\u0379\u0378\u0003\u0002\u0002", - "\u0002\u0379\u037a\u0003\u0002\u0002\u0002\u037a\u037b\u0003\u0002\u0002", - "\u0002\u037b\u037c\u0005\u0122\u0092\u0002\u037c\u037e\u0007\u0080\u0002", - "\u0002\u037d\u037f\u0005\u00caf\u0002\u037e\u037d\u0003\u0002\u0002", - "\u0002\u037e\u037f\u0003\u0002\u0002\u0002\u037f\u0380\u0003\u0002\u0002", - "\u0002\u0380\u0381\u0007\u0081\u0002\u0002\u0381\u0383\u0003\u0002\u0002", - "\u0002\u0382\u0384\u0005\u009cO\u0002\u0383\u0382\u0003\u0002\u0002", - "\u0002\u0383\u0384\u0003\u0002\u0002\u0002\u0384\u007f\u0003\u0002\u0002", - "\u0002\u0385\u0387\u0005\u0082B\u0002\u0386\u0388\u0005\u0084C\u0002", - "\u0387\u0386\u0003\u0002\u0002\u0002\u0387\u0388\u0003\u0002\u0002\u0002", - "\u0388\u0081\u0003\u0002\u0002\u0002\u0389\u038c\u0007\u0007\u0002\u0002", - "\u038a\u038c\u0005\u0122\u0092\u0002\u038b\u0389\u0003\u0002\u0002\u0002", - "\u038b\u038a\u0003\u0002\u0002\u0002\u038c\u0083\u0003\u0002\u0002\u0002", - "\u038d\u038f\u0007\u0080\u0002\u0002\u038e\u0390\u0005\u0086D\u0002", - "\u038f\u038e\u0003\u0002\u0002\u0002\u038f\u0390\u0003\u0002\u0002\u0002", - "\u0390\u0391\u0003\u0002\u0002\u0002\u0391\u0392\u0007\u0081\u0002\u0002", - "\u0392\u0085\u0003\u0002\u0002\u0002\u0393\u0398\u0005\u0088E\u0002", - "\u0394\u0395\u0007\u0087\u0002\u0002\u0395\u0397\u0005\u0088E\u0002", - "\u0396\u0394\u0003\u0002\u0002\u0002\u0397\u039a\u0003\u0002\u0002\u0002", - "\u0398\u0396\u0003\u0002\u0002\u0002\u0398\u0399\u0003\u0002\u0002\u0002", - "\u0399\u0087\u0003\u0002\u0002\u0002\u039a\u0398\u0003\u0002\u0002\u0002", - "\u039b\u03a0\u0005\u0080A\u0002\u039c\u03a0\u0005\u011e\u0090\u0002", - "\u039d\u03a0\u0005\u0120\u0091\u0002\u039e\u03a0\u0005\u008aF\u0002", - "\u039f\u039b\u0003\u0002\u0002\u0002\u039f\u039c\u0003\u0002\u0002\u0002", - "\u039f\u039d\u0003\u0002\u0002\u0002\u039f\u039e\u0003\u0002\u0002\u0002", - "\u03a0\u0089\u0003\u0002\u0002\u0002\u03a1\u03a2\u0005\u0082B\u0002", - "\u03a2\u03a6\u0007\u008b\u0002\u0002\u03a3\u03a7\u0005\u011e\u0090\u0002", - "\u03a4\u03a7\u0005\u0082B\u0002\u03a5\u03a7\u0005\u0120\u0091\u0002", - "\u03a6\u03a3\u0003\u0002\u0002\u0002\u03a6\u03a4\u0003\u0002\u0002\u0002", - "\u03a6\u03a5\u0003\u0002\u0002\u0002\u03a7\u008b\u0003\u0002\u0002\u0002", - "\u03a8\u03ad\u0005\u008eH\u0002\u03a9\u03ad\u0005\u0090I\u0002\u03aa", - "\u03ad\u0005\u0092J\u0002\u03ab\u03ad\u0005\u0094K\u0002\u03ac\u03a8", - "\u0003\u0002\u0002\u0002\u03ac\u03a9\u0003\u0002\u0002\u0002\u03ac\u03aa", - "\u0003\u0002\u0002\u0002\u03ac\u03ab\u0003\u0002\u0002\u0002\u03ad\u008d", - "\u0003\u0002\u0002\u0002\u03ae\u03b0\u0005\u009cO\u0002\u03af\u03ae", - "\u0003\u0002\u0002\u0002\u03af\u03b0\u0003\u0002\u0002\u0002\u03b0\u03b1", - "\u0003\u0002\u0002\u0002\u03b1\u03b3\u0005\u0122\u0092\u0002\u03b2\u03b4", - "\u0005\u009cO\u0002\u03b3\u03b2\u0003\u0002\u0002\u0002\u03b3\u03b4", - "\u0003\u0002\u0002\u0002\u03b4\u03b5\u0003\u0002\u0002\u0002\u03b5\u03b6", - "\u0007\u0080\u0002\u0002\u03b6\u03b7\u0005\u00c6d\u0002\u03b7\u03b8", - "\u0007\u0081\u0002\u0002\u03b8\u03b9\u0007\u0086\u0002\u0002\u03b9\u008f", - "\u0003\u0002\u0002\u0002\u03ba\u03bd\u0005\u009cO\u0002\u03bb\u03bd", - "\u0005\u00ceh\u0002\u03bc\u03ba\u0003\u0002\u0002\u0002\u03bc\u03bb", - "\u0003\u0002\u0002\u0002\u03bd\u03c0\u0003\u0002\u0002\u0002\u03be\u03bc", - "\u0003\u0002\u0002\u0002\u03be\u03bf\u0003\u0002\u0002\u0002\u03bf\u03c2", - "\u0003\u0002\u0002\u0002\u03c0\u03be\u0003\u0002\u0002\u0002\u03c1\u03c3", - "\u0007\u001f\u0002\u0002\u03c2\u03c1\u0003\u0002\u0002\u0002\u03c2\u03c3", - "\u0003\u0002\u0002\u0002\u03c3\u03c4\u0003\u0002\u0002\u0002\u03c4\u03c6", - "\u0005\u00be`\u0002\u03c5\u03c7\u0005\u0122\u0092\u0002\u03c6\u03c5", - "\u0003\u0002\u0002\u0002\u03c6\u03c7\u0003\u0002\u0002\u0002\u03c7\u03cb", - "\u0003\u0002\u0002\u0002\u03c8\u03ca\u0005\u00ceh\u0002\u03c9\u03c8", - "\u0003\u0002\u0002\u0002\u03ca\u03cd\u0003\u0002\u0002\u0002\u03cb\u03c9", - "\u0003\u0002\u0002\u0002\u03cb\u03cc\u0003\u0002\u0002\u0002\u03cc\u03ce", - "\u0003\u0002\u0002\u0002\u03cd\u03cb\u0003\u0002\u0002\u0002\u03ce\u03cf", - "\u0007\u0086\u0002\u0002\u03cf\u0091\u0003\u0002\u0002\u0002\u03d0\u03d1", - "\u0005\u009aN\u0002\u03d1\u03d2\u0005\u009eP\u0002\u03d2\u03d5\u0003", - "\u0002\u0002\u0002\u03d3\u03d5\u0005\u009aN\u0002\u03d4\u03d0\u0003", - "\u0002\u0002\u0002\u03d4\u03d3\u0003\u0002\u0002\u0002\u03d5\u03d6\u0003", - "\u0002\u0002\u0002\u03d6\u03d7\u0007\u0086\u0002\u0002\u03d7\u0093\u0003", - "\u0002\u0002\u0002\u03d8\u03da\u0005\u009cO\u0002\u03d9\u03d8\u0003", - "\u0002\u0002\u0002\u03d9\u03da\u0003\u0002\u0002\u0002\u03da\u03db\u0003", - "\u0002\u0002\u0002\u03db\u03e0\u0007\u001f\u0002\u0002\u03dc\u03dd\u0005", - "\u009aN\u0002\u03dd\u03de\u0005\u0096L\u0002\u03de\u03e1\u0003\u0002", - "\u0002\u0002\u03df\u03e1\u0005\u009aN\u0002\u03e0\u03dc\u0003\u0002", - "\u0002\u0002\u03e0\u03df\u0003\u0002\u0002\u0002\u03e1\u03e2\u0003\u0002", - "\u0002\u0002\u03e2\u03e3\u0007\u0086\u0002\u0002\u03e3\u0095\u0003\u0002", - "\u0002\u0002\u03e4\u03e9\u0005\u0098M\u0002\u03e5\u03e6\u0007\u0087", - "\u0002\u0002\u03e6\u03e8\u0005\u0098M\u0002\u03e7\u03e5\u0003\u0002", - "\u0002\u0002\u03e8\u03eb\u0003\u0002\u0002\u0002\u03e9\u03e7\u0003\u0002", - "\u0002\u0002\u03e9\u03ea\u0003\u0002\u0002\u0002\u03ea\u0097\u0003\u0002", - "\u0002\u0002\u03eb\u03e9\u0003\u0002\u0002\u0002\u03ec\u03ee\u0005\u00cc", - "g\u0002\u03ed\u03ec\u0003\u0002\u0002\u0002\u03ed\u03ee\u0003\u0002", - "\u0002\u0002\u03ee\u03ef\u0003\u0002\u0002\u0002\u03ef\u03f0\u0005\u00c6", - "d\u0002\u03f0\u0099\u0003\u0002\u0002\u0002\u03f1\u03fa\u0005\u00ae", - "X\u0002\u03f2\u03fa\u0005\u009cO\u0002\u03f3\u03fa\u0005\u00aaV\u0002", - "\u03f4\u03fa\u0005\u00acW\u0002\u03f5\u03fa\u0005\u00a8U\u0002\u03f6", - "\u03fa\u0005\u00b0Y\u0002\u03f7\u03fa\u0005\u00b2Z\u0002\u03f8\u03fa", - "\u0005\u00b6\\\u0002\u03f9\u03f1\u0003\u0002\u0002\u0002\u03f9\u03f2", - "\u0003\u0002\u0002\u0002\u03f9\u03f3\u0003\u0002\u0002\u0002\u03f9\u03f4", - "\u0003\u0002\u0002\u0002\u03f9\u03f5\u0003\u0002\u0002\u0002\u03f9\u03f6", - "\u0003\u0002\u0002\u0002\u03f9\u03f7\u0003\u0002\u0002\u0002\u03f9\u03f8", - "\u0003\u0002\u0002\u0002\u03fa\u03fb\u0003\u0002\u0002\u0002\u03fb\u03f9", - "\u0003\u0002\u0002\u0002\u03fb\u03fc\u0003\u0002\u0002\u0002\u03fc\u009b", - "\u0003\u0002\u0002\u0002\u03fd\u03fe\u0007V\u0002\u0002\u03fe\u03ff", - "\u0007\u0080\u0002\u0002\u03ff\u0400\u0007\u0080\u0002\u0002\u0400\u0405", - "\u0005\u0080A\u0002\u0401\u0402\u0007\u0087\u0002\u0002\u0402\u0404", - "\u0005\u0080A\u0002\u0403\u0401\u0003\u0002\u0002\u0002\u0404\u0407", - "\u0003\u0002\u0002\u0002\u0405\u0403\u0003\u0002\u0002\u0002\u0405\u0406", - "\u0003\u0002\u0002\u0002\u0406\u0408\u0003\u0002\u0002\u0002\u0407\u0405", - "\u0003\u0002\u0002\u0002\u0408\u0409\u0007\u0081\u0002\u0002\u0409\u040a", - "\u0007\u0081\u0002\u0002\u040a\u009d\u0003\u0002\u0002\u0002\u040b\u0410", - "\u0005\u00a0Q\u0002\u040c\u040d\u0007\u0087\u0002\u0002\u040d\u040f", - "\u0005\u00a0Q\u0002\u040e\u040c\u0003\u0002\u0002\u0002\u040f\u0412", - "\u0003\u0002\u0002\u0002\u0410\u040e\u0003\u0002\u0002\u0002\u0410\u0411", - "\u0003\u0002\u0002\u0002\u0411\u009f\u0003\u0002\u0002\u0002\u0412\u0410", - "\u0003\u0002\u0002\u0002\u0413\u0416\u0005\u00e0q\u0002\u0414\u0415", - "\u0007\u008b\u0002\u0002\u0415\u0417\u0005\u010a\u0086\u0002\u0416\u0414", - "\u0003\u0002\u0002\u0002\u0416\u0417\u0003\u0002\u0002\u0002\u0417\u00a1", - "\u0003\u0002\u0002\u0002\u0418\u0425\t\u0005\u0002\u0002\u0419\u0426", - "\u0005\u0122\u0092\u0002\u041a\u041c\u0005\u0122\u0092\u0002\u041b\u041a", - "\u0003\u0002\u0002\u0002\u041b\u041c\u0003\u0002\u0002\u0002\u041c\u041d", - "\u0003\u0002\u0002\u0002\u041d\u041f\u0007\u0082\u0002\u0002\u041e\u0420", - "\u0005\u00a4S\u0002\u041f\u041e\u0003\u0002\u0002\u0002\u0420\u0421", - "\u0003\u0002\u0002\u0002\u0421\u041f\u0003\u0002\u0002\u0002\u0421\u0422", - "\u0003\u0002\u0002\u0002\u0422\u0423\u0003\u0002\u0002\u0002\u0423\u0424", - "\u0007\u0083\u0002\u0002\u0424\u0426\u0003\u0002\u0002\u0002\u0425\u0419", - "\u0003\u0002\u0002\u0002\u0425\u041b\u0003\u0002\u0002\u0002\u0426\u00a3", - "\u0003\u0002\u0002\u0002\u0427\u0428\u0005\u00a6T\u0002\u0428\u042c", - "\u0005\u00ba^\u0002\u0429\u042b\u0005\u00ceh\u0002\u042a\u0429\u0003", - "\u0002\u0002\u0002\u042b\u042e\u0003\u0002\u0002\u0002\u042c\u042a\u0003", - "\u0002\u0002\u0002\u042c\u042d\u0003\u0002\u0002\u0002\u042d\u042f\u0003", - "\u0002\u0002\u0002\u042e\u042c\u0003\u0002\u0002\u0002\u042f\u0430\u0007", - "\u0086\u0002\u0002\u0430\u00a5\u0003\u0002\u0002\u0002\u0431\u0438\u0005", - "\u00aaV\u0002\u0432\u0438\u0005\u00acW\u0002\u0433\u0438\u0005\u00a8", - "U\u0002\u0434\u0438\u0005\u00b0Y\u0002\u0435\u0438\u0005\u00b2Z\u0002", - "\u0436\u0438\u0005\u00b6\\\u0002\u0437\u0431\u0003\u0002\u0002\u0002", - "\u0437\u0432\u0003\u0002\u0002\u0002\u0437\u0433\u0003\u0002\u0002\u0002", - "\u0437\u0434\u0003\u0002\u0002\u0002\u0437\u0435\u0003\u0002\u0002\u0002", - "\u0437\u0436\u0003\u0002\u0002\u0002\u0438\u0439\u0003\u0002\u0002\u0002", - "\u0439\u0437\u0003\u0002\u0002\u0002\u0439\u043a\u0003\u0002\u0002\u0002", - "\u043a\u00a7\u0003\u0002\u0002\u0002\u043b\u043c\u0007v\u0002\u0002", - "\u043c\u043d\u0007\u0080\u0002\u0002\u043d\u043e\u0005\u0122\u0092\u0002", - "\u043e\u043f\u0007\u0081\u0002\u0002\u043f\u0442\u0003\u0002\u0002\u0002", - "\u0440\u0442\u0007u\u0002\u0002\u0441\u043b\u0003\u0002\u0002\u0002", - "\u0441\u0440\u0003\u0002\u0002\u0002\u0442\u00a9\u0003\u0002\u0002\u0002", - "\u0443\u0444\t\u0006\u0002\u0002\u0444\u00ab\u0003\u0002\u0002\u0002", - "\u0445\u0446\t\u0007\u0002\u0002\u0446\u00ad\u0003\u0002\u0002\u0002", - "\u0447\u0448\t\b\u0002\u0002\u0448\u00af\u0003\u0002\u0002\u0002\u0449", - "\u044a\t\t\u0002\u0002\u044a\u00b1\u0003\u0002\u0002\u0002\u044b\u0450", - "\u0007\u0007\u0002\u0002\u044c\u0450\u0007#\u0002\u0002\u044d\u0450", - "\u0007\u0017\u0002\u0002\u044e\u0450\u0005\u00b4[\u0002\u044f\u044b", - "\u0003\u0002\u0002\u0002\u044f\u044c\u0003\u0002\u0002\u0002\u044f\u044d", - "\u0003\u0002\u0002\u0002\u044f\u044e\u0003\u0002\u0002\u0002\u0450\u00b3", - "\u0003\u0002\u0002\u0002\u0451\u0452\t\n\u0002\u0002\u0452\u00b5\u0003", - "\u0002\u0002\u0002\u0453\u0465\u0007\"\u0002\u0002\u0454\u0465\u0007", - "\u0006\u0002\u0002\u0455\u0465\u0007\u0019\u0002\u0002\u0456\u0465\u0007", - "\u0014\u0002\u0002\u0457\u0465\u0007\u0015\u0002\u0002\u0458\u0465\u0007", - "\u000f\u0002\u0002\u0459\u0465\u0007\u000b\u0002\u0002\u045a\u0465\u0007", - "\u001a\u0002\u0002\u045b\u0465\u0007!\u0002\u0002\u045c\u0465\u0005", - "\u00b8]\u0002\u045d\u0465\u0005\u0010\t\u0002\u045e\u0465\u0005\u00a2", - "R\u0002\u045f\u0465\u0005\u00be`\u0002\u0460\u0462\u0005\u0122\u0092", - "\u0002\u0461\u0463\u0005\u00ccg\u0002\u0462\u0461\u0003\u0002\u0002", - "\u0002\u0462\u0463\u0003\u0002\u0002\u0002\u0463\u0465\u0003\u0002\u0002", - "\u0002\u0464\u0453\u0003\u0002\u0002\u0002\u0464\u0454\u0003\u0002\u0002", - "\u0002\u0464\u0455\u0003\u0002\u0002\u0002\u0464\u0456\u0003\u0002\u0002", - "\u0002\u0464\u0457\u0003\u0002\u0002\u0002\u0464\u0458\u0003\u0002\u0002", - "\u0002\u0464\u0459\u0003\u0002\u0002\u0002\u0464\u045a\u0003\u0002\u0002", - "\u0002\u0464\u045b\u0003\u0002\u0002\u0002\u0464\u045c\u0003\u0002\u0002", - "\u0002\u0464\u045d\u0003\u0002\u0002\u0002\u0464\u045e\u0003\u0002\u0002", - "\u0002\u0464\u045f\u0003\u0002\u0002\u0002\u0464\u0460\u0003\u0002\u0002", - "\u0002\u0465\u00b7\u0003\u0002\u0002\u0002\u0466\u0467\u0007a\u0002", - "\u0002\u0467\u0468\u0007\u0080\u0002\u0002\u0468\u0469\u0005\u0104\u0083", - "\u0002\u0469\u046a\u0007\u0081\u0002\u0002\u046a\u00b9\u0003\u0002\u0002", - "\u0002\u046b\u0470\u0005\u00bc_\u0002\u046c\u046d\u0007\u0087\u0002", - "\u0002\u046d\u046f\u0005\u00bc_\u0002\u046e\u046c\u0003\u0002\u0002", - "\u0002\u046f\u0472\u0003\u0002\u0002\u0002\u0470\u046e\u0003\u0002\u0002", - "\u0002\u0470\u0471\u0003\u0002\u0002\u0002\u0471\u00bb\u0003\u0002\u0002", - "\u0002\u0472\u0470\u0003\u0002\u0002\u0002\u0473\u047a\u0005\u00e0q", - "\u0002\u0474\u0476\u0005\u00e0q\u0002\u0475\u0474\u0003\u0002\u0002", - "\u0002\u0475\u0476\u0003\u0002\u0002\u0002\u0476\u0477\u0003\u0002\u0002", - "\u0002\u0477\u0478\u0007\u0091\u0002\u0002\u0478\u047a\u0005\u011e\u0090", - "\u0002\u0479\u0473\u0003\u0002\u0002\u0002\u0479\u0475\u0003\u0002\u0002", - "\u0002\u047a\u00bd\u0003\u0002\u0002\u0002\u047b\u0481\u0007\r\u0002", - "\u0002\u047c\u047e\u0005\u0122\u0092\u0002\u047d\u047c\u0003\u0002\u0002", - "\u0002\u047d\u047e\u0003\u0002\u0002\u0002\u047e\u047f\u0003\u0002\u0002", - "\u0002\u047f\u0480\u0007\u0091\u0002\u0002\u0480\u0482\u0005\u00d6l", - "\u0002\u0481\u047d\u0003\u0002\u0002\u0002\u0481\u0482\u0003\u0002\u0002", - "\u0002\u0482\u048e\u0003\u0002\u0002\u0002\u0483\u0488\u0005\u0122\u0092", - "\u0002\u0484\u0485\u0007\u0082\u0002\u0002\u0485\u0486\u0005\u00c0a", - "\u0002\u0486\u0487\u0007\u0083\u0002\u0002\u0487\u0489\u0003\u0002\u0002", - "\u0002\u0488\u0484\u0003\u0002\u0002\u0002\u0488\u0489\u0003\u0002\u0002", - "\u0002\u0489\u048f\u0003\u0002\u0002\u0002\u048a\u048b\u0007\u0082\u0002", - "\u0002\u048b\u048c\u0005\u00c0a\u0002\u048c\u048d\u0007\u0083\u0002", - "\u0002\u048d\u048f\u0003\u0002\u0002\u0002\u048e\u0483\u0003\u0002\u0002", - "\u0002\u048e\u048a\u0003\u0002\u0002\u0002\u048f\u049b\u0003\u0002\u0002", - "\u0002\u0490\u0491\t\u000b\u0002\u0002\u0491\u0492\u0007\u0080\u0002", - "\u0002\u0492\u0493\u0005\u00d6l\u0002\u0493\u0494\u0007\u0087\u0002", - "\u0002\u0494\u0495\u0005\u0122\u0092\u0002\u0495\u0496\u0007\u0081\u0002", - "\u0002\u0496\u0497\u0007\u0082\u0002\u0002\u0497\u0498\u0005\u00c0a", - "\u0002\u0498\u0499\u0007\u0083\u0002\u0002\u0499\u049b\u0003\u0002\u0002", - "\u0002\u049a\u047b\u0003\u0002\u0002\u0002\u049a\u0490\u0003\u0002\u0002", - "\u0002\u049b\u00bf\u0003\u0002\u0002\u0002\u049c\u04a1\u0005\u00c2b", - "\u0002\u049d\u049e\u0007\u0087\u0002\u0002\u049e\u04a0\u0005\u00c2b", - "\u0002\u049f\u049d\u0003\u0002\u0002\u0002\u04a0\u04a3\u0003\u0002\u0002", - "\u0002\u04a1\u049f\u0003\u0002\u0002\u0002\u04a1\u04a2\u0003\u0002\u0002", - "\u0002\u04a2\u04a5\u0003\u0002\u0002\u0002\u04a3\u04a1\u0003\u0002\u0002", - "\u0002\u04a4\u04a6\u0007\u0087\u0002\u0002\u04a5\u04a4\u0003\u0002\u0002", - "\u0002\u04a5\u04a6\u0003\u0002\u0002\u0002\u04a6\u00c1\u0003\u0002\u0002", - "\u0002\u04a7\u04aa\u0005\u00c4c\u0002\u04a8\u04a9\u0007\u008b\u0002", - "\u0002\u04a9\u04ab\u0005\u0104\u0083\u0002\u04aa\u04a8\u0003\u0002\u0002", - "\u0002\u04aa\u04ab\u0003\u0002\u0002\u0002\u04ab\u04af\u0003\u0002\u0002", - "\u0002\u04ac\u04ae\u0005\u00ceh\u0002\u04ad\u04ac\u0003\u0002\u0002", - "\u0002\u04ae\u04b1\u0003\u0002\u0002\u0002\u04af\u04ad\u0003\u0002\u0002", - "\u0002\u04af\u04b0\u0003\u0002\u0002\u0002\u04b0\u00c3\u0003\u0002\u0002", - "\u0002\u04b1\u04af\u0003\u0002\u0002\u0002\u04b2\u04b5\u0005\u0122\u0092", - "\u0002\u04b3\u04b5\u0007\t\u0002\u0002\u04b4\u04b2\u0003\u0002\u0002", - "\u0002\u04b4\u04b3\u0003\u0002\u0002\u0002\u04b5\u00c5\u0003\u0002\u0002", - "\u0002\u04b6\u04bc\u0005\u0122\u0092\u0002\u04b7\u04b8\u0007\u0080\u0002", - "\u0002\u04b8\u04b9\u0005\u00e0q\u0002\u04b9\u04ba\u0007\u0081\u0002", - "\u0002\u04ba\u04bc\u0003\u0002\u0002\u0002\u04bb\u04b6\u0003\u0002\u0002", - "\u0002\u04bb\u04b7\u0003\u0002\u0002\u0002\u04bc\u04c0\u0003\u0002\u0002", - "\u0002\u04bd\u04bf\u0005\u00c8e\u0002\u04be\u04bd\u0003\u0002\u0002", - "\u0002\u04bf\u04c2\u0003\u0002\u0002\u0002\u04c0\u04be\u0003\u0002\u0002", - "\u0002\u04c0\u04c1\u0003\u0002\u0002\u0002\u04c1\u04ce\u0003\u0002\u0002", - "\u0002\u04c2\u04c0\u0003\u0002\u0002\u0002\u04c3\u04c4\u0007\u0080\u0002", - "\u0002\u04c4\u04c6\u0007\u00a0\u0002\u0002\u04c5\u04c7\u0005\u00acW", - "\u0002\u04c6\u04c5\u0003\u0002\u0002\u0002\u04c6\u04c7\u0003\u0002\u0002", - "\u0002\u04c7\u04c9\u0003\u0002\u0002\u0002\u04c8\u04ca\u0005\u0122\u0092", - "\u0002\u04c9\u04c8\u0003\u0002\u0002\u0002\u04c9\u04ca\u0003\u0002\u0002", - "\u0002\u04ca\u04cb\u0003\u0002\u0002\u0002\u04cb\u04cc\u0007\u0081\u0002", - "\u0002\u04cc\u04ce\u0005V,\u0002\u04cd\u04bb\u0003\u0002\u0002\u0002", - "\u04cd\u04c3\u0003\u0002\u0002\u0002\u04ce\u00c7\u0003\u0002\u0002\u0002", - "\u04cf\u04d1\u0007\u0084\u0002\u0002\u04d0\u04d2\u0005\u010c\u0087\u0002", - "\u04d1\u04d0\u0003\u0002\u0002\u0002\u04d1\u04d2\u0003\u0002\u0002\u0002", - "\u04d2\u04d3\u0003\u0002\u0002\u0002\u04d3\u04d4\u0007\u0085\u0002\u0002", - "\u04d4\u00c9\u0003\u0002\u0002\u0002\u04d5\u04d8\u0005\u00dco\u0002", - "\u04d6\u04d7\u0007\u0087\u0002\u0002\u04d7\u04d9\u0007\u00ac\u0002\u0002", - "\u04d8\u04d6\u0003\u0002\u0002\u0002\u04d8\u04d9\u0003\u0002\u0002\u0002", - "\u04d9\u00cb\u0003\u0002\u0002\u0002\u04da\u04dc\u0007\u009c\u0002\u0002", - "\u04db\u04dd\u0005\u009aN\u0002\u04dc\u04db\u0003\u0002\u0002\u0002", - "\u04dc\u04dd\u0003\u0002\u0002\u0002\u04dd\u04df\u0003\u0002\u0002\u0002", - "\u04de\u04e0\u0005\u00ccg\u0002\u04df\u04de\u0003\u0002\u0002\u0002", - "\u04df\u04e0\u0003\u0002\u0002\u0002\u04e0\u00cd\u0003\u0002\u0002\u0002", - "\u04e1\u04f3\u0005\u0122\u0092\u0002\u04e2\u04e5\u0007\u0080\u0002\u0002", - "\u04e3\u04e6\u0005\u011c\u008f\u0002\u04e4\u04e6\u0005\u011a\u008e\u0002", - "\u04e5\u04e3\u0003\u0002\u0002\u0002\u04e5\u04e4\u0003\u0002\u0002\u0002", - "\u04e6\u04ee\u0003\u0002\u0002\u0002\u04e7\u04ea\u0007\u0087\u0002\u0002", - "\u04e8\u04eb\u0005\u011c\u008f\u0002\u04e9\u04eb\u0005\u011a\u008e\u0002", - "\u04ea\u04e8\u0003\u0002\u0002\u0002\u04ea\u04e9\u0003\u0002\u0002\u0002", - "\u04eb\u04ed\u0003\u0002\u0002\u0002\u04ec\u04e7\u0003\u0002\u0002\u0002", - "\u04ed\u04f0\u0003\u0002\u0002\u0002\u04ee\u04ec\u0003\u0002\u0002\u0002", - "\u04ee\u04ef\u0003\u0002\u0002\u0002\u04ef\u04f1\u0003\u0002\u0002\u0002", - "\u04f0\u04ee\u0003\u0002\u0002\u0002\u04f1\u04f2\u0007\u0081\u0002\u0002", - "\u04f2\u04f4\u0003\u0002\u0002\u0002\u04f3\u04e2\u0003\u0002\u0002\u0002", - "\u04f3\u04f4\u0003\u0002\u0002\u0002\u04f4\u00cf\u0003\u0002\u0002\u0002", - "\u04f5\u04fa\u0007\u0082\u0002\u0002\u04f6\u04f8\u0005\u0102\u0082\u0002", - "\u04f7\u04f9\u0007\u0087\u0002\u0002\u04f8\u04f7\u0003\u0002\u0002\u0002", - "\u04f8\u04f9\u0003\u0002\u0002\u0002\u04f9\u04fb\u0003\u0002\u0002\u0002", - "\u04fa\u04f6\u0003\u0002\u0002\u0002\u04fa\u04fb\u0003\u0002\u0002\u0002", - "\u04fb\u04fc\u0003\u0002\u0002\u0002\u04fc\u04fd\u0007\u0083\u0002\u0002", - "\u04fd\u00d1\u0003\u0002\u0002\u0002\u04fe\u050c\u0007\u0082\u0002\u0002", - "\u04ff\u0500\u0007\u0088\u0002\u0002\u0500\u0506\u0005\u0104\u0083\u0002", - "\u0501\u0502\u0007\u0087\u0002\u0002\u0502\u0503\u0007\u0088\u0002\u0002", - "\u0503\u0505\u0005\u0104\u0083\u0002\u0504\u0501\u0003\u0002\u0002\u0002", - "\u0505\u0508\u0003\u0002\u0002\u0002\u0506\u0504\u0003\u0002\u0002\u0002", - "\u0506\u0507\u0003\u0002\u0002\u0002\u0507\u050a\u0003\u0002\u0002\u0002", - "\u0508\u0506\u0003\u0002\u0002\u0002\u0509\u050b\u0007\u0087\u0002\u0002", - "\u050a\u0509\u0003\u0002\u0002\u0002\u050a\u050b\u0003\u0002\u0002\u0002", - "\u050b\u050d\u0003\u0002\u0002\u0002\u050c\u04ff\u0003\u0002\u0002\u0002", - "\u050c\u050d\u0003\u0002\u0002\u0002\u050d\u050e\u0003\u0002\u0002\u0002", - "\u050e\u050f\u0007\u0083\u0002\u0002\u050f\u00d3\u0003\u0002\u0002\u0002", - "\u0510\u0515\u0005\u010a\u0086\u0002\u0511\u0512\u0007\u0087\u0002\u0002", - "\u0512\u0514\u0005\u010a\u0086\u0002\u0513\u0511\u0003\u0002\u0002\u0002", - "\u0514\u0517\u0003\u0002\u0002\u0002\u0515\u0513\u0003\u0002\u0002\u0002", - "\u0515\u0516\u0003\u0002\u0002\u0002\u0516\u0519\u0003\u0002\u0002\u0002", - "\u0517\u0515\u0003\u0002\u0002\u0002\u0518\u051a\u0007\u0087\u0002\u0002", - "\u0519\u0518\u0003\u0002\u0002\u0002\u0519\u051a\u0003\u0002\u0002\u0002", - "\u051a\u00d5\u0003\u0002\u0002\u0002\u051b\u051d\u0005\u00a6T\u0002", - "\u051c\u051e\u0005\u00d8m\u0002\u051d\u051c\u0003\u0002\u0002\u0002", - "\u051d\u051e\u0003\u0002\u0002\u0002\u051e\u0521\u0003\u0002\u0002\u0002", - "\u051f\u0521\u0005H%\u0002\u0520\u051b\u0003\u0002\u0002\u0002\u0520", - "\u051f\u0003\u0002\u0002\u0002\u0521\u00d7\u0003\u0002\u0002\u0002\u0522", - "\u0524\u0005\u00ccg\u0002\u0523\u0525\u0005\u00d8m\u0002\u0524\u0523", - "\u0003\u0002\u0002\u0002\u0524\u0525\u0003\u0002\u0002\u0002\u0525\u053a", - "\u0003\u0002\u0002\u0002\u0526\u0528\u0007\u0080\u0002\u0002\u0527\u0529", - "\u0005\u00d8m\u0002\u0528\u0527\u0003\u0002\u0002\u0002\u0528\u0529", - "\u0003\u0002\u0002\u0002\u0529\u052a\u0003\u0002\u0002\u0002\u052a\u052c", - "\u0007\u0081\u0002\u0002\u052b\u052d\u0005\u00dan\u0002\u052c\u052b", - "\u0003\u0002\u0002\u0002\u052d\u052e\u0003\u0002\u0002\u0002\u052e\u052c", - "\u0003\u0002\u0002\u0002\u052e\u052f\u0003\u0002\u0002\u0002\u052f\u053a", - "\u0003\u0002\u0002\u0002\u0530\u0532\u0007\u0084\u0002\u0002\u0531\u0533", - "\u0005\u010c\u0087\u0002\u0532\u0531\u0003\u0002\u0002\u0002\u0532\u0533", - "\u0003\u0002\u0002\u0002\u0533\u0534\u0003\u0002\u0002\u0002\u0534\u0536", - "\u0007\u0085\u0002\u0002\u0535\u0530\u0003\u0002\u0002\u0002\u0536\u0537", - "\u0003\u0002\u0002\u0002\u0537\u0535\u0003\u0002\u0002\u0002\u0537\u0538", - "\u0003\u0002\u0002\u0002\u0538\u053a\u0003\u0002\u0002\u0002\u0539\u0522", - "\u0003\u0002\u0002\u0002\u0539\u0526\u0003\u0002\u0002\u0002\u0539\u0535", - "\u0003\u0002\u0002\u0002\u053a\u00d9\u0003\u0002\u0002\u0002\u053b\u053d", - "\u0007\u0084\u0002\u0002\u053c\u053e\u0005\u010c\u0087\u0002\u053d\u053c", - "\u0003\u0002\u0002\u0002\u053d\u053e\u0003\u0002\u0002\u0002\u053e\u053f", - "\u0003\u0002\u0002\u0002\u053f\u0546\u0007\u0085\u0002\u0002\u0540\u0542", - "\u0007\u0080\u0002\u0002\u0541\u0543\u0005\u00dco\u0002\u0542\u0541", - "\u0003\u0002\u0002\u0002\u0542\u0543\u0003\u0002\u0002\u0002\u0543\u0544", - "\u0003\u0002\u0002\u0002\u0544\u0546\u0007\u0081\u0002\u0002\u0545\u053b", - "\u0003\u0002\u0002\u0002\u0545\u0540\u0003\u0002\u0002\u0002\u0546\u00db", - "\u0003\u0002\u0002\u0002\u0547\u054c\u0005\u00dep\u0002\u0548\u0549", - "\u0007\u0087\u0002\u0002\u0549\u054b\u0005\u00dep\u0002\u054a\u0548", - "\u0003\u0002\u0002\u0002\u054b\u054e\u0003\u0002\u0002\u0002\u054c\u054a", - "\u0003\u0002\u0002\u0002\u054c\u054d\u0003\u0002\u0002\u0002\u054d\u00dd", - "\u0003\u0002\u0002\u0002\u054e\u054c\u0003\u0002\u0002\u0002\u054f\u0550", - "\u0005\u009aN\u0002\u0550\u0551\u0005\u00e0q\u0002\u0551\u0554\u0003", - "\u0002\u0002\u0002\u0552\u0554\u0007\"\u0002\u0002\u0553\u054f\u0003", - "\u0002\u0002\u0002\u0553\u0552\u0003\u0002\u0002\u0002\u0554\u00df\u0003", - "\u0002\u0002\u0002\u0555\u0557\u0005\u00ccg\u0002\u0556\u0555\u0003", - "\u0002\u0002\u0002\u0556\u0557\u0003\u0002\u0002\u0002\u0557\u0558\u0003", - "\u0002\u0002\u0002\u0558\u0559\u0005\u00c6d\u0002\u0559\u00e1\u0003", - "\u0002\u0002\u0002\u055a\u055c\u0005\u00e4s\u0002\u055b\u055d\u0007", - "\u0086\u0002\u0002\u055c\u055b\u0003\u0002\u0002\u0002\u055c\u055d\u0003", - "\u0002\u0002\u0002\u055d\u0584\u0003\u0002\u0002\u0002\u055e\u0560\u0005", - "\u00e8u\u0002\u055f\u0561\u0007\u0086\u0002\u0002\u0560\u055f\u0003", - "\u0002\u0002\u0002\u0560\u0561\u0003\u0002\u0002\u0002\u0561\u0584\u0003", - "\u0002\u0002\u0002\u0562\u0564\u0005\u00eav\u0002\u0563\u0565\u0007", - "\u0086\u0002\u0002\u0564\u0563\u0003\u0002\u0002\u0002\u0564\u0565\u0003", - "\u0002\u0002\u0002\u0565\u0584\u0003\u0002\u0002\u0002\u0566\u0568\u0005", - "\u00f4{\u0002\u0567\u0569\u0007\u0086\u0002\u0002\u0568\u0567\u0003", - "\u0002\u0002\u0002\u0568\u0569\u0003\u0002\u0002\u0002\u0569\u0584\u0003", - "\u0002\u0002\u0002\u056a\u056c\u0005\u0100\u0081\u0002\u056b\u056d\u0007", - "\u0086\u0002\u0002\u056c\u056b\u0003\u0002\u0002\u0002\u056c\u056d\u0003", - "\u0002\u0002\u0002\u056d\u0584\u0003\u0002\u0002\u0002\u056e\u0570\u0005", - "v<\u0002\u056f\u0571\u0007\u0086\u0002\u0002\u0570\u056f\u0003\u0002", - "\u0002\u0002\u0570\u0571\u0003\u0002\u0002\u0002\u0571\u0584\u0003\u0002", - "\u0002\u0002\u0572\u0574\u0005x=\u0002\u0573\u0575\u0007\u0086\u0002", - "\u0002\u0574\u0573\u0003\u0002\u0002\u0002\u0574\u0575\u0003\u0002\u0002", - "\u0002\u0575\u0584\u0003\u0002\u0002\u0002\u0576\u0578\u0005p9\u0002", - "\u0577\u0579\u0007\u0086\u0002\u0002\u0578\u0577\u0003\u0002\u0002\u0002", - "\u0578\u0579\u0003\u0002\u0002\u0002\u0579\u0584\u0003\u0002\u0002\u0002", - "\u057a\u057c\u0005r:\u0002\u057b\u057d\u0007\u0086\u0002\u0002\u057c", - "\u057b\u0003\u0002\u0002\u0002\u057c\u057d\u0003\u0002\u0002\u0002\u057d", - "\u0584\u0003\u0002\u0002\u0002\u057e\u0580\u0005\u0102\u0082\u0002\u057f", - "\u0581\u0007\u0086\u0002\u0002\u0580\u057f\u0003\u0002\u0002\u0002\u0580", - "\u0581\u0003\u0002\u0002\u0002\u0581\u0584\u0003\u0002\u0002\u0002\u0582", - "\u0584\u0007\u0086\u0002\u0002\u0583\u055a\u0003\u0002\u0002\u0002\u0583", - "\u055e\u0003\u0002\u0002\u0002\u0583\u0562\u0003\u0002\u0002\u0002\u0583", - "\u0566\u0003\u0002\u0002\u0002\u0583\u056a\u0003\u0002\u0002\u0002\u0583", - "\u056e\u0003\u0002\u0002\u0002\u0583\u0572\u0003\u0002\u0002\u0002\u0583", - "\u0576\u0003\u0002\u0002\u0002\u0583\u057a\u0003\u0002\u0002\u0002\u0583", - "\u057e\u0003\u0002\u0002\u0002\u0583\u0582\u0003\u0002\u0002\u0002\u0584", - "\u00e3\u0003\u0002\u0002\u0002\u0585\u0586\u0005\u0122\u0092\u0002\u0586", - "\u0587\u0007\u0091\u0002\u0002\u0587\u0588\u0005\u00e2r\u0002\u0588", - "\u00e5\u0003\u0002\u0002\u0002\u0589\u058c\u0005\u010c\u0087\u0002\u058a", - "\u058b\u0007\u00ac\u0002\u0002\u058b\u058d\u0005\u010c\u0087\u0002\u058c", - "\u058a\u0003\u0002\u0002\u0002\u058c\u058d\u0003\u0002\u0002\u0002\u058d", - "\u00e7\u0003\u0002\u0002\u0002\u058e\u0593\u0007\u0082\u0002\u0002\u058f", - "\u0592\u0005\u008cG\u0002\u0590\u0592\u0005\u00e2r\u0002\u0591\u058f", - "\u0003\u0002\u0002\u0002\u0591\u0590\u0003\u0002\u0002\u0002\u0592\u0595", - "\u0003\u0002\u0002\u0002\u0593\u0591\u0003\u0002\u0002\u0002\u0593\u0594", - "\u0003\u0002\u0002\u0002\u0594\u0596\u0003\u0002\u0002\u0002\u0595\u0593", - "\u0003\u0002\u0002\u0002\u0596\u0597\u0007\u0083\u0002\u0002\u0597\u00e9", - "\u0003\u0002\u0002\u0002\u0598\u0599\u0007\u0012\u0002\u0002\u0599\u059a", - "\u0007\u0080\u0002\u0002\u059a\u059b\u0005\u0104\u0083\u0002\u059b\u059c", - "\u0007\u0081\u0002\u0002\u059c\u059f\u0005\u00e2r\u0002\u059d\u059e", - "\u0007\f\u0002\u0002\u059e\u05a0\u0005\u00e2r\u0002\u059f\u059d\u0003", - "\u0002\u0002\u0002\u059f\u05a0\u0003\u0002\u0002\u0002\u05a0\u05a3\u0003", - "\u0002\u0002\u0002\u05a1\u05a3\u0005\u00ecw\u0002\u05a2\u0598\u0003", - "\u0002\u0002\u0002\u05a2\u05a1\u0003\u0002\u0002\u0002\u05a3\u00eb\u0003", - "\u0002\u0002\u0002\u05a4\u05a5\u0007\u001e\u0002\u0002\u05a5\u05a6\u0007", - "\u0080\u0002\u0002\u05a6\u05a7\u0005\u0104\u0083\u0002\u05a7\u05a8\u0007", - "\u0081\u0002\u0002\u05a8\u05a9\u0005\u00eex\u0002\u05a9\u00ed\u0003", - "\u0002\u0002\u0002\u05aa\u05ae\u0007\u0082\u0002\u0002\u05ab\u05ad\u0005", - "\u00f0y\u0002\u05ac\u05ab\u0003\u0002\u0002\u0002\u05ad\u05b0\u0003", - "\u0002\u0002\u0002\u05ae\u05ac\u0003\u0002\u0002\u0002\u05ae\u05af\u0003", - "\u0002\u0002\u0002\u05af\u05b1\u0003\u0002\u0002\u0002\u05b0\u05ae\u0003", - "\u0002\u0002\u0002\u05b1\u05b2\u0007\u0083\u0002\u0002\u05b2\u00ef\u0003", - "\u0002\u0002\u0002\u05b3\u05b5\u0005\u00f2z\u0002\u05b4\u05b3\u0003", - "\u0002\u0002\u0002\u05b5\u05b6\u0003\u0002\u0002\u0002\u05b6\u05b4\u0003", - "\u0002\u0002\u0002\u05b6\u05b7\u0003\u0002\u0002\u0002\u05b7\u05b9\u0003", - "\u0002\u0002\u0002\u05b8\u05ba\u0005\u00e2r\u0002\u05b9\u05b8\u0003", - "\u0002\u0002\u0002\u05ba\u05bb\u0003\u0002\u0002\u0002\u05bb\u05b9\u0003", - "\u0002\u0002\u0002\u05bb\u05bc\u0003\u0002\u0002\u0002\u05bc\u00f1\u0003", - "\u0002\u0002\u0002\u05bd\u05c3\u0007\u0005\u0002\u0002\u05be\u05c4\u0005", - "\u00e6t\u0002\u05bf\u05c0\u0007\u0080\u0002\u0002\u05c0\u05c1\u0005", - "\u00e6t\u0002\u05c1\u05c2\u0007\u0081\u0002\u0002\u05c2\u05c4\u0003", - "\u0002\u0002\u0002\u05c3\u05be\u0003\u0002\u0002\u0002\u05c3\u05bf\u0003", - "\u0002\u0002\u0002\u05c4\u05c5\u0003\u0002\u0002\u0002\u05c5\u05c6\u0007", - "\u0091\u0002\u0002\u05c6\u05ca\u0003\u0002\u0002\u0002\u05c7\u05c8\u0007", - "\t\u0002\u0002\u05c8\u05ca\u0007\u0091\u0002\u0002\u05c9\u05bd\u0003", - "\u0002\u0002\u0002\u05c9\u05c7\u0003\u0002\u0002\u0002\u05ca\u00f3\u0003", - "\u0002\u0002\u0002\u05cb\u05d0\u0005\u00f6|\u0002\u05cc\u05d0\u0005", - "\u00f8}\u0002\u05cd\u05d0\u0005\u00fa~\u0002\u05ce\u05d0\u0005\u00fe", - "\u0080\u0002\u05cf\u05cb\u0003\u0002\u0002\u0002\u05cf\u05cc\u0003\u0002", - "\u0002\u0002\u05cf\u05cd\u0003\u0002\u0002\u0002\u05cf\u05ce\u0003\u0002", - "\u0002\u0002\u05d0\u00f5\u0003\u0002\u0002\u0002\u05d1\u05d2\u0007$", - "\u0002\u0002\u05d2\u05d3\u0007\u0080\u0002\u0002\u05d3\u05d4\u0005\u0104", - "\u0083\u0002\u05d4\u05d5\u0007\u0081\u0002\u0002\u05d5\u05d6\u0005\u00e2", - "r\u0002\u05d6\u00f7\u0003\u0002\u0002\u0002\u05d7\u05d8\u0007\n\u0002", - "\u0002\u05d8\u05d9\u0005\u00e2r\u0002\u05d9\u05da\u0007$\u0002\u0002", - "\u05da\u05db\u0007\u0080\u0002\u0002\u05db\u05dc\u0005\u0104\u0083\u0002", - "\u05dc\u05dd\u0007\u0081\u0002\u0002\u05dd\u05de\u0007\u0086\u0002\u0002", - "\u05de\u00f9\u0003\u0002\u0002\u0002\u05df\u05e0\u0007\u0010\u0002\u0002", - "\u05e0\u05e2\u0007\u0080\u0002\u0002\u05e1\u05e3\u0005\u00fc\u007f\u0002", - "\u05e2\u05e1\u0003\u0002\u0002\u0002\u05e2\u05e3\u0003\u0002\u0002\u0002", - "\u05e3\u05e4\u0003\u0002\u0002\u0002\u05e4\u05e6\u0007\u0086\u0002\u0002", - "\u05e5\u05e7\u0005\u0104\u0083\u0002\u05e6\u05e5\u0003\u0002\u0002\u0002", - "\u05e6\u05e7\u0003\u0002\u0002\u0002\u05e7\u05e8\u0003\u0002\u0002\u0002", - "\u05e8\u05ea\u0007\u0086\u0002\u0002\u05e9\u05eb\u0005\u0102\u0082\u0002", - "\u05ea\u05e9\u0003\u0002\u0002\u0002\u05ea\u05eb\u0003\u0002\u0002\u0002", - "\u05eb\u05ec\u0003\u0002\u0002\u0002\u05ec\u05ed\u0007\u0081\u0002\u0002", - "\u05ed\u05ee\u0005\u00e2r\u0002\u05ee\u00fb\u0003\u0002\u0002\u0002", - "\u05ef\u05f0\u0005\u009aN\u0002\u05f0\u05f1\u0005\u009eP\u0002\u05f1", - "\u05f4\u0003\u0002\u0002\u0002\u05f2\u05f4\u0005\u0102\u0082\u0002\u05f3", - "\u05ef\u0003\u0002\u0002\u0002\u05f3\u05f2\u0003\u0002\u0002\u0002\u05f4", - "\u00fd\u0003\u0002\u0002\u0002\u05f5\u05f6\u0007\u0010\u0002\u0002\u05f6", - "\u05f7\u0007\u0080\u0002\u0002\u05f7\u05f8\u0005n8\u0002\u05f8\u05fa", - "\u00070\u0002\u0002\u05f9\u05fb\u0005\u0104\u0083\u0002\u05fa\u05f9", - "\u0003\u0002\u0002\u0002\u05fa\u05fb\u0003\u0002\u0002\u0002\u05fb\u05fc", - "\u0003\u0002\u0002\u0002\u05fc\u05fd\u0007\u0081\u0002\u0002\u05fd\u05fe", - "\u0005\u00e2r\u0002\u05fe\u00ff\u0003\u0002\u0002\u0002\u05ff\u0600", - "\u0007\u0011\u0002\u0002\u0600\u0608\u0005\u0122\u0092\u0002\u0601\u0608", - "\u0007\b\u0002\u0002\u0602\u0608\u0007\u0004\u0002\u0002\u0603\u0605", - "\u0007\u0018\u0002\u0002\u0604\u0606\u0005\u0104\u0083\u0002\u0605\u0604", - "\u0003\u0002\u0002\u0002\u0605\u0606\u0003\u0002\u0002\u0002\u0606\u0608", - "\u0003\u0002\u0002\u0002\u0607\u05ff\u0003\u0002\u0002\u0002\u0607\u0601", - "\u0003\u0002\u0002\u0002\u0607\u0602\u0003\u0002\u0002\u0002\u0607\u0603", - "\u0003\u0002\u0002\u0002\u0608\u0101\u0003\u0002\u0002\u0002\u0609\u060e", - "\u0005\u0104\u0083\u0002\u060a\u060b\u0007\u0087\u0002\u0002\u060b\u060d", - "\u0005\u0104\u0083\u0002\u060c\u060a\u0003\u0002\u0002\u0002\u060d\u0610", - "\u0003\u0002\u0002\u0002\u060e\u060c\u0003\u0002\u0002\u0002\u060e\u060f", - "\u0003\u0002\u0002\u0002\u060f\u0103\u0003\u0002\u0002\u0002\u0610\u060e", - "\u0003\u0002\u0002\u0002\u0611\u0612\b\u0083\u0001\u0002\u0612\u061c", - "\u0005\u0108\u0085\u0002\u0613\u0614\u0007\u0080\u0002\u0002\u0614\u0615", - "\u0005\u00e8u\u0002\u0615\u0616\u0007\u0081\u0002\u0002\u0616\u061c", - "\u0003\u0002\u0002\u0002\u0617\u0618\u0005\u010e\u0088\u0002\u0618\u0619", - "\u0005\u0106\u0084\u0002\u0619\u061a\u0005\u0104\u0083\u0003\u061a\u061c", - "\u0003\u0002\u0002\u0002\u061b\u0611\u0003\u0002\u0002\u0002\u061b\u0613", - "\u0003\u0002\u0002\u0002\u061b\u0617\u0003\u0002\u0002\u0002\u061c\u0649", - "\u0003\u0002\u0002\u0002\u061d\u061e\f\u000f\u0002\u0002\u061e\u061f", - "\t\f\u0002\u0002\u061f\u0648\u0005\u0104\u0083\u0010\u0620\u0621\f\u000e", - "\u0002\u0002\u0621\u0622\t\r\u0002\u0002\u0622\u0648\u0005\u0104\u0083", - "\u000f\u0623\u0628\f\r\u0002\u0002\u0624\u0625\u0007\u008d\u0002\u0002", - "\u0625\u0629\u0007\u008d\u0002\u0002\u0626\u0627\u0007\u008c\u0002\u0002", - "\u0627\u0629\u0007\u008c\u0002\u0002\u0628\u0624\u0003\u0002\u0002\u0002", - "\u0628\u0626\u0003\u0002\u0002\u0002\u0629\u062a\u0003\u0002\u0002\u0002", - "\u062a\u0648\u0005\u0104\u0083\u000e\u062b\u062c\f\f\u0002\u0002\u062c", - "\u062d\t\u000e\u0002\u0002\u062d\u0648\u0005\u0104\u0083\r\u062e\u062f", - "\f\u000b\u0002\u0002\u062f\u0630\t\u000f\u0002\u0002\u0630\u0648\u0005", - "\u0104\u0083\f\u0631\u0632\f\n\u0002\u0002\u0632\u0633\u0007\u009e\u0002", - "\u0002\u0633\u0648\u0005\u0104\u0083\u000b\u0634\u0635\f\t\u0002\u0002", - "\u0635\u0636\u0007\u00a0\u0002\u0002\u0636\u0648\u0005\u0104\u0083\n", - "\u0637\u0638\f\b\u0002\u0002\u0638\u0639\u0007\u009f\u0002\u0002\u0639", - "\u0648\u0005\u0104\u0083\t\u063a\u063b\f\u0007\u0002\u0002\u063b\u063c", - "\u0007\u0096\u0002\u0002\u063c\u0648\u0005\u0104\u0083\b\u063d\u063e", - "\f\u0006\u0002\u0002\u063e\u063f\u0007\u0097\u0002\u0002\u063f\u0648", - "\u0005\u0104\u0083\u0007\u0640\u0641\f\u0005\u0002\u0002\u0641\u0643", - "\u0007\u0090\u0002\u0002\u0642\u0644\u0005\u0104\u0083\u0002\u0643\u0642", - "\u0003\u0002\u0002\u0002\u0643\u0644\u0003\u0002\u0002\u0002\u0644\u0645", - "\u0003\u0002\u0002\u0002\u0645\u0646\u0007\u0091\u0002\u0002\u0646\u0648", - "\u0005\u0104\u0083\u0006\u0647\u061d\u0003\u0002\u0002\u0002\u0647\u0620", - "\u0003\u0002\u0002\u0002\u0647\u0623\u0003\u0002\u0002\u0002\u0647\u062b", - "\u0003\u0002\u0002\u0002\u0647\u062e\u0003\u0002\u0002\u0002\u0647\u0631", - "\u0003\u0002\u0002\u0002\u0647\u0634\u0003\u0002\u0002\u0002\u0647\u0637", - "\u0003\u0002\u0002\u0002\u0647\u063a\u0003\u0002\u0002\u0002\u0647\u063d", - "\u0003\u0002\u0002\u0002\u0647\u0640\u0003\u0002\u0002\u0002\u0648\u064b", - "\u0003\u0002\u0002\u0002\u0649\u0647\u0003\u0002\u0002\u0002\u0649\u064a", - "\u0003\u0002\u0002\u0002\u064a\u0105\u0003\u0002\u0002\u0002\u064b\u0649", - "\u0003\u0002\u0002\u0002\u064c\u064d\t\u0010\u0002\u0002\u064d\u0107", - "\u0003\u0002\u0002\u0002\u064e\u0658\u0005\u010e\u0088\u0002\u064f\u0650", - "\u0007\u0080\u0002\u0002\u0650\u0651\u0005\u00d6l\u0002\u0651\u0652", - "\u0007\u0081\u0002\u0002\u0652\u0655\u0003\u0002\u0002\u0002\u0653\u0656", - "\u0005\u0108\u0085\u0002\u0654\u0656\u0005\u010a\u0086\u0002\u0655\u0653", - "\u0003\u0002\u0002\u0002\u0655\u0654\u0003\u0002\u0002\u0002\u0656\u0658", - "\u0003\u0002\u0002\u0002\u0657\u064e\u0003\u0002\u0002\u0002\u0657\u064f", - "\u0003\u0002\u0002\u0002\u0658\u0109\u0003\u0002\u0002\u0002\u0659\u065d", - "\u0005\u0104\u0083\u0002\u065a\u065d\u0005\u00d0i\u0002\u065b\u065d", - "\u0005\u00d2j\u0002\u065c\u0659\u0003\u0002\u0002\u0002\u065c\u065a", - "\u0003\u0002\u0002\u0002\u065c\u065b\u0003\u0002\u0002\u0002\u065d\u010b", - "\u0003\u0002\u0002\u0002\u065e\u0661\u0005\u0122\u0092\u0002\u065f\u0661", - "\u0005\u011e\u0090\u0002\u0660\u065e\u0003\u0002\u0002\u0002\u0660\u065f", - "\u0003\u0002\u0002\u0002\u0661\u010d\u0003\u0002\u0002\u0002\u0662\u0671", - "\u0005\u0112\u008a\u0002\u0663\u0669\u0007\u001b\u0002\u0002\u0664\u066a", - "\u0005\u010e\u0088\u0002\u0665\u0666\u0007\u0080\u0002\u0002\u0666\u0667", - "\u0005\u00b6\\\u0002\u0667\u0668\u0007\u0081\u0002\u0002\u0668\u066a", - "\u0003\u0002\u0002\u0002\u0669\u0664\u0003\u0002\u0002\u0002\u0669\u0665", - "\u0003\u0002\u0002\u0002\u066a\u0671\u0003\u0002\u0002\u0002\u066b\u066c", - "\t\u0011\u0002\u0002\u066c\u0671\u0005\u010e\u0088\u0002\u066d\u066e", - "\u0005\u0110\u0089\u0002\u066e\u066f\u0005\u0108\u0085\u0002\u066f\u0671", - "\u0003\u0002\u0002\u0002\u0670\u0662\u0003\u0002\u0002\u0002\u0670\u0663", - "\u0003\u0002\u0002\u0002\u0670\u066b\u0003\u0002\u0002\u0002\u0670\u066d", - "\u0003\u0002\u0002\u0002\u0671\u010f\u0003\u0002\u0002\u0002\u0672\u0673", - "\t\u0012\u0002\u0002\u0673\u0111\u0003\u0002\u0002\u0002\u0674\u0675", - "\b\u008a\u0001\u0002\u0675\u0679\u0005\u011c\u008f\u0002\u0676\u0678", - "\u0005\u0114\u008b\u0002\u0677\u0676\u0003\u0002\u0002\u0002\u0678\u067b", - "\u0003\u0002\u0002\u0002\u0679\u0677\u0003\u0002\u0002\u0002\u0679\u067a", - "\u0003\u0002\u0002\u0002\u067a\u0687\u0003\u0002\u0002\u0002\u067b\u0679", - "\u0003\u0002\u0002\u0002\u067c\u067d\f\u0003\u0002\u0002\u067d\u067e", - "\t\u0013\u0002\u0002\u067e\u0682\u0005\u0122\u0092\u0002\u067f\u0681", - "\u0005\u0114\u008b\u0002\u0680\u067f\u0003\u0002\u0002\u0002\u0681\u0684", - "\u0003\u0002\u0002\u0002\u0682\u0680\u0003\u0002\u0002\u0002\u0682\u0683", - "\u0003\u0002\u0002\u0002\u0683\u0686\u0003\u0002\u0002\u0002\u0684\u0682", - "\u0003\u0002\u0002\u0002\u0685\u067c\u0003\u0002\u0002\u0002\u0686\u0689", - "\u0003\u0002\u0002\u0002\u0687\u0685\u0003\u0002\u0002\u0002\u0687\u0688", - "\u0003\u0002\u0002\u0002\u0688\u0113\u0003\u0002\u0002\u0002\u0689\u0687", - "\u0003\u0002\u0002\u0002\u068a\u068b\u0007\u0084\u0002\u0002\u068b\u068c", - "\u0005\u0104\u0083\u0002\u068c\u068d\u0007\u0085\u0002\u0002\u068d\u069d", - "\u0003\u0002\u0002\u0002\u068e\u0690\u0007\u0080\u0002\u0002\u068f\u0691", - "\u0005\u0116\u008c\u0002\u0690\u068f\u0003\u0002\u0002\u0002\u0690\u0691", - "\u0003\u0002\u0002\u0002\u0691\u0692\u0003\u0002\u0002\u0002\u0692\u069d", - "\u0007\u0081\u0002\u0002\u0693\u0696\u0007\u0080\u0002\u0002\u0694\u0697", - "\u0007\u0087\u0002\u0002\u0695\u0697\n\u0014\u0002\u0002\u0696\u0694", - "\u0003\u0002\u0002\u0002\u0696\u0695\u0003\u0002\u0002\u0002\u0697\u0698", - "\u0003\u0002\u0002\u0002\u0698\u0696\u0003\u0002\u0002\u0002\u0698\u0699", - "\u0003\u0002\u0002\u0002\u0699\u069a\u0003\u0002\u0002\u0002\u069a\u069d", - "\u0007\u0081\u0002\u0002\u069b\u069d\t\u0011\u0002\u0002\u069c\u068a", - "\u0003\u0002\u0002\u0002\u069c\u068e\u0003\u0002\u0002\u0002\u069c\u0693", - "\u0003\u0002\u0002\u0002\u069c\u069b\u0003\u0002\u0002\u0002\u069d\u0115", - "\u0003\u0002\u0002\u0002\u069e\u06a3\u0005\u0118\u008d\u0002\u069f\u06a0", - "\u0007\u0087\u0002\u0002\u06a0\u06a2\u0005\u0118\u008d\u0002\u06a1\u069f", - "\u0003\u0002\u0002\u0002\u06a2\u06a5\u0003\u0002\u0002\u0002\u06a3\u06a1", - "\u0003\u0002\u0002\u0002\u06a3\u06a4\u0003\u0002\u0002\u0002\u06a4\u0117", - "\u0003\u0002\u0002\u0002\u06a5\u06a3\u0003\u0002\u0002\u0002\u06a6\u06a9", - "\u0005\u0104\u0083\u0002\u06a7\u06a9\u0005\u00b6\\\u0002\u06a8\u06a6", - "\u0003\u0002\u0002\u0002\u06a8\u06a7\u0003\u0002\u0002\u0002\u06a9\u0119", - "\u0003\u0002\u0002\u0002\u06aa\u06b2\u0005\u0122\u0092\u0002\u06ab\u06ac", - "\u0007\u0080\u0002\u0002\u06ac\u06af\t\u0015\u0002\u0002\u06ad\u06ae", - "\u0007\u0087\u0002\u0002\u06ae\u06b0\t\u0015\u0002\u0002\u06af\u06ad", - "\u0003\u0002\u0002\u0002\u06af\u06b0\u0003\u0002\u0002\u0002\u06b0\u06b1", - "\u0003\u0002\u0002\u0002\u06b1\u06b3\u0007\u0081\u0002\u0002\u06b2\u06ab", - "\u0003\u0002\u0002\u0002\u06b2\u06b3\u0003\u0002\u0002\u0002\u06b3\u011b", - "\u0003\u0002\u0002\u0002\u06b4\u06c4\u0005\u0122\u0092\u0002\u06b5\u06c4", - "\u0005\u011e\u0090\u0002\u06b6\u06c4\u0005\u0120\u0091\u0002\u06b7\u06b8", - "\u0007\u0080\u0002\u0002\u06b8\u06b9\u0005\u0104\u0083\u0002\u06b9\u06ba", - "\u0007\u0081\u0002\u0002\u06ba\u06c4\u0003\u0002\u0002\u0002\u06bb\u06c4", - "\u0005\\/\u0002\u06bc\u06c4\u0005f4\u0002\u06bd\u06c4\u0005j6\u0002", - "\u06be\u06c4\u0005l7\u0002\u06bf\u06c4\u0005N(\u0002\u06c0\u06c4\u0005", - "R*\u0002\u06c1\u06c4\u0005T+\u0002\u06c2\u06c4\u0005Z.\u0002\u06c3\u06b4", - "\u0003\u0002\u0002\u0002\u06c3\u06b5\u0003\u0002\u0002\u0002\u06c3\u06b6", - "\u0003\u0002\u0002\u0002\u06c3\u06b7\u0003\u0002\u0002\u0002\u06c3\u06bb", - "\u0003\u0002\u0002\u0002\u06c3\u06bc\u0003\u0002\u0002\u0002\u06c3\u06bd", - "\u0003\u0002\u0002\u0002\u06c3\u06be\u0003\u0002\u0002\u0002\u06c3\u06bf", - "\u0003\u0002\u0002\u0002\u06c3\u06c0\u0003\u0002\u0002\u0002\u06c3\u06c1", - "\u0003\u0002\u0002\u0002\u06c3\u06c2\u0003\u0002\u0002\u0002\u06c4\u011d", - "\u0003\u0002\u0002\u0002\u06c5\u06d8\u0007\u00af\u0002\u0002\u06c6\u06d8", - "\u0007\u00b0\u0002\u0002\u06c7\u06d8\u0007\u00b1\u0002\u0002\u06c8\u06ca", - "\t\r\u0002\u0002\u06c9\u06c8\u0003\u0002\u0002\u0002\u06c9\u06ca\u0003", - "\u0002\u0002\u0002\u06ca\u06cb\u0003\u0002\u0002\u0002\u06cb\u06d8\u0007", - "\u00b2\u0002\u0002\u06cc\u06ce\t\r\u0002\u0002\u06cd\u06cc\u0003\u0002", - "\u0002\u0002\u06cd\u06ce\u0003\u0002\u0002\u0002\u06ce\u06cf\u0003\u0002", - "\u0002\u0002\u06cf\u06d8\u0007\u00b3\u0002\u0002\u06d0\u06d8\u0007\u00ad", - "\u0002\u0002\u06d1\u06d8\u00072\u0002\u0002\u06d2\u06d8\u00074\u0002", - "\u0002\u06d3\u06d8\u0007;\u0002\u0002\u06d4\u06d8\u00073\u0002\u0002", - "\u06d5\u06d8\u0007(\u0002\u0002\u06d6\u06d8\u0007)\u0002\u0002\u06d7", - "\u06c5\u0003\u0002\u0002\u0002\u06d7\u06c6\u0003\u0002\u0002\u0002\u06d7", - "\u06c7\u0003\u0002\u0002\u0002\u06d7\u06c9\u0003\u0002\u0002\u0002\u06d7", - "\u06cd\u0003\u0002\u0002\u0002\u06d7\u06d0\u0003\u0002\u0002\u0002\u06d7", - "\u06d1\u0003\u0002\u0002\u0002\u06d7\u06d2\u0003\u0002\u0002\u0002\u06d7", - "\u06d3\u0003\u0002\u0002\u0002\u06d7\u06d4\u0003\u0002\u0002\u0002\u06d7", - "\u06d5\u0003\u0002\u0002\u0002\u06d7\u06d6\u0003\u0002\u0002\u0002\u06d8", - "\u011f\u0003\u0002\u0002\u0002\u06d9\u06dd\u0007\u00ae\u0002\u0002\u06da", - "\u06dc\t\u0016\u0002\u0002\u06db\u06da\u0003\u0002\u0002\u0002\u06dc", - "\u06df\u0003\u0002\u0002\u0002\u06dd\u06db\u0003\u0002\u0002\u0002\u06dd", - "\u06de\u0003\u0002\u0002\u0002\u06de\u06e0\u0003\u0002\u0002\u0002\u06df", - "\u06dd\u0003\u0002\u0002\u0002\u06e0\u06e2\u0007\u00bb\u0002\u0002\u06e1", - "\u06d9\u0003\u0002\u0002\u0002\u06e2\u06e3\u0003\u0002\u0002\u0002\u06e3", - "\u06e1\u0003\u0002\u0002\u0002\u06e3\u06e4\u0003\u0002\u0002\u0002\u06e4", - "\u0121\u0003\u0002\u0002\u0002\u06e5\u06e6\t\u0017\u0002\u0002\u06e6", - "\u0123\u0003\u0002\u0002\u0002\u00ec\u0127\u0137\u013f\u0142\u014a\u014d", - "\u0152\u0159\u015f\u0162\u0165\u016d\u0174\u0177\u017a\u0182\u0185\u0188", - "\u0192\u019c\u01a1\u01aa\u01af\u01b8\u01be\u01c0\u01cc\u01d6\u01de\u01e1", - "\u01e4\u01ed\u0204\u020b\u020e\u0214\u021d\u0223\u0225\u022e\u0230\u0239", - "\u023f\u0249\u024b\u0254\u0258\u025b\u0263\u0267\u0269\u026c\u0272\u0276", - "\u027c\u028a\u0291\u0297\u029a\u029e\u02a4\u02a8\u02b0\u02b3\u02ba\u02c6", - "\u02ca\u02cc\u02d8\u02da\u02e6\u02e8\u02ed\u02f3\u02f6\u02fc\u0300\u0303", - "\u0306\u0311\u0317\u0319\u031c\u0324\u0329\u032f\u0338\u033d\u033f\u0355", - "\u035c\u0361\u0379\u037e\u0383\u0387\u038b\u038f\u0398\u039f\u03a6\u03ac", - "\u03af\u03b3\u03bc\u03be\u03c2\u03c6\u03cb\u03d4\u03d9\u03e0\u03e9\u03ed", - "\u03f9\u03fb\u0405\u0410\u0416\u041b\u0421\u0425\u042c\u0437\u0439\u0441", - "\u044f\u0462\u0464\u0470\u0475\u0479\u047d\u0481\u0488\u048e\u049a\u04a1", - "\u04a5\u04aa\u04af\u04b4\u04bb\u04c0\u04c6\u04c9\u04cd\u04d1\u04d8\u04dc", - "\u04df\u04e5\u04ea\u04ee\u04f3\u04f8\u04fa\u0506\u050a\u050c\u0515\u0519", - "\u051d\u0520\u0524\u0528\u052e\u0532\u0537\u0539\u053d\u0542\u0545\u054c", - "\u0553\u0556\u055c\u0560\u0564\u0568\u056c\u0570\u0574\u0578\u057c\u0580", - "\u0583\u058c\u0591\u0593\u059f\u05a2\u05ae\u05b6\u05bb\u05c3\u05c9\u05cf", - "\u05e2\u05e6\u05ea\u05f3\u05fa\u0605\u0607\u060e\u061b\u0628\u0643\u0647", - "\u0649\u0655\u0657\u065c\u0660\u0669\u0670\u0679\u0682\u0687\u0690\u0696", - "\u0698\u069c\u06a3\u06a8\u06af\u06b2\u06c3\u06c9\u06cd\u06d7\u06dd\u06e3"].join(""); + "\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0004\u0093\t\u0093\u0004", + "\u0094\t\u0094\u0003\u0002\u0007\u0002\u012a\n\u0002\f\u0002\u000e\u0002", + "\u012d\u000b\u0002\u0003\u0002\u0003\u0002\u0003\u0003\u0003\u0003\u0003", + "\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003", + "\u0003\u0003\u0003\u0003\u0003\u0005\u0003\u013c\n\u0003\u0003\u0004", + "\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0005\u0004", + "\u0144\n\u0004\u0003\u0004\u0005\u0004\u0147\n\u0004\u0003\u0004\u0003", + "\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0005\u0004\u014f", + "\n\u0004\u0003\u0005\u0005\u0005\u0152\n\u0005\u0003\u0005\u0003\u0005", + "\u0007\u0005\u0156\n\u0005\f\u0005\u000e\u0005\u0159\u000b\u0005\u0003", + "\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u015f\n\u0005", + "\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u0165\n", + "\u0005\u0003\u0005\u0005\u0005\u0168\n\u0005\u0003\u0005\u0005\u0005", + "\u016b\n\u0005\u0003\u0005\u0003\u0005\u0003\u0006\u0003\u0006\u0007", + "\u0006\u0171\n\u0006\f\u0006\u000e\u0006\u0174\u000b\u0006\u0003\u0006", + "\u0003\u0006\u0003\u0006\u0003\u0006\u0005\u0006\u017a\n\u0006\u0003", + "\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0005\u0006\u0181", + "\n\u0006\u0003\u0006\u0005\u0006\u0184\n\u0006\u0003\u0006\u0005\u0006", + "\u0187\n\u0006\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0003", + "\u0007\u0003\u0007\u0005\u0007\u018f\n\u0007\u0003\u0007\u0005\u0007", + "\u0192\n\u0007\u0003\u0007\u0005\u0007\u0195\n\u0007\u0003\u0007\u0003", + "\u0007\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0003\b\u0005\b\u019f", + "\n\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t\u0003\t", + "\u0005\t\u01a9\n\t\u0003\n\u0003\n\u0007\n\u01ad\n\n\f\n\u000e\n\u01b0", + "\u000b\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0005\n\u01b8", + "\n\n\u0003\n\u0007\n\u01bb\n\n\f\n\u000e\n\u01be\u000b\n\u0003\n\u0003", + "\n\u0003\u000b\u0003\u000b\u0007\u000b\u01c4\n\u000b\f\u000b\u000e\u000b", + "\u01c7\u000b\u000b\u0003\u000b\u0006\u000b\u01ca\n\u000b\r\u000b\u000e", + "\u000b\u01cb\u0005\u000b\u01ce\n\u000b\u0003\f\u0003\f\u0003\f\u0003", + "\f\u0003\r\u0003\r\u0003\r\u0003\r\u0003\r\u0005\r\u01d9\n\r\u0003\u000e", + "\u0003\u000e\u0003\u000e\u0003\u000e\u0007\u000e\u01df\n\u000e\f\u000e", + "\u000e\u000e\u01e2\u000b\u000e\u0003\u000e\u0003\u000e\u0003\u000f\u0003", + "\u000f\u0003\u000f\u0007\u000f\u01e9\n\u000f\f\u000f\u000e\u000f\u01ec", + "\u000b\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010", + "\u0005\u0010\u01f3\n\u0010\u0003\u0010\u0005\u0010\u01f6\n\u0010\u0003", + "\u0010\u0005\u0010\u01f9\n\u0010\u0003\u0010\u0003\u0010\u0003\u0011", + "\u0003\u0011\u0003\u0011\u0007\u0011\u0200\n\u0011\f\u0011\u000e\u0011", + "\u0203\u000b\u0011\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003", + "\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003", + "\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0003", + "\u0012\u0003\u0012\u0003\u0012\u0003\u0012\u0005\u0012\u0219\n\u0012", + "\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0005\u0013", + "\u0220\n\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0005\u0013\u0225", + "\n\u0013\u0005\u0013\u0227\n\u0013\u0003\u0014\u0003\u0014\u0007\u0014", + "\u022b\n\u0014\f\u0014\u000e\u0014\u022e\u000b\u0014\u0003\u0014\u0003", + "\u0014\u0003\u0015\u0003\u0015\u0007\u0015\u0234\n\u0015\f\u0015\u000e", + "\u0015\u0237\u000b\u0015\u0003\u0015\u0006\u0015\u023a\n\u0015\r\u0015", + "\u000e\u0015\u023b\u0005\u0015\u023e\n\u0015\u0003\u0016\u0003\u0016", + "\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0017\u0006\u0017", + "\u0247\n\u0017\r\u0017\u000e\u0017\u0248\u0003\u0018\u0003\u0018\u0003", + "\u0018\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0005\u001a\u0252", + "\n\u001a\u0003\u001a\u0003\u001a\u0003\u001a\u0007\u001a\u0257\n\u001a", + "\f\u001a\u000e\u001a\u025a\u000b\u001a\u0003\u001a\u0003\u001a\u0003", + "\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001b\u0006\u001b\u0263", + "\n\u001b\r\u001b\u000e\u001b\u0264\u0003\u001c\u0003\u001c\u0003\u001c", + "\u0003\u001d\u0003\u001d\u0003\u001d\u0003\u001e\u0005\u001e\u026e\n", + "\u001e\u0003\u001e\u0003\u001e\u0005\u001e\u0272\n\u001e\u0003\u001e", + "\u0005\u001e\u0275\n\u001e\u0003\u001e\u0003\u001e\u0003\u001f\u0003", + "\u001f\u0006\u001f\u027b\n\u001f\r\u001f\u000e\u001f\u027c\u0003\u001f", + "\u0003\u001f\u0005\u001f\u0281\n\u001f\u0005\u001f\u0283\n\u001f\u0003", + " \u0005 \u0286\n \u0003 \u0003 \u0007 \u028a\n \f \u000e \u028d\u000b", + " \u0003 \u0005 \u0290\n \u0003 \u0003 \u0003!\u0003!\u0005!\u0296\n", + "!\u0003\"\u0003\"\u0003\"\u0003\"\u0003#\u0003#\u0003#\u0003#\u0003", + "#\u0003#\u0003#\u0003#\u0005#\u02a4\n#\u0003$\u0003$\u0003$\u0007$\u02a9", + "\n$\f$\u000e$\u02ac\u000b$\u0003%\u0003%\u0003%\u0005%\u02b1\n%\u0003", + "&\u0005&\u02b4\n&\u0003&\u0003&\u0005&\u02b8\n&\u0003&\u0003&\u0003", + "&\u0003&\u0005&\u02be\n&\u0003&\u0003&\u0005&\u02c2\n&\u0003\'\u0003", + "\'\u0003\'\u0003\'\u0007\'\u02c8\n\'\f\'\u000e\'\u02cb\u000b\'\u0005", + "\'\u02cd\n\'\u0003\'\u0003\'\u0003(\u0007(\u02d2\n(\f(\u000e(\u02d5", + "\u000b(\u0003(\u0003(\u0003)\u0003)\u0003)\u0003)\u0003)\u0007)\u02de", + "\n)\f)\u000e)\u02e1\u000b)\u0003)\u0005)\u02e4\n)\u0005)\u02e6\n)\u0003", + ")\u0003)\u0003*\u0003*\u0003*\u0003*\u0003+\u0003+\u0003+\u0003+\u0005", + "+\u02f2\n+\u0005+\u02f4\n+\u0003+\u0003+\u0003,\u0003,\u0003,\u0003", + ",\u0003,\u0003,\u0003,\u0003,\u0005,\u0300\n,\u0005,\u0302\n,\u0003", + "-\u0003-\u0003-\u0005-\u0307\n-\u0003-\u0003-\u0007-\u030b\n-\f-\u000e", + "-\u030e\u000b-\u0005-\u0310\n-\u0003-\u0003-\u0003.\u0003.\u0005.\u0316", + "\n.\u0003/\u0003/\u0005/\u031a\n/\u0003/\u0005/\u031d\n/\u0003/\u0005", + "/\u0320\n/\u0003/\u0003/\u00030\u00030\u00030\u00030\u00030\u00031\u0003", + "1\u00051\u032b\n1\u00032\u00032\u00062\u032f\n2\r2\u000e2\u0330\u0005", + "2\u0333\n2\u00033\u00053\u0336\n3\u00033\u00033\u00033\u00033\u0007", + "3\u033c\n3\f3\u000e3\u033f\u000b3\u00034\u00034\u00054\u0343\n4\u0003", + "4\u00034\u00034\u00034\u00054\u0349\n4\u00035\u00035\u00035\u00035\u0003", + "5\u00036\u00036\u00056\u0352\n6\u00036\u00066\u0355\n6\r6\u000e6\u0356", + "\u00056\u0359\n6\u00037\u00037\u00037\u00037\u00037\u00038\u00038\u0003", + "8\u00038\u00038\u00039\u00039\u00039\u0003:\u0003:\u0003:\u0003:\u0003", + ":\u0003:\u0003:\u0005:\u036f\n:\u0003;\u0003;\u0003;\u0007;\u0374\n", + ";\f;\u000e;\u0377\u000b;\u0003;\u0003;\u0005;\u037b\n;\u0003<\u0003", + "<\u0003<\u0003<\u0003<\u0003<\u0003=\u0003=\u0003=\u0003=\u0003=\u0003", + "=\u0003>\u0003>\u0003>\u0003?\u0003?\u0003?\u0007?\u038f\n?\f?\u000e", + "?\u0392\u000b?\u0003?\u0003?\u0003@\u0003@\u0003@\u0007@\u0399\n@\f", + "@\u000e@\u039c\u000b@\u0003@\u0003@\u0003A\u0005A\u03a1\nA\u0003A\u0003", + "A\u0003A\u0005A\u03a6\nA\u0003A\u0003A\u0003A\u0005A\u03ab\nA\u0003", + "B\u0005B\u03ae\nB\u0003B\u0003B\u0003B\u0005B\u03b3\nB\u0003B\u0005", + "B\u03b6\nB\u0003B\u0003B\u0003B\u0003B\u0005B\u03bc\nB\u0003B\u0003", + "B\u0003B\u0005B\u03c1\nB\u0003C\u0003C\u0005C\u03c5\nC\u0003D\u0003", + "D\u0005D\u03c9\nD\u0003E\u0003E\u0005E\u03cd\nE\u0003E\u0003E\u0003", + "F\u0003F\u0003F\u0007F\u03d4\nF\fF\u000eF\u03d7\u000bF\u0003G\u0003", + "G\u0003G\u0003G\u0005G\u03dd\nG\u0003H\u0003H\u0003H\u0003H\u0003H\u0005", + "H\u03e4\nH\u0003I\u0003I\u0003I\u0003I\u0005I\u03ea\nI\u0003J\u0005", + "J\u03ed\nJ\u0003J\u0003J\u0005J\u03f1\nJ\u0003J\u0003J\u0003J\u0003", + "J\u0003J\u0003K\u0003K\u0007K\u03fa\nK\fK\u000eK\u03fd\u000bK\u0003", + "K\u0005K\u0400\nK\u0003K\u0003K\u0005K\u0404\nK\u0003K\u0003K\u0007", + "K\u0408\nK\fK\u000eK\u040b\u000bK\u0003K\u0003K\u0003L\u0003L\u0003", + "L\u0003L\u0005L\u0413\nL\u0003L\u0003L\u0007L\u0417\nL\fL\u000eL\u041a", + "\u000bL\u0003L\u0003L\u0003M\u0005M\u041f\nM\u0003M\u0003M\u0003M\u0003", + "M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0005M\u042b\nM\u0003M\u0003", + "M\u0007M\u042f\nM\fM\u000eM\u0432\u000bM\u0003M\u0003M\u0003N\u0003", + "N\u0003N\u0007N\u0439\nN\fN\u000eN\u043c\u000bN\u0003O\u0005O\u043f", + "\nO\u0003O\u0003O\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003", + "P\u0006P\u044b\nP\rP\u000eP\u044c\u0003Q\u0003Q\u0003Q\u0003Q\u0003", + "Q\u0003Q\u0007Q\u0455\nQ\fQ\u000eQ\u0458\u000bQ\u0003Q\u0003Q\u0003", + "Q\u0003R\u0003R\u0003R\u0007R\u0460\nR\fR\u000eR\u0463\u000bR\u0003", + "S\u0003S\u0003S\u0007S\u0468\nS\fS\u000eS\u046b\u000bS\u0003S\u0003", + "S\u0005S\u046f\nS\u0003T\u0003T\u0003T\u0005T\u0474\nT\u0003T\u0003", + "T\u0006T\u0478\nT\rT\u000eT\u0479\u0003T\u0003T\u0005T\u047e\nT\u0003", + "U\u0003U\u0003U\u0003U\u0005U\u0484\nU\u0003U\u0003U\u0007U\u0488\n", + "U\fU\u000eU\u048b\u000bU\u0003U\u0003U\u0003V\u0003V\u0003V\u0003V\u0003", + "V\u0003V\u0006V\u0495\nV\rV\u000eV\u0496\u0003W\u0003W\u0003W\u0003", + "W\u0003W\u0003W\u0005W\u049f\nW\u0003X\u0003X\u0003Y\u0003Y\u0003Z\u0003", + "Z\u0003[\u0003[\u0003\\\u0003\\\u0003\\\u0003\\\u0005\\\u04ad\n\\\u0003", + "]\u0003]\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003", + "^\u0003^\u0003^\u0003^\u0003^\u0003^\u0005^\u04bf\n^\u0003^\u0005^\u04c2", + "\n^\u0003_\u0003_\u0003_\u0003_\u0003_\u0003`\u0003`\u0003`\u0007`\u04cc", + "\n`\f`\u000e`\u04cf\u000b`\u0003a\u0003a\u0005a\u04d3\na\u0003a\u0003", + "a\u0005a\u04d7\na\u0003b\u0003b\u0005b\u04db\nb\u0003b\u0003b\u0005", + "b\u04df\nb\u0003b\u0003b\u0003b\u0003b\u0003b\u0005b\u04e6\nb\u0003", + "b\u0003b\u0003b\u0003b\u0005b\u04ec\nb\u0003b\u0003b\u0003b\u0003b\u0003", + "b\u0005b\u04f3\nb\u0003b\u0003b\u0003b\u0003b\u0003b\u0005b\u04fa\n", + "b\u0003c\u0003c\u0003c\u0007c\u04ff\nc\fc\u000ec\u0502\u000bc\u0003", + "c\u0005c\u0505\nc\u0003d\u0003d\u0003d\u0007d\u050a\nd\fd\u000ed\u050d", + "\u000bd\u0003d\u0003d\u0005d\u0511\nd\u0003e\u0003e\u0005e\u0515\ne", + "\u0003f\u0003f\u0003f\u0003f\u0003f\u0005f\u051c\nf\u0003f\u0007f\u051f", + "\nf\ff\u000ef\u0522\u000bf\u0003f\u0003f\u0003f\u0005f\u0527\nf\u0003", + "f\u0005f\u052a\nf\u0003f\u0003f\u0005f\u052e\nf\u0003g\u0003g\u0005", + "g\u0532\ng\u0003g\u0003g\u0003h\u0003h\u0003h\u0005h\u0539\nh\u0003", + "i\u0003i\u0005i\u053d\ni\u0003i\u0005i\u0540\ni\u0003j\u0003j\u0003", + "j\u0003j\u0003j\u0003j\u0003j\u0007j\u0549\nj\fj\u000ej\u054c\u000b", + "j\u0003j\u0003j\u0003j\u0003j\u0007j\u0552\nj\fj\u000ej\u0555\u000b", + "j\u0003j\u0005j\u0558\nj\u0005j\u055a\nj\u0003j\u0003j\u0003j\u0005", + "j\u055f\nj\u0007j\u0561\nj\fj\u000ej\u0564\u000bj\u0003j\u0003j\u0005", + "j\u0568\nj\u0003k\u0003k\u0003k\u0005k\u056d\nk\u0005k\u056f\nk\u0003", + "k\u0003k\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0007l\u0579\nl\f", + "l\u000el\u057c\u000bl\u0003l\u0005l\u057f\nl\u0005l\u0581\nl\u0003l", + "\u0003l\u0003m\u0003m\u0003m\u0007m\u0588\nm\fm\u000em\u058b\u000bm", + "\u0003m\u0005m\u058e\nm\u0003n\u0003n\u0005n\u0592\nn\u0003n\u0003n", + "\u0005n\u0596\nn\u0003o\u0003o\u0005o\u059a\no\u0003o\u0003o\u0005o", + "\u059e\no\u0003o\u0003o\u0006o\u05a2\no\ro\u000eo\u05a3\u0003o\u0003", + "o\u0005o\u05a8\no\u0003o\u0006o\u05ab\no\ro\u000eo\u05ac\u0005o\u05af", + "\no\u0003p\u0003p\u0005p\u05b3\np\u0003p\u0003p\u0003p\u0005p\u05b8", + "\np\u0003p\u0005p\u05bb\np\u0003q\u0003q\u0003q\u0007q\u05c0\nq\fq\u000e", + "q\u05c3\u000bq\u0003r\u0003r\u0005r\u05c7\nr\u0003r\u0003r\u0005r\u05cb", + "\nr\u0003s\u0005s\u05ce\ns\u0003s\u0003s\u0003t\u0003t\u0005t\u05d4", + "\nt\u0003t\u0003t\u0005t\u05d8\nt\u0003t\u0003t\u0005t\u05dc\nt\u0003", + "t\u0003t\u0005t\u05e0\nt\u0003t\u0003t\u0005t\u05e4\nt\u0003t\u0003", + "t\u0005t\u05e8\nt\u0003t\u0003t\u0005t\u05ec\nt\u0003t\u0003t\u0005", + "t\u05f0\nt\u0003t\u0003t\u0005t\u05f4\nt\u0003t\u0003t\u0005t\u05f8", + "\nt\u0003t\u0005t\u05fb\nt\u0003u\u0003u\u0003u\u0003u\u0003v\u0003", + "v\u0003v\u0005v\u0604\nv\u0003w\u0003w\u0003w\u0007w\u0609\nw\fw\u000e", + "w\u060c\u000bw\u0003w\u0003w\u0003x\u0003x\u0003x\u0003x\u0003x\u0003", + "x\u0003x\u0005x\u0617\nx\u0003x\u0005x\u061a\nx\u0003y\u0003y\u0003", + "y\u0003y\u0003y\u0003y\u0003z\u0003z\u0007z\u0624\nz\fz\u000ez\u0627", + "\u000bz\u0003z\u0003z\u0003{\u0006{\u062c\n{\r{\u000e{\u062d\u0003{", + "\u0006{\u0631\n{\r{\u000e{\u0632\u0003|\u0003|\u0003|\u0003|\u0003|", + "\u0003|\u0005|\u063b\n|\u0003|\u0003|\u0003|\u0003|\u0005|\u0641\n|", + "\u0003}\u0003}\u0003}\u0003}\u0005}\u0647\n}\u0003~\u0003~\u0003~\u0003", + "~\u0003~\u0003~\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003", + "\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u0080\u0003\u0080\u0003", + "\u0080\u0005\u0080\u065a\n\u0080\u0003\u0080\u0003\u0080\u0005\u0080", + "\u065e\n\u0080\u0003\u0080\u0003\u0080\u0005\u0080\u0662\n\u0080\u0003", + "\u0080\u0003\u0080\u0003\u0080\u0003\u0081\u0003\u0081\u0003\u0081\u0003", + "\u0081\u0005\u0081\u066b\n\u0081\u0003\u0082\u0003\u0082\u0003\u0082", + "\u0003\u0082\u0003\u0082\u0005\u0082\u0672\n\u0082\u0003\u0082\u0003", + "\u0082\u0003\u0082\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003", + "\u0083\u0003\u0083\u0005\u0083\u067d\n\u0083\u0005\u0083\u067f\n\u0083", + "\u0003\u0084\u0003\u0084\u0003\u0084\u0007\u0084\u0684\n\u0084\f\u0084", + "\u000e\u0084\u0687\u000b\u0084\u0003\u0085\u0003\u0085\u0003\u0085\u0003", + "\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003", + "\u0085\u0005\u0085\u0693\n\u0085\u0003\u0085\u0003\u0085\u0003\u0085", + "\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085", + "\u0003\u0085\u0003\u0085\u0005\u0085\u06a0\n\u0085\u0003\u0085\u0003", + "\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003", + "\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003", + "\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003", + "\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0005", + "\u0085\u06bb\n\u0085\u0003\u0085\u0003\u0085\u0007\u0085\u06bf\n\u0085", + "\f\u0085\u000e\u0085\u06c2\u000b\u0085\u0003\u0086\u0003\u0086\u0003", + "\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003", + "\u0087\u0005\u0087\u06cd\n\u0087\u0005\u0087\u06cf\n\u0087\u0003\u0088", + "\u0003\u0088\u0003\u0088\u0005\u0088\u06d4\n\u0088\u0003\u0089\u0003", + "\u0089\u0005\u0089\u06d8\n\u0089\u0003\u008a\u0003\u008a\u0003\u008a", + "\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0005\u008a\u06e1\n", + "\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0005", + "\u008a\u06e8\n\u008a\u0003\u008b\u0003\u008b\u0003\u008c\u0003\u008c", + "\u0003\u008c\u0007\u008c\u06ef\n\u008c\f\u008c\u000e\u008c\u06f2\u000b", + "\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0007\u008c\u06f8", + "\n\u008c\f\u008c\u000e\u008c\u06fb\u000b\u008c\u0007\u008c\u06fd\n\u008c", + "\f\u008c\u000e\u008c\u0700\u000b\u008c\u0003\u008d\u0003\u008d\u0003", + "\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0005\u008d\u0708\n\u008d", + "\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0006\u008d\u070e\n", + "\u008d\r\u008d\u000e\u008d\u070f\u0003\u008d\u0003\u008d\u0005\u008d", + "\u0714\n\u008d\u0003\u008e\u0003\u008e\u0003\u008e\u0007\u008e\u0719", + "\n\u008e\f\u008e\u000e\u008e\u071c\u000b\u008e\u0003\u008f\u0003\u008f", + "\u0005\u008f\u0720\n\u008f\u0003\u0090\u0003\u0090\u0003\u0090\u0003", + "\u0090\u0003\u0090\u0005\u0090\u0727\n\u0090\u0003\u0090\u0005\u0090", + "\u072a\n\u0090\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003", + "\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003", + "\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0005\u0091\u073b", + "\n\u0091\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0005\u0092", + "\u0741\n\u0092\u0003\u0092\u0003\u0092\u0005\u0092\u0745\n\u0092\u0003", + "\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003", + "\u0092\u0003\u0092\u0005\u0092\u074f\n\u0092\u0003\u0093\u0003\u0093", + "\u0007\u0093\u0753\n\u0093\f\u0093\u000e\u0093\u0756\u000b\u0093\u0003", + "\u0093\u0006\u0093\u0759\n\u0093\r\u0093\u000e\u0093\u075a\u0003\u0094", + "\u0003\u0094\u0003\u0094\u0002\u0004\u0108\u0116\u0095\u0002\u0004\u0006", + "\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*", + ",.02468:<>@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\u0002\u0018\u0004\u0002", + "HHMM\u0003\u0002\\]\u0005\u0002FFIIKL\u0004\u0002\u001d\u001d \u0006", + "\u0002WW``bbdd\u0003\u0002eh\u0006\u0002\u0003\u0003\u000e\u000e\u0016", + "\u0016\u001c\u001c\u0006\u0002\u0013\u0013X[__ii\u0005\u0002,-0156\u0004", + "\u0002jlnn\u0004\u0002\u00a0\u00a1\u00a5\u00a5\u0003\u0002\u009e\u009f", + "\u0004\u0002\u0090\u0091\u0097\u0098\u0004\u0002\u0096\u0096\u0099\u0099", + "\u0004\u0002\u008f\u008f\u00a6\u00af\u0003\u0002\u009c\u009d\u0005\u0002", + "\u0092\u0093\u009e\u00a0\u00a2\u00a2\u0003\u0002\u008c\u008d\u0003\u0002", + "\u0085\u0085\u0004\u0002\u0083\u0083\u00b7\u00b8\u0004\u0002\u00be\u00be", + "\u00c0\u00c0\u000b\u0002*15:SUWXZ_cceko{\u0083\u0083\u0002\u0846\u0002", + "\u012b\u0003\u0002\u0002\u0002\u0004\u013b\u0003\u0002\u0002\u0002\u0006", + "\u013d\u0003\u0002\u0002\u0002\b\u0151\u0003\u0002\u0002\u0002\n\u0172", + "\u0003\u0002\u0002\u0002\f\u018a\u0003\u0002\u0002\u0002\u000e\u0198", + "\u0003\u0002\u0002\u0002\u0010\u01a2\u0003\u0002\u0002\u0002\u0012\u01ae", + "\u0003\u0002\u0002\u0002\u0014\u01cd\u0003\u0002\u0002\u0002\u0016\u01cf", + "\u0003\u0002\u0002\u0002\u0018\u01d3\u0003\u0002\u0002\u0002\u001a\u01da", + "\u0003\u0002\u0002\u0002\u001c\u01e5\u0003\u0002\u0002\u0002\u001e\u01ed", + "\u0003\u0002\u0002\u0002 \u01fc\u0003\u0002\u0002\u0002\"\u0218\u0003", + "\u0002\u0002\u0002$\u0226\u0003\u0002\u0002\u0002&\u0228\u0003\u0002", + "\u0002\u0002(\u023d\u0003\u0002\u0002\u0002*\u023f\u0003\u0002\u0002", + "\u0002,\u0246\u0003\u0002\u0002\u0002.\u024a\u0003\u0002\u0002\u0002", + "0\u024d\u0003\u0002\u0002\u00022\u0251\u0003\u0002\u0002\u00024\u0262", + "\u0003\u0002\u0002\u00026\u0266\u0003\u0002\u0002\u00028\u0269\u0003", + "\u0002\u0002\u0002:\u026d\u0003\u0002\u0002\u0002<\u0282\u0003\u0002", + "\u0002\u0002>\u0285\u0003\u0002\u0002\u0002@\u0295\u0003\u0002\u0002", + "\u0002B\u0297\u0003\u0002\u0002\u0002D\u02a3\u0003\u0002\u0002\u0002", + "F\u02a5\u0003\u0002\u0002\u0002H\u02ad\u0003\u0002\u0002\u0002J\u02b3", + "\u0003\u0002\u0002\u0002L\u02c3\u0003\u0002\u0002\u0002N\u02d3\u0003", + "\u0002\u0002\u0002P\u02d8\u0003\u0002\u0002\u0002R\u02e9\u0003\u0002", + "\u0002\u0002T\u02ed\u0003\u0002\u0002\u0002V\u0301\u0003\u0002\u0002", + "\u0002X\u0303\u0003\u0002\u0002\u0002Z\u0315\u0003\u0002\u0002\u0002", + "\\\u0317\u0003\u0002\u0002\u0002^\u0323\u0003\u0002\u0002\u0002`\u032a", + "\u0003\u0002\u0002\u0002b\u0332\u0003\u0002\u0002\u0002d\u0335\u0003", + "\u0002\u0002\u0002f\u0340\u0003\u0002\u0002\u0002h\u034a\u0003\u0002", + "\u0002\u0002j\u0358\u0003\u0002\u0002\u0002l\u035a\u0003\u0002\u0002", + "\u0002n\u035f\u0003\u0002\u0002\u0002p\u0364\u0003\u0002\u0002\u0002", + "r\u036e\u0003\u0002\u0002\u0002t\u0370\u0003\u0002\u0002\u0002v\u037c", + "\u0003\u0002\u0002\u0002x\u0382\u0003\u0002\u0002\u0002z\u0388\u0003", + "\u0002\u0002\u0002|\u038b\u0003\u0002\u0002\u0002~\u0395\u0003\u0002", + "\u0002\u0002\u0080\u03a0\u0003\u0002\u0002\u0002\u0082\u03ad\u0003\u0002", + "\u0002\u0002\u0084\u03c2\u0003\u0002\u0002\u0002\u0086\u03c8\u0003\u0002", + "\u0002\u0002\u0088\u03ca\u0003\u0002\u0002\u0002\u008a\u03d0\u0003\u0002", + "\u0002\u0002\u008c\u03dc\u0003\u0002\u0002\u0002\u008e\u03de\u0003\u0002", + "\u0002\u0002\u0090\u03e9\u0003\u0002\u0002\u0002\u0092\u03ec\u0003\u0002", + "\u0002\u0002\u0094\u03fb\u0003\u0002\u0002\u0002\u0096\u0412\u0003\u0002", + "\u0002\u0002\u0098\u041e\u0003\u0002\u0002\u0002\u009a\u0435\u0003\u0002", + "\u0002\u0002\u009c\u043e\u0003\u0002\u0002\u0002\u009e\u044a\u0003\u0002", + "\u0002\u0002\u00a0\u044e\u0003\u0002\u0002\u0002\u00a2\u045c\u0003\u0002", + "\u0002\u0002\u00a4\u0464\u0003\u0002\u0002\u0002\u00a6\u0470\u0003\u0002", + "\u0002\u0002\u00a8\u0483\u0003\u0002\u0002\u0002\u00aa\u0494\u0003\u0002", + "\u0002\u0002\u00ac\u049e\u0003\u0002\u0002\u0002\u00ae\u04a0\u0003\u0002", + "\u0002\u0002\u00b0\u04a2\u0003\u0002\u0002\u0002\u00b2\u04a4\u0003\u0002", + "\u0002\u0002\u00b4\u04a6\u0003\u0002\u0002\u0002\u00b6\u04ac\u0003\u0002", + "\u0002\u0002\u00b8\u04ae\u0003\u0002\u0002\u0002\u00ba\u04be\u0003\u0002", + "\u0002\u0002\u00bc\u04c3\u0003\u0002\u0002\u0002\u00be\u04c8\u0003\u0002", + "\u0002\u0002\u00c0\u04d6\u0003\u0002\u0002\u0002\u00c2\u04f9\u0003\u0002", + "\u0002\u0002\u00c4\u04fb\u0003\u0002\u0002\u0002\u00c6\u0506\u0003\u0002", + "\u0002\u0002\u00c8\u0514\u0003\u0002\u0002\u0002\u00ca\u052d\u0003\u0002", + "\u0002\u0002\u00cc\u052f\u0003\u0002\u0002\u0002\u00ce\u0535\u0003\u0002", + "\u0002\u0002\u00d0\u053a\u0003\u0002\u0002\u0002\u00d2\u0541\u0003\u0002", + "\u0002\u0002\u00d4\u0569\u0003\u0002\u0002\u0002\u00d6\u0572\u0003\u0002", + "\u0002\u0002\u00d8\u0584\u0003\u0002\u0002\u0002\u00da\u0595\u0003\u0002", + "\u0002\u0002\u00dc\u05ae\u0003\u0002\u0002\u0002\u00de\u05ba\u0003\u0002", + "\u0002\u0002\u00e0\u05bc\u0003\u0002\u0002\u0002\u00e2\u05ca\u0003\u0002", + "\u0002\u0002\u00e4\u05cd\u0003\u0002\u0002\u0002\u00e6\u05fa\u0003\u0002", + "\u0002\u0002\u00e8\u05fc\u0003\u0002\u0002\u0002\u00ea\u0600\u0003\u0002", + "\u0002\u0002\u00ec\u0605\u0003\u0002\u0002\u0002\u00ee\u0619\u0003\u0002", + "\u0002\u0002\u00f0\u061b\u0003\u0002\u0002\u0002\u00f2\u0621\u0003\u0002", + "\u0002\u0002\u00f4\u062b\u0003\u0002\u0002\u0002\u00f6\u0640\u0003\u0002", + "\u0002\u0002\u00f8\u0646\u0003\u0002\u0002\u0002\u00fa\u0648\u0003\u0002", + "\u0002\u0002\u00fc\u064e\u0003\u0002\u0002\u0002\u00fe\u0656\u0003\u0002", + "\u0002\u0002\u0100\u066a\u0003\u0002\u0002\u0002\u0102\u066c\u0003\u0002", + "\u0002\u0002\u0104\u067e\u0003\u0002\u0002\u0002\u0106\u0680\u0003\u0002", + "\u0002\u0002\u0108\u0692\u0003\u0002\u0002\u0002\u010a\u06c3\u0003\u0002", + "\u0002\u0002\u010c\u06ce\u0003\u0002\u0002\u0002\u010e\u06d3\u0003\u0002", + "\u0002\u0002\u0110\u06d7\u0003\u0002\u0002\u0002\u0112\u06e7\u0003\u0002", + "\u0002\u0002\u0114\u06e9\u0003\u0002\u0002\u0002\u0116\u06eb\u0003\u0002", + "\u0002\u0002\u0118\u0713\u0003\u0002\u0002\u0002\u011a\u0715\u0003\u0002", + "\u0002\u0002\u011c\u071f\u0003\u0002\u0002\u0002\u011e\u0721\u0003\u0002", + "\u0002\u0002\u0120\u073a\u0003\u0002\u0002\u0002\u0122\u074e\u0003\u0002", + "\u0002\u0002\u0124\u0758\u0003\u0002\u0002\u0002\u0126\u075c\u0003\u0002", + "\u0002\u0002\u0128\u012a\u0005\u0004\u0003\u0002\u0129\u0128\u0003\u0002", + "\u0002\u0002\u012a\u012d\u0003\u0002\u0002\u0002\u012b\u0129\u0003\u0002", + "\u0002\u0002\u012b\u012c\u0003\u0002\u0002\u0002\u012c\u012e\u0003\u0002", + "\u0002\u0002\u012d\u012b\u0003\u0002\u0002\u0002\u012e\u012f\u0007\u0002", + "\u0002\u0003\u012f\u0003\u0003\u0002\u0002\u0002\u0130\u013c\u0005\u0006", + "\u0004\u0002\u0131\u013c\u0005|?\u0002\u0132\u013c\u0005\u0090I\u0002", + "\u0133\u013c\u0005\b\u0005\u0002\u0134\u013c\u0005\f\u0007\u0002\u0135", + "\u013c\u0005\n\u0006\u0002\u0136\u013c\u0005\u000e\b\u0002\u0137\u013c", + "\u0005\u0012\n\u0002\u0138\u013c\u0005\u0016\f\u0002\u0139\u013c\u0005", + "\u001a\u000e\u0002\u013a\u013c\u0005~@\u0002\u013b\u0130\u0003\u0002", + "\u0002\u0002\u013b\u0131\u0003\u0002\u0002\u0002\u013b\u0132\u0003\u0002", + "\u0002\u0002\u013b\u0133\u0003\u0002\u0002\u0002\u013b\u0134\u0003\u0002", + "\u0002\u0002\u013b\u0135\u0003\u0002\u0002\u0002\u013b\u0136\u0003\u0002", + "\u0002\u0002\u013b\u0137\u0003\u0002\u0002\u0002\u013b\u0138\u0003\u0002", + "\u0002\u0002\u013b\u0139\u0003\u0002\u0002\u0002\u013b\u013a\u0003\u0002", + "\u0002\u0002\u013c\u0005\u0003\u0002\u0002\u0002\u013d\u014e\u0007E", + "\u0002\u0002\u013e\u013f\u0005\u0126\u0094\u0002\u013f\u0140\u0007\u008a", + "\u0002\u0002\u0140\u014f\u0003\u0002\u0002\u0002\u0141\u0143\u0007\u0091", + "\u0002\u0002\u0142\u0144\u0005\u0126\u0094\u0002\u0143\u0142\u0003\u0002", + "\u0002\u0002\u0143\u0144\u0003\u0002\u0002\u0002\u0144\u0146\u0003\u0002", + "\u0002\u0002\u0145\u0147\u0007\u00a1\u0002\u0002\u0146\u0145\u0003\u0002", + "\u0002\u0002\u0146\u0147\u0003\u0002\u0002\u0002\u0147\u0148\u0003\u0002", + "\u0002\u0002\u0148\u0149\u0005\u0126\u0094\u0002\u0149\u014a\u0007\u008c", + "\u0002\u0002\u014a\u014b\u0007\u0083\u0002\u0002\u014b\u014c\u0007\u0090", + "\u0002\u0002\u014c\u014f\u0003\u0002\u0002\u0002\u014d\u014f\u0005\u0124", + "\u0093\u0002\u014e\u013e\u0003\u0002\u0002\u0002\u014e\u0141\u0003\u0002", + "\u0002\u0002\u014e\u014d\u0003\u0002\u0002\u0002\u014f\u0007\u0003\u0002", + "\u0002\u0002\u0150\u0152\u0007{\u0002\u0002\u0151\u0150\u0003\u0002", + "\u0002\u0002\u0151\u0152\u0003\u0002\u0002\u0002\u0152\u0157\u0003\u0002", + "\u0002\u0002\u0153\u0156\u0005\u00d2j\u0002\u0154\u0156\u0005\u00a0", + "Q\u0002\u0155\u0153\u0003\u0002\u0002\u0002\u0155\u0154\u0003\u0002", + "\u0002\u0002\u0156\u0159\u0003\u0002\u0002\u0002\u0157\u0155\u0003\u0002", + "\u0002\u0002\u0157\u0158\u0003\u0002\u0002\u0002\u0158\u015a\u0003\u0002", + "\u0002\u0002\u0159\u0157\u0003\u0002\u0002\u0002\u015a\u015b\u0007D", + "\u0002\u0002\u015b\u015e\u0005\u0010\t\u0002\u015c\u015d\u0007\u0095", + "\u0002\u0002\u015d\u015f\u0005\u0126\u0094\u0002\u015e\u015c\u0003\u0002", + "\u0002\u0002\u015e\u015f\u0003\u0002\u0002\u0002\u015f\u0164\u0003\u0002", + "\u0002\u0002\u0160\u0161\u0007\u0091\u0002\u0002\u0161\u0162\u0005\u001c", + "\u000f\u0002\u0162\u0163\u0007\u0090\u0002\u0002\u0163\u0165\u0003\u0002", + "\u0002\u0002\u0164\u0160\u0003\u0002\u0002\u0002\u0164\u0165\u0003\u0002", + "\u0002\u0002\u0165\u0167\u0003\u0002\u0002\u0002\u0166\u0168\u0005&", + "\u0014\u0002\u0167\u0166\u0003\u0002\u0002\u0002\u0167\u0168\u0003\u0002", + "\u0002\u0002\u0168\u016a\u0003\u0002\u0002\u0002\u0169\u016b\u0005,", + "\u0017\u0002\u016a\u0169\u0003\u0002\u0002\u0002\u016a\u016b\u0003\u0002", + "\u0002\u0002\u016b\u016c\u0003\u0002\u0002\u0002\u016c\u016d\u0007A", + "\u0002\u0002\u016d\t\u0003\u0002\u0002\u0002\u016e\u0171\u0005\u00d2", + "j\u0002\u016f\u0171\u0005\u00a0Q\u0002\u0170\u016e\u0003\u0002\u0002", + "\u0002\u0170\u016f\u0003\u0002\u0002\u0002\u0171\u0174\u0003\u0002\u0002", + "\u0002\u0172\u0170\u0003\u0002\u0002\u0002\u0172\u0173\u0003\u0002\u0002", + "\u0002\u0173\u0175\u0003\u0002\u0002\u0002\u0174\u0172\u0003\u0002\u0002", + "\u0002\u0175\u0176\u0007D\u0002\u0002\u0176\u0177\u0005\u0010\t\u0002", + "\u0177\u0179\u0007\u0084\u0002\u0002\u0178\u017a\u0005\u0126\u0094\u0002", + "\u0179\u0178\u0003\u0002\u0002\u0002\u0179\u017a\u0003\u0002\u0002\u0002", + "\u017a\u017b\u0003\u0002\u0002\u0002\u017b\u0180\u0007\u0085\u0002\u0002", + "\u017c\u017d\u0007\u0091\u0002\u0002\u017d\u017e\u0005\u001c\u000f\u0002", + "\u017e\u017f\u0007\u0090\u0002\u0002\u017f\u0181\u0003\u0002\u0002\u0002", + "\u0180\u017c\u0003\u0002\u0002\u0002\u0180\u0181\u0003\u0002\u0002\u0002", + "\u0181\u0183\u0003\u0002\u0002\u0002\u0182\u0184\u0005&\u0014\u0002", + "\u0183\u0182\u0003\u0002\u0002\u0002\u0183\u0184\u0003\u0002\u0002\u0002", + "\u0184\u0186\u0003\u0002\u0002\u0002\u0185\u0187\u0005,\u0017\u0002", + "\u0186\u0185\u0003\u0002\u0002\u0002\u0186\u0187\u0003\u0002\u0002\u0002", + "\u0187\u0188\u0003\u0002\u0002\u0002\u0188\u0189\u0007A\u0002\u0002", + "\u0189\u000b\u0003\u0002\u0002\u0002\u018a\u018b\u0007C\u0002\u0002", + "\u018b\u018e\u0005\u0010\t\u0002\u018c\u018d\u0007\u0095\u0002\u0002", + "\u018d\u018f\u0005\u0126\u0094\u0002\u018e\u018c\u0003\u0002\u0002\u0002", + "\u018e\u018f\u0003\u0002\u0002\u0002\u018f\u0191\u0003\u0002\u0002\u0002", + "\u0190\u0192\u0005&\u0014\u0002\u0191\u0190\u0003\u0002\u0002\u0002", + "\u0191\u0192\u0003\u0002\u0002\u0002\u0192\u0194\u0003\u0002\u0002\u0002", + "\u0193\u0195\u00054\u001b\u0002\u0194\u0193\u0003\u0002\u0002\u0002", + "\u0194\u0195\u0003\u0002\u0002\u0002\u0195\u0196\u0003\u0002\u0002\u0002", + "\u0196\u0197\u0007A\u0002\u0002\u0197\r\u0003\u0002\u0002\u0002\u0198", + "\u0199\u0007C\u0002\u0002\u0199\u019a\u0005\u0010\t\u0002\u019a\u019b", + "\u0007\u0084\u0002\u0002\u019b\u019c\u0005\u0126\u0094\u0002\u019c\u019e", + "\u0007\u0085\u0002\u0002\u019d\u019f\u00054\u001b\u0002\u019e\u019d", + "\u0003\u0002\u0002\u0002\u019e\u019f\u0003\u0002\u0002\u0002\u019f\u01a0", + "\u0003\u0002\u0002\u0002\u01a0\u01a1\u0007A\u0002\u0002\u01a1\u000f", + "\u0003\u0002\u0002\u0002\u01a2\u01a8\u0005\u0126\u0094\u0002\u01a3\u01a4", + "\u0007\u0091\u0002\u0002\u01a4\u01a5\u0005\u001c\u000f\u0002\u01a5\u01a6", + "\u0007\u0090\u0002\u0002\u01a6\u01a9\u0003\u0002\u0002\u0002\u01a7\u01a9", + "\u0005L\'\u0002\u01a8\u01a3\u0003\u0002\u0002\u0002\u01a8\u01a7\u0003", + "\u0002\u0002\u0002\u01a8\u01a9\u0003\u0002\u0002\u0002\u01a9\u0011\u0003", + "\u0002\u0002\u0002\u01aa\u01ad\u0005\u00d2j\u0002\u01ab\u01ad\u0005", + "\u00a0Q\u0002\u01ac\u01aa\u0003\u0002\u0002\u0002\u01ac\u01ab\u0003", + "\u0002\u0002\u0002\u01ad\u01b0\u0003\u0002\u0002\u0002\u01ae\u01ac\u0003", + "\u0002\u0002\u0002\u01ae\u01af\u0003\u0002\u0002\u0002\u01af\u01b1\u0003", + "\u0002\u0002\u0002\u01b0\u01ae\u0003\u0002\u0002\u0002\u01b1\u01b2\u0007", + "G\u0002\u0002\u01b2\u01b7\u0005$\u0013\u0002\u01b3\u01b4\u0007\u0091", + "\u0002\u0002\u01b4\u01b5\u0005\u001c\u000f\u0002\u01b5\u01b6\u0007\u0090", + "\u0002\u0002\u01b6\u01b8\u0003\u0002\u0002\u0002\u01b7\u01b3\u0003\u0002", + "\u0002\u0002\u01b7\u01b8\u0003\u0002\u0002\u0002\u01b8\u01bc\u0003\u0002", + "\u0002\u0002\u01b9\u01bb\u0005\u0014\u000b\u0002\u01ba\u01b9\u0003\u0002", + "\u0002\u0002\u01bb\u01be\u0003\u0002\u0002\u0002\u01bc\u01ba\u0003\u0002", + "\u0002\u0002\u01bc\u01bd\u0003\u0002\u0002\u0002\u01bd\u01bf\u0003\u0002", + "\u0002\u0002\u01be\u01bc\u0003\u0002\u0002\u0002\u01bf\u01c0\u0007A", + "\u0002\u0002\u01c0\u0013\u0003\u0002\u0002\u0002\u01c1\u01c5\t\u0002", + "\u0002\u0002\u01c2\u01c4\u0005,\u0017\u0002\u01c3\u01c2\u0003\u0002", + "\u0002\u0002\u01c4\u01c7\u0003\u0002\u0002\u0002\u01c5\u01c3\u0003\u0002", + "\u0002\u0002\u01c5\u01c6\u0003\u0002\u0002\u0002\u01c6\u01ce\u0003\u0002", + "\u0002\u0002\u01c7\u01c5\u0003\u0002\u0002\u0002\u01c8\u01ca\u0005,", + "\u0017\u0002\u01c9\u01c8\u0003\u0002\u0002\u0002\u01ca\u01cb\u0003\u0002", + "\u0002\u0002\u01cb\u01c9\u0003\u0002\u0002\u0002\u01cb\u01cc\u0003\u0002", + "\u0002\u0002\u01cc\u01ce\u0003\u0002\u0002\u0002\u01cd\u01c1\u0003\u0002", + "\u0002\u0002\u01cd\u01c9\u0003\u0002\u0002\u0002\u01ce\u0015\u0003\u0002", + "\u0002\u0002\u01cf\u01d0\u0007G\u0002\u0002\u01d0\u01d1\u0005\u001c", + "\u000f\u0002\u01d1\u01d2\u0007\u008a\u0002\u0002\u01d2\u0017\u0003\u0002", + "\u0002\u0002\u01d3\u01d8\u0005\u0126\u0094\u0002\u01d4\u01d5\u0007\u0091", + "\u0002\u0002\u01d5\u01d6\u0005\u001c\u000f\u0002\u01d6\u01d7\u0007\u0090", + "\u0002\u0002\u01d7\u01d9\u0003\u0002\u0002\u0002\u01d8\u01d4\u0003\u0002", + "\u0002\u0002\u01d8\u01d9\u0003\u0002\u0002\u0002\u01d9\u0019\u0003\u0002", + "\u0002\u0002\u01da\u01db\u0007>\u0002\u0002\u01db\u01e0\u0005\u0018", + "\r\u0002\u01dc\u01dd\u0007\u008b\u0002\u0002\u01dd\u01df\u0005\u0018", + "\r\u0002\u01de\u01dc\u0003\u0002\u0002\u0002\u01df\u01e2\u0003\u0002", + "\u0002\u0002\u01e0\u01de\u0003\u0002\u0002\u0002\u01e0\u01e1\u0003\u0002", + "\u0002\u0002\u01e1\u01e3\u0003\u0002\u0002\u0002\u01e2\u01e0\u0003\u0002", + "\u0002\u0002\u01e3\u01e4\u0007\u008a\u0002\u0002\u01e4\u001b\u0003\u0002", + "\u0002\u0002\u01e5\u01ea\u0005$\u0013\u0002\u01e6\u01e7\u0007\u008b", + "\u0002\u0002\u01e7\u01e9\u0005$\u0013\u0002\u01e8\u01e6\u0003\u0002", + "\u0002\u0002\u01e9\u01ec\u0003\u0002\u0002\u0002\u01ea\u01e8\u0003\u0002", + "\u0002\u0002\u01ea\u01eb\u0003\u0002\u0002\u0002\u01eb\u001d\u0003\u0002", + "\u0002\u0002\u01ec\u01ea\u0003\u0002\u0002\u0002\u01ed\u01f2\u0007J", + "\u0002\u0002\u01ee\u01ef\u0007\u0084\u0002\u0002\u01ef\u01f0\u0005 ", + "\u0011\u0002\u01f0\u01f1\u0007\u0085\u0002\u0002\u01f1\u01f3\u0003\u0002", + "\u0002\u0002\u01f2\u01ee\u0003\u0002\u0002\u0002\u01f2\u01f3\u0003\u0002", + "\u0002\u0002\u01f3\u01f5\u0003\u0002\u0002\u0002\u01f4\u01f6\u0005\u00ac", + "W\u0002\u01f5\u01f4\u0003\u0002\u0002\u0002\u01f5\u01f6\u0003\u0002", + "\u0002\u0002\u01f6\u01f8\u0003\u0002\u0002\u0002\u01f7\u01f9\u0007z", + "\u0002\u0002\u01f8\u01f7\u0003\u0002\u0002\u0002\u01f8\u01f9\u0003\u0002", + "\u0002\u0002\u01f9\u01fa\u0003\u0002\u0002\u0002\u01fa\u01fb\u0005\u00a8", + "U\u0002\u01fb\u001f\u0003\u0002\u0002\u0002\u01fc\u0201\u0005\"\u0012", + "\u0002\u01fd\u01fe\u0007\u008b\u0002\u0002\u01fe\u0200\u0005\"\u0012", + "\u0002\u01ff\u01fd\u0003\u0002\u0002\u0002\u0200\u0203\u0003\u0002\u0002", + "\u0002\u0201\u01ff\u0003\u0002\u0002\u0002\u0201\u0202\u0003\u0002\u0002", + "\u0002\u0202!\u0003\u0002\u0002\u0002\u0203\u0201\u0003\u0002\u0002", + "\u0002\u0204\u0219\u0007S\u0002\u0002\u0205\u0219\u0007T\u0002\u0002", + "\u0206\u0219\u0007s\u0002\u0002\u0207\u0219\u0007v\u0002\u0002\u0208", + "\u0219\u0007U\u0002\u0002\u0209\u0219\u0007o\u0002\u0002\u020a\u0219", + "\u0007w\u0002\u0002\u020b\u0219\u0007p\u0002\u0002\u020c\u0219\u0007", + "t\u0002\u0002\u020d\u0219\u0007u\u0002\u0002\u020e\u020f\u0007q\u0002", + "\u0002\u020f\u0210\u0007\u008f\u0002\u0002\u0210\u0219\u0005\u0126\u0094", + "\u0002\u0211\u0212\u0007r\u0002\u0002\u0212\u0213\u0007\u008f\u0002", + "\u0002\u0213\u0214\u0005\u0126\u0094\u0002\u0214\u0215\u0007\u0095\u0002", + "\u0002\u0215\u0219\u0003\u0002\u0002\u0002\u0216\u0219\u0005\u00b0Y", + "\u0002\u0217\u0219\u0005\u0126\u0094\u0002\u0218\u0204\u0003\u0002\u0002", + "\u0002\u0218\u0205\u0003\u0002\u0002\u0002\u0218\u0206\u0003\u0002\u0002", + "\u0002\u0218\u0207\u0003\u0002\u0002\u0002\u0218\u0208\u0003\u0002\u0002", + "\u0002\u0218\u0209\u0003\u0002\u0002\u0002\u0218\u020a\u0003\u0002\u0002", + "\u0002\u0218\u020b\u0003\u0002\u0002\u0002\u0218\u020c\u0003\u0002\u0002", + "\u0002\u0218\u020d\u0003\u0002\u0002\u0002\u0218\u020e\u0003\u0002\u0002", + "\u0002\u0218\u0211\u0003\u0002\u0002\u0002\u0218\u0216\u0003\u0002\u0002", + "\u0002\u0218\u0217\u0003\u0002\u0002\u0002\u0219#\u0003\u0002\u0002", + "\u0002\u021a\u021b\u0007\u0091\u0002\u0002\u021b\u021c\u0005\u001c\u000f", + "\u0002\u021c\u021d\u0007\u0090\u0002\u0002\u021d\u0227\u0003\u0002\u0002", + "\u0002\u021e\u0220\t\u0003\u0002\u0002\u021f\u021e\u0003\u0002\u0002", + "\u0002\u021f\u0220\u0003\u0002\u0002\u0002\u0220\u0221\u0003\u0002\u0002", + "\u0002\u0221\u0224\u0005\u00dan\u0002\u0222\u0223\u0007\u0095\u0002", + "\u0002\u0223\u0225\u0005\u00ba^\u0002\u0224\u0222\u0003\u0002\u0002", + "\u0002\u0224\u0225\u0003\u0002\u0002\u0002\u0225\u0227\u0003\u0002\u0002", + "\u0002\u0226\u021a\u0003\u0002\u0002\u0002\u0226\u021f\u0003\u0002\u0002", + "\u0002\u0227%\u0003\u0002\u0002\u0002\u0228\u022c\u0007\u0086\u0002", + "\u0002\u0229\u022b\u0005(\u0015\u0002\u022a\u0229\u0003\u0002\u0002", + "\u0002\u022b\u022e\u0003\u0002\u0002\u0002\u022c\u022a\u0003\u0002\u0002", + "\u0002\u022c\u022d\u0003\u0002\u0002\u0002\u022d\u022f\u0003\u0002\u0002", + "\u0002\u022e\u022c\u0003\u0002\u0002\u0002\u022f\u0230\u0007\u0087\u0002", + "\u0002\u0230\'\u0003\u0002\u0002\u0002\u0231\u0235\u0005*\u0016\u0002", + "\u0232\u0234\u0005\u00a8U\u0002\u0233\u0232\u0003\u0002\u0002\u0002", + "\u0234\u0237\u0003\u0002\u0002\u0002\u0235\u0233\u0003\u0002\u0002\u0002", + "\u0235\u0236\u0003\u0002\u0002\u0002\u0236\u023e\u0003\u0002\u0002\u0002", + "\u0237\u0235\u0003\u0002\u0002\u0002\u0238\u023a\u0005\u00a8U\u0002", + "\u0239\u0238\u0003\u0002\u0002\u0002\u023a\u023b\u0003\u0002\u0002\u0002", + "\u023b\u0239\u0003\u0002\u0002\u0002\u023b\u023c\u0003\u0002\u0002\u0002", + "\u023c\u023e\u0003\u0002\u0002\u0002\u023d\u0231\u0003\u0002\u0002\u0002", + "\u023d\u0239\u0003\u0002\u0002\u0002\u023e)\u0003\u0002\u0002\u0002", + "\u023f\u0240\t\u0004\u0002\u0002\u0240+\u0003\u0002\u0002\u0002\u0241", + "\u0247\u0005\u0090I\u0002\u0242\u0247\u0005.\u0018\u0002\u0243\u0247", + "\u00050\u0019\u0002\u0244\u0247\u0005\u001e\u0010\u0002\u0245\u0247", + "\u0005|?\u0002\u0246\u0241\u0003\u0002\u0002\u0002\u0246\u0242\u0003", + "\u0002\u0002\u0002\u0246\u0243\u0003\u0002\u0002\u0002\u0246\u0244\u0003", + "\u0002\u0002\u0002\u0246\u0245\u0003\u0002\u0002\u0002\u0247\u0248\u0003", + "\u0002\u0002\u0002\u0248\u0246\u0003\u0002\u0002\u0002\u0248\u0249\u0003", + "\u0002\u0002\u0002\u0249-\u0003\u0002\u0002\u0002\u024a\u024b\u0007", + "\u009e\u0002\u0002\u024b\u024c\u00052\u001a\u0002\u024c/\u0003\u0002", + "\u0002\u0002\u024d\u024e\u0007\u009f\u0002\u0002\u024e\u024f\u00052", + "\u001a\u0002\u024f1\u0003\u0002\u0002\u0002\u0250\u0252\u0005B\"\u0002", + "\u0251\u0250\u0003\u0002\u0002\u0002\u0251\u0252\u0003\u0002\u0002\u0002", + "\u0252\u0253\u0003\u0002\u0002\u0002\u0253\u0258\u0005<\u001f\u0002", + "\u0254\u0257\u0005\u00d2j\u0002\u0255\u0257\u0005\u00a0Q\u0002\u0256", + "\u0254\u0003\u0002\u0002\u0002\u0256\u0255\u0003\u0002\u0002\u0002\u0257", + "\u025a\u0003\u0002\u0002\u0002\u0258\u0256\u0003\u0002\u0002\u0002\u0258", + "\u0259\u0003\u0002\u0002\u0002\u0259\u025b\u0003\u0002\u0002\u0002\u025a", + "\u0258\u0003\u0002\u0002\u0002\u025b\u025c\u0007\u008a\u0002\u0002\u025c", + "3\u0003\u0002\u0002\u0002\u025d\u0263\u0005~@\u0002\u025e\u0263\u0005", + "\u0090I\u0002\u025f\u0263\u00056\u001c\u0002\u0260\u0263\u00058\u001d", + "\u0002\u0261\u0263\u0005D#\u0002\u0262\u025d\u0003\u0002\u0002\u0002", + "\u0262\u025e\u0003\u0002\u0002\u0002\u0262\u025f\u0003\u0002\u0002\u0002", + "\u0262\u0260\u0003\u0002\u0002\u0002\u0262\u0261\u0003\u0002\u0002\u0002", + "\u0263\u0264\u0003\u0002\u0002\u0002\u0264\u0262\u0003\u0002\u0002\u0002", + "\u0264\u0265\u0003\u0002\u0002\u0002\u02655\u0003\u0002\u0002\u0002", + "\u0266\u0267\u0007\u009e\u0002\u0002\u0267\u0268\u0005:\u001e\u0002", + "\u02687\u0003\u0002\u0002\u0002\u0269\u026a\u0007\u009f\u0002\u0002", + "\u026a\u026b\u0005:\u001e\u0002\u026b9\u0003\u0002\u0002\u0002\u026c", + "\u026e\u0005B\"\u0002\u026d\u026c\u0003\u0002\u0002\u0002\u026d\u026e", + "\u0003\u0002\u0002\u0002\u026e\u026f\u0003\u0002\u0002\u0002\u026f\u0271", + "\u0005<\u001f\u0002\u0270\u0272\u0005\u00a2R\u0002\u0271\u0270\u0003", + "\u0002\u0002\u0002\u0271\u0272\u0003\u0002\u0002\u0002\u0272\u0274\u0003", + "\u0002\u0002\u0002\u0273\u0275\u0007\u008a\u0002\u0002\u0274\u0273\u0003", + "\u0002\u0002\u0002\u0274\u0275\u0003\u0002\u0002\u0002\u0275\u0276\u0003", + "\u0002\u0002\u0002\u0276\u0277\u0005\u00ecw\u0002\u0277;\u0003\u0002", + "\u0002\u0002\u0278\u0283\u0005@!\u0002\u0279\u027b\u0005> \u0002\u027a", + "\u0279\u0003\u0002\u0002\u0002\u027b\u027c\u0003\u0002\u0002\u0002\u027c", + "\u027a\u0003\u0002\u0002\u0002\u027c\u027d\u0003\u0002\u0002\u0002\u027d", + "\u0280\u0003\u0002\u0002\u0002\u027e\u027f\u0007\u008b\u0002\u0002\u027f", + "\u0281\u0007\u00b0\u0002\u0002\u0280\u027e\u0003\u0002\u0002\u0002\u0280", + "\u0281\u0003\u0002\u0002\u0002\u0281\u0283\u0003\u0002\u0002\u0002\u0282", + "\u0278\u0003\u0002\u0002\u0002\u0282\u027a\u0003\u0002\u0002\u0002\u0283", + "=\u0003\u0002\u0002\u0002\u0284\u0286\u0005@!\u0002\u0285\u0284\u0003", + "\u0002\u0002\u0002\u0285\u0286\u0003\u0002\u0002\u0002\u0286\u0287\u0003", + "\u0002\u0002\u0002\u0287\u028b\u0007\u0095\u0002\u0002\u0288\u028a\u0005", + "B\"\u0002\u0289\u0288\u0003\u0002\u0002\u0002\u028a\u028d\u0003\u0002", + "\u0002\u0002\u028b\u0289\u0003\u0002\u0002\u0002\u028b\u028c\u0003\u0002", + "\u0002\u0002\u028c\u028f\u0003\u0002\u0002\u0002\u028d\u028b\u0003\u0002", + "\u0002\u0002\u028e\u0290\u0005\u00aeX\u0002\u028f\u028e\u0003\u0002", + "\u0002\u0002\u028f\u0290\u0003\u0002\u0002\u0002\u0290\u0291\u0003\u0002", + "\u0002\u0002\u0291\u0292\u0005\u0126\u0094\u0002\u0292?\u0003\u0002", + "\u0002\u0002\u0293\u0296\u0005\u0126\u0094\u0002\u0294\u0296\u0007\u0018", + "\u0002\u0002\u0295\u0293\u0003\u0002\u0002\u0002\u0295\u0294\u0003\u0002", + "\u0002\u0002\u0296A\u0003\u0002\u0002\u0002\u0297\u0298\u0007\u0084", + "\u0002\u0002\u0298\u0299\u0005\u00dan\u0002\u0299\u029a\u0007\u0085", + "\u0002\u0002\u029aC\u0003\u0002\u0002\u0002\u029b\u029c\u0007P\u0002", + "\u0002\u029c\u029d\u0005F$\u0002\u029d\u029e\u0007\u008a\u0002\u0002", + "\u029e\u02a4\u0003\u0002\u0002\u0002\u029f\u02a0\u0007?\u0002\u0002", + "\u02a0\u02a1\u0005F$\u0002\u02a1\u02a2\u0007\u008a\u0002\u0002\u02a2", + "\u02a4\u0003\u0002\u0002\u0002\u02a3\u029b\u0003\u0002\u0002\u0002\u02a3", + "\u029f\u0003\u0002\u0002\u0002\u02a4E\u0003\u0002\u0002\u0002\u02a5", + "\u02aa\u0005H%\u0002\u02a6\u02a7\u0007\u008b\u0002\u0002\u02a7\u02a9", + "\u0005H%\u0002\u02a8\u02a6\u0003\u0002\u0002\u0002\u02a9\u02ac\u0003", + "\u0002\u0002\u0002\u02aa\u02a8\u0003\u0002\u0002\u0002\u02aa\u02ab\u0003", + "\u0002\u0002\u0002\u02abG\u0003\u0002\u0002\u0002\u02ac\u02aa\u0003", + "\u0002\u0002\u0002\u02ad\u02b0\u0005\u0126\u0094\u0002\u02ae\u02af\u0007", + "\u008f\u0002\u0002\u02af\u02b1\u0005\u0126\u0094\u0002\u02b0\u02ae\u0003", + "\u0002\u0002\u0002\u02b0\u02b1\u0003\u0002\u0002\u0002\u02b1I\u0003", + "\u0002\u0002\u0002\u02b2\u02b4\u0005\u00b0Y\u0002\u02b3\u02b2\u0003", + "\u0002\u0002\u0002\u02b3\u02b4\u0003\u0002\u0002\u0002\u02b4\u02b5\u0003", + "\u0002\u0002\u0002\u02b5\u02b7\u0005\u00ba^\u0002\u02b6\u02b8\u0005", + "\u00b0Y\u0002\u02b7\u02b6\u0003\u0002\u0002\u0002\u02b7\u02b8\u0003", + "\u0002\u0002\u0002\u02b8\u02b9\u0003\u0002\u0002\u0002\u02b9\u02ba\u0007", + "\u0084\u0002\u0002\u02ba\u02bd\u0007\u00a4\u0002\u0002\u02bb\u02be\u0005", + "\u00b0Y\u0002\u02bc\u02be\u0005\u00ba^\u0002\u02bd\u02bb\u0003\u0002", + "\u0002\u0002\u02bd\u02bc\u0003\u0002\u0002\u0002\u02bd\u02be\u0003\u0002", + "\u0002\u0002\u02be\u02bf\u0003\u0002\u0002\u0002\u02bf\u02c1\u0007\u0085", + "\u0002\u0002\u02c0\u02c2\u0005X-\u0002\u02c1\u02c0\u0003\u0002\u0002", + "\u0002\u02c1\u02c2\u0003\u0002\u0002\u0002\u02c2K\u0003\u0002\u0002", + "\u0002\u02c3\u02cc\u0007\u0091\u0002\u0002\u02c4\u02c9\u0005N(\u0002", + "\u02c5\u02c6\u0007\u008b\u0002\u0002\u02c6\u02c8\u0005N(\u0002\u02c7", + "\u02c5\u0003\u0002\u0002\u0002\u02c8\u02cb\u0003\u0002\u0002\u0002\u02c9", + "\u02c7\u0003\u0002\u0002\u0002\u02c9\u02ca\u0003\u0002\u0002\u0002\u02ca", + "\u02cd\u0003\u0002\u0002\u0002\u02cb\u02c9\u0003\u0002\u0002\u0002\u02cc", + "\u02c4\u0003\u0002\u0002\u0002\u02cc\u02cd\u0003\u0002\u0002\u0002\u02cd", + "\u02ce\u0003\u0002\u0002\u0002\u02ce\u02cf\u0007\u0090\u0002\u0002\u02cf", + "M\u0003\u0002\u0002\u0002\u02d0\u02d2\u0005\u00b4[\u0002\u02d1\u02d0", + "\u0003\u0002\u0002\u0002\u02d2\u02d5\u0003\u0002\u0002\u0002\u02d3\u02d1", + "\u0003\u0002\u0002\u0002\u02d3\u02d4\u0003\u0002\u0002\u0002\u02d4\u02d6", + "\u0003\u0002\u0002\u0002\u02d5\u02d3\u0003\u0002\u0002\u0002\u02d6\u02d7", + "\u0005\u00ba^\u0002\u02d7O\u0003\u0002\u0002\u0002\u02d8\u02d9\u0007", + "\u008e\u0002\u0002\u02d9\u02e5\u0007\u0086\u0002\u0002\u02da\u02df\u0005", + "R*\u0002\u02db\u02dc\u0007\u008b\u0002\u0002\u02dc\u02de\u0005R*\u0002", + "\u02dd\u02db\u0003\u0002\u0002\u0002\u02de\u02e1\u0003\u0002\u0002\u0002", + "\u02df\u02dd\u0003\u0002\u0002\u0002\u02df\u02e0\u0003\u0002\u0002\u0002", + "\u02e0\u02e3\u0003\u0002\u0002\u0002\u02e1\u02df\u0003\u0002\u0002\u0002", + "\u02e2\u02e4\u0007\u008b\u0002\u0002\u02e3\u02e2\u0003\u0002\u0002\u0002", + "\u02e3\u02e4\u0003\u0002\u0002\u0002\u02e4\u02e6\u0003\u0002\u0002\u0002", + "\u02e5\u02da\u0003\u0002\u0002\u0002\u02e5\u02e6\u0003\u0002\u0002\u0002", + "\u02e6\u02e7\u0003\u0002\u0002\u0002\u02e7\u02e8\u0007\u0087\u0002\u0002", + "\u02e8Q\u0003\u0002\u0002\u0002\u02e9\u02ea\u0005\u010c\u0087\u0002", + "\u02ea\u02eb\u0007\u0095\u0002\u0002\u02eb\u02ec\u0005\u0108\u0085\u0002", + "\u02ecS\u0003\u0002\u0002\u0002\u02ed\u02ee\u0007\u008e\u0002\u0002", + "\u02ee\u02f3\u0007\u0088\u0002\u0002\u02ef\u02f1\u0005\u0106\u0084\u0002", + "\u02f0\u02f2\u0007\u008b\u0002\u0002\u02f1\u02f0\u0003\u0002\u0002\u0002", + "\u02f1\u02f2\u0003\u0002\u0002\u0002\u02f2\u02f4\u0003\u0002\u0002\u0002", + "\u02f3\u02ef\u0003\u0002\u0002\u0002\u02f3\u02f4\u0003\u0002\u0002\u0002", + "\u02f4\u02f5\u0003\u0002\u0002\u0002\u02f5\u02f6\u0007\u0089\u0002\u0002", + "\u02f6U\u0003\u0002\u0002\u0002\u02f7\u02f8\u0007\u008e\u0002\u0002", + "\u02f8\u02f9\u0007\u0084\u0002\u0002\u02f9\u02fa\u0005\u0108\u0085\u0002", + "\u02fa\u02fb\u0007\u0085\u0002\u0002\u02fb\u0302\u0003\u0002\u0002\u0002", + "\u02fc\u02ff\u0007\u008e\u0002\u0002\u02fd\u0300\u0005\u0122\u0092\u0002", + "\u02fe\u0300\u0005\u0126\u0094\u0002\u02ff\u02fd\u0003\u0002\u0002\u0002", + "\u02ff\u02fe\u0003\u0002\u0002\u0002\u0300\u0302\u0003\u0002\u0002\u0002", + "\u0301\u02f7\u0003\u0002\u0002\u0002\u0301\u02fc\u0003\u0002\u0002\u0002", + "\u0302W\u0003\u0002\u0002\u0002\u0303\u030f\u0007\u0084\u0002\u0002", + "\u0304\u0307\u0005Z.\u0002\u0305\u0307\u0007\"\u0002\u0002\u0306\u0304", + "\u0003\u0002\u0002\u0002\u0306\u0305\u0003\u0002\u0002\u0002\u0307\u030c", + "\u0003\u0002\u0002\u0002\u0308\u0309\u0007\u008b\u0002\u0002\u0309\u030b", + "\u0005Z.\u0002\u030a\u0308\u0003\u0002\u0002\u0002\u030b\u030e\u0003", + "\u0002\u0002\u0002\u030c\u030a\u0003\u0002\u0002\u0002\u030c\u030d\u0003", + "\u0002\u0002\u0002\u030d\u0310\u0003\u0002\u0002\u0002\u030e\u030c\u0003", + "\u0002\u0002\u0002\u030f\u0306\u0003\u0002\u0002\u0002\u030f\u0310\u0003", + "\u0002\u0002\u0002\u0310\u0311\u0003\u0002\u0002\u0002\u0311\u0312\u0007", + "\u0085\u0002\u0002\u0312Y\u0003\u0002\u0002\u0002\u0313\u0316\u0005", + "p9\u0002\u0314\u0316\u0005\u00dan\u0002\u0315\u0313\u0003\u0002\u0002", + "\u0002\u0315\u0314\u0003\u0002\u0002\u0002\u0316[\u0003\u0002\u0002", + "\u0002\u0317\u0319\u0007\u00a4\u0002\u0002\u0318\u031a\u0005\u00ba^", + "\u0002\u0319\u0318\u0003\u0002\u0002\u0002\u0319\u031a\u0003\u0002\u0002", + "\u0002\u031a\u031c\u0003\u0002\u0002\u0002\u031b\u031d\u0005\u00b0Y", + "\u0002\u031c\u031b\u0003\u0002\u0002\u0002\u031c\u031d\u0003\u0002\u0002", + "\u0002\u031d\u031f\u0003\u0002\u0002\u0002\u031e\u0320\u0005X-\u0002", + "\u031f\u031e\u0003\u0002\u0002\u0002\u031f\u0320\u0003\u0002\u0002\u0002", + "\u0320\u0321\u0003\u0002\u0002\u0002\u0321\u0322\u0005\u00ecw\u0002", + "\u0322]\u0003\u0002\u0002\u0002\u0323\u0324\u0007\u0088\u0002\u0002", + "\u0324\u0325\u0005`1\u0002\u0325\u0326\u0005b2\u0002\u0326\u0327\u0007", + "\u0089\u0002\u0002\u0327_\u0003\u0002\u0002\u0002\u0328\u032b\u0005", + "\u0108\u0085\u0002\u0329\u032b\u0005\u00ba^\u0002\u032a\u0328\u0003", + "\u0002\u0002\u0002\u032a\u0329\u0003\u0002\u0002\u0002\u032ba\u0003", + "\u0002\u0002\u0002\u032c\u0333\u0005@!\u0002\u032d\u032f\u0005d3\u0002", + "\u032e\u032d\u0003\u0002\u0002\u0002\u032f\u0330\u0003\u0002\u0002\u0002", + "\u0330\u032e\u0003\u0002\u0002\u0002\u0330\u0331\u0003\u0002\u0002\u0002", + "\u0331\u0333\u0003\u0002\u0002\u0002\u0332\u032c\u0003\u0002\u0002\u0002", + "\u0332\u032e\u0003\u0002\u0002\u0002\u0333c\u0003\u0002\u0002\u0002", + "\u0334\u0336\u0005@!\u0002\u0335\u0334\u0003\u0002\u0002\u0002\u0335", + "\u0336\u0003\u0002\u0002\u0002\u0336\u0337\u0003\u0002\u0002\u0002\u0337", + "\u0338\u0007\u0095\u0002\u0002\u0338\u033d\u0005f4\u0002\u0339\u033a", + "\u0007\u008b\u0002\u0002\u033a\u033c\u0005f4\u0002\u033b\u0339\u0003", + "\u0002\u0002\u0002\u033c\u033f\u0003\u0002\u0002\u0002\u033d\u033b\u0003", + "\u0002\u0002\u0002\u033d\u033e\u0003\u0002\u0002\u0002\u033ee\u0003", + "\u0002\u0002\u0002\u033f\u033d\u0003\u0002\u0002\u0002\u0340\u0342\u0005", + "\u0106\u0084\u0002\u0341\u0343\u0005\u00b0Y\u0002\u0342\u0341\u0003", + "\u0002\u0002\u0002\u0342\u0343\u0003\u0002\u0002\u0002\u0343\u0348\u0003", + "\u0002\u0002\u0002\u0344\u0345\u0007\u0086\u0002\u0002\u0345\u0346\u0005", + "\u00d8m\u0002\u0346\u0347\u0007\u0087\u0002\u0002\u0347\u0349\u0003", + "\u0002\u0002\u0002\u0348\u0344\u0003\u0002\u0002\u0002\u0348\u0349\u0003", + "\u0002\u0002\u0002\u0349g\u0003\u0002\u0002\u0002\u034a\u034b\u0007", + "N\u0002\u0002\u034b\u034c\u0007\u0084\u0002\u0002\u034c\u034d\u0005", + "j6\u0002\u034d\u034e\u0007\u0085\u0002\u0002\u034ei\u0003\u0002\u0002", + "\u0002\u034f\u0359\u0005@!\u0002\u0350\u0352\u0005@!\u0002\u0351\u0350", + "\u0003\u0002\u0002\u0002\u0351\u0352\u0003\u0002\u0002\u0002\u0352\u0353", + "\u0003\u0002\u0002\u0002\u0353\u0355\u0007\u0095\u0002\u0002\u0354\u0351", + "\u0003\u0002\u0002\u0002\u0355\u0356\u0003\u0002\u0002\u0002\u0356\u0354", + "\u0003\u0002\u0002\u0002\u0356\u0357\u0003\u0002\u0002\u0002\u0357\u0359", + "\u0003\u0002\u0002\u0002\u0358\u034f\u0003\u0002\u0002\u0002\u0358\u0354", + "\u0003\u0002\u0002\u0002\u0359k\u0003\u0002\u0002\u0002\u035a\u035b", + "\u0007G\u0002\u0002\u035b\u035c\u0007\u0084\u0002\u0002\u035c\u035d", + "\u0005$\u0013\u0002\u035d\u035e\u0007\u0085\u0002\u0002\u035em\u0003", + "\u0002\u0002\u0002\u035f\u0360\u0007@\u0002\u0002\u0360\u0361\u0007", + "\u0084\u0002\u0002\u0361\u0362\u0005\u00dan\u0002\u0362\u0363\u0007", + "\u0085\u0002\u0002\u0363o\u0003\u0002\u0002\u0002\u0364\u0365\u0005", + "\u009eP\u0002\u0365\u0366\u0005\u00e4s\u0002\u0366q\u0003\u0002\u0002", + "\u0002\u0367\u0368\u0007Q\u0002\u0002\u0368\u0369\u0007\u0084\u0002", + "\u0002\u0369\u036a\u0005\u0126\u0094\u0002\u036a\u036b\u0007\u0085\u0002", + "\u0002\u036b\u036f\u0003\u0002\u0002\u0002\u036c\u036d\u0007Q\u0002", + "\u0002\u036d\u036f\u0005\u0108\u0085\u0002\u036e\u0367\u0003\u0002\u0002", + "\u0002\u036e\u036c\u0003\u0002\u0002\u0002\u036fs\u0003\u0002\u0002", + "\u0002\u0370\u0371\u0007R\u0002\u0002\u0371\u0375\u0005\u00ecw\u0002", + "\u0372\u0374\u0005v<\u0002\u0373\u0372\u0003\u0002\u0002\u0002\u0374", + "\u0377\u0003\u0002\u0002\u0002\u0375\u0373\u0003\u0002\u0002\u0002\u0375", + "\u0376\u0003\u0002\u0002\u0002\u0376\u037a\u0003\u0002\u0002\u0002\u0377", + "\u0375\u0003\u0002\u0002\u0002\u0378\u0379\u0007B\u0002\u0002\u0379", + "\u037b\u0005\u00ecw\u0002\u037a\u0378\u0003\u0002\u0002\u0002\u037a", + "\u037b\u0003\u0002\u0002\u0002\u037bu\u0003\u0002\u0002\u0002\u037c", + "\u037d\u0007=\u0002\u0002\u037d\u037e\u0007\u0084\u0002\u0002\u037e", + "\u037f\u0005p9\u0002\u037f\u0380\u0007\u0085\u0002\u0002\u0380\u0381", + "\u0005\u00ecw\u0002\u0381w\u0003\u0002\u0002\u0002\u0382\u0383\u0007", + "O\u0002\u0002\u0383\u0384\u0007\u0084\u0002\u0002\u0384\u0385\u0005", + "\u0108\u0085\u0002\u0385\u0386\u0007\u0085\u0002\u0002\u0386\u0387\u0005", + "\u00ecw\u0002\u0387y\u0003\u0002\u0002\u0002\u0388\u0389\u0007<\u0002", + "\u0002\u0389\u038a\u0005\u00ecw\u0002\u038a{\u0003\u0002\u0002\u0002", + "\u038b\u0390\u0005\u0080A\u0002\u038c\u038f\u0005\u00d2j\u0002\u038d", + "\u038f\u0005\u00a0Q\u0002\u038e\u038c\u0003\u0002\u0002\u0002\u038e", + "\u038d\u0003\u0002\u0002\u0002\u038f\u0392\u0003\u0002\u0002\u0002\u0390", + "\u038e\u0003\u0002\u0002\u0002\u0390\u0391\u0003\u0002\u0002\u0002\u0391", + "\u0393\u0003\u0002\u0002\u0002\u0392\u0390\u0003\u0002\u0002\u0002\u0393", + "\u0394\u0007\u008a\u0002\u0002\u0394}\u0003\u0002\u0002\u0002\u0395", + "\u039a\u0005\u0080A\u0002\u0396\u0399\u0005\u00d2j\u0002\u0397\u0399", + "\u0005\u00a0Q\u0002\u0398\u0396\u0003\u0002\u0002\u0002\u0398\u0397", + "\u0003\u0002\u0002\u0002\u0399\u039c\u0003\u0002\u0002\u0002\u039a\u0398", + "\u0003\u0002\u0002\u0002\u039a\u039b\u0003\u0002\u0002\u0002\u039b\u039d", + "\u0003\u0002\u0002\u0002\u039c\u039a\u0003\u0002\u0002\u0002\u039d\u039e", + "\u0005\u00ecw\u0002\u039e\u007f\u0003\u0002\u0002\u0002\u039f\u03a1", + "\u0005\u009eP\u0002\u03a0\u039f\u0003\u0002\u0002\u0002\u03a0\u03a1", + "\u0003\u0002\u0002\u0002\u03a1\u03a2\u0003\u0002\u0002\u0002\u03a2\u03a3", + "\u0005\u0126\u0094\u0002\u03a3\u03a5\u0007\u0084\u0002\u0002\u03a4\u03a6", + "\u0005\u00ceh\u0002\u03a5\u03a4\u0003\u0002\u0002\u0002\u03a5\u03a6", + "\u0003\u0002\u0002\u0002\u03a6\u03a7\u0003\u0002\u0002\u0002\u03a7\u03a8", + "\u0007\u0085\u0002\u0002\u03a8\u03aa\u0003\u0002\u0002\u0002\u03a9\u03ab", + "\u0005\u00a0Q\u0002\u03aa\u03a9\u0003\u0002\u0002\u0002\u03aa\u03ab", + "\u0003\u0002\u0002\u0002\u03ab\u0081\u0003\u0002\u0002\u0002\u03ac\u03ae", + "\u0005\u009eP\u0002\u03ad\u03ac\u0003\u0002\u0002\u0002\u03ad\u03ae", + "\u0003\u0002\u0002\u0002\u03ae\u03af\u0003\u0002\u0002\u0002\u03af\u03b0", + "\u0007\u0084\u0002\u0002\u03b0\u03b2\u0007\u00a0\u0002\u0002\u03b1\u03b3", + "\u0005\u00b0Y\u0002\u03b2\u03b1\u0003\u0002\u0002\u0002\u03b2\u03b3", + "\u0003\u0002\u0002\u0002\u03b3\u03b5\u0003\u0002\u0002\u0002\u03b4\u03b6", + "\u0005\u0126\u0094\u0002\u03b5\u03b4\u0003\u0002\u0002\u0002\u03b5\u03b6", + "\u0003\u0002\u0002\u0002\u03b6\u03b7\u0003\u0002\u0002\u0002\u03b7\u03b8", + "\u0007\u0085\u0002\u0002\u03b8\u03b9\u0003\u0002\u0002\u0002\u03b9\u03bb", + "\u0007\u0084\u0002\u0002\u03ba\u03bc\u0005\u00ceh\u0002\u03bb\u03ba", + "\u0003\u0002\u0002\u0002\u03bb\u03bc\u0003\u0002\u0002\u0002\u03bc\u03bd", + "\u0003\u0002\u0002\u0002\u03bd\u03be\u0007\u0085\u0002\u0002\u03be\u03c0", + "\u0003\u0002\u0002\u0002\u03bf\u03c1\u0005\u00a0Q\u0002\u03c0\u03bf", + "\u0003\u0002\u0002\u0002\u03c0\u03c1\u0003\u0002\u0002\u0002\u03c1\u0083", + "\u0003\u0002\u0002\u0002\u03c2\u03c4\u0005\u0086D\u0002\u03c3\u03c5", + "\u0005\u0088E\u0002\u03c4\u03c3\u0003\u0002\u0002\u0002\u03c4\u03c5", + "\u0003\u0002\u0002\u0002\u03c5\u0085\u0003\u0002\u0002\u0002\u03c6\u03c9", + "\u0007\u0007\u0002\u0002\u03c7\u03c9\u0005\u0126\u0094\u0002\u03c8\u03c6", + "\u0003\u0002\u0002\u0002\u03c8\u03c7\u0003\u0002\u0002\u0002\u03c9\u0087", + "\u0003\u0002\u0002\u0002\u03ca\u03cc\u0007\u0084\u0002\u0002\u03cb\u03cd", + "\u0005\u008aF\u0002\u03cc\u03cb\u0003\u0002\u0002\u0002\u03cc\u03cd", + "\u0003\u0002\u0002\u0002\u03cd\u03ce\u0003\u0002\u0002\u0002\u03ce\u03cf", + "\u0007\u0085\u0002\u0002\u03cf\u0089\u0003\u0002\u0002\u0002\u03d0\u03d5", + "\u0005\u008cG\u0002\u03d1\u03d2\u0007\u008b\u0002\u0002\u03d2\u03d4", + "\u0005\u008cG\u0002\u03d3\u03d1\u0003\u0002\u0002\u0002\u03d4\u03d7", + "\u0003\u0002\u0002\u0002\u03d5\u03d3\u0003\u0002\u0002\u0002\u03d5\u03d6", + "\u0003\u0002\u0002\u0002\u03d6\u008b\u0003\u0002\u0002\u0002\u03d7\u03d5", + "\u0003\u0002\u0002\u0002\u03d8\u03dd\u0005\u0084C\u0002\u03d9\u03dd", + "\u0005\u0122\u0092\u0002\u03da\u03dd\u0005\u0124\u0093\u0002\u03db\u03dd", + "\u0005\u008eH\u0002\u03dc\u03d8\u0003\u0002\u0002\u0002\u03dc\u03d9", + "\u0003\u0002\u0002\u0002\u03dc\u03da\u0003\u0002\u0002\u0002\u03dc\u03db", + "\u0003\u0002\u0002\u0002\u03dd\u008d\u0003\u0002\u0002\u0002\u03de\u03df", + "\u0005\u0086D\u0002\u03df\u03e3\u0007\u008f\u0002\u0002\u03e0\u03e4", + "\u0005\u0122\u0092\u0002\u03e1\u03e4\u0005\u0086D\u0002\u03e2\u03e4", + "\u0005\u0124\u0093\u0002\u03e3\u03e0\u0003\u0002\u0002\u0002\u03e3\u03e1", + "\u0003\u0002\u0002\u0002\u03e3\u03e2\u0003\u0002\u0002\u0002\u03e4\u008f", + "\u0003\u0002\u0002\u0002\u03e5\u03ea\u0005\u0092J\u0002\u03e6\u03ea", + "\u0005\u0094K\u0002\u03e7\u03ea\u0005\u0096L\u0002\u03e8\u03ea\u0005", + "\u0098M\u0002\u03e9\u03e5\u0003\u0002\u0002\u0002\u03e9\u03e6\u0003", + "\u0002\u0002\u0002\u03e9\u03e7\u0003\u0002\u0002\u0002\u03e9\u03e8\u0003", + "\u0002\u0002\u0002\u03ea\u0091\u0003\u0002\u0002\u0002\u03eb\u03ed\u0005", + "\u00a0Q\u0002\u03ec\u03eb\u0003\u0002\u0002\u0002\u03ec\u03ed\u0003", + "\u0002\u0002\u0002\u03ed\u03ee\u0003\u0002\u0002\u0002\u03ee\u03f0\u0005", + "\u0126\u0094\u0002\u03ef\u03f1\u0005\u00a0Q\u0002\u03f0\u03ef\u0003", + "\u0002\u0002\u0002\u03f0\u03f1\u0003\u0002\u0002\u0002\u03f1\u03f2\u0003", + "\u0002\u0002\u0002\u03f2\u03f3\u0007\u0084\u0002\u0002\u03f3\u03f4\u0005", + "\u00caf\u0002\u03f4\u03f5\u0007\u0085\u0002\u0002\u03f5\u03f6\u0007", + "\u008a\u0002\u0002\u03f6\u0093\u0003\u0002\u0002\u0002\u03f7\u03fa\u0005", + "\u00d2j\u0002\u03f8\u03fa\u0005\u00a0Q\u0002\u03f9\u03f7\u0003\u0002", + "\u0002\u0002\u03f9\u03f8\u0003\u0002\u0002\u0002\u03fa\u03fd\u0003\u0002", + "\u0002\u0002\u03fb\u03f9\u0003\u0002\u0002\u0002\u03fb\u03fc\u0003\u0002", + "\u0002\u0002\u03fc\u03ff\u0003\u0002\u0002\u0002\u03fd\u03fb\u0003\u0002", + "\u0002\u0002\u03fe\u0400\u0007\u001f\u0002\u0002\u03ff\u03fe\u0003\u0002", + "\u0002\u0002\u03ff\u0400\u0003\u0002\u0002\u0002\u0400\u0401\u0003\u0002", + "\u0002\u0002\u0401\u0403\u0005\u00c2b\u0002\u0402\u0404\u0005\u0126", + "\u0094\u0002\u0403\u0402\u0003\u0002\u0002\u0002\u0403\u0404\u0003\u0002", + "\u0002\u0002\u0404\u0409\u0003\u0002\u0002\u0002\u0405\u0408\u0005\u00d2", + "j\u0002\u0406\u0408\u0005\u00a0Q\u0002\u0407\u0405\u0003\u0002\u0002", + "\u0002\u0407\u0406\u0003\u0002\u0002\u0002\u0408\u040b\u0003\u0002\u0002", + "\u0002\u0409\u0407\u0003\u0002\u0002\u0002\u0409\u040a\u0003\u0002\u0002", + "\u0002\u040a\u040c\u0003\u0002\u0002\u0002\u040b\u0409\u0003\u0002\u0002", + "\u0002\u040c\u040d\u0007\u008a\u0002\u0002\u040d\u0095\u0003\u0002\u0002", + "\u0002\u040e\u040f\u0005\u009eP\u0002\u040f\u0410\u0005\u00a2R\u0002", + "\u0410\u0413\u0003\u0002\u0002\u0002\u0411\u0413\u0005\u009eP\u0002", + "\u0412\u040e\u0003\u0002\u0002\u0002\u0412\u0411\u0003\u0002\u0002\u0002", + "\u0413\u0418\u0003\u0002\u0002\u0002\u0414\u0417\u0005\u00d2j\u0002", + "\u0415\u0417\u0005\u00a0Q\u0002\u0416\u0414\u0003\u0002\u0002\u0002", + "\u0416\u0415\u0003\u0002\u0002\u0002\u0417\u041a\u0003\u0002\u0002\u0002", + "\u0418\u0416\u0003\u0002\u0002\u0002\u0418\u0419\u0003\u0002\u0002\u0002", + "\u0419\u041b\u0003\u0002\u0002\u0002\u041a\u0418\u0003\u0002\u0002\u0002", + "\u041b\u041c\u0007\u008a\u0002\u0002\u041c\u0097\u0003\u0002\u0002\u0002", + "\u041d\u041f\u0005\u00a0Q\u0002\u041e\u041d\u0003\u0002\u0002\u0002", + "\u041e\u041f\u0003\u0002\u0002\u0002\u041f\u0420\u0003\u0002\u0002\u0002", + "\u0420\u042a\u0007\u001f\u0002\u0002\u0421\u0422\u0005\u009eP\u0002", + "\u0422\u0423\u0005\u009aN\u0002\u0423\u042b\u0003\u0002\u0002\u0002", + "\u0424\u042b\u0005\u009eP\u0002\u0425\u042b\u0005\u0082B\u0002\u0426", + "\u042b\u0005\u0080A\u0002\u0427\u0428\u0005\u00a6T\u0002\u0428\u0429", + "\u0005\u0126\u0094\u0002\u0429\u042b\u0003\u0002\u0002\u0002\u042a\u0421", + "\u0003\u0002\u0002\u0002\u042a\u0424\u0003\u0002\u0002\u0002\u042a\u0425", + "\u0003\u0002\u0002\u0002\u042a\u0426\u0003\u0002\u0002\u0002\u042a\u0427", + "\u0003\u0002\u0002\u0002\u042b\u0430\u0003\u0002\u0002\u0002\u042c\u042f", + "\u0005\u00d2j\u0002\u042d\u042f\u0005\u00a0Q\u0002\u042e\u042c\u0003", + "\u0002\u0002\u0002\u042e\u042d\u0003\u0002\u0002\u0002\u042f\u0432\u0003", + "\u0002\u0002\u0002\u0430\u042e\u0003\u0002\u0002\u0002\u0430\u0431\u0003", + "\u0002\u0002\u0002\u0431\u0433\u0003\u0002\u0002\u0002\u0432\u0430\u0003", + "\u0002\u0002\u0002\u0433\u0434\u0007\u008a\u0002\u0002\u0434\u0099\u0003", + "\u0002\u0002\u0002\u0435\u043a\u0005\u009cO\u0002\u0436\u0437\u0007", + "\u008b\u0002\u0002\u0437\u0439\u0005\u009cO\u0002\u0438\u0436\u0003", + "\u0002\u0002\u0002\u0439\u043c\u0003\u0002\u0002\u0002\u043a\u0438\u0003", + "\u0002\u0002\u0002\u043a\u043b\u0003\u0002\u0002\u0002\u043b\u009b\u0003", + "\u0002\u0002\u0002\u043c\u043a\u0003\u0002\u0002\u0002\u043d\u043f\u0005", + "\u00d0i\u0002\u043e\u043d\u0003\u0002\u0002\u0002\u043e\u043f\u0003", + "\u0002\u0002\u0002\u043f\u0440\u0003\u0002\u0002\u0002\u0440\u0441\u0005", + "\u00caf\u0002\u0441\u009d\u0003\u0002\u0002\u0002\u0442\u044b\u0005", + "\u00b2Z\u0002\u0443\u044b\u0005\u00a0Q\u0002\u0444\u044b\u0005\u00ae", + "X\u0002\u0445\u044b\u0005\u00b0Y\u0002\u0446\u044b\u0005\u00acW\u0002", + "\u0447\u044b\u0005\u00b4[\u0002\u0448\u044b\u0005\u00b6\\\u0002\u0449", + "\u044b\u0005\u00ba^\u0002\u044a\u0442\u0003\u0002\u0002\u0002\u044a", + "\u0443\u0003\u0002\u0002\u0002\u044a\u0444\u0003\u0002\u0002\u0002\u044a", + "\u0445\u0003\u0002\u0002\u0002\u044a\u0446\u0003\u0002\u0002\u0002\u044a", + "\u0447\u0003\u0002\u0002\u0002\u044a\u0448\u0003\u0002\u0002\u0002\u044a", + "\u0449\u0003\u0002\u0002\u0002\u044b\u044c\u0003\u0002\u0002\u0002\u044c", + "\u044a\u0003\u0002\u0002\u0002\u044c\u044d\u0003\u0002\u0002\u0002\u044d", + "\u009f\u0003\u0002\u0002\u0002\u044e\u044f\u0007V\u0002\u0002\u044f", + "\u0450\u0007\u0084\u0002\u0002\u0450\u0451\u0007\u0084\u0002\u0002\u0451", + "\u0456\u0005\u0084C\u0002\u0452\u0453\u0007\u008b\u0002\u0002\u0453", + "\u0455\u0005\u0084C\u0002\u0454\u0452\u0003\u0002\u0002\u0002\u0455", + "\u0458\u0003\u0002\u0002\u0002\u0456\u0454\u0003\u0002\u0002\u0002\u0456", + "\u0457\u0003\u0002\u0002\u0002\u0457\u0459\u0003\u0002\u0002\u0002\u0458", + "\u0456\u0003\u0002\u0002\u0002\u0459\u045a\u0007\u0085\u0002\u0002\u045a", + "\u045b\u0007\u0085\u0002\u0002\u045b\u00a1\u0003\u0002\u0002\u0002\u045c", + "\u0461\u0005\u00a4S\u0002\u045d\u045e\u0007\u008b\u0002\u0002\u045e", + "\u0460\u0005\u00a4S\u0002\u045f\u045d\u0003\u0002\u0002\u0002\u0460", + "\u0463\u0003\u0002\u0002\u0002\u0461\u045f\u0003\u0002\u0002\u0002\u0461", + "\u0462\u0003\u0002\u0002\u0002\u0462\u00a3\u0003\u0002\u0002\u0002\u0463", + "\u0461\u0003\u0002\u0002\u0002\u0464\u0469\u0005\u00e4s\u0002\u0465", + "\u0468\u0005\u00d2j\u0002\u0466\u0468\u0005\u00a0Q\u0002\u0467\u0465", + "\u0003\u0002\u0002\u0002\u0467\u0466\u0003\u0002\u0002\u0002\u0468\u046b", + "\u0003\u0002\u0002\u0002\u0469\u0467\u0003\u0002\u0002\u0002\u0469\u046a", + "\u0003\u0002\u0002\u0002\u046a\u046e\u0003\u0002\u0002\u0002\u046b\u0469", + "\u0003\u0002\u0002\u0002\u046c\u046d\u0007\u008f\u0002\u0002\u046d\u046f", + "\u0005\u010e\u0088\u0002\u046e\u046c\u0003\u0002\u0002\u0002\u046e\u046f", + "\u0003\u0002\u0002\u0002\u046f\u00a5\u0003\u0002\u0002\u0002\u0470\u047d", + "\t\u0005\u0002\u0002\u0471\u047e\u0005\u0126\u0094\u0002\u0472\u0474", + "\u0005\u0126\u0094\u0002\u0473\u0472\u0003\u0002\u0002\u0002\u0473\u0474", + "\u0003\u0002\u0002\u0002\u0474\u0475\u0003\u0002\u0002\u0002\u0475\u0477", + "\u0007\u0086\u0002\u0002\u0476\u0478\u0005\u00a8U\u0002\u0477\u0476", + "\u0003\u0002\u0002\u0002\u0478\u0479\u0003\u0002\u0002\u0002\u0479\u0477", + "\u0003\u0002\u0002\u0002\u0479\u047a\u0003\u0002\u0002\u0002\u047a\u047b", + "\u0003\u0002\u0002\u0002\u047b\u047c\u0007\u0087\u0002\u0002\u047c\u047e", + "\u0003\u0002\u0002\u0002\u047d\u0471\u0003\u0002\u0002\u0002\u047d\u0473", + "\u0003\u0002\u0002\u0002\u047e\u00a7\u0003\u0002\u0002\u0002\u047f\u0480", + "\u0005\u00aaV\u0002\u0480\u0481\u0005\u00be`\u0002\u0481\u0484\u0003", + "\u0002\u0002\u0002\u0482\u0484\u0005\u0082B\u0002\u0483\u047f\u0003", + "\u0002\u0002\u0002\u0483\u0482\u0003\u0002\u0002\u0002\u0484\u0489\u0003", + "\u0002\u0002\u0002\u0485\u0488\u0005\u00d2j\u0002\u0486\u0488\u0005", + "\u00a0Q\u0002\u0487\u0485\u0003\u0002\u0002\u0002\u0487\u0486\u0003", + "\u0002\u0002\u0002\u0488\u048b\u0003\u0002\u0002\u0002\u0489\u0487\u0003", + "\u0002\u0002\u0002\u0489\u048a\u0003\u0002\u0002\u0002\u048a\u048c\u0003", + "\u0002\u0002\u0002\u048b\u0489\u0003\u0002\u0002\u0002\u048c\u048d\u0007", + "\u008a\u0002\u0002\u048d\u00a9\u0003\u0002\u0002\u0002\u048e\u0495\u0005", + "\u00aeX\u0002\u048f\u0495\u0005\u00b0Y\u0002\u0490\u0495\u0005\u00ac", + "W\u0002\u0491\u0495\u0005\u00b4[\u0002\u0492\u0495\u0005\u00b6\\\u0002", + "\u0493\u0495\u0005\u00ba^\u0002\u0494\u048e\u0003\u0002\u0002\u0002", + "\u0494\u048f\u0003\u0002\u0002\u0002\u0494\u0490\u0003\u0002\u0002\u0002", + "\u0494\u0491\u0003\u0002\u0002\u0002\u0494\u0492\u0003\u0002\u0002\u0002", + "\u0494\u0493\u0003\u0002\u0002\u0002\u0495\u0496\u0003\u0002\u0002\u0002", + "\u0496\u0494\u0003\u0002\u0002\u0002\u0496\u0497\u0003\u0002\u0002\u0002", + "\u0497\u00ab\u0003\u0002\u0002\u0002\u0498\u0499\u0007y\u0002\u0002", + "\u0499\u049a\u0007\u0084\u0002\u0002\u049a\u049b\u0005\u0126\u0094\u0002", + "\u049b\u049c\u0007\u0085\u0002\u0002\u049c\u049f\u0003\u0002\u0002\u0002", + "\u049d\u049f\u0007x\u0002\u0002\u049e\u0498\u0003\u0002\u0002\u0002", + "\u049e\u049d\u0003\u0002\u0002\u0002\u049f\u00ad\u0003\u0002\u0002\u0002", + "\u04a0\u04a1\t\u0006\u0002\u0002\u04a1\u00af\u0003\u0002\u0002\u0002", + "\u04a2\u04a3\t\u0007\u0002\u0002\u04a3\u00b1\u0003\u0002\u0002\u0002", + "\u04a4\u04a5\t\b\u0002\u0002\u04a5\u00b3\u0003\u0002\u0002\u0002\u04a6", + "\u04a7\t\t\u0002\u0002\u04a7\u00b5\u0003\u0002\u0002\u0002\u04a8\u04ad", + "\u0007\u0007\u0002\u0002\u04a9\u04ad\u0007#\u0002\u0002\u04aa\u04ad", + "\u0007\u0017\u0002\u0002\u04ab\u04ad\u0005\u00b8]\u0002\u04ac\u04a8", + "\u0003\u0002\u0002\u0002\u04ac\u04a9\u0003\u0002\u0002\u0002\u04ac\u04aa", + "\u0003\u0002\u0002\u0002\u04ac\u04ab\u0003\u0002\u0002\u0002\u04ad\u00b7", + "\u0003\u0002\u0002\u0002\u04ae\u04af\t\n\u0002\u0002\u04af\u00b9\u0003", + "\u0002\u0002\u0002\u04b0\u04bf\u0007\"\u0002\u0002\u04b1\u04bf\u0007", + "\u0006\u0002\u0002\u04b2\u04bf\u0007\u0019\u0002\u0002\u04b3\u04bf\u0007", + "\u0014\u0002\u0002\u04b4\u04bf\u0007\u0015\u0002\u0002\u04b5\u04bf\u0007", + "\u000f\u0002\u0002\u04b6\u04bf\u0007\u000b\u0002\u0002\u04b7\u04bf\u0007", + "\u001a\u0002\u0002\u04b8\u04bf\u0007!\u0002\u0002\u04b9\u04bf\u0005", + "\u00bc_\u0002\u04ba\u04bf\u0005\u0010\t\u0002\u04bb\u04bf\u0005\u00a6", + "T\u0002\u04bc\u04bf\u0005\u00c2b\u0002\u04bd\u04bf\u0005\u0126\u0094", + "\u0002\u04be\u04b0\u0003\u0002\u0002\u0002\u04be\u04b1\u0003\u0002\u0002", + "\u0002\u04be\u04b2\u0003\u0002\u0002\u0002\u04be\u04b3\u0003\u0002\u0002", + "\u0002\u04be\u04b4\u0003\u0002\u0002\u0002\u04be\u04b5\u0003\u0002\u0002", + "\u0002\u04be\u04b6\u0003\u0002\u0002\u0002\u04be\u04b7\u0003\u0002\u0002", + "\u0002\u04be\u04b8\u0003\u0002\u0002\u0002\u04be\u04b9\u0003\u0002\u0002", + "\u0002\u04be\u04ba\u0003\u0002\u0002\u0002\u04be\u04bb\u0003\u0002\u0002", + "\u0002\u04be\u04bc\u0003\u0002\u0002\u0002\u04be\u04bd\u0003\u0002\u0002", + "\u0002\u04bf\u04c1\u0003\u0002\u0002\u0002\u04c0\u04c2\u0005\u00d0i", + "\u0002\u04c1\u04c0\u0003\u0002\u0002\u0002\u04c1\u04c2\u0003\u0002\u0002", + "\u0002\u04c2\u00bb\u0003\u0002\u0002\u0002\u04c3\u04c4\u0007a\u0002", + "\u0002\u04c4\u04c5\u0007\u0084\u0002\u0002\u04c5\u04c6\u0005\u0108\u0085", + "\u0002\u04c6\u04c7\u0007\u0085\u0002\u0002\u04c7\u00bd\u0003\u0002\u0002", + "\u0002\u04c8\u04cd\u0005\u00c0a\u0002\u04c9\u04ca\u0007\u008b\u0002", + "\u0002\u04ca\u04cc\u0005\u00c0a\u0002\u04cb\u04c9\u0003\u0002\u0002", + "\u0002\u04cc\u04cf\u0003\u0002\u0002\u0002\u04cd\u04cb\u0003\u0002\u0002", + "\u0002\u04cd\u04ce\u0003\u0002\u0002\u0002\u04ce\u00bf\u0003\u0002\u0002", + "\u0002\u04cf\u04cd\u0003\u0002\u0002\u0002\u04d0\u04d7\u0005\u00e4s", + "\u0002\u04d1\u04d3\u0005\u00e4s\u0002\u04d2\u04d1\u0003\u0002\u0002", + "\u0002\u04d2\u04d3\u0003\u0002\u0002\u0002\u04d3\u04d4\u0003\u0002\u0002", + "\u0002\u04d4\u04d5\u0007\u0095\u0002\u0002\u04d5\u04d7\u0005\u0122\u0092", + "\u0002\u04d6\u04d0\u0003\u0002\u0002\u0002\u04d6\u04d2\u0003\u0002\u0002", + "\u0002\u04d7\u00c1\u0003\u0002\u0002\u0002\u04d8\u04de\u0007\r\u0002", + "\u0002\u04d9\u04db\u0005\u0126\u0094\u0002\u04da\u04d9\u0003\u0002\u0002", + "\u0002\u04da\u04db\u0003\u0002\u0002\u0002\u04db\u04dc\u0003\u0002\u0002", + "\u0002\u04dc\u04dd\u0007\u0095\u0002\u0002\u04dd\u04df\u0005\u00dan", + "\u0002\u04de\u04da\u0003\u0002\u0002\u0002\u04de\u04df\u0003\u0002\u0002", + "\u0002\u04df\u04eb\u0003\u0002\u0002\u0002\u04e0\u04e5\u0005\u0126\u0094", + "\u0002\u04e1\u04e2\u0007\u0086\u0002\u0002\u04e2\u04e3\u0005\u00c4c", + "\u0002\u04e3\u04e4\u0007\u0087\u0002\u0002\u04e4\u04e6\u0003\u0002\u0002", + "\u0002\u04e5\u04e1\u0003\u0002\u0002\u0002\u04e5\u04e6\u0003\u0002\u0002", + "\u0002\u04e6\u04ec\u0003\u0002\u0002\u0002\u04e7\u04e8\u0007\u0086\u0002", + "\u0002\u04e8\u04e9\u0005\u00c4c\u0002\u04e9\u04ea\u0007\u0087\u0002", + "\u0002\u04ea\u04ec\u0003\u0002\u0002\u0002\u04eb\u04e0\u0003\u0002\u0002", + "\u0002\u04eb\u04e7\u0003\u0002\u0002\u0002\u04ec\u04fa\u0003\u0002\u0002", + "\u0002\u04ed\u04ee\t\u000b\u0002\u0002\u04ee\u04ef\u0007\u0084\u0002", + "\u0002\u04ef\u04f2\u0005\u00dan\u0002\u04f0\u04f1\u0007\u008b\u0002", + "\u0002\u04f1\u04f3\u0005\u0126\u0094\u0002\u04f2\u04f0\u0003\u0002\u0002", + "\u0002\u04f2\u04f3\u0003\u0002\u0002\u0002\u04f3\u04f4\u0003\u0002\u0002", + "\u0002\u04f4\u04f5\u0007\u0085\u0002\u0002\u04f5\u04f6\u0007\u0086\u0002", + "\u0002\u04f6\u04f7\u0005\u00c4c\u0002\u04f7\u04f8\u0007\u0087\u0002", + "\u0002\u04f8\u04fa\u0003\u0002\u0002\u0002\u04f9\u04d8\u0003\u0002\u0002", + "\u0002\u04f9\u04ed\u0003\u0002\u0002\u0002\u04fa\u00c3\u0003\u0002\u0002", + "\u0002\u04fb\u0500\u0005\u00c6d\u0002\u04fc\u04fd\u0007\u008b\u0002", + "\u0002\u04fd\u04ff\u0005\u00c6d\u0002\u04fe\u04fc\u0003\u0002\u0002", + "\u0002\u04ff\u0502\u0003\u0002\u0002\u0002\u0500\u04fe\u0003\u0002\u0002", + "\u0002\u0500\u0501\u0003\u0002\u0002\u0002\u0501\u0504\u0003\u0002\u0002", + "\u0002\u0502\u0500\u0003\u0002\u0002\u0002\u0503\u0505\u0007\u008b\u0002", + "\u0002\u0504\u0503\u0003\u0002\u0002\u0002\u0504\u0505\u0003\u0002\u0002", + "\u0002\u0505\u00c5\u0003\u0002\u0002\u0002\u0506\u050b\u0005\u00c8e", + "\u0002\u0507\u050a\u0005\u00d2j\u0002\u0508\u050a\u0005\u00a0Q\u0002", + "\u0509\u0507\u0003\u0002\u0002\u0002\u0509\u0508\u0003\u0002\u0002\u0002", + "\u050a\u050d\u0003\u0002\u0002\u0002\u050b\u0509\u0003\u0002\u0002\u0002", + "\u050b\u050c\u0003\u0002\u0002\u0002\u050c\u0510\u0003\u0002\u0002\u0002", + "\u050d\u050b\u0003\u0002\u0002\u0002\u050e\u050f\u0007\u008f\u0002\u0002", + "\u050f\u0511\u0005\u0108\u0085\u0002\u0510\u050e\u0003\u0002\u0002\u0002", + "\u0510\u0511\u0003\u0002\u0002\u0002\u0511\u00c7\u0003\u0002\u0002\u0002", + "\u0512\u0515\u0005\u0126\u0094\u0002\u0513\u0515\u0007\t\u0002\u0002", + "\u0514\u0512\u0003\u0002\u0002\u0002\u0514\u0513\u0003\u0002\u0002\u0002", + "\u0515\u00c9\u0003\u0002\u0002\u0002\u0516\u051c\u0005\u0126\u0094\u0002", + "\u0517\u0518\u0007\u0084\u0002\u0002\u0518\u0519\u0005\u00e4s\u0002", + "\u0519\u051a\u0007\u0085\u0002\u0002\u051a\u051c\u0003\u0002\u0002\u0002", + "\u051b\u0516\u0003\u0002\u0002\u0002\u051b\u0517\u0003\u0002\u0002\u0002", + "\u051c\u0520\u0003\u0002\u0002\u0002\u051d\u051f\u0005\u00ccg\u0002", + "\u051e\u051d\u0003\u0002\u0002\u0002\u051f\u0522\u0003\u0002\u0002\u0002", + "\u0520\u051e\u0003\u0002\u0002\u0002\u0520\u0521\u0003\u0002\u0002\u0002", + "\u0521\u052e\u0003\u0002\u0002\u0002\u0522\u0520\u0003\u0002\u0002\u0002", + "\u0523\u0524\u0007\u0084\u0002\u0002\u0524\u0526\u0007\u00a4\u0002\u0002", + "\u0525\u0527\u0005\u00b0Y\u0002\u0526\u0525\u0003\u0002\u0002\u0002", + "\u0526\u0527\u0003\u0002\u0002\u0002\u0527\u0529\u0003\u0002\u0002\u0002", + "\u0528\u052a\u0005\u0126\u0094\u0002\u0529\u0528\u0003\u0002\u0002\u0002", + "\u0529\u052a\u0003\u0002\u0002\u0002\u052a\u052b\u0003\u0002\u0002\u0002", + "\u052b\u052c\u0007\u0085\u0002\u0002\u052c\u052e\u0005X-\u0002\u052d", + "\u051b\u0003\u0002\u0002\u0002\u052d\u0523\u0003\u0002\u0002\u0002\u052e", + "\u00cb\u0003\u0002\u0002\u0002\u052f\u0531\u0007\u0088\u0002\u0002\u0530", + "\u0532\u0005\u0110\u0089\u0002\u0531\u0530\u0003\u0002\u0002\u0002\u0531", + "\u0532\u0003\u0002\u0002\u0002\u0532\u0533\u0003\u0002\u0002\u0002\u0533", + "\u0534\u0007\u0089\u0002\u0002\u0534\u00cd\u0003\u0002\u0002\u0002\u0535", + "\u0538\u0005\u00e0q\u0002\u0536\u0537\u0007\u008b\u0002\u0002\u0537", + "\u0539\u0007\u00b0\u0002\u0002\u0538\u0536\u0003\u0002\u0002\u0002\u0538", + "\u0539\u0003\u0002\u0002\u0002\u0539\u00cf\u0003\u0002\u0002\u0002\u053a", + "\u053c\u0007\u00a0\u0002\u0002\u053b\u053d\u0005\u009eP\u0002\u053c", + "\u053b\u0003\u0002\u0002\u0002\u053c\u053d\u0003\u0002\u0002\u0002\u053d", + "\u053f\u0003\u0002\u0002\u0002\u053e\u0540\u0005\u00d0i\u0002\u053f", + "\u053e\u0003\u0002\u0002\u0002\u053f\u0540\u0003\u0002\u0002\u0002\u0540", + "\u00d1\u0003\u0002\u0002\u0002\u0541\u0567\u0005\u0126\u0094\u0002\u0542", + "\u0559\u0007\u0084\u0002\u0002\u0543\u055a\u0005\u0120\u0091\u0002\u0544", + "\u055a\u0005\u011e\u0090\u0002\u0545\u054a\u0005\u0126\u0094\u0002\u0546", + "\u0547\u0007\u008c\u0002\u0002\u0547\u0549\u0005\u0126\u0094\u0002\u0548", + "\u0546\u0003\u0002\u0002\u0002\u0549\u054c\u0003\u0002\u0002\u0002\u054a", + "\u0548\u0003\u0002\u0002\u0002\u054a\u054b\u0003\u0002\u0002\u0002\u054b", + "\u0557\u0003\u0002\u0002\u0002\u054c\u054a\u0003\u0002\u0002\u0002\u054d", + "\u0553\u0007\u0084\u0002\u0002\u054e\u054f\u0005\u0126\u0094\u0002\u054f", + "\u0550\u0007\u0095\u0002\u0002\u0550\u0552\u0003\u0002\u0002\u0002\u0551", + "\u054e\u0003\u0002\u0002\u0002\u0552\u0555\u0003\u0002\u0002\u0002\u0553", + "\u0551\u0003\u0002\u0002\u0002\u0553\u0554\u0003\u0002\u0002\u0002\u0554", + "\u0556\u0003\u0002\u0002\u0002\u0555\u0553\u0003\u0002\u0002\u0002\u0556", + "\u0558\u0007\u0085\u0002\u0002\u0557\u054d\u0003\u0002\u0002\u0002\u0557", + "\u0558\u0003\u0002\u0002\u0002\u0558\u055a\u0003\u0002\u0002\u0002\u0559", + "\u0543\u0003\u0002\u0002\u0002\u0559\u0544\u0003\u0002\u0002\u0002\u0559", + "\u0545\u0003\u0002\u0002\u0002\u055a\u0562\u0003\u0002\u0002\u0002\u055b", + "\u055e\u0007\u008b\u0002\u0002\u055c\u055f\u0005\u0120\u0091\u0002\u055d", + "\u055f\u0005\u011e\u0090\u0002\u055e\u055c\u0003\u0002\u0002\u0002\u055e", + "\u055d\u0003\u0002\u0002\u0002\u055f\u0561\u0003\u0002\u0002\u0002\u0560", + "\u055b\u0003\u0002\u0002\u0002\u0561\u0564\u0003\u0002\u0002\u0002\u0562", + "\u0560\u0003\u0002\u0002\u0002\u0562\u0563\u0003\u0002\u0002\u0002\u0563", + "\u0565\u0003\u0002\u0002\u0002\u0564\u0562\u0003\u0002\u0002\u0002\u0565", + "\u0566\u0007\u0085\u0002\u0002\u0566\u0568\u0003\u0002\u0002\u0002\u0567", + "\u0542\u0003\u0002\u0002\u0002\u0567\u0568\u0003\u0002\u0002\u0002\u0568", + "\u00d3\u0003\u0002\u0002\u0002\u0569\u056e\u0007\u0086\u0002\u0002\u056a", + "\u056c\u0005\u0106\u0084\u0002\u056b\u056d\u0007\u008b\u0002\u0002\u056c", + "\u056b\u0003\u0002\u0002\u0002\u056c\u056d\u0003\u0002\u0002\u0002\u056d", + "\u056f\u0003\u0002\u0002\u0002\u056e\u056a\u0003\u0002\u0002\u0002\u056e", + "\u056f\u0003\u0002\u0002\u0002\u056f\u0570\u0003\u0002\u0002\u0002\u0570", + "\u0571\u0007\u0087\u0002\u0002\u0571\u00d5\u0003\u0002\u0002\u0002\u0572", + "\u0580\u0007\u0086\u0002\u0002\u0573\u0574\u0007\u008c\u0002\u0002\u0574", + "\u057a\u0005\u0108\u0085\u0002\u0575\u0576\u0007\u008b\u0002\u0002\u0576", + "\u0577\u0007\u008c\u0002\u0002\u0577\u0579\u0005\u0108\u0085\u0002\u0578", + "\u0575\u0003\u0002\u0002\u0002\u0579\u057c\u0003\u0002\u0002\u0002\u057a", + "\u0578\u0003\u0002\u0002\u0002\u057a\u057b\u0003\u0002\u0002\u0002\u057b", + "\u057e\u0003\u0002\u0002\u0002\u057c\u057a\u0003\u0002\u0002\u0002\u057d", + "\u057f\u0007\u008b\u0002\u0002\u057e\u057d\u0003\u0002\u0002\u0002\u057e", + "\u057f\u0003\u0002\u0002\u0002\u057f\u0581\u0003\u0002\u0002\u0002\u0580", + "\u0573\u0003\u0002\u0002\u0002\u0580\u0581\u0003\u0002\u0002\u0002\u0581", + "\u0582\u0003\u0002\u0002\u0002\u0582\u0583\u0007\u0087\u0002\u0002\u0583", + "\u00d7\u0003\u0002\u0002\u0002\u0584\u0589\u0005\u010e\u0088\u0002\u0585", + "\u0586\u0007\u008b\u0002\u0002\u0586\u0588\u0005\u010e\u0088\u0002\u0587", + "\u0585\u0003\u0002\u0002\u0002\u0588\u058b\u0003\u0002\u0002\u0002\u0589", + "\u0587\u0003\u0002\u0002\u0002\u0589\u058a\u0003\u0002\u0002\u0002\u058a", + "\u058d\u0003\u0002\u0002\u0002\u058b\u0589\u0003\u0002\u0002\u0002\u058c", + "\u058e\u0007\u008b\u0002\u0002\u058d\u058c\u0003\u0002\u0002\u0002\u058d", + "\u058e\u0003\u0002\u0002\u0002\u058e\u00d9\u0003\u0002\u0002\u0002\u058f", + "\u0591\u0005\u00aaV\u0002\u0590\u0592\u0005\u00dco\u0002\u0591\u0590", + "\u0003\u0002\u0002\u0002\u0591\u0592\u0003\u0002\u0002\u0002\u0592\u0596", + "\u0003\u0002\u0002\u0002\u0593\u0596\u0005J&\u0002\u0594\u0596\u0005", + "\u0082B\u0002\u0595\u058f\u0003\u0002\u0002\u0002\u0595\u0593\u0003", + "\u0002\u0002\u0002\u0595\u0594\u0003\u0002\u0002\u0002\u0596\u00db\u0003", + "\u0002\u0002\u0002\u0597\u0599\u0005\u00d0i\u0002\u0598\u059a\u0005", + "\u00dco\u0002\u0599\u0598\u0003\u0002\u0002\u0002\u0599\u059a\u0003", + "\u0002\u0002\u0002\u059a\u05af\u0003\u0002\u0002\u0002\u059b\u059d\u0007", + "\u0084\u0002\u0002\u059c\u059e\u0005\u00dco\u0002\u059d\u059c\u0003", + "\u0002\u0002\u0002\u059d\u059e\u0003\u0002\u0002\u0002\u059e\u059f\u0003", + "\u0002\u0002\u0002\u059f\u05a1\u0007\u0085\u0002\u0002\u05a0\u05a2\u0005", + "\u00dep\u0002\u05a1\u05a0\u0003\u0002\u0002\u0002\u05a2\u05a3\u0003", + "\u0002\u0002\u0002\u05a3\u05a1\u0003\u0002\u0002\u0002\u05a3\u05a4\u0003", + "\u0002\u0002\u0002\u05a4\u05af\u0003\u0002\u0002\u0002\u05a5\u05a7\u0007", + "\u0088\u0002\u0002\u05a6\u05a8\u0005\u0110\u0089\u0002\u05a7\u05a6\u0003", + "\u0002\u0002\u0002\u05a7\u05a8\u0003\u0002\u0002\u0002\u05a8\u05a9\u0003", + "\u0002\u0002\u0002\u05a9\u05ab\u0007\u0089\u0002\u0002\u05aa\u05a5\u0003", + "\u0002\u0002\u0002\u05ab\u05ac\u0003\u0002\u0002\u0002\u05ac\u05aa\u0003", + "\u0002\u0002\u0002\u05ac\u05ad\u0003\u0002\u0002\u0002\u05ad\u05af\u0003", + "\u0002\u0002\u0002\u05ae\u0597\u0003\u0002\u0002\u0002\u05ae\u059b\u0003", + "\u0002\u0002\u0002\u05ae\u05aa\u0003\u0002\u0002\u0002\u05af\u00dd\u0003", + "\u0002\u0002\u0002\u05b0\u05b2\u0007\u0088\u0002\u0002\u05b1\u05b3\u0005", + "\u0110\u0089\u0002\u05b2\u05b1\u0003\u0002\u0002\u0002\u05b2\u05b3\u0003", + "\u0002\u0002\u0002\u05b3\u05b4\u0003\u0002\u0002\u0002\u05b4\u05bb\u0007", + "\u0089\u0002\u0002\u05b5\u05b7\u0007\u0084\u0002\u0002\u05b6\u05b8\u0005", + "\u00e0q\u0002\u05b7\u05b6\u0003\u0002\u0002\u0002\u05b7\u05b8\u0003", + "\u0002\u0002\u0002\u05b8\u05b9\u0003\u0002\u0002\u0002\u05b9\u05bb\u0007", + "\u0085\u0002\u0002\u05ba\u05b0\u0003\u0002\u0002\u0002\u05ba\u05b5\u0003", + "\u0002\u0002\u0002\u05bb\u00df\u0003\u0002\u0002\u0002\u05bc\u05c1\u0005", + "\u00e2r\u0002\u05bd\u05be\u0007\u008b\u0002\u0002\u05be\u05c0\u0005", + "\u00e2r\u0002\u05bf\u05bd\u0003\u0002\u0002\u0002\u05c0\u05c3\u0003", + "\u0002\u0002\u0002\u05c1\u05bf\u0003\u0002\u0002\u0002\u05c1\u05c2\u0003", + "\u0002\u0002\u0002\u05c2\u00e1\u0003\u0002\u0002\u0002\u05c3\u05c1\u0003", + "\u0002\u0002\u0002\u05c4\u05c6\u0005\u009eP\u0002\u05c5\u05c7\u0005", + "\u00e4s\u0002\u05c6\u05c5\u0003\u0002\u0002\u0002\u05c6\u05c7\u0003", + "\u0002\u0002\u0002\u05c7\u05cb\u0003\u0002\u0002\u0002\u05c8\u05cb\u0007", + "\"\u0002\u0002\u05c9\u05cb\u0005\u0082B\u0002\u05ca\u05c4\u0003\u0002", + "\u0002\u0002\u05ca\u05c8\u0003\u0002\u0002\u0002\u05ca\u05c9\u0003\u0002", + "\u0002\u0002\u05cb\u00e3\u0003\u0002\u0002\u0002\u05cc\u05ce\u0005\u00d0", + "i\u0002\u05cd\u05cc\u0003\u0002\u0002\u0002\u05cd\u05ce\u0003\u0002", + "\u0002\u0002\u05ce\u05cf\u0003\u0002\u0002\u0002\u05cf\u05d0\u0005\u00ca", + "f\u0002\u05d0\u00e5\u0003\u0002\u0002\u0002\u05d1\u05d3\u0005\u00e8", + "u\u0002\u05d2\u05d4\u0007\u008a\u0002\u0002\u05d3\u05d2\u0003\u0002", + "\u0002\u0002\u05d3\u05d4\u0003\u0002\u0002\u0002\u05d4\u05fb\u0003\u0002", + "\u0002\u0002\u05d5\u05d7\u0005\u00ecw\u0002\u05d6\u05d8\u0007\u008a", + "\u0002\u0002\u05d7\u05d6\u0003\u0002\u0002\u0002\u05d7\u05d8\u0003\u0002", + "\u0002\u0002\u05d8\u05fb\u0003\u0002\u0002\u0002\u05d9\u05db\u0005\u00ee", + "x\u0002\u05da\u05dc\u0007\u008a\u0002\u0002\u05db\u05da\u0003\u0002", + "\u0002\u0002\u05db\u05dc\u0003\u0002\u0002\u0002\u05dc\u05fb\u0003\u0002", + "\u0002\u0002\u05dd\u05df\u0005\u00f8}\u0002\u05de\u05e0\u0007\u008a", + "\u0002\u0002\u05df\u05de\u0003\u0002\u0002\u0002\u05df\u05e0\u0003\u0002", + "\u0002\u0002\u05e0\u05fb\u0003\u0002\u0002\u0002\u05e1\u05e3\u0005\u0104", + "\u0083\u0002\u05e2\u05e4\u0007\u008a\u0002\u0002\u05e3\u05e2\u0003\u0002", + "\u0002\u0002\u05e3\u05e4\u0003\u0002\u0002\u0002\u05e4\u05fb\u0003\u0002", + "\u0002\u0002\u05e5\u05e7\u0005x=\u0002\u05e6\u05e8\u0007\u008a\u0002", + "\u0002\u05e7\u05e6\u0003\u0002\u0002\u0002\u05e7\u05e8\u0003\u0002\u0002", + "\u0002\u05e8\u05fb\u0003\u0002\u0002\u0002\u05e9\u05eb\u0005z>\u0002", + "\u05ea\u05ec\u0007\u008a\u0002\u0002\u05eb\u05ea\u0003\u0002\u0002\u0002", + "\u05eb\u05ec\u0003\u0002\u0002\u0002\u05ec\u05fb\u0003\u0002\u0002\u0002", + "\u05ed\u05ef\u0005r:\u0002\u05ee\u05f0\u0007\u008a\u0002\u0002\u05ef", + "\u05ee\u0003\u0002\u0002\u0002\u05ef\u05f0\u0003\u0002\u0002\u0002\u05f0", + "\u05fb\u0003\u0002\u0002\u0002\u05f1\u05f3\u0005t;\u0002\u05f2\u05f4", + "\u0007\u008a\u0002\u0002\u05f3\u05f2\u0003\u0002\u0002\u0002\u05f3\u05f4", + "\u0003\u0002\u0002\u0002\u05f4\u05fb\u0003\u0002\u0002\u0002\u05f5\u05f7", + "\u0005\u0106\u0084\u0002\u05f6\u05f8\u0007\u008a\u0002\u0002\u05f7\u05f6", + "\u0003\u0002\u0002\u0002\u05f7\u05f8\u0003\u0002\u0002\u0002\u05f8\u05fb", + "\u0003\u0002\u0002\u0002\u05f9\u05fb\u0007\u008a\u0002\u0002\u05fa\u05d1", + "\u0003\u0002\u0002\u0002\u05fa\u05d5\u0003\u0002\u0002\u0002\u05fa\u05d9", + "\u0003\u0002\u0002\u0002\u05fa\u05dd\u0003\u0002\u0002\u0002\u05fa\u05e1", + "\u0003\u0002\u0002\u0002\u05fa\u05e5\u0003\u0002\u0002\u0002\u05fa\u05e9", + "\u0003\u0002\u0002\u0002\u05fa\u05ed\u0003\u0002\u0002\u0002\u05fa\u05f1", + "\u0003\u0002\u0002\u0002\u05fa\u05f5\u0003\u0002\u0002\u0002\u05fa\u05f9", + "\u0003\u0002\u0002\u0002\u05fb\u00e7\u0003\u0002\u0002\u0002\u05fc\u05fd", + "\u0005\u0126\u0094\u0002\u05fd\u05fe\u0007\u0095\u0002\u0002\u05fe\u05ff", + "\u0005\u00e6t\u0002\u05ff\u00e9\u0003\u0002\u0002\u0002\u0600\u0603", + "\u0005\u0110\u0089\u0002\u0601\u0602\u0007\u00b0\u0002\u0002\u0602\u0604", + "\u0005\u0110\u0089\u0002\u0603\u0601\u0003\u0002\u0002\u0002\u0603\u0604", + "\u0003\u0002\u0002\u0002\u0604\u00eb\u0003\u0002\u0002\u0002\u0605\u060a", + "\u0007\u0086\u0002\u0002\u0606\u0609\u0005\u0090I\u0002\u0607\u0609", + "\u0005\u00e6t\u0002\u0608\u0606\u0003\u0002\u0002\u0002\u0608\u0607", + "\u0003\u0002\u0002\u0002\u0609\u060c\u0003\u0002\u0002\u0002\u060a\u0608", + "\u0003\u0002\u0002\u0002\u060a\u060b\u0003\u0002\u0002\u0002\u060b\u060d", + "\u0003\u0002\u0002\u0002\u060c\u060a\u0003\u0002\u0002\u0002\u060d\u060e", + "\u0007\u0087\u0002\u0002\u060e\u00ed\u0003\u0002\u0002\u0002\u060f\u0610", + "\u0007\u0012\u0002\u0002\u0610\u0611\u0007\u0084\u0002\u0002\u0611\u0612", + "\u0005\u0108\u0085\u0002\u0612\u0613\u0007\u0085\u0002\u0002\u0613\u0616", + "\u0005\u00e6t\u0002\u0614\u0615\u0007\f\u0002\u0002\u0615\u0617\u0005", + "\u00e6t\u0002\u0616\u0614\u0003\u0002\u0002\u0002\u0616\u0617\u0003", + "\u0002\u0002\u0002\u0617\u061a\u0003\u0002\u0002\u0002\u0618\u061a\u0005", + "\u00f0y\u0002\u0619\u060f\u0003\u0002\u0002\u0002\u0619\u0618\u0003", + "\u0002\u0002\u0002\u061a\u00ef\u0003\u0002\u0002\u0002\u061b\u061c\u0007", + "\u001e\u0002\u0002\u061c\u061d\u0007\u0084\u0002\u0002\u061d\u061e\u0005", + "\u0108\u0085\u0002\u061e\u061f\u0007\u0085\u0002\u0002\u061f\u0620\u0005", + "\u00f2z\u0002\u0620\u00f1\u0003\u0002\u0002\u0002\u0621\u0625\u0007", + "\u0086\u0002\u0002\u0622\u0624\u0005\u00f4{\u0002\u0623\u0622\u0003", + "\u0002\u0002\u0002\u0624\u0627\u0003\u0002\u0002\u0002\u0625\u0623\u0003", + "\u0002\u0002\u0002\u0625\u0626\u0003\u0002\u0002\u0002\u0626\u0628\u0003", + "\u0002\u0002\u0002\u0627\u0625\u0003\u0002\u0002\u0002\u0628\u0629\u0007", + "\u0087\u0002\u0002\u0629\u00f3\u0003\u0002\u0002\u0002\u062a\u062c\u0005", + "\u00f6|\u0002\u062b\u062a\u0003\u0002\u0002\u0002\u062c\u062d\u0003", + "\u0002\u0002\u0002\u062d\u062b\u0003\u0002\u0002\u0002\u062d\u062e\u0003", + "\u0002\u0002\u0002\u062e\u0630\u0003\u0002\u0002\u0002\u062f\u0631\u0005", + "\u00e6t\u0002\u0630\u062f\u0003\u0002\u0002\u0002\u0631\u0632\u0003", + "\u0002\u0002\u0002\u0632\u0630\u0003\u0002\u0002\u0002\u0632\u0633\u0003", + "\u0002\u0002\u0002\u0633\u00f5\u0003\u0002\u0002\u0002\u0634\u063a\u0007", + "\u0005\u0002\u0002\u0635\u063b\u0005\u00eav\u0002\u0636\u0637\u0007", + "\u0084\u0002\u0002\u0637\u0638\u0005\u00eav\u0002\u0638\u0639\u0007", + "\u0085\u0002\u0002\u0639\u063b\u0003\u0002\u0002\u0002\u063a\u0635\u0003", + "\u0002\u0002\u0002\u063a\u0636\u0003\u0002\u0002\u0002\u063b\u063c\u0003", + "\u0002\u0002\u0002\u063c\u063d\u0007\u0095\u0002\u0002\u063d\u0641\u0003", + "\u0002\u0002\u0002\u063e\u063f\u0007\t\u0002\u0002\u063f\u0641\u0007", + "\u0095\u0002\u0002\u0640\u0634\u0003\u0002\u0002\u0002\u0640\u063e\u0003", + "\u0002\u0002\u0002\u0641\u00f7\u0003\u0002\u0002\u0002\u0642\u0647\u0005", + "\u00fa~\u0002\u0643\u0647\u0005\u00fc\u007f\u0002\u0644\u0647\u0005", + "\u00fe\u0080\u0002\u0645\u0647\u0005\u0102\u0082\u0002\u0646\u0642\u0003", + "\u0002\u0002\u0002\u0646\u0643\u0003\u0002\u0002\u0002\u0646\u0644\u0003", + "\u0002\u0002\u0002\u0646\u0645\u0003\u0002\u0002\u0002\u0647\u00f9\u0003", + "\u0002\u0002\u0002\u0648\u0649\u0007$\u0002\u0002\u0649\u064a\u0007", + "\u0084\u0002\u0002\u064a\u064b\u0005\u0108\u0085\u0002\u064b\u064c\u0007", + "\u0085\u0002\u0002\u064c\u064d\u0005\u00e6t\u0002\u064d\u00fb\u0003", + "\u0002\u0002\u0002\u064e\u064f\u0007\n\u0002\u0002\u064f\u0650\u0005", + "\u00e6t\u0002\u0650\u0651\u0007$\u0002\u0002\u0651\u0652\u0007\u0084", + "\u0002\u0002\u0652\u0653\u0005\u0108\u0085\u0002\u0653\u0654\u0007\u0085", + "\u0002\u0002\u0654\u0655\u0007\u008a\u0002\u0002\u0655\u00fd\u0003\u0002", + "\u0002\u0002\u0656\u0657\u0007\u0010\u0002\u0002\u0657\u0659\u0007\u0084", + "\u0002\u0002\u0658\u065a\u0005\u0100\u0081\u0002\u0659\u0658\u0003\u0002", + "\u0002\u0002\u0659\u065a\u0003\u0002\u0002\u0002\u065a\u065b\u0003\u0002", + "\u0002\u0002\u065b\u065d\u0007\u008a\u0002\u0002\u065c\u065e\u0005\u0108", + "\u0085\u0002\u065d\u065c\u0003\u0002\u0002\u0002\u065d\u065e\u0003\u0002", + "\u0002\u0002\u065e\u065f\u0003\u0002\u0002\u0002\u065f\u0661\u0007\u008a", + "\u0002\u0002\u0660\u0662\u0005\u0106\u0084\u0002\u0661\u0660\u0003\u0002", + "\u0002\u0002\u0661\u0662\u0003\u0002\u0002\u0002\u0662\u0663\u0003\u0002", + "\u0002\u0002\u0663\u0664\u0007\u0085\u0002\u0002\u0664\u0665\u0005\u00e6", + "t\u0002\u0665\u00ff\u0003\u0002\u0002\u0002\u0666\u0667\u0005\u009e", + "P\u0002\u0667\u0668\u0005\u00a2R\u0002\u0668\u066b\u0003\u0002\u0002", + "\u0002\u0669\u066b\u0005\u0106\u0084\u0002\u066a\u0666\u0003\u0002\u0002", + "\u0002\u066a\u0669\u0003\u0002\u0002\u0002\u066b\u0101\u0003\u0002\u0002", + "\u0002\u066c\u066d\u0007\u0010\u0002\u0002\u066d\u066e\u0007\u0084\u0002", + "\u0002\u066e\u066f\u0005p9\u0002\u066f\u0671\u00070\u0002\u0002\u0670", + "\u0672\u0005\u0108\u0085\u0002\u0671\u0670\u0003\u0002\u0002\u0002\u0671", + "\u0672\u0003\u0002\u0002\u0002\u0672\u0673\u0003\u0002\u0002\u0002\u0673", + "\u0674\u0007\u0085\u0002\u0002\u0674\u0675\u0005\u00e6t\u0002\u0675", + "\u0103\u0003\u0002\u0002\u0002\u0676\u0677\u0007\u0011\u0002\u0002\u0677", + "\u067f\u0005\u0126\u0094\u0002\u0678\u067f\u0007\b\u0002\u0002\u0679", + "\u067f\u0007\u0004\u0002\u0002\u067a\u067c\u0007\u0018\u0002\u0002\u067b", + "\u067d\u0005\u0108\u0085\u0002\u067c\u067b\u0003\u0002\u0002\u0002\u067c", + "\u067d\u0003\u0002\u0002\u0002\u067d\u067f\u0003\u0002\u0002\u0002\u067e", + "\u0676\u0003\u0002\u0002\u0002\u067e\u0678\u0003\u0002\u0002\u0002\u067e", + "\u0679\u0003\u0002\u0002\u0002\u067e\u067a\u0003\u0002\u0002\u0002\u067f", + "\u0105\u0003\u0002\u0002\u0002\u0680\u0685\u0005\u0108\u0085\u0002\u0681", + "\u0682\u0007\u008b\u0002\u0002\u0682\u0684\u0005\u0108\u0085\u0002\u0683", + "\u0681\u0003\u0002\u0002\u0002\u0684\u0687\u0003\u0002\u0002\u0002\u0685", + "\u0683\u0003\u0002\u0002\u0002\u0685\u0686\u0003\u0002\u0002\u0002\u0686", + "\u0107\u0003\u0002\u0002\u0002\u0687\u0685\u0003\u0002\u0002\u0002\u0688", + "\u0689\b\u0085\u0001\u0002\u0689\u0693\u0005\u010c\u0087\u0002\u068a", + "\u068b\u0007\u0084\u0002\u0002\u068b\u068c\u0005\u00ecw\u0002\u068c", + "\u068d\u0007\u0085\u0002\u0002\u068d\u0693\u0003\u0002\u0002\u0002\u068e", + "\u068f\u0005\u0112\u008a\u0002\u068f\u0690\u0005\u010a\u0086\u0002\u0690", + "\u0691\u0005\u0108\u0085\u0003\u0691\u0693\u0003\u0002\u0002\u0002\u0692", + "\u0688\u0003\u0002\u0002\u0002\u0692\u068a\u0003\u0002\u0002\u0002\u0692", + "\u068e\u0003\u0002\u0002\u0002\u0693\u06c0\u0003\u0002\u0002\u0002\u0694", + "\u0695\f\u000f\u0002\u0002\u0695\u0696\t\f\u0002\u0002\u0696\u06bf\u0005", + "\u0108\u0085\u0010\u0697\u0698\f\u000e\u0002\u0002\u0698\u0699\t\r\u0002", + "\u0002\u0699\u06bf\u0005\u0108\u0085\u000f\u069a\u069f\f\r\u0002\u0002", + "\u069b\u069c\u0007\u0091\u0002\u0002\u069c\u06a0\u0007\u0091\u0002\u0002", + "\u069d\u069e\u0007\u0090\u0002\u0002\u069e\u06a0\u0007\u0090\u0002\u0002", + "\u069f\u069b\u0003\u0002\u0002\u0002\u069f\u069d\u0003\u0002\u0002\u0002", + "\u06a0\u06a1\u0003\u0002\u0002\u0002\u06a1\u06bf\u0005\u0108\u0085\u000e", + "\u06a2\u06a3\f\f\u0002\u0002\u06a3\u06a4\t\u000e\u0002\u0002\u06a4\u06bf", + "\u0005\u0108\u0085\r\u06a5\u06a6\f\u000b\u0002\u0002\u06a6\u06a7\t\u000f", + "\u0002\u0002\u06a7\u06bf\u0005\u0108\u0085\f\u06a8\u06a9\f\n\u0002\u0002", + "\u06a9\u06aa\u0007\u00a2\u0002\u0002\u06aa\u06bf\u0005\u0108\u0085\u000b", + "\u06ab\u06ac\f\t\u0002\u0002\u06ac\u06ad\u0007\u00a4\u0002\u0002\u06ad", + "\u06bf\u0005\u0108\u0085\n\u06ae\u06af\f\b\u0002\u0002\u06af\u06b0\u0007", + "\u00a3\u0002\u0002\u06b0\u06bf\u0005\u0108\u0085\t\u06b1\u06b2\f\u0007", + "\u0002\u0002\u06b2\u06b3\u0007\u009a\u0002\u0002\u06b3\u06bf\u0005\u0108", + "\u0085\b\u06b4\u06b5\f\u0006\u0002\u0002\u06b5\u06b6\u0007\u009b\u0002", + "\u0002\u06b6\u06bf\u0005\u0108\u0085\u0007\u06b7\u06b8\f\u0005\u0002", + "\u0002\u06b8\u06ba\u0007\u0094\u0002\u0002\u06b9\u06bb\u0005\u0108\u0085", + "\u0002\u06ba\u06b9\u0003\u0002\u0002\u0002\u06ba\u06bb\u0003\u0002\u0002", + "\u0002\u06bb\u06bc\u0003\u0002\u0002\u0002\u06bc\u06bd\u0007\u0095\u0002", + "\u0002\u06bd\u06bf\u0005\u0108\u0085\u0006\u06be\u0694\u0003\u0002\u0002", + "\u0002\u06be\u0697\u0003\u0002\u0002\u0002\u06be\u069a\u0003\u0002\u0002", + "\u0002\u06be\u06a2\u0003\u0002\u0002\u0002\u06be\u06a5\u0003\u0002\u0002", + "\u0002\u06be\u06a8\u0003\u0002\u0002\u0002\u06be\u06ab\u0003\u0002\u0002", + "\u0002\u06be\u06ae\u0003\u0002\u0002\u0002\u06be\u06b1\u0003\u0002\u0002", + "\u0002\u06be\u06b4\u0003\u0002\u0002\u0002\u06be\u06b7\u0003\u0002\u0002", + "\u0002\u06bf\u06c2\u0003\u0002\u0002\u0002\u06c0\u06be\u0003\u0002\u0002", + "\u0002\u06c0\u06c1\u0003\u0002\u0002\u0002\u06c1\u0109\u0003\u0002\u0002", + "\u0002\u06c2\u06c0\u0003\u0002\u0002\u0002\u06c3\u06c4\t\u0010\u0002", + "\u0002\u06c4\u010b\u0003\u0002\u0002\u0002\u06c5\u06cf\u0005\u0112\u008a", + "\u0002\u06c6\u06c7\u0007\u0084\u0002\u0002\u06c7\u06c8\u0005\u00dan", + "\u0002\u06c8\u06c9\u0007\u0085\u0002\u0002\u06c9\u06cc\u0003\u0002\u0002", + "\u0002\u06ca\u06cd\u0005\u010c\u0087\u0002\u06cb\u06cd\u0005\u010e\u0088", + "\u0002\u06cc\u06ca\u0003\u0002\u0002\u0002\u06cc\u06cb\u0003\u0002\u0002", + "\u0002\u06cd\u06cf\u0003\u0002\u0002\u0002\u06ce\u06c5\u0003\u0002\u0002", + "\u0002\u06ce\u06c6\u0003\u0002\u0002\u0002\u06cf\u010d\u0003\u0002\u0002", + "\u0002\u06d0\u06d4\u0005\u0108\u0085\u0002\u06d1\u06d4\u0005\u00d4k", + "\u0002\u06d2\u06d4\u0005\u00d6l\u0002\u06d3\u06d0\u0003\u0002\u0002", + "\u0002\u06d3\u06d1\u0003\u0002\u0002\u0002\u06d3\u06d2\u0003\u0002\u0002", + "\u0002\u06d4\u010f\u0003\u0002\u0002\u0002\u06d5\u06d8\u0005\u0126\u0094", + "\u0002\u06d6\u06d8\u0005\u0122\u0092\u0002\u06d7\u06d5\u0003\u0002\u0002", + "\u0002\u06d7\u06d6\u0003\u0002\u0002\u0002\u06d8\u0111\u0003\u0002\u0002", + "\u0002\u06d9\u06e8\u0005\u0116\u008c\u0002\u06da\u06e0\u0007\u001b\u0002", + "\u0002\u06db\u06e1\u0005\u0112\u008a\u0002\u06dc\u06dd\u0007\u0084\u0002", + "\u0002\u06dd\u06de\u0005\u00ba^\u0002\u06de\u06df\u0007\u0085\u0002", + "\u0002\u06df\u06e1\u0003\u0002\u0002\u0002\u06e0\u06db\u0003\u0002\u0002", + "\u0002\u06e0\u06dc\u0003\u0002\u0002\u0002\u06e1\u06e8\u0003\u0002\u0002", + "\u0002\u06e2\u06e3\t\u0011\u0002\u0002\u06e3\u06e8\u0005\u0112\u008a", + "\u0002\u06e4\u06e5\u0005\u0114\u008b\u0002\u06e5\u06e6\u0005\u010c\u0087", + "\u0002\u06e6\u06e8\u0003\u0002\u0002\u0002\u06e7\u06d9\u0003\u0002\u0002", + "\u0002\u06e7\u06da\u0003\u0002\u0002\u0002\u06e7\u06e2\u0003\u0002\u0002", + "\u0002\u06e7\u06e4\u0003\u0002\u0002\u0002\u06e8\u0113\u0003\u0002\u0002", + "\u0002\u06e9\u06ea\t\u0012\u0002\u0002\u06ea\u0115\u0003\u0002\u0002", + "\u0002\u06eb\u06ec\b\u008c\u0001\u0002\u06ec\u06f0\u0005\u0120\u0091", + "\u0002\u06ed\u06ef\u0005\u0118\u008d\u0002\u06ee\u06ed\u0003\u0002\u0002", + "\u0002\u06ef\u06f2\u0003\u0002\u0002\u0002\u06f0\u06ee\u0003\u0002\u0002", + "\u0002\u06f0\u06f1\u0003\u0002\u0002\u0002\u06f1\u06fe\u0003\u0002\u0002", + "\u0002\u06f2\u06f0\u0003\u0002\u0002\u0002\u06f3\u06f4\f\u0003\u0002", + "\u0002\u06f4\u06f5\t\u0013\u0002\u0002\u06f5\u06f9\u0005\u0126\u0094", + "\u0002\u06f6\u06f8\u0005\u0118\u008d\u0002\u06f7\u06f6\u0003\u0002\u0002", + "\u0002\u06f8\u06fb\u0003\u0002\u0002\u0002\u06f9\u06f7\u0003\u0002\u0002", + "\u0002\u06f9\u06fa\u0003\u0002\u0002\u0002\u06fa\u06fd\u0003\u0002\u0002", + "\u0002\u06fb\u06f9\u0003\u0002\u0002\u0002\u06fc\u06f3\u0003\u0002\u0002", + "\u0002\u06fd\u0700\u0003\u0002\u0002\u0002\u06fe\u06fc\u0003\u0002\u0002", + "\u0002\u06fe\u06ff\u0003\u0002\u0002\u0002\u06ff\u0117\u0003\u0002\u0002", + "\u0002\u0700\u06fe\u0003\u0002\u0002\u0002\u0701\u0702\u0007\u0088\u0002", + "\u0002\u0702\u0703\u0005\u0108\u0085\u0002\u0703\u0704\u0007\u0089\u0002", + "\u0002\u0704\u0714\u0003\u0002\u0002\u0002\u0705\u0707\u0007\u0084\u0002", + "\u0002\u0706\u0708\u0005\u011a\u008e\u0002\u0707\u0706\u0003\u0002\u0002", + "\u0002\u0707\u0708\u0003\u0002\u0002\u0002\u0708\u0709\u0003\u0002\u0002", + "\u0002\u0709\u0714\u0007\u0085\u0002\u0002\u070a\u070d\u0007\u0084\u0002", + "\u0002\u070b\u070e\u0007\u008b\u0002\u0002\u070c\u070e\n\u0014\u0002", + "\u0002\u070d\u070b\u0003\u0002\u0002\u0002\u070d\u070c\u0003\u0002\u0002", + "\u0002\u070e\u070f\u0003\u0002\u0002\u0002\u070f\u070d\u0003\u0002\u0002", + "\u0002\u070f\u0710\u0003\u0002\u0002\u0002\u0710\u0711\u0003\u0002\u0002", + "\u0002\u0711\u0714\u0007\u0085\u0002\u0002\u0712\u0714\t\u0011\u0002", + "\u0002\u0713\u0701\u0003\u0002\u0002\u0002\u0713\u0705\u0003\u0002\u0002", + "\u0002\u0713\u070a\u0003\u0002\u0002\u0002\u0713\u0712\u0003\u0002\u0002", + "\u0002\u0714\u0119\u0003\u0002\u0002\u0002\u0715\u071a\u0005\u011c\u008f", + "\u0002\u0716\u0717\u0007\u008b\u0002\u0002\u0717\u0719\u0005\u011c\u008f", + "\u0002\u0718\u0716\u0003\u0002\u0002\u0002\u0719\u071c\u0003\u0002\u0002", + "\u0002\u071a\u0718\u0003\u0002\u0002\u0002\u071a\u071b\u0003\u0002\u0002", + "\u0002\u071b\u011b\u0003\u0002\u0002\u0002\u071c\u071a\u0003\u0002\u0002", + "\u0002\u071d\u0720\u0005\u0108\u0085\u0002\u071e\u0720\u0005\u00ba^", + "\u0002\u071f\u071d\u0003\u0002\u0002\u0002\u071f\u071e\u0003\u0002\u0002", + "\u0002\u0720\u011d\u0003\u0002\u0002\u0002\u0721\u0729\u0005\u0126\u0094", + "\u0002\u0722\u0723\u0007\u0084\u0002\u0002\u0723\u0726\t\u0015\u0002", + "\u0002\u0724\u0725\u0007\u008b\u0002\u0002\u0725\u0727\t\u0015\u0002", + "\u0002\u0726\u0724\u0003\u0002\u0002\u0002\u0726\u0727\u0003\u0002\u0002", + "\u0002\u0727\u0728\u0003\u0002\u0002\u0002\u0728\u072a\u0007\u0085\u0002", + "\u0002\u0729\u0722\u0003\u0002\u0002\u0002\u0729\u072a\u0003\u0002\u0002", + "\u0002\u072a\u011f\u0003\u0002\u0002\u0002\u072b\u073b\u0005\u0126\u0094", + "\u0002\u072c\u073b\u0005\u0122\u0092\u0002\u072d\u073b\u0005\u0124\u0093", + "\u0002\u072e\u072f\u0007\u0084\u0002\u0002\u072f\u0730\u0005\u0108\u0085", + "\u0002\u0730\u0731\u0007\u0085\u0002\u0002\u0731\u073b\u0003\u0002\u0002", + "\u0002\u0732\u073b\u0005^0\u0002\u0733\u073b\u0005h5\u0002\u0734\u073b", + "\u0005l7\u0002\u0735\u073b\u0005n8\u0002\u0736\u073b\u0005P)\u0002\u0737", + "\u073b\u0005T+\u0002\u0738\u073b\u0005V,\u0002\u0739\u073b\u0005\\/", + "\u0002\u073a\u072b\u0003\u0002\u0002\u0002\u073a\u072c\u0003\u0002\u0002", + "\u0002\u073a\u072d\u0003\u0002\u0002\u0002\u073a\u072e\u0003\u0002\u0002", + "\u0002\u073a\u0732\u0003\u0002\u0002\u0002\u073a\u0733\u0003\u0002\u0002", + "\u0002\u073a\u0734\u0003\u0002\u0002\u0002\u073a\u0735\u0003\u0002\u0002", + "\u0002\u073a\u0736\u0003\u0002\u0002\u0002\u073a\u0737\u0003\u0002\u0002", + "\u0002\u073a\u0738\u0003\u0002\u0002\u0002\u073a\u0739\u0003\u0002\u0002", + "\u0002\u073b\u0121\u0003\u0002\u0002\u0002\u073c\u074f\u0007\u00b3\u0002", + "\u0002\u073d\u074f\u0007\u00b4\u0002\u0002\u073e\u074f\u0007\u00b5\u0002", + "\u0002\u073f\u0741\t\r\u0002\u0002\u0740\u073f\u0003\u0002\u0002\u0002", + "\u0740\u0741\u0003\u0002\u0002\u0002\u0741\u0742\u0003\u0002\u0002\u0002", + "\u0742\u074f\u0007\u00b6\u0002\u0002\u0743\u0745\t\r\u0002\u0002\u0744", + "\u0743\u0003\u0002\u0002\u0002\u0744\u0745\u0003\u0002\u0002\u0002\u0745", + "\u0746\u0003\u0002\u0002\u0002\u0746\u074f\u0007\u00b7\u0002\u0002\u0747", + "\u074f\u0007\u00b1\u0002\u0002\u0748\u074f\u00072\u0002\u0002\u0749", + "\u074f\u00074\u0002\u0002\u074a\u074f\u0007;\u0002\u0002\u074b\u074f", + "\u00073\u0002\u0002\u074c\u074f\u0007(\u0002\u0002\u074d\u074f\u0007", + ")\u0002\u0002\u074e\u073c\u0003\u0002\u0002\u0002\u074e\u073d\u0003", + "\u0002\u0002\u0002\u074e\u073e\u0003\u0002\u0002\u0002\u074e\u0740\u0003", + "\u0002\u0002\u0002\u074e\u0744\u0003\u0002\u0002\u0002\u074e\u0747\u0003", + "\u0002\u0002\u0002\u074e\u0748\u0003\u0002\u0002\u0002\u074e\u0749\u0003", + "\u0002\u0002\u0002\u074e\u074a\u0003\u0002\u0002\u0002\u074e\u074b\u0003", + "\u0002\u0002\u0002\u074e\u074c\u0003\u0002\u0002\u0002\u074e\u074d\u0003", + "\u0002\u0002\u0002\u074f\u0123\u0003\u0002\u0002\u0002\u0750\u0754\u0007", + "\u00b2\u0002\u0002\u0751\u0753\t\u0016\u0002\u0002\u0752\u0751\u0003", + "\u0002\u0002\u0002\u0753\u0756\u0003\u0002\u0002\u0002\u0754\u0752\u0003", + "\u0002\u0002\u0002\u0754\u0755\u0003\u0002\u0002\u0002\u0755\u0757\u0003", + "\u0002\u0002\u0002\u0756\u0754\u0003\u0002\u0002\u0002\u0757\u0759\u0007", + "\u00bf\u0002\u0002\u0758\u0750\u0003\u0002\u0002\u0002\u0759\u075a\u0003", + "\u0002\u0002\u0002\u075a\u0758\u0003\u0002\u0002\u0002\u075a\u075b\u0003", + "\u0002\u0002\u0002\u075b\u0125\u0003\u0002\u0002\u0002\u075c\u075d\t", + "\u0017\u0002\u0002\u075d\u0127\u0003\u0002\u0002\u0002\u010b\u012b\u013b", + "\u0143\u0146\u014e\u0151\u0155\u0157\u015e\u0164\u0167\u016a\u0170\u0172", + "\u0179\u0180\u0183\u0186\u018e\u0191\u0194\u019e\u01a8\u01ac\u01ae\u01b7", + "\u01bc\u01c5\u01cb\u01cd\u01d8\u01e0\u01ea\u01f2\u01f5\u01f8\u0201\u0218", + "\u021f\u0224\u0226\u022c\u0235\u023b\u023d\u0246\u0248\u0251\u0256\u0258", + "\u0262\u0264\u026d\u0271\u0274\u027c\u0280\u0282\u0285\u028b\u028f\u0295", + "\u02a3\u02aa\u02b0\u02b3\u02b7\u02bd\u02c1\u02c9\u02cc\u02d3\u02df\u02e3", + "\u02e5\u02f1\u02f3\u02ff\u0301\u0306\u030c\u030f\u0315\u0319\u031c\u031f", + "\u032a\u0330\u0332\u0335\u033d\u0342\u0348\u0351\u0356\u0358\u036e\u0375", + "\u037a\u038e\u0390\u0398\u039a\u03a0\u03a5\u03aa\u03ad\u03b2\u03b5\u03bb", + "\u03c0\u03c4\u03c8\u03cc\u03d5\u03dc\u03e3\u03e9\u03ec\u03f0\u03f9\u03fb", + "\u03ff\u0403\u0407\u0409\u0412\u0416\u0418\u041e\u042a\u042e\u0430\u043a", + "\u043e\u044a\u044c\u0456\u0461\u0467\u0469\u046e\u0473\u0479\u047d\u0483", + "\u0487\u0489\u0494\u0496\u049e\u04ac\u04be\u04c1\u04cd\u04d2\u04d6\u04da", + "\u04de\u04e5\u04eb\u04f2\u04f9\u0500\u0504\u0509\u050b\u0510\u0514\u051b", + "\u0520\u0526\u0529\u052d\u0531\u0538\u053c\u053f\u054a\u0553\u0557\u0559", + "\u055e\u0562\u0567\u056c\u056e\u057a\u057e\u0580\u0589\u058d\u0591\u0595", + "\u0599\u059d\u05a3\u05a7\u05ac\u05ae\u05b2\u05b7\u05ba\u05c1\u05c6\u05ca", + "\u05cd\u05d3\u05d7\u05db\u05df\u05e3\u05e7\u05eb\u05ef\u05f3\u05f7\u05fa", + "\u0603\u0608\u060a\u0616\u0619\u0625\u062d\u0632\u063a\u0640\u0646\u0659", + "\u065d\u0661\u066a\u0671\u067c\u067e\u0685\u0692\u069f\u06ba\u06be\u06c0", + "\u06cc\u06ce\u06d3\u06d7\u06e0\u06e7\u06f0\u06f9\u06fe\u0707\u070d\u070f", + "\u0713\u071a\u071f\u0726\u0729\u073a\u0740\u0744\u074e\u0754\u075a"].join(""); var atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); @@ -1266,21 +1361,22 @@ var literalNames = [ null, "'auto'", "'break'", "'case'", "'char'", "'const'", "'__deprecated'", "'__kindof'", "'__strong'", null, "'__unsafe_unretained'", "'__unused'", "'__weak'", null, null, null, "'null_resettable'", "'NS_INLINE'", - "'NS_ENUM'", "'NS_OPTIONS'", "'assign'", "'copy'", - "'getter'", "'setter'", "'strong'", "'readonly'", "'readwrite'", + "'NS_ENUM'", "'NS_OPTIONS'", "'NS_CLOSED_ENUM'", "'NS_TYPED_EXTENSIBLE_ENUM'", + "'NS_ERROR_ENUM'", "'assign'", "'copy'", "'getter'", + "'setter'", "'strong'", "'readonly'", "'readwrite'", "'weak'", "'unsafe_unretained'", "'IBOutlet'", "'IBOutletCollection'", "'IBInspectable'", "'IB_DESIGNABLE'", null, null, null, - null, null, "'__TVOS_PROHIBITED'", 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, "'defined'", - null, "'elif'", null, "'undef'", "'ifdef'", "'ifndef'", - "'endif'" ]; + null, null, "'__TVOS_PROHIBITED'", "'NS_NOESCAPE'", + 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, "'defined'", null, "'elif'", null, "'undef'", + "'ifdef'", "'ifndef'", "'endif'" ]; var symbolicNames = [ null, "AUTO", "BREAK", "CASE", "CHAR", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", "EXTERN", @@ -1303,33 +1399,37 @@ var symbolicNames = [ null, "AUTO", "BREAK", "CASE", "CHAR", "CONST", "CONTINUE" "STRONG_QUALIFIER", "TYPEOF", "UNSAFE_UNRETAINED_QUALIFIER", "UNUSED", "WEAK_QUALIFIER", "NULL_UNSPECIFIED", "NULLABLE", "NONNULL", "NULL_RESETTABLE", "NS_INLINE", "NS_ENUM", - "NS_OPTIONS", "ASSIGN", "COPY", "GETTER", "SETTER", + "NS_OPTIONS", "NS_CLOSED_ENUM", "NS_TYPED_EXTENSIBLE_ENUM", + "NS_ERROR_ENUM", "ASSIGN", "COPY", "GETTER", "SETTER", "STRONG", "READONLY", "READWRITE", "WEAK", "UNSAFE_UNRETAINED", "IB_OUTLET", "IB_OUTLET_COLLECTION", "IB_INSPECTABLE", "IB_DESIGNABLE", "NS_ASSUME_NONNULL_BEGIN", "NS_ASSUME_NONNULL_END", "EXTERN_SUFFIX", "IOS_SUFFIX", "MAC_SUFFIX", "TVOS_PROHIBITED", - "IDENTIFIER", "LP", "RP", "LBRACE", "RBRACE", "LBRACK", - "RBRACK", "SEMI", "COMMA", "DOT", "STRUCTACCESS", - "AT", "ASSIGNMENT", "GT", "LT", "BANG", "TILDE", "QUESTION", - "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", - "INC", "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", - "BITOR", "BITXOR", "MOD", "ADD_ASSIGN", "SUB_ASSIGN", - "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", - "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", - "ELIPSIS", "CHARACTER_LITERAL", "STRING_START", "HEX_LITERAL", - "OCTAL_LITERAL", "BINARY_LITERAL", "DECIMAL_LITERAL", - "FLOATING_POINT_LITERAL", "VERSION_SEMATIC", "WS", - "MULTI_COMMENT", "SINGLE_COMMENT", "BACKSLASH", "SHARP", - "STRING_NEWLINE", "STRING_END", "STRING_VALUE", "DIRECTIVE_IMPORT", - "DIRECTIVE_INCLUDE", "DIRECTIVE_PRAGMA", "DIRECTIVE_DEFINE", - "DIRECTIVE_DEFINED", "DIRECTIVE_IF", "DIRECTIVE_ELIF", - "DIRECTIVE_ELSE", "DIRECTIVE_UNDEF", "DIRECTIVE_IFDEF", - "DIRECTIVE_IFNDEF", "DIRECTIVE_ENDIF", "DIRECTIVE_TRUE", - "DIRECTIVE_FALSE", "DIRECTIVE_ERROR", "DIRECTIVE_WARNING", - "DIRECTIVE_BANG", "DIRECTIVE_LP", "DIRECTIVE_RP", - "DIRECTIVE_EQUAL", "DIRECTIVE_NOTEQUAL", "DIRECTIVE_AND", - "DIRECTIVE_OR", "DIRECTIVE_LT", "DIRECTIVE_GT", "DIRECTIVE_LE", - "DIRECTIVE_GE", "DIRECTIVE_STRING", "DIRECTIVE_ID", + "NS_NOESCAPE", "IDENTIFIER", "LP", "RP", "LBRACE", + "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT", + "STRUCTACCESS", "AT", "ASSIGNMENT", "GT", "LT", "BANG", + "TILDE", "QUESTION", "COLON", "EQUAL", "LE", "GE", + "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", + "MUL", "DIV", "BITAND", "BITOR", "BITXOR", "MOD", + "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", + "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", + "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "ELIPSIS", "CHARACTER_LITERAL", + "STRING_START", "HEX_LITERAL", "OCTAL_LITERAL", "BINARY_LITERAL", + "DECIMAL_LITERAL", "FLOATING_POINT_LITERAL", "VERSION_SEMATIC", + "WS", "MULTI_COMMENT", "SINGLE_COMMENT", "BACKSLASH", + "SHARP", "STRING_NEWLINE", "STRING_END", "STRING_VALUE", + "DIRECTIVE_IMPORT", "DIRECTIVE_INCLUDE", "DIRECTIVE_PRAGMA", + "DIRECTIVE_DEFINE", "DIRECTIVE_DEFINED", "DIRECTIVE_IF", + "DIRECTIVE_ELIF", "DIRECTIVE_ELSE", "DIRECTIVE_UNDEF", + "DIRECTIVE_IFDEF", "DIRECTIVE_IFNDEF", "DIRECTIVE_ENDIF", + "DIRECTIVE_TRUE", "DIRECTIVE_FALSE", "DIRECTIVE_ERROR", + "DIRECTIVE_WARNING", "DIRECTIVE_BANG", "DIRECTIVE_LP", + "DIRECTIVE_RP", "DIRECTIVE_EQUAL", "DIRECTIVE_NOTEQUAL", + "DIRECTIVE_AND", "DIRECTIVE_OR", "DIRECTIVE_LT", "DIRECTIVE_GT", + "DIRECTIVE_LE", "DIRECTIVE_GE", "DIRECTIVE_ADD", "DIRECTIVE_SUB", + "DIRECTIVE_MUL", "DIRECTIVE_DIV", "DIRECTIVE_BITAND", + "DIRECTIVE_BITOR", "DIRECTIVE_BITXOR", "DIRECTIVE_MOD", + "DIRECTIVE_DOT", "DIRECTIVE_STRING", "DIRECTIVE_ID", "DIRECTIVE_DECIMAL_LITERAL", "DIRECTIVE_FLOAT", "DIRECTIVE_NEWLINE", "DIRECTIVE_MULTI_COMMENT", "DIRECTIVE_SINGLE_COMMENT", "DIRECTIVE_BACKSLASH_NEWLINE", "DIRECTIVE_TEXT_NEWLINE", @@ -1339,10 +1439,10 @@ var ruleNames = [ "translationUnit", "topLevelDeclaration", "importDeclaration" "classInterface", "categoryInterface", "classImplementation", "categoryImplementation", "genericTypeSpecifier", "protocolDeclaration", "protocolDeclarationSection", "protocolDeclarationList", - "classDeclarationList", "protocolList", "propertyDeclaration", - "propertyAttributesList", "propertyAttribute", "protocolName", - "instanceVariables", "visibilitySection", "accessModifier", - "interfaceDeclarationList", "classMethodDeclaration", + "classDeclaration", "classDeclarationList", "protocolList", + "propertyDeclaration", "propertyAttributesList", "propertyAttribute", + "protocolName", "instanceVariables", "visibilitySection", + "accessModifier", "interfaceDeclarationList", "classMethodDeclaration", "instanceMethodDeclaration", "methodDeclaration", "implementationDefinitionList", "classMethodDefinition", "instanceMethodDefinition", "methodDefinition", "methodSelector", "keywordDeclarator", @@ -1356,8 +1456,9 @@ var ruleNames = [ "translationUnit", "topLevelDeclaration", "importDeclaration" "protocolExpression", "encodeExpression", "typeVariableDeclarator", "throwStatement", "tryBlock", "catchStatement", "synchronizedStatement", "autoreleaseStatement", "functionDeclaration", "functionDefinition", - "functionSignature", "attribute", "attributeName", "attributeParameters", - "attributeParameterList", "attributeParameter", "attributeParameterAssignment", + "functionSignature", "functionPointer", "attribute", + "attributeName", "attributeParameters", "attributeParameterList", + "attributeParameter", "attributeParameterAssignment", "declaration", "functionCallExpression", "enumDeclaration", "varDeclaration", "typedefDeclaration", "typeDeclaratorList", "typeDeclarator", "declarationSpecifiers", "attributeSpecifier", @@ -1507,124 +1608,137 @@ ObjectiveCParser.NULL_RESETTABLE = 102; ObjectiveCParser.NS_INLINE = 103; ObjectiveCParser.NS_ENUM = 104; ObjectiveCParser.NS_OPTIONS = 105; -ObjectiveCParser.ASSIGN = 106; -ObjectiveCParser.COPY = 107; -ObjectiveCParser.GETTER = 108; -ObjectiveCParser.SETTER = 109; -ObjectiveCParser.STRONG = 110; -ObjectiveCParser.READONLY = 111; -ObjectiveCParser.READWRITE = 112; -ObjectiveCParser.WEAK = 113; -ObjectiveCParser.UNSAFE_UNRETAINED = 114; -ObjectiveCParser.IB_OUTLET = 115; -ObjectiveCParser.IB_OUTLET_COLLECTION = 116; -ObjectiveCParser.IB_INSPECTABLE = 117; -ObjectiveCParser.IB_DESIGNABLE = 118; -ObjectiveCParser.NS_ASSUME_NONNULL_BEGIN = 119; -ObjectiveCParser.NS_ASSUME_NONNULL_END = 120; -ObjectiveCParser.EXTERN_SUFFIX = 121; -ObjectiveCParser.IOS_SUFFIX = 122; -ObjectiveCParser.MAC_SUFFIX = 123; -ObjectiveCParser.TVOS_PROHIBITED = 124; -ObjectiveCParser.IDENTIFIER = 125; -ObjectiveCParser.LP = 126; -ObjectiveCParser.RP = 127; -ObjectiveCParser.LBRACE = 128; -ObjectiveCParser.RBRACE = 129; -ObjectiveCParser.LBRACK = 130; -ObjectiveCParser.RBRACK = 131; -ObjectiveCParser.SEMI = 132; -ObjectiveCParser.COMMA = 133; -ObjectiveCParser.DOT = 134; -ObjectiveCParser.STRUCTACCESS = 135; -ObjectiveCParser.AT = 136; -ObjectiveCParser.ASSIGNMENT = 137; -ObjectiveCParser.GT = 138; -ObjectiveCParser.LT = 139; -ObjectiveCParser.BANG = 140; -ObjectiveCParser.TILDE = 141; -ObjectiveCParser.QUESTION = 142; -ObjectiveCParser.COLON = 143; -ObjectiveCParser.EQUAL = 144; -ObjectiveCParser.LE = 145; -ObjectiveCParser.GE = 146; -ObjectiveCParser.NOTEQUAL = 147; -ObjectiveCParser.AND = 148; -ObjectiveCParser.OR = 149; -ObjectiveCParser.INC = 150; -ObjectiveCParser.DEC = 151; -ObjectiveCParser.ADD = 152; -ObjectiveCParser.SUB = 153; -ObjectiveCParser.MUL = 154; -ObjectiveCParser.DIV = 155; -ObjectiveCParser.BITAND = 156; -ObjectiveCParser.BITOR = 157; -ObjectiveCParser.BITXOR = 158; -ObjectiveCParser.MOD = 159; -ObjectiveCParser.ADD_ASSIGN = 160; -ObjectiveCParser.SUB_ASSIGN = 161; -ObjectiveCParser.MUL_ASSIGN = 162; -ObjectiveCParser.DIV_ASSIGN = 163; -ObjectiveCParser.AND_ASSIGN = 164; -ObjectiveCParser.OR_ASSIGN = 165; -ObjectiveCParser.XOR_ASSIGN = 166; -ObjectiveCParser.MOD_ASSIGN = 167; -ObjectiveCParser.LSHIFT_ASSIGN = 168; -ObjectiveCParser.RSHIFT_ASSIGN = 169; -ObjectiveCParser.ELIPSIS = 170; -ObjectiveCParser.CHARACTER_LITERAL = 171; -ObjectiveCParser.STRING_START = 172; -ObjectiveCParser.HEX_LITERAL = 173; -ObjectiveCParser.OCTAL_LITERAL = 174; -ObjectiveCParser.BINARY_LITERAL = 175; -ObjectiveCParser.DECIMAL_LITERAL = 176; -ObjectiveCParser.FLOATING_POINT_LITERAL = 177; -ObjectiveCParser.VERSION_SEMATIC = 178; -ObjectiveCParser.WS = 179; -ObjectiveCParser.MULTI_COMMENT = 180; -ObjectiveCParser.SINGLE_COMMENT = 181; -ObjectiveCParser.BACKSLASH = 182; -ObjectiveCParser.SHARP = 183; -ObjectiveCParser.STRING_NEWLINE = 184; -ObjectiveCParser.STRING_END = 185; -ObjectiveCParser.STRING_VALUE = 186; -ObjectiveCParser.DIRECTIVE_IMPORT = 187; -ObjectiveCParser.DIRECTIVE_INCLUDE = 188; -ObjectiveCParser.DIRECTIVE_PRAGMA = 189; -ObjectiveCParser.DIRECTIVE_DEFINE = 190; -ObjectiveCParser.DIRECTIVE_DEFINED = 191; -ObjectiveCParser.DIRECTIVE_IF = 192; -ObjectiveCParser.DIRECTIVE_ELIF = 193; -ObjectiveCParser.DIRECTIVE_ELSE = 194; -ObjectiveCParser.DIRECTIVE_UNDEF = 195; -ObjectiveCParser.DIRECTIVE_IFDEF = 196; -ObjectiveCParser.DIRECTIVE_IFNDEF = 197; -ObjectiveCParser.DIRECTIVE_ENDIF = 198; -ObjectiveCParser.DIRECTIVE_TRUE = 199; -ObjectiveCParser.DIRECTIVE_FALSE = 200; -ObjectiveCParser.DIRECTIVE_ERROR = 201; -ObjectiveCParser.DIRECTIVE_WARNING = 202; -ObjectiveCParser.DIRECTIVE_BANG = 203; -ObjectiveCParser.DIRECTIVE_LP = 204; -ObjectiveCParser.DIRECTIVE_RP = 205; -ObjectiveCParser.DIRECTIVE_EQUAL = 206; -ObjectiveCParser.DIRECTIVE_NOTEQUAL = 207; -ObjectiveCParser.DIRECTIVE_AND = 208; -ObjectiveCParser.DIRECTIVE_OR = 209; -ObjectiveCParser.DIRECTIVE_LT = 210; -ObjectiveCParser.DIRECTIVE_GT = 211; -ObjectiveCParser.DIRECTIVE_LE = 212; -ObjectiveCParser.DIRECTIVE_GE = 213; -ObjectiveCParser.DIRECTIVE_STRING = 214; -ObjectiveCParser.DIRECTIVE_ID = 215; -ObjectiveCParser.DIRECTIVE_DECIMAL_LITERAL = 216; -ObjectiveCParser.DIRECTIVE_FLOAT = 217; -ObjectiveCParser.DIRECTIVE_NEWLINE = 218; -ObjectiveCParser.DIRECTIVE_MULTI_COMMENT = 219; -ObjectiveCParser.DIRECTIVE_SINGLE_COMMENT = 220; -ObjectiveCParser.DIRECTIVE_BACKSLASH_NEWLINE = 221; -ObjectiveCParser.DIRECTIVE_TEXT_NEWLINE = 222; -ObjectiveCParser.DIRECTIVE_TEXT = 223; +ObjectiveCParser.NS_CLOSED_ENUM = 106; +ObjectiveCParser.NS_TYPED_EXTENSIBLE_ENUM = 107; +ObjectiveCParser.NS_ERROR_ENUM = 108; +ObjectiveCParser.ASSIGN = 109; +ObjectiveCParser.COPY = 110; +ObjectiveCParser.GETTER = 111; +ObjectiveCParser.SETTER = 112; +ObjectiveCParser.STRONG = 113; +ObjectiveCParser.READONLY = 114; +ObjectiveCParser.READWRITE = 115; +ObjectiveCParser.WEAK = 116; +ObjectiveCParser.UNSAFE_UNRETAINED = 117; +ObjectiveCParser.IB_OUTLET = 118; +ObjectiveCParser.IB_OUTLET_COLLECTION = 119; +ObjectiveCParser.IB_INSPECTABLE = 120; +ObjectiveCParser.IB_DESIGNABLE = 121; +ObjectiveCParser.NS_ASSUME_NONNULL_BEGIN = 122; +ObjectiveCParser.NS_ASSUME_NONNULL_END = 123; +ObjectiveCParser.EXTERN_SUFFIX = 124; +ObjectiveCParser.IOS_SUFFIX = 125; +ObjectiveCParser.MAC_SUFFIX = 126; +ObjectiveCParser.TVOS_PROHIBITED = 127; +ObjectiveCParser.NS_NOESCAPE = 128; +ObjectiveCParser.IDENTIFIER = 129; +ObjectiveCParser.LP = 130; +ObjectiveCParser.RP = 131; +ObjectiveCParser.LBRACE = 132; +ObjectiveCParser.RBRACE = 133; +ObjectiveCParser.LBRACK = 134; +ObjectiveCParser.RBRACK = 135; +ObjectiveCParser.SEMI = 136; +ObjectiveCParser.COMMA = 137; +ObjectiveCParser.DOT = 138; +ObjectiveCParser.STRUCTACCESS = 139; +ObjectiveCParser.AT = 140; +ObjectiveCParser.ASSIGNMENT = 141; +ObjectiveCParser.GT = 142; +ObjectiveCParser.LT = 143; +ObjectiveCParser.BANG = 144; +ObjectiveCParser.TILDE = 145; +ObjectiveCParser.QUESTION = 146; +ObjectiveCParser.COLON = 147; +ObjectiveCParser.EQUAL = 148; +ObjectiveCParser.LE = 149; +ObjectiveCParser.GE = 150; +ObjectiveCParser.NOTEQUAL = 151; +ObjectiveCParser.AND = 152; +ObjectiveCParser.OR = 153; +ObjectiveCParser.INC = 154; +ObjectiveCParser.DEC = 155; +ObjectiveCParser.ADD = 156; +ObjectiveCParser.SUB = 157; +ObjectiveCParser.MUL = 158; +ObjectiveCParser.DIV = 159; +ObjectiveCParser.BITAND = 160; +ObjectiveCParser.BITOR = 161; +ObjectiveCParser.BITXOR = 162; +ObjectiveCParser.MOD = 163; +ObjectiveCParser.ADD_ASSIGN = 164; +ObjectiveCParser.SUB_ASSIGN = 165; +ObjectiveCParser.MUL_ASSIGN = 166; +ObjectiveCParser.DIV_ASSIGN = 167; +ObjectiveCParser.AND_ASSIGN = 168; +ObjectiveCParser.OR_ASSIGN = 169; +ObjectiveCParser.XOR_ASSIGN = 170; +ObjectiveCParser.MOD_ASSIGN = 171; +ObjectiveCParser.LSHIFT_ASSIGN = 172; +ObjectiveCParser.RSHIFT_ASSIGN = 173; +ObjectiveCParser.ELIPSIS = 174; +ObjectiveCParser.CHARACTER_LITERAL = 175; +ObjectiveCParser.STRING_START = 176; +ObjectiveCParser.HEX_LITERAL = 177; +ObjectiveCParser.OCTAL_LITERAL = 178; +ObjectiveCParser.BINARY_LITERAL = 179; +ObjectiveCParser.DECIMAL_LITERAL = 180; +ObjectiveCParser.FLOATING_POINT_LITERAL = 181; +ObjectiveCParser.VERSION_SEMATIC = 182; +ObjectiveCParser.WS = 183; +ObjectiveCParser.MULTI_COMMENT = 184; +ObjectiveCParser.SINGLE_COMMENT = 185; +ObjectiveCParser.BACKSLASH = 186; +ObjectiveCParser.SHARP = 187; +ObjectiveCParser.STRING_NEWLINE = 188; +ObjectiveCParser.STRING_END = 189; +ObjectiveCParser.STRING_VALUE = 190; +ObjectiveCParser.DIRECTIVE_IMPORT = 191; +ObjectiveCParser.DIRECTIVE_INCLUDE = 192; +ObjectiveCParser.DIRECTIVE_PRAGMA = 193; +ObjectiveCParser.DIRECTIVE_DEFINE = 194; +ObjectiveCParser.DIRECTIVE_DEFINED = 195; +ObjectiveCParser.DIRECTIVE_IF = 196; +ObjectiveCParser.DIRECTIVE_ELIF = 197; +ObjectiveCParser.DIRECTIVE_ELSE = 198; +ObjectiveCParser.DIRECTIVE_UNDEF = 199; +ObjectiveCParser.DIRECTIVE_IFDEF = 200; +ObjectiveCParser.DIRECTIVE_IFNDEF = 201; +ObjectiveCParser.DIRECTIVE_ENDIF = 202; +ObjectiveCParser.DIRECTIVE_TRUE = 203; +ObjectiveCParser.DIRECTIVE_FALSE = 204; +ObjectiveCParser.DIRECTIVE_ERROR = 205; +ObjectiveCParser.DIRECTIVE_WARNING = 206; +ObjectiveCParser.DIRECTIVE_BANG = 207; +ObjectiveCParser.DIRECTIVE_LP = 208; +ObjectiveCParser.DIRECTIVE_RP = 209; +ObjectiveCParser.DIRECTIVE_EQUAL = 210; +ObjectiveCParser.DIRECTIVE_NOTEQUAL = 211; +ObjectiveCParser.DIRECTIVE_AND = 212; +ObjectiveCParser.DIRECTIVE_OR = 213; +ObjectiveCParser.DIRECTIVE_LT = 214; +ObjectiveCParser.DIRECTIVE_GT = 215; +ObjectiveCParser.DIRECTIVE_LE = 216; +ObjectiveCParser.DIRECTIVE_GE = 217; +ObjectiveCParser.DIRECTIVE_ADD = 218; +ObjectiveCParser.DIRECTIVE_SUB = 219; +ObjectiveCParser.DIRECTIVE_MUL = 220; +ObjectiveCParser.DIRECTIVE_DIV = 221; +ObjectiveCParser.DIRECTIVE_BITAND = 222; +ObjectiveCParser.DIRECTIVE_BITOR = 223; +ObjectiveCParser.DIRECTIVE_BITXOR = 224; +ObjectiveCParser.DIRECTIVE_MOD = 225; +ObjectiveCParser.DIRECTIVE_DOT = 226; +ObjectiveCParser.DIRECTIVE_STRING = 227; +ObjectiveCParser.DIRECTIVE_ID = 228; +ObjectiveCParser.DIRECTIVE_DECIMAL_LITERAL = 229; +ObjectiveCParser.DIRECTIVE_FLOAT = 230; +ObjectiveCParser.DIRECTIVE_NEWLINE = 231; +ObjectiveCParser.DIRECTIVE_MULTI_COMMENT = 232; +ObjectiveCParser.DIRECTIVE_SINGLE_COMMENT = 233; +ObjectiveCParser.DIRECTIVE_BACKSLASH_NEWLINE = 234; +ObjectiveCParser.DIRECTIVE_TEXT_NEWLINE = 235; +ObjectiveCParser.DIRECTIVE_TEXT = 236; ObjectiveCParser.RULE_translationUnit = 0; ObjectiveCParser.RULE_topLevelDeclaration = 1; @@ -1637,140 +1751,142 @@ ObjectiveCParser.RULE_genericTypeSpecifier = 7; ObjectiveCParser.RULE_protocolDeclaration = 8; ObjectiveCParser.RULE_protocolDeclarationSection = 9; ObjectiveCParser.RULE_protocolDeclarationList = 10; -ObjectiveCParser.RULE_classDeclarationList = 11; -ObjectiveCParser.RULE_protocolList = 12; -ObjectiveCParser.RULE_propertyDeclaration = 13; -ObjectiveCParser.RULE_propertyAttributesList = 14; -ObjectiveCParser.RULE_propertyAttribute = 15; -ObjectiveCParser.RULE_protocolName = 16; -ObjectiveCParser.RULE_instanceVariables = 17; -ObjectiveCParser.RULE_visibilitySection = 18; -ObjectiveCParser.RULE_accessModifier = 19; -ObjectiveCParser.RULE_interfaceDeclarationList = 20; -ObjectiveCParser.RULE_classMethodDeclaration = 21; -ObjectiveCParser.RULE_instanceMethodDeclaration = 22; -ObjectiveCParser.RULE_methodDeclaration = 23; -ObjectiveCParser.RULE_implementationDefinitionList = 24; -ObjectiveCParser.RULE_classMethodDefinition = 25; -ObjectiveCParser.RULE_instanceMethodDefinition = 26; -ObjectiveCParser.RULE_methodDefinition = 27; -ObjectiveCParser.RULE_methodSelector = 28; -ObjectiveCParser.RULE_keywordDeclarator = 29; -ObjectiveCParser.RULE_selector = 30; -ObjectiveCParser.RULE_methodType = 31; -ObjectiveCParser.RULE_propertyImplementation = 32; -ObjectiveCParser.RULE_propertySynthesizeList = 33; -ObjectiveCParser.RULE_propertySynthesizeItem = 34; -ObjectiveCParser.RULE_blockType = 35; -ObjectiveCParser.RULE_genericsSpecifier = 36; -ObjectiveCParser.RULE_typeSpecifierWithPrefixes = 37; -ObjectiveCParser.RULE_dictionaryExpression = 38; -ObjectiveCParser.RULE_dictionaryPair = 39; -ObjectiveCParser.RULE_arrayExpression = 40; -ObjectiveCParser.RULE_boxExpression = 41; -ObjectiveCParser.RULE_blockParameters = 42; -ObjectiveCParser.RULE_typeVariableDeclaratorOrName = 43; -ObjectiveCParser.RULE_blockExpression = 44; -ObjectiveCParser.RULE_messageExpression = 45; -ObjectiveCParser.RULE_receiver = 46; -ObjectiveCParser.RULE_messageSelector = 47; -ObjectiveCParser.RULE_keywordArgument = 48; -ObjectiveCParser.RULE_keywordArgumentType = 49; -ObjectiveCParser.RULE_selectorExpression = 50; -ObjectiveCParser.RULE_selectorName = 51; -ObjectiveCParser.RULE_protocolExpression = 52; -ObjectiveCParser.RULE_encodeExpression = 53; -ObjectiveCParser.RULE_typeVariableDeclarator = 54; -ObjectiveCParser.RULE_throwStatement = 55; -ObjectiveCParser.RULE_tryBlock = 56; -ObjectiveCParser.RULE_catchStatement = 57; -ObjectiveCParser.RULE_synchronizedStatement = 58; -ObjectiveCParser.RULE_autoreleaseStatement = 59; -ObjectiveCParser.RULE_functionDeclaration = 60; -ObjectiveCParser.RULE_functionDefinition = 61; -ObjectiveCParser.RULE_functionSignature = 62; -ObjectiveCParser.RULE_attribute = 63; -ObjectiveCParser.RULE_attributeName = 64; -ObjectiveCParser.RULE_attributeParameters = 65; -ObjectiveCParser.RULE_attributeParameterList = 66; -ObjectiveCParser.RULE_attributeParameter = 67; -ObjectiveCParser.RULE_attributeParameterAssignment = 68; -ObjectiveCParser.RULE_declaration = 69; -ObjectiveCParser.RULE_functionCallExpression = 70; -ObjectiveCParser.RULE_enumDeclaration = 71; -ObjectiveCParser.RULE_varDeclaration = 72; -ObjectiveCParser.RULE_typedefDeclaration = 73; -ObjectiveCParser.RULE_typeDeclaratorList = 74; -ObjectiveCParser.RULE_typeDeclarator = 75; -ObjectiveCParser.RULE_declarationSpecifiers = 76; -ObjectiveCParser.RULE_attributeSpecifier = 77; -ObjectiveCParser.RULE_initDeclaratorList = 78; -ObjectiveCParser.RULE_initDeclarator = 79; -ObjectiveCParser.RULE_structOrUnionSpecifier = 80; -ObjectiveCParser.RULE_fieldDeclaration = 81; -ObjectiveCParser.RULE_specifierQualifierList = 82; -ObjectiveCParser.RULE_ibOutletQualifier = 83; -ObjectiveCParser.RULE_arcBehaviourSpecifier = 84; -ObjectiveCParser.RULE_nullabilitySpecifier = 85; -ObjectiveCParser.RULE_storageClassSpecifier = 86; -ObjectiveCParser.RULE_typePrefix = 87; -ObjectiveCParser.RULE_typeQualifier = 88; -ObjectiveCParser.RULE_protocolQualifier = 89; -ObjectiveCParser.RULE_typeSpecifier = 90; -ObjectiveCParser.RULE_typeofExpression = 91; -ObjectiveCParser.RULE_fieldDeclaratorList = 92; -ObjectiveCParser.RULE_fieldDeclarator = 93; -ObjectiveCParser.RULE_enumSpecifier = 94; -ObjectiveCParser.RULE_enumeratorList = 95; -ObjectiveCParser.RULE_enumerator = 96; -ObjectiveCParser.RULE_enumeratorIdentifier = 97; -ObjectiveCParser.RULE_directDeclarator = 98; -ObjectiveCParser.RULE_declaratorSuffix = 99; -ObjectiveCParser.RULE_parameterList = 100; -ObjectiveCParser.RULE_pointer = 101; -ObjectiveCParser.RULE_macro = 102; -ObjectiveCParser.RULE_arrayInitializer = 103; -ObjectiveCParser.RULE_structInitializer = 104; -ObjectiveCParser.RULE_initializerList = 105; -ObjectiveCParser.RULE_typeName = 106; -ObjectiveCParser.RULE_abstractDeclarator = 107; -ObjectiveCParser.RULE_abstractDeclaratorSuffix = 108; -ObjectiveCParser.RULE_parameterDeclarationList = 109; -ObjectiveCParser.RULE_parameterDeclaration = 110; -ObjectiveCParser.RULE_declarator = 111; -ObjectiveCParser.RULE_statement = 112; -ObjectiveCParser.RULE_labeledStatement = 113; -ObjectiveCParser.RULE_rangeExpression = 114; -ObjectiveCParser.RULE_compoundStatement = 115; -ObjectiveCParser.RULE_selectionStatement = 116; -ObjectiveCParser.RULE_switchStatement = 117; -ObjectiveCParser.RULE_switchBlock = 118; -ObjectiveCParser.RULE_switchSection = 119; -ObjectiveCParser.RULE_switchLabel = 120; -ObjectiveCParser.RULE_iterationStatement = 121; -ObjectiveCParser.RULE_whileStatement = 122; -ObjectiveCParser.RULE_doStatement = 123; -ObjectiveCParser.RULE_forStatement = 124; -ObjectiveCParser.RULE_forLoopInitializer = 125; -ObjectiveCParser.RULE_forInStatement = 126; -ObjectiveCParser.RULE_jumpStatement = 127; -ObjectiveCParser.RULE_expressions = 128; -ObjectiveCParser.RULE_expression = 129; -ObjectiveCParser.RULE_assignmentOperator = 130; -ObjectiveCParser.RULE_castExpression = 131; -ObjectiveCParser.RULE_initializer = 132; -ObjectiveCParser.RULE_constantExpression = 133; -ObjectiveCParser.RULE_unaryExpression = 134; -ObjectiveCParser.RULE_unaryOperator = 135; -ObjectiveCParser.RULE_postfixExpression = 136; -ObjectiveCParser.RULE_postfix = 137; -ObjectiveCParser.RULE_argumentExpressionList = 138; -ObjectiveCParser.RULE_argumentExpression = 139; -ObjectiveCParser.RULE_osVersion = 140; -ObjectiveCParser.RULE_primaryExpression = 141; -ObjectiveCParser.RULE_constant = 142; -ObjectiveCParser.RULE_stringLiteral = 143; -ObjectiveCParser.RULE_identifier = 144; +ObjectiveCParser.RULE_classDeclaration = 11; +ObjectiveCParser.RULE_classDeclarationList = 12; +ObjectiveCParser.RULE_protocolList = 13; +ObjectiveCParser.RULE_propertyDeclaration = 14; +ObjectiveCParser.RULE_propertyAttributesList = 15; +ObjectiveCParser.RULE_propertyAttribute = 16; +ObjectiveCParser.RULE_protocolName = 17; +ObjectiveCParser.RULE_instanceVariables = 18; +ObjectiveCParser.RULE_visibilitySection = 19; +ObjectiveCParser.RULE_accessModifier = 20; +ObjectiveCParser.RULE_interfaceDeclarationList = 21; +ObjectiveCParser.RULE_classMethodDeclaration = 22; +ObjectiveCParser.RULE_instanceMethodDeclaration = 23; +ObjectiveCParser.RULE_methodDeclaration = 24; +ObjectiveCParser.RULE_implementationDefinitionList = 25; +ObjectiveCParser.RULE_classMethodDefinition = 26; +ObjectiveCParser.RULE_instanceMethodDefinition = 27; +ObjectiveCParser.RULE_methodDefinition = 28; +ObjectiveCParser.RULE_methodSelector = 29; +ObjectiveCParser.RULE_keywordDeclarator = 30; +ObjectiveCParser.RULE_selector = 31; +ObjectiveCParser.RULE_methodType = 32; +ObjectiveCParser.RULE_propertyImplementation = 33; +ObjectiveCParser.RULE_propertySynthesizeList = 34; +ObjectiveCParser.RULE_propertySynthesizeItem = 35; +ObjectiveCParser.RULE_blockType = 36; +ObjectiveCParser.RULE_genericsSpecifier = 37; +ObjectiveCParser.RULE_typeSpecifierWithPrefixes = 38; +ObjectiveCParser.RULE_dictionaryExpression = 39; +ObjectiveCParser.RULE_dictionaryPair = 40; +ObjectiveCParser.RULE_arrayExpression = 41; +ObjectiveCParser.RULE_boxExpression = 42; +ObjectiveCParser.RULE_blockParameters = 43; +ObjectiveCParser.RULE_typeVariableDeclaratorOrName = 44; +ObjectiveCParser.RULE_blockExpression = 45; +ObjectiveCParser.RULE_messageExpression = 46; +ObjectiveCParser.RULE_receiver = 47; +ObjectiveCParser.RULE_messageSelector = 48; +ObjectiveCParser.RULE_keywordArgument = 49; +ObjectiveCParser.RULE_keywordArgumentType = 50; +ObjectiveCParser.RULE_selectorExpression = 51; +ObjectiveCParser.RULE_selectorName = 52; +ObjectiveCParser.RULE_protocolExpression = 53; +ObjectiveCParser.RULE_encodeExpression = 54; +ObjectiveCParser.RULE_typeVariableDeclarator = 55; +ObjectiveCParser.RULE_throwStatement = 56; +ObjectiveCParser.RULE_tryBlock = 57; +ObjectiveCParser.RULE_catchStatement = 58; +ObjectiveCParser.RULE_synchronizedStatement = 59; +ObjectiveCParser.RULE_autoreleaseStatement = 60; +ObjectiveCParser.RULE_functionDeclaration = 61; +ObjectiveCParser.RULE_functionDefinition = 62; +ObjectiveCParser.RULE_functionSignature = 63; +ObjectiveCParser.RULE_functionPointer = 64; +ObjectiveCParser.RULE_attribute = 65; +ObjectiveCParser.RULE_attributeName = 66; +ObjectiveCParser.RULE_attributeParameters = 67; +ObjectiveCParser.RULE_attributeParameterList = 68; +ObjectiveCParser.RULE_attributeParameter = 69; +ObjectiveCParser.RULE_attributeParameterAssignment = 70; +ObjectiveCParser.RULE_declaration = 71; +ObjectiveCParser.RULE_functionCallExpression = 72; +ObjectiveCParser.RULE_enumDeclaration = 73; +ObjectiveCParser.RULE_varDeclaration = 74; +ObjectiveCParser.RULE_typedefDeclaration = 75; +ObjectiveCParser.RULE_typeDeclaratorList = 76; +ObjectiveCParser.RULE_typeDeclarator = 77; +ObjectiveCParser.RULE_declarationSpecifiers = 78; +ObjectiveCParser.RULE_attributeSpecifier = 79; +ObjectiveCParser.RULE_initDeclaratorList = 80; +ObjectiveCParser.RULE_initDeclarator = 81; +ObjectiveCParser.RULE_structOrUnionSpecifier = 82; +ObjectiveCParser.RULE_fieldDeclaration = 83; +ObjectiveCParser.RULE_specifierQualifierList = 84; +ObjectiveCParser.RULE_ibOutletQualifier = 85; +ObjectiveCParser.RULE_arcBehaviourSpecifier = 86; +ObjectiveCParser.RULE_nullabilitySpecifier = 87; +ObjectiveCParser.RULE_storageClassSpecifier = 88; +ObjectiveCParser.RULE_typePrefix = 89; +ObjectiveCParser.RULE_typeQualifier = 90; +ObjectiveCParser.RULE_protocolQualifier = 91; +ObjectiveCParser.RULE_typeSpecifier = 92; +ObjectiveCParser.RULE_typeofExpression = 93; +ObjectiveCParser.RULE_fieldDeclaratorList = 94; +ObjectiveCParser.RULE_fieldDeclarator = 95; +ObjectiveCParser.RULE_enumSpecifier = 96; +ObjectiveCParser.RULE_enumeratorList = 97; +ObjectiveCParser.RULE_enumerator = 98; +ObjectiveCParser.RULE_enumeratorIdentifier = 99; +ObjectiveCParser.RULE_directDeclarator = 100; +ObjectiveCParser.RULE_declaratorSuffix = 101; +ObjectiveCParser.RULE_parameterList = 102; +ObjectiveCParser.RULE_pointer = 103; +ObjectiveCParser.RULE_macro = 104; +ObjectiveCParser.RULE_arrayInitializer = 105; +ObjectiveCParser.RULE_structInitializer = 106; +ObjectiveCParser.RULE_initializerList = 107; +ObjectiveCParser.RULE_typeName = 108; +ObjectiveCParser.RULE_abstractDeclarator = 109; +ObjectiveCParser.RULE_abstractDeclaratorSuffix = 110; +ObjectiveCParser.RULE_parameterDeclarationList = 111; +ObjectiveCParser.RULE_parameterDeclaration = 112; +ObjectiveCParser.RULE_declarator = 113; +ObjectiveCParser.RULE_statement = 114; +ObjectiveCParser.RULE_labeledStatement = 115; +ObjectiveCParser.RULE_rangeExpression = 116; +ObjectiveCParser.RULE_compoundStatement = 117; +ObjectiveCParser.RULE_selectionStatement = 118; +ObjectiveCParser.RULE_switchStatement = 119; +ObjectiveCParser.RULE_switchBlock = 120; +ObjectiveCParser.RULE_switchSection = 121; +ObjectiveCParser.RULE_switchLabel = 122; +ObjectiveCParser.RULE_iterationStatement = 123; +ObjectiveCParser.RULE_whileStatement = 124; +ObjectiveCParser.RULE_doStatement = 125; +ObjectiveCParser.RULE_forStatement = 126; +ObjectiveCParser.RULE_forLoopInitializer = 127; +ObjectiveCParser.RULE_forInStatement = 128; +ObjectiveCParser.RULE_jumpStatement = 129; +ObjectiveCParser.RULE_expressions = 130; +ObjectiveCParser.RULE_expression = 131; +ObjectiveCParser.RULE_assignmentOperator = 132; +ObjectiveCParser.RULE_castExpression = 133; +ObjectiveCParser.RULE_initializer = 134; +ObjectiveCParser.RULE_constantExpression = 135; +ObjectiveCParser.RULE_unaryExpression = 136; +ObjectiveCParser.RULE_unaryOperator = 137; +ObjectiveCParser.RULE_postfixExpression = 138; +ObjectiveCParser.RULE_postfix = 139; +ObjectiveCParser.RULE_argumentExpressionList = 140; +ObjectiveCParser.RULE_argumentExpression = 141; +ObjectiveCParser.RULE_osVersion = 142; +ObjectiveCParser.RULE_primaryExpression = 143; +ObjectiveCParser.RULE_constant = 144; +ObjectiveCParser.RULE_stringLiteral = 145; +ObjectiveCParser.RULE_identifier = 146; function TranslationUnitContext(parser, parent, invokingState) { @@ -1828,17 +1944,17 @@ ObjectiveCParser.prototype.translationUnit = function() { var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 293; + this.state = 297; this._errHandler.sync(this); _la = this._input.LA(1); - while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.CLASS - 32)))) !== 0) || ((((_la - 65)) & ~0x1f) == 0 && ((1 << (_la - 65)) & ((1 << (ObjectiveCParser.IMPLEMENTATION - 65)) | (1 << (ObjectiveCParser.INTERFACE - 65)) | (1 << (ObjectiveCParser.IMPORT - 65)) | (1 << (ObjectiveCParser.PROTOCOL - 65)) | (1 << (ObjectiveCParser.ATOMIC - 65)) | (1 << (ObjectiveCParser.NONATOMIC - 65)) | (1 << (ObjectiveCParser.RETAIN - 65)) | (1 << (ObjectiveCParser.ATTRIBUTE - 65)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 65)) | (1 << (ObjectiveCParser.BLOCK - 65)) | (1 << (ObjectiveCParser.BRIDGE - 65)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 65)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 65)) | (1 << (ObjectiveCParser.COVARIANT - 65)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 65)) | (1 << (ObjectiveCParser.DEPRECATED - 65)) | (1 << (ObjectiveCParser.KINDOF - 65)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 65)) | (1 << (ObjectiveCParser.TYPEOF - 65)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 65)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (ObjectiveCParser.UNUSED - 97)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 97)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 97)) | (1 << (ObjectiveCParser.NULLABLE - 97)) | (1 << (ObjectiveCParser.NONNULL - 97)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 97)) | (1 << (ObjectiveCParser.NS_INLINE - 97)) | (1 << (ObjectiveCParser.NS_ENUM - 97)) | (1 << (ObjectiveCParser.NS_OPTIONS - 97)) | (1 << (ObjectiveCParser.ASSIGN - 97)) | (1 << (ObjectiveCParser.COPY - 97)) | (1 << (ObjectiveCParser.GETTER - 97)) | (1 << (ObjectiveCParser.SETTER - 97)) | (1 << (ObjectiveCParser.STRONG - 97)) | (1 << (ObjectiveCParser.READONLY - 97)) | (1 << (ObjectiveCParser.READWRITE - 97)) | (1 << (ObjectiveCParser.WEAK - 97)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 97)) | (1 << (ObjectiveCParser.IB_OUTLET - 97)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 97)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 97)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 97)) | (1 << (ObjectiveCParser.IDENTIFIER - 97)))) !== 0)) { - this.state = 290; + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.CLASS - 32)))) !== 0) || ((((_la - 65)) & ~0x1f) == 0 && ((1 << (_la - 65)) & ((1 << (ObjectiveCParser.IMPLEMENTATION - 65)) | (1 << (ObjectiveCParser.INTERFACE - 65)) | (1 << (ObjectiveCParser.IMPORT - 65)) | (1 << (ObjectiveCParser.PROTOCOL - 65)) | (1 << (ObjectiveCParser.ATOMIC - 65)) | (1 << (ObjectiveCParser.NONATOMIC - 65)) | (1 << (ObjectiveCParser.RETAIN - 65)) | (1 << (ObjectiveCParser.ATTRIBUTE - 65)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 65)) | (1 << (ObjectiveCParser.BLOCK - 65)) | (1 << (ObjectiveCParser.BRIDGE - 65)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 65)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 65)) | (1 << (ObjectiveCParser.COVARIANT - 65)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 65)) | (1 << (ObjectiveCParser.DEPRECATED - 65)) | (1 << (ObjectiveCParser.KINDOF - 65)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 65)) | (1 << (ObjectiveCParser.TYPEOF - 65)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 65)))) !== 0) || ((((_la - 97)) & ~0x1f) == 0 && ((1 << (_la - 97)) & ((1 << (ObjectiveCParser.UNUSED - 97)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 97)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 97)) | (1 << (ObjectiveCParser.NULLABLE - 97)) | (1 << (ObjectiveCParser.NONNULL - 97)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 97)) | (1 << (ObjectiveCParser.NS_INLINE - 97)) | (1 << (ObjectiveCParser.NS_ENUM - 97)) | (1 << (ObjectiveCParser.NS_OPTIONS - 97)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 97)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 97)) | (1 << (ObjectiveCParser.ASSIGN - 97)) | (1 << (ObjectiveCParser.COPY - 97)) | (1 << (ObjectiveCParser.GETTER - 97)) | (1 << (ObjectiveCParser.SETTER - 97)) | (1 << (ObjectiveCParser.STRONG - 97)) | (1 << (ObjectiveCParser.READONLY - 97)) | (1 << (ObjectiveCParser.READWRITE - 97)) | (1 << (ObjectiveCParser.WEAK - 97)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 97)) | (1 << (ObjectiveCParser.IB_OUTLET - 97)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 97)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 97)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 97)))) !== 0) || _la===ObjectiveCParser.IDENTIFIER) { + this.state = 294; this.topLevelDeclaration(); - this.state = 295; + this.state = 299; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 296; + this.state = 300; this.match(ObjectiveCParser.EOF); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -1937,73 +2053,73 @@ ObjectiveCParser.prototype.topLevelDeclaration = function() { var localctx = new TopLevelDeclarationContext(this, this._ctx, this.state); this.enterRule(localctx, 2, ObjectiveCParser.RULE_topLevelDeclaration); try { - this.state = 309; + this.state = 313; this._errHandler.sync(this); var la_ = this._interp.adaptivePredict(this._input,1,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 298; + this.state = 302; this.importDeclaration(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 299; + this.state = 303; this.functionDeclaration(); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 300; + this.state = 304; this.declaration(); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 301; + this.state = 305; this.classInterface(); break; case 5: this.enterOuterAlt(localctx, 5); - this.state = 302; + this.state = 306; this.classImplementation(); break; case 6: this.enterOuterAlt(localctx, 6); - this.state = 303; + this.state = 307; this.categoryInterface(); break; case 7: this.enterOuterAlt(localctx, 7); - this.state = 304; + this.state = 308; this.categoryImplementation(); break; case 8: this.enterOuterAlt(localctx, 8); - this.state = 305; + this.state = 309; this.protocolDeclaration(); break; case 9: this.enterOuterAlt(localctx, 9); - this.state = 306; + this.state = 310; this.protocolDeclarationList(); break; case 10: this.enterOuterAlt(localctx, 10); - this.state = 307; + this.state = 311; this.classDeclarationList(); break; case 11: this.enterOuterAlt(localctx, 11); - this.state = 308; + this.state = 312; this.functionDefinition(); break; @@ -2108,9 +2224,9 @@ ObjectiveCParser.prototype.importDeclaration = function() { var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 311; + this.state = 315; this.match(ObjectiveCParser.IMPORT); - this.state = 328; + this.state = 332; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.BOOL: @@ -2160,41 +2276,41 @@ ObjectiveCParser.prototype.importDeclaration = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: - this.state = 312; + this.state = 316; localctx.frameworkName = this.identifier(); - this.state = 313; + this.state = 317; this.match(ObjectiveCParser.SEMI); break; case ObjectiveCParser.LT: - this.state = 315; + this.state = 319; this.match(ObjectiveCParser.LT); - this.state = 317; + this.state = 321; this._errHandler.sync(this); var la_ = this._interp.adaptivePredict(this._input,2,this._ctx); if(la_===1) { - this.state = 316; + this.state = 320; localctx.frameworkName = this.identifier(); } - this.state = 320; + this.state = 324; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.DIV) { - this.state = 319; + this.state = 323; this.match(ObjectiveCParser.DIV); } - this.state = 322; + this.state = 326; localctx.headerName = this.identifier(); - this.state = 323; + this.state = 327; this.match(ObjectiveCParser.DOT); - this.state = 324; + this.state = 328; this.match(ObjectiveCParser.IDENTIFIER); - this.state = 325; + this.state = 329; this.match(ObjectiveCParser.GT); break; case ObjectiveCParser.STRING_START: - this.state = 327; + this.state = 331; this.stringLiteral(); break; default: @@ -2227,6 +2343,7 @@ function ClassInterfaceContext(parser, parent, invokingState) { this.ruleIndex = ObjectiveCParser.RULE_classInterface; this.className = null; // GenericTypeSpecifierContext this.superclassName = null; // IdentifierContext + this.protocols = null; // ProtocolListContext return this; } @@ -2260,6 +2377,17 @@ ClassInterfaceContext.prototype.macro = function(i) { } }; +ClassInterfaceContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + ClassInterfaceContext.prototype.COLON = function() { return this.getToken(ObjectiveCParser.COLON, 0); }; @@ -2268,10 +2396,6 @@ ClassInterfaceContext.prototype.LT = function() { return this.getToken(ObjectiveCParser.LT, 0); }; -ClassInterfaceContext.prototype.protocolList = function() { - return this.getTypedRuleContext(ProtocolListContext,0); -}; - ClassInterfaceContext.prototype.GT = function() { return this.getToken(ObjectiveCParser.GT, 0); }; @@ -2288,6 +2412,10 @@ ClassInterfaceContext.prototype.identifier = function() { return this.getTypedRuleContext(IdentifierContext,0); }; +ClassInterfaceContext.prototype.protocolList = function() { + return this.getTypedRuleContext(ProtocolListContext,0); +}; + ClassInterfaceContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterClassInterface(this); @@ -2312,67 +2440,125 @@ ObjectiveCParser.prototype.classInterface = function() { var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 331; + this.state = 335; this._errHandler.sync(this); var la_ = this._interp.adaptivePredict(this._input,5,this._ctx); if(la_===1) { - this.state = 330; + this.state = 334; this.match(ObjectiveCParser.IB_DESIGNABLE); } - this.state = 336; + this.state = 341; this._errHandler.sync(this); _la = this._input.LA(1); - while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 333; - this.macro(); - this.state = 338; + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 339; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 337; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 338; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 343; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 339; + this.state = 344; this.match(ObjectiveCParser.INTERFACE); - this.state = 340; + this.state = 345; localctx.className = this.genericTypeSpecifier(); - this.state = 343; + this.state = 348; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COLON) { - this.state = 341; + this.state = 346; this.match(ObjectiveCParser.COLON); - this.state = 342; + this.state = 347; localctx.superclassName = this.identifier(); } - this.state = 349; + this.state = 354; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LT) { - this.state = 345; + this.state = 350; this.match(ObjectiveCParser.LT); - this.state = 346; - this.protocolList(); - this.state = 347; + this.state = 351; + localctx.protocols = this.protocolList(); + this.state = 352; this.match(ObjectiveCParser.GT); } - this.state = 352; + this.state = 357; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LBRACE) { - this.state = 351; + this.state = 356; this.instanceVariables(); } - this.state = 355; + this.state = 360; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 72)) & ~0x1f) == 0 && ((1 << (_la - 72)) & ((1 << (ObjectiveCParser.PROPERTY - 72)) | (1 << (ObjectiveCParser.ATOMIC - 72)) | (1 << (ObjectiveCParser.NONATOMIC - 72)) | (1 << (ObjectiveCParser.RETAIN - 72)) | (1 << (ObjectiveCParser.ATTRIBUTE - 72)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 72)) | (1 << (ObjectiveCParser.BLOCK - 72)) | (1 << (ObjectiveCParser.BRIDGE - 72)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 72)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 72)) | (1 << (ObjectiveCParser.COVARIANT - 72)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 72)) | (1 << (ObjectiveCParser.DEPRECATED - 72)) | (1 << (ObjectiveCParser.KINDOF - 72)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 72)) | (1 << (ObjectiveCParser.TYPEOF - 72)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 72)) | (1 << (ObjectiveCParser.UNUSED - 72)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 72)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 72)) | (1 << (ObjectiveCParser.NULLABLE - 72)) | (1 << (ObjectiveCParser.NONNULL - 72)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 72)) | (1 << (ObjectiveCParser.NS_INLINE - 72)))) !== 0) || ((((_la - 104)) & ~0x1f) == 0 && ((1 << (_la - 104)) & ((1 << (ObjectiveCParser.NS_ENUM - 104)) | (1 << (ObjectiveCParser.NS_OPTIONS - 104)) | (1 << (ObjectiveCParser.ASSIGN - 104)) | (1 << (ObjectiveCParser.COPY - 104)) | (1 << (ObjectiveCParser.GETTER - 104)) | (1 << (ObjectiveCParser.SETTER - 104)) | (1 << (ObjectiveCParser.STRONG - 104)) | (1 << (ObjectiveCParser.READONLY - 104)) | (1 << (ObjectiveCParser.READWRITE - 104)) | (1 << (ObjectiveCParser.WEAK - 104)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 104)) | (1 << (ObjectiveCParser.IB_OUTLET - 104)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 104)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 104)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 104)) | (1 << (ObjectiveCParser.IDENTIFIER - 104)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { - this.state = 354; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 72)) & ~0x1f) == 0 && ((1 << (_la - 72)) & ((1 << (ObjectiveCParser.PROPERTY - 72)) | (1 << (ObjectiveCParser.ATOMIC - 72)) | (1 << (ObjectiveCParser.NONATOMIC - 72)) | (1 << (ObjectiveCParser.RETAIN - 72)) | (1 << (ObjectiveCParser.ATTRIBUTE - 72)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 72)) | (1 << (ObjectiveCParser.BLOCK - 72)) | (1 << (ObjectiveCParser.BRIDGE - 72)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 72)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 72)) | (1 << (ObjectiveCParser.COVARIANT - 72)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 72)) | (1 << (ObjectiveCParser.DEPRECATED - 72)) | (1 << (ObjectiveCParser.KINDOF - 72)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 72)) | (1 << (ObjectiveCParser.TYPEOF - 72)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 72)) | (1 << (ObjectiveCParser.UNUSED - 72)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 72)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 72)) | (1 << (ObjectiveCParser.NULLABLE - 72)) | (1 << (ObjectiveCParser.NONNULL - 72)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 72)) | (1 << (ObjectiveCParser.NS_INLINE - 72)))) !== 0) || ((((_la - 104)) & ~0x1f) == 0 && ((1 << (_la - 104)) & ((1 << (ObjectiveCParser.NS_ENUM - 104)) | (1 << (ObjectiveCParser.NS_OPTIONS - 104)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 104)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 104)) | (1 << (ObjectiveCParser.ASSIGN - 104)) | (1 << (ObjectiveCParser.COPY - 104)) | (1 << (ObjectiveCParser.GETTER - 104)) | (1 << (ObjectiveCParser.SETTER - 104)) | (1 << (ObjectiveCParser.STRONG - 104)) | (1 << (ObjectiveCParser.READONLY - 104)) | (1 << (ObjectiveCParser.READWRITE - 104)) | (1 << (ObjectiveCParser.WEAK - 104)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 104)) | (1 << (ObjectiveCParser.IB_OUTLET - 104)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 104)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 104)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 104)) | (1 << (ObjectiveCParser.IDENTIFIER - 104)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { + this.state = 359; this.interfaceDeclarationList(); } - this.state = 357; + this.state = 362; this.match(ObjectiveCParser.END); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -2399,8 +2585,9 @@ function CategoryInterfaceContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_categoryInterface; - this.categoryName = null; // GenericTypeSpecifierContext - this.className = null; // IdentifierContext + this.className = null; // GenericTypeSpecifierContext + this.categoryName = null; // IdentifierContext + this.protocols = null; // ProtocolListContext return this; } @@ -2427,12 +2614,30 @@ CategoryInterfaceContext.prototype.genericTypeSpecifier = function() { return this.getTypedRuleContext(GenericTypeSpecifierContext,0); }; -CategoryInterfaceContext.prototype.LT = function() { - return this.getToken(ObjectiveCParser.LT, 0); +CategoryInterfaceContext.prototype.macro = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(MacroContext); + } else { + return this.getTypedRuleContext(MacroContext,i); + } }; -CategoryInterfaceContext.prototype.protocolList = function() { - return this.getTypedRuleContext(ProtocolListContext,0); +CategoryInterfaceContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + +CategoryInterfaceContext.prototype.LT = function() { + return this.getToken(ObjectiveCParser.LT, 0); }; CategoryInterfaceContext.prototype.GT = function() { @@ -2451,6 +2656,10 @@ CategoryInterfaceContext.prototype.identifier = function() { return this.getTypedRuleContext(IdentifierContext,0); }; +CategoryInterfaceContext.prototype.protocolList = function() { + return this.getTypedRuleContext(ProtocolListContext,0); +}; + CategoryInterfaceContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterCategoryInterface(this); @@ -2475,51 +2684,119 @@ ObjectiveCParser.prototype.categoryInterface = function() { var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 359; + this.state = 368; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 366; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 364; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 365; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 370; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 371; this.match(ObjectiveCParser.INTERFACE); - this.state = 360; - localctx.categoryName = this.genericTypeSpecifier(); - this.state = 361; + this.state = 372; + localctx.className = this.genericTypeSpecifier(); + this.state = 373; this.match(ObjectiveCParser.LP); - this.state = 363; + this.state = 375; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 362; - localctx.className = this.identifier(); + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 374; + localctx.categoryName = this.identifier(); } - this.state = 365; + this.state = 377; this.match(ObjectiveCParser.RP); - this.state = 370; + this.state = 382; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LT) { - this.state = 366; + this.state = 378; this.match(ObjectiveCParser.LT); - this.state = 367; - this.protocolList(); - this.state = 368; + this.state = 379; + localctx.protocols = this.protocolList(); + this.state = 380; this.match(ObjectiveCParser.GT); } - this.state = 373; + this.state = 385; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LBRACE) { - this.state = 372; + this.state = 384; this.instanceVariables(); } - this.state = 376; + this.state = 388; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 72)) & ~0x1f) == 0 && ((1 << (_la - 72)) & ((1 << (ObjectiveCParser.PROPERTY - 72)) | (1 << (ObjectiveCParser.ATOMIC - 72)) | (1 << (ObjectiveCParser.NONATOMIC - 72)) | (1 << (ObjectiveCParser.RETAIN - 72)) | (1 << (ObjectiveCParser.ATTRIBUTE - 72)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 72)) | (1 << (ObjectiveCParser.BLOCK - 72)) | (1 << (ObjectiveCParser.BRIDGE - 72)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 72)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 72)) | (1 << (ObjectiveCParser.COVARIANT - 72)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 72)) | (1 << (ObjectiveCParser.DEPRECATED - 72)) | (1 << (ObjectiveCParser.KINDOF - 72)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 72)) | (1 << (ObjectiveCParser.TYPEOF - 72)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 72)) | (1 << (ObjectiveCParser.UNUSED - 72)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 72)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 72)) | (1 << (ObjectiveCParser.NULLABLE - 72)) | (1 << (ObjectiveCParser.NONNULL - 72)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 72)) | (1 << (ObjectiveCParser.NS_INLINE - 72)))) !== 0) || ((((_la - 104)) & ~0x1f) == 0 && ((1 << (_la - 104)) & ((1 << (ObjectiveCParser.NS_ENUM - 104)) | (1 << (ObjectiveCParser.NS_OPTIONS - 104)) | (1 << (ObjectiveCParser.ASSIGN - 104)) | (1 << (ObjectiveCParser.COPY - 104)) | (1 << (ObjectiveCParser.GETTER - 104)) | (1 << (ObjectiveCParser.SETTER - 104)) | (1 << (ObjectiveCParser.STRONG - 104)) | (1 << (ObjectiveCParser.READONLY - 104)) | (1 << (ObjectiveCParser.READWRITE - 104)) | (1 << (ObjectiveCParser.WEAK - 104)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 104)) | (1 << (ObjectiveCParser.IB_OUTLET - 104)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 104)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 104)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 104)) | (1 << (ObjectiveCParser.IDENTIFIER - 104)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { - this.state = 375; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 72)) & ~0x1f) == 0 && ((1 << (_la - 72)) & ((1 << (ObjectiveCParser.PROPERTY - 72)) | (1 << (ObjectiveCParser.ATOMIC - 72)) | (1 << (ObjectiveCParser.NONATOMIC - 72)) | (1 << (ObjectiveCParser.RETAIN - 72)) | (1 << (ObjectiveCParser.ATTRIBUTE - 72)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 72)) | (1 << (ObjectiveCParser.BLOCK - 72)) | (1 << (ObjectiveCParser.BRIDGE - 72)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 72)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 72)) | (1 << (ObjectiveCParser.COVARIANT - 72)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 72)) | (1 << (ObjectiveCParser.DEPRECATED - 72)) | (1 << (ObjectiveCParser.KINDOF - 72)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 72)) | (1 << (ObjectiveCParser.TYPEOF - 72)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 72)) | (1 << (ObjectiveCParser.UNUSED - 72)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 72)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 72)) | (1 << (ObjectiveCParser.NULLABLE - 72)) | (1 << (ObjectiveCParser.NONNULL - 72)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 72)) | (1 << (ObjectiveCParser.NS_INLINE - 72)))) !== 0) || ((((_la - 104)) & ~0x1f) == 0 && ((1 << (_la - 104)) & ((1 << (ObjectiveCParser.NS_ENUM - 104)) | (1 << (ObjectiveCParser.NS_OPTIONS - 104)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 104)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 104)) | (1 << (ObjectiveCParser.ASSIGN - 104)) | (1 << (ObjectiveCParser.COPY - 104)) | (1 << (ObjectiveCParser.GETTER - 104)) | (1 << (ObjectiveCParser.SETTER - 104)) | (1 << (ObjectiveCParser.STRONG - 104)) | (1 << (ObjectiveCParser.READONLY - 104)) | (1 << (ObjectiveCParser.READWRITE - 104)) | (1 << (ObjectiveCParser.WEAK - 104)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 104)) | (1 << (ObjectiveCParser.IB_OUTLET - 104)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 104)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 104)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 104)) | (1 << (ObjectiveCParser.IDENTIFIER - 104)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { + this.state = 387; this.interfaceDeclarationList(); } - this.state = 378; + this.state = 390; this.match(ObjectiveCParser.END); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -2606,37 +2883,37 @@ ObjectiveCParser.prototype.classImplementation = function() { var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 380; + this.state = 392; this.match(ObjectiveCParser.IMPLEMENTATION); - this.state = 381; + this.state = 393; localctx.className = this.genericTypeSpecifier(); - this.state = 384; + this.state = 396; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COLON) { - this.state = 382; + this.state = 394; this.match(ObjectiveCParser.COLON); - this.state = 383; + this.state = 395; localctx.superclassName = this.identifier(); } - this.state = 387; + this.state = 399; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LBRACE) { - this.state = 386; + this.state = 398; this.instanceVariables(); } - this.state = 390; + this.state = 402; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)))) !== 0) || ((((_la - 78)) & ~0x1f) == 0 && ((1 << (_la - 78)) & ((1 << (ObjectiveCParser.SYNTHESIZE - 78)) | (1 << (ObjectiveCParser.ATOMIC - 78)) | (1 << (ObjectiveCParser.NONATOMIC - 78)) | (1 << (ObjectiveCParser.RETAIN - 78)) | (1 << (ObjectiveCParser.ATTRIBUTE - 78)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 78)) | (1 << (ObjectiveCParser.BLOCK - 78)) | (1 << (ObjectiveCParser.BRIDGE - 78)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 78)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 78)) | (1 << (ObjectiveCParser.COVARIANT - 78)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 78)) | (1 << (ObjectiveCParser.DEPRECATED - 78)) | (1 << (ObjectiveCParser.KINDOF - 78)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 78)) | (1 << (ObjectiveCParser.TYPEOF - 78)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 78)) | (1 << (ObjectiveCParser.UNUSED - 78)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 78)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 78)) | (1 << (ObjectiveCParser.NULLABLE - 78)) | (1 << (ObjectiveCParser.NONNULL - 78)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 78)) | (1 << (ObjectiveCParser.NS_INLINE - 78)) | (1 << (ObjectiveCParser.NS_ENUM - 78)) | (1 << (ObjectiveCParser.NS_OPTIONS - 78)) | (1 << (ObjectiveCParser.ASSIGN - 78)) | (1 << (ObjectiveCParser.COPY - 78)) | (1 << (ObjectiveCParser.GETTER - 78)) | (1 << (ObjectiveCParser.SETTER - 78)))) !== 0) || ((((_la - 110)) & ~0x1f) == 0 && ((1 << (_la - 110)) & ((1 << (ObjectiveCParser.STRONG - 110)) | (1 << (ObjectiveCParser.READONLY - 110)) | (1 << (ObjectiveCParser.READWRITE - 110)) | (1 << (ObjectiveCParser.WEAK - 110)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 110)) | (1 << (ObjectiveCParser.IB_OUTLET - 110)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 110)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 110)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 110)) | (1 << (ObjectiveCParser.IDENTIFIER - 110)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { - this.state = 389; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)))) !== 0) || ((((_la - 78)) & ~0x1f) == 0 && ((1 << (_la - 78)) & ((1 << (ObjectiveCParser.SYNTHESIZE - 78)) | (1 << (ObjectiveCParser.ATOMIC - 78)) | (1 << (ObjectiveCParser.NONATOMIC - 78)) | (1 << (ObjectiveCParser.RETAIN - 78)) | (1 << (ObjectiveCParser.ATTRIBUTE - 78)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 78)) | (1 << (ObjectiveCParser.BLOCK - 78)) | (1 << (ObjectiveCParser.BRIDGE - 78)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 78)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 78)) | (1 << (ObjectiveCParser.COVARIANT - 78)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 78)) | (1 << (ObjectiveCParser.DEPRECATED - 78)) | (1 << (ObjectiveCParser.KINDOF - 78)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 78)) | (1 << (ObjectiveCParser.TYPEOF - 78)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 78)) | (1 << (ObjectiveCParser.UNUSED - 78)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 78)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 78)) | (1 << (ObjectiveCParser.NULLABLE - 78)) | (1 << (ObjectiveCParser.NONNULL - 78)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 78)) | (1 << (ObjectiveCParser.NS_INLINE - 78)) | (1 << (ObjectiveCParser.NS_ENUM - 78)) | (1 << (ObjectiveCParser.NS_OPTIONS - 78)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 78)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 78)) | (1 << (ObjectiveCParser.ASSIGN - 78)))) !== 0) || ((((_la - 110)) & ~0x1f) == 0 && ((1 << (_la - 110)) & ((1 << (ObjectiveCParser.COPY - 110)) | (1 << (ObjectiveCParser.GETTER - 110)) | (1 << (ObjectiveCParser.SETTER - 110)) | (1 << (ObjectiveCParser.STRONG - 110)) | (1 << (ObjectiveCParser.READONLY - 110)) | (1 << (ObjectiveCParser.READWRITE - 110)) | (1 << (ObjectiveCParser.WEAK - 110)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 110)) | (1 << (ObjectiveCParser.IB_OUTLET - 110)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 110)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 110)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 110)) | (1 << (ObjectiveCParser.IDENTIFIER - 110)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { + this.state = 401; this.implementationDefinitionList(); } - this.state = 392; + this.state = 404; this.match(ObjectiveCParser.END); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -2663,8 +2940,8 @@ function CategoryImplementationContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_categoryImplementation; - this.categoryName = null; // GenericTypeSpecifierContext - this.className = null; // IdentifierContext + this.className = null; // GenericTypeSpecifierContext + this.categoryName = null; // IdentifierContext return this; } @@ -2723,25 +3000,25 @@ ObjectiveCParser.prototype.categoryImplementation = function() { var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 394; + this.state = 406; this.match(ObjectiveCParser.IMPLEMENTATION); - this.state = 395; - localctx.categoryName = this.genericTypeSpecifier(); - this.state = 396; + this.state = 407; + localctx.className = this.genericTypeSpecifier(); + this.state = 408; this.match(ObjectiveCParser.LP); - this.state = 397; - localctx.className = this.identifier(); - this.state = 398; + this.state = 409; + localctx.categoryName = this.identifier(); + this.state = 410; this.match(ObjectiveCParser.RP); - this.state = 400; + this.state = 412; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)))) !== 0) || ((((_la - 78)) & ~0x1f) == 0 && ((1 << (_la - 78)) & ((1 << (ObjectiveCParser.SYNTHESIZE - 78)) | (1 << (ObjectiveCParser.ATOMIC - 78)) | (1 << (ObjectiveCParser.NONATOMIC - 78)) | (1 << (ObjectiveCParser.RETAIN - 78)) | (1 << (ObjectiveCParser.ATTRIBUTE - 78)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 78)) | (1 << (ObjectiveCParser.BLOCK - 78)) | (1 << (ObjectiveCParser.BRIDGE - 78)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 78)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 78)) | (1 << (ObjectiveCParser.COVARIANT - 78)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 78)) | (1 << (ObjectiveCParser.DEPRECATED - 78)) | (1 << (ObjectiveCParser.KINDOF - 78)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 78)) | (1 << (ObjectiveCParser.TYPEOF - 78)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 78)) | (1 << (ObjectiveCParser.UNUSED - 78)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 78)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 78)) | (1 << (ObjectiveCParser.NULLABLE - 78)) | (1 << (ObjectiveCParser.NONNULL - 78)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 78)) | (1 << (ObjectiveCParser.NS_INLINE - 78)) | (1 << (ObjectiveCParser.NS_ENUM - 78)) | (1 << (ObjectiveCParser.NS_OPTIONS - 78)) | (1 << (ObjectiveCParser.ASSIGN - 78)) | (1 << (ObjectiveCParser.COPY - 78)) | (1 << (ObjectiveCParser.GETTER - 78)) | (1 << (ObjectiveCParser.SETTER - 78)))) !== 0) || ((((_la - 110)) & ~0x1f) == 0 && ((1 << (_la - 110)) & ((1 << (ObjectiveCParser.STRONG - 110)) | (1 << (ObjectiveCParser.READONLY - 110)) | (1 << (ObjectiveCParser.READWRITE - 110)) | (1 << (ObjectiveCParser.WEAK - 110)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 110)) | (1 << (ObjectiveCParser.IB_OUTLET - 110)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 110)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 110)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 110)) | (1 << (ObjectiveCParser.IDENTIFIER - 110)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { - this.state = 399; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)))) !== 0) || ((((_la - 78)) & ~0x1f) == 0 && ((1 << (_la - 78)) & ((1 << (ObjectiveCParser.SYNTHESIZE - 78)) | (1 << (ObjectiveCParser.ATOMIC - 78)) | (1 << (ObjectiveCParser.NONATOMIC - 78)) | (1 << (ObjectiveCParser.RETAIN - 78)) | (1 << (ObjectiveCParser.ATTRIBUTE - 78)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 78)) | (1 << (ObjectiveCParser.BLOCK - 78)) | (1 << (ObjectiveCParser.BRIDGE - 78)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 78)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 78)) | (1 << (ObjectiveCParser.COVARIANT - 78)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 78)) | (1 << (ObjectiveCParser.DEPRECATED - 78)) | (1 << (ObjectiveCParser.KINDOF - 78)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 78)) | (1 << (ObjectiveCParser.TYPEOF - 78)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 78)) | (1 << (ObjectiveCParser.UNUSED - 78)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 78)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 78)) | (1 << (ObjectiveCParser.NULLABLE - 78)) | (1 << (ObjectiveCParser.NONNULL - 78)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 78)) | (1 << (ObjectiveCParser.NS_INLINE - 78)) | (1 << (ObjectiveCParser.NS_ENUM - 78)) | (1 << (ObjectiveCParser.NS_OPTIONS - 78)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 78)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 78)) | (1 << (ObjectiveCParser.ASSIGN - 78)))) !== 0) || ((((_la - 110)) & ~0x1f) == 0 && ((1 << (_la - 110)) & ((1 << (ObjectiveCParser.COPY - 110)) | (1 << (ObjectiveCParser.GETTER - 110)) | (1 << (ObjectiveCParser.SETTER - 110)) | (1 << (ObjectiveCParser.STRONG - 110)) | (1 << (ObjectiveCParser.READONLY - 110)) | (1 << (ObjectiveCParser.READWRITE - 110)) | (1 << (ObjectiveCParser.WEAK - 110)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 110)) | (1 << (ObjectiveCParser.IB_OUTLET - 110)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 110)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 110)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 110)) | (1 << (ObjectiveCParser.IDENTIFIER - 110)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { + this.state = 411; this.implementationDefinitionList(); } - this.state = 402; + this.state = 414; this.match(ObjectiveCParser.END); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -2817,21 +3094,21 @@ ObjectiveCParser.prototype.genericTypeSpecifier = function() { this.enterRule(localctx, 14, ObjectiveCParser.RULE_genericTypeSpecifier); try { this.enterOuterAlt(localctx, 1); - this.state = 404; + this.state = 416; this.identifier(); - this.state = 410; + this.state = 422; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,19,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,22,this._ctx); if(la_===1) { - this.state = 405; + this.state = 417; this.match(ObjectiveCParser.LT); - this.state = 406; + this.state = 418; this.protocolList(); - this.state = 407; + this.state = 419; this.match(ObjectiveCParser.GT); } else if(la_===2) { - this.state = 409; + this.state = 421; this.genericsSpecifier(); } @@ -2861,6 +3138,7 @@ function ProtocolDeclarationContext(parser, parent, invokingState) { this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_protocolDeclaration; this.name = null; // ProtocolNameContext + this.protocols = null; // ProtocolListContext return this; } @@ -2890,12 +3168,19 @@ ProtocolDeclarationContext.prototype.macro = function(i) { } }; -ProtocolDeclarationContext.prototype.LT = function() { - return this.getToken(ObjectiveCParser.LT, 0); +ProtocolDeclarationContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } }; -ProtocolDeclarationContext.prototype.protocolList = function() { - return this.getTypedRuleContext(ProtocolListContext,0); +ProtocolDeclarationContext.prototype.LT = function() { + return this.getToken(ObjectiveCParser.LT, 0); }; ProtocolDeclarationContext.prototype.GT = function() { @@ -2913,6 +3198,10 @@ ProtocolDeclarationContext.prototype.protocolDeclarationSection = function(i) { } }; +ProtocolDeclarationContext.prototype.protocolList = function() { + return this.getTypedRuleContext(ProtocolListContext,0); +}; + ProtocolDeclarationContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterProtocolDeclaration(this); @@ -2937,43 +3226,101 @@ ObjectiveCParser.prototype.protocolDeclaration = function() { var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 415; - this._errHandler.sync(this); - _la = this._input.LA(1); - while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 412; - this.macro(); - this.state = 417; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 418; - this.match(ObjectiveCParser.PROTOCOL); - this.state = 419; - localctx.name = this.protocolName(); - this.state = 424; - this._errHandler.sync(this); - _la = this._input.LA(1); - if(_la===ObjectiveCParser.LT) { - this.state = 420; - this.match(ObjectiveCParser.LT); - this.state = 421; - this.protocolList(); - this.state = 422; - this.match(ObjectiveCParser.GT); - } - - this.state = 429; + this.state = 428; this._errHandler.sync(this); _la = this._input.LA(1); - while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 70)) & ~0x1f) == 0 && ((1 << (_la - 70)) & ((1 << (ObjectiveCParser.OPTIONAL - 70)) | (1 << (ObjectiveCParser.PROPERTY - 70)) | (1 << (ObjectiveCParser.REQUIRED - 70)) | (1 << (ObjectiveCParser.ATOMIC - 70)) | (1 << (ObjectiveCParser.NONATOMIC - 70)) | (1 << (ObjectiveCParser.RETAIN - 70)) | (1 << (ObjectiveCParser.ATTRIBUTE - 70)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 70)) | (1 << (ObjectiveCParser.BLOCK - 70)) | (1 << (ObjectiveCParser.BRIDGE - 70)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 70)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 70)) | (1 << (ObjectiveCParser.COVARIANT - 70)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 70)) | (1 << (ObjectiveCParser.DEPRECATED - 70)) | (1 << (ObjectiveCParser.KINDOF - 70)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 70)) | (1 << (ObjectiveCParser.TYPEOF - 70)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 70)) | (1 << (ObjectiveCParser.UNUSED - 70)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 70)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 70)) | (1 << (ObjectiveCParser.NULLABLE - 70)) | (1 << (ObjectiveCParser.NONNULL - 70)))) !== 0) || ((((_la - 102)) & ~0x1f) == 0 && ((1 << (_la - 102)) & ((1 << (ObjectiveCParser.NULL_RESETTABLE - 102)) | (1 << (ObjectiveCParser.NS_INLINE - 102)) | (1 << (ObjectiveCParser.NS_ENUM - 102)) | (1 << (ObjectiveCParser.NS_OPTIONS - 102)) | (1 << (ObjectiveCParser.ASSIGN - 102)) | (1 << (ObjectiveCParser.COPY - 102)) | (1 << (ObjectiveCParser.GETTER - 102)) | (1 << (ObjectiveCParser.SETTER - 102)) | (1 << (ObjectiveCParser.STRONG - 102)) | (1 << (ObjectiveCParser.READONLY - 102)) | (1 << (ObjectiveCParser.READWRITE - 102)) | (1 << (ObjectiveCParser.WEAK - 102)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 102)) | (1 << (ObjectiveCParser.IB_OUTLET - 102)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 102)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 102)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 102)) | (1 << (ObjectiveCParser.IDENTIFIER - 102)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { this.state = 426; - this.protocolDeclarationSection(); - this.state = 431; this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 432; + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 424; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 425; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 430; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 431; + this.match(ObjectiveCParser.PROTOCOL); + this.state = 432; + localctx.name = this.protocolName(); + this.state = 437; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(_la===ObjectiveCParser.LT) { + this.state = 433; + this.match(ObjectiveCParser.LT); + this.state = 434; + localctx.protocols = this.protocolList(); + this.state = 435; + this.match(ObjectiveCParser.GT); + } + + this.state = 442; + this._errHandler.sync(this); + _la = this._input.LA(1); + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 70)) & ~0x1f) == 0 && ((1 << (_la - 70)) & ((1 << (ObjectiveCParser.OPTIONAL - 70)) | (1 << (ObjectiveCParser.PROPERTY - 70)) | (1 << (ObjectiveCParser.REQUIRED - 70)) | (1 << (ObjectiveCParser.ATOMIC - 70)) | (1 << (ObjectiveCParser.NONATOMIC - 70)) | (1 << (ObjectiveCParser.RETAIN - 70)) | (1 << (ObjectiveCParser.ATTRIBUTE - 70)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 70)) | (1 << (ObjectiveCParser.BLOCK - 70)) | (1 << (ObjectiveCParser.BRIDGE - 70)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 70)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 70)) | (1 << (ObjectiveCParser.COVARIANT - 70)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 70)) | (1 << (ObjectiveCParser.DEPRECATED - 70)) | (1 << (ObjectiveCParser.KINDOF - 70)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 70)) | (1 << (ObjectiveCParser.TYPEOF - 70)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 70)) | (1 << (ObjectiveCParser.UNUSED - 70)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 70)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 70)) | (1 << (ObjectiveCParser.NULLABLE - 70)) | (1 << (ObjectiveCParser.NONNULL - 70)))) !== 0) || ((((_la - 102)) & ~0x1f) == 0 && ((1 << (_la - 102)) & ((1 << (ObjectiveCParser.NULL_RESETTABLE - 102)) | (1 << (ObjectiveCParser.NS_INLINE - 102)) | (1 << (ObjectiveCParser.NS_ENUM - 102)) | (1 << (ObjectiveCParser.NS_OPTIONS - 102)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 102)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 102)) | (1 << (ObjectiveCParser.ASSIGN - 102)) | (1 << (ObjectiveCParser.COPY - 102)) | (1 << (ObjectiveCParser.GETTER - 102)) | (1 << (ObjectiveCParser.SETTER - 102)) | (1 << (ObjectiveCParser.STRONG - 102)) | (1 << (ObjectiveCParser.READONLY - 102)) | (1 << (ObjectiveCParser.READWRITE - 102)) | (1 << (ObjectiveCParser.WEAK - 102)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 102)) | (1 << (ObjectiveCParser.IB_OUTLET - 102)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 102)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 102)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 102)) | (1 << (ObjectiveCParser.IDENTIFIER - 102)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { + this.state = 439; + this.protocolDeclarationSection(); + this.state = 444; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 445; this.match(ObjectiveCParser.END); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -3049,13 +3396,13 @@ ObjectiveCParser.prototype.protocolDeclarationSection = function() { this.enterRule(localctx, 18, ObjectiveCParser.RULE_protocolDeclarationSection); var _la = 0; // Token type try { - this.state = 446; + this.state = 459; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.OPTIONAL: case ObjectiveCParser.REQUIRED: this.enterOuterAlt(localctx, 1); - this.state = 434; + this.state = 447; localctx.modifier = this._input.LT(1); _la = this._input.LA(1); if(!(_la===ObjectiveCParser.OPTIONAL || _la===ObjectiveCParser.REQUIRED)) { @@ -3065,17 +3412,17 @@ ObjectiveCParser.prototype.protocolDeclarationSection = function() { this._errHandler.reportMatch(this); this.consume(); } - this.state = 438; + this.state = 451; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,23,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,27,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 435; + this.state = 448; this.interfaceDeclarationList(); } - this.state = 440; + this.state = 453; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,23,this._ctx); + _alt = this._interp.adaptivePredict(this._input,27,this._ctx); } break; @@ -3140,6 +3487,8 @@ ObjectiveCParser.prototype.protocolDeclarationSection = function() { case ObjectiveCParser.NS_INLINE: case ObjectiveCParser.NS_ENUM: case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.NS_CLOSED_ENUM: + case ObjectiveCParser.NS_ERROR_ENUM: case ObjectiveCParser.ASSIGN: case ObjectiveCParser.COPY: case ObjectiveCParser.GETTER: @@ -3157,21 +3506,21 @@ ObjectiveCParser.prototype.protocolDeclarationSection = function() { case ObjectiveCParser.ADD: case ObjectiveCParser.SUB: this.enterOuterAlt(localctx, 2); - this.state = 442; + this.state = 455; this._errHandler.sync(this); var _alt = 1; do { switch (_alt) { case 1: - this.state = 441; + this.state = 454; this.interfaceDeclarationList(); break; default: throw new antlr4.error.NoViableAltException(this); } - this.state = 444; + this.state = 457; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,24, this._ctx); + _alt = this._interp.adaptivePredict(this._input,28, this._ctx); } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); break; default: @@ -3243,11 +3592,11 @@ ObjectiveCParser.prototype.protocolDeclarationList = function() { this.enterRule(localctx, 20, ObjectiveCParser.RULE_protocolDeclarationList); try { this.enterOuterAlt(localctx, 1); - this.state = 448; + this.state = 461; this.match(ObjectiveCParser.PROTOCOL); - this.state = 449; + this.state = 462; this.protocolList(); - this.state = 450; + this.state = 463; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -3264,6 +3613,91 @@ ObjectiveCParser.prototype.protocolDeclarationList = function() { }; +function ClassDeclarationContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ObjectiveCParser.RULE_classDeclaration; + return this; +} + +ClassDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +ClassDeclarationContext.prototype.constructor = ClassDeclarationContext; + +ClassDeclarationContext.prototype.identifier = function() { + return this.getTypedRuleContext(IdentifierContext,0); +}; + +ClassDeclarationContext.prototype.LT = function() { + return this.getToken(ObjectiveCParser.LT, 0); +}; + +ClassDeclarationContext.prototype.protocolList = function() { + return this.getTypedRuleContext(ProtocolListContext,0); +}; + +ClassDeclarationContext.prototype.GT = function() { + return this.getToken(ObjectiveCParser.GT, 0); +}; + +ClassDeclarationContext.prototype.enterRule = function(listener) { + if(listener instanceof ObjectiveCParserListener ) { + listener.enterClassDeclaration(this); + } +}; + +ClassDeclarationContext.prototype.exitRule = function(listener) { + if(listener instanceof ObjectiveCParserListener ) { + listener.exitClassDeclaration(this); + } +}; + + + + +ObjectiveCParser.ClassDeclarationContext = ClassDeclarationContext; + +ObjectiveCParser.prototype.classDeclaration = function() { + + var localctx = new ClassDeclarationContext(this, this._ctx, this.state); + this.enterRule(localctx, 22, ObjectiveCParser.RULE_classDeclaration); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 465; + this.identifier(); + this.state = 470; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(_la===ObjectiveCParser.LT) { + this.state = 466; + this.match(ObjectiveCParser.LT); + this.state = 467; + this.protocolList(); + this.state = 468; + this.match(ObjectiveCParser.GT); + } + + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + + function ClassDeclarationListContext(parser, parent, invokingState) { if(parent===undefined) { parent = null; @@ -3284,14 +3718,14 @@ ClassDeclarationListContext.prototype.CLASS = function() { return this.getToken(ObjectiveCParser.CLASS, 0); }; -ClassDeclarationListContext.prototype.identifier = function(i) { +ClassDeclarationListContext.prototype.classDeclaration = function(i) { if(i===undefined) { i = null; } if(i===null) { - return this.getTypedRuleContexts(IdentifierContext); + return this.getTypedRuleContexts(ClassDeclarationContext); } else { - return this.getTypedRuleContext(IdentifierContext,i); + return this.getTypedRuleContext(ClassDeclarationContext,i); } }; @@ -3331,27 +3765,27 @@ ObjectiveCParser.ClassDeclarationListContext = ClassDeclarationListContext; ObjectiveCParser.prototype.classDeclarationList = function() { var localctx = new ClassDeclarationListContext(this, this._ctx, this.state); - this.enterRule(localctx, 22, ObjectiveCParser.RULE_classDeclarationList); + this.enterRule(localctx, 24, ObjectiveCParser.RULE_classDeclarationList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 452; + this.state = 472; this.match(ObjectiveCParser.CLASS); - this.state = 453; - this.identifier(); - this.state = 458; + this.state = 473; + this.classDeclaration(); + this.state = 478; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 454; + this.state = 474; this.match(ObjectiveCParser.COMMA); - this.state = 455; - this.identifier(); - this.state = 460; + this.state = 475; + this.classDeclaration(); + this.state = 480; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 461; + this.state = 481; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -3378,6 +3812,8 @@ function ProtocolListContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_protocolList; + this._protocolName = null; // ProtocolNameContext + this.list = []; // of ProtocolNameContexts return this; } @@ -3427,21 +3863,23 @@ ObjectiveCParser.ProtocolListContext = ProtocolListContext; ObjectiveCParser.prototype.protocolList = function() { var localctx = new ProtocolListContext(this, this._ctx, this.state); - this.enterRule(localctx, 24, ObjectiveCParser.RULE_protocolList); + this.enterRule(localctx, 26, ObjectiveCParser.RULE_protocolList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 463; - this.protocolName(); - this.state = 468; + this.state = 483; + localctx._protocolName = this.protocolName(); + localctx.list.push(localctx._protocolName); + this.state = 488; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 464; + this.state = 484; this.match(ObjectiveCParser.COMMA); - this.state = 465; - this.protocolName(); - this.state = 470; + this.state = 485; + localctx._protocolName = this.protocolName(); + localctx.list.push(localctx._protocolName); + this.state = 490; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -3524,41 +3962,40 @@ ObjectiveCParser.PropertyDeclarationContext = PropertyDeclarationContext; ObjectiveCParser.prototype.propertyDeclaration = function() { var localctx = new PropertyDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 26, ObjectiveCParser.RULE_propertyDeclaration); - var _la = 0; // Token type + this.enterRule(localctx, 28, ObjectiveCParser.RULE_propertyDeclaration); try { this.enterOuterAlt(localctx, 1); - this.state = 471; + this.state = 491; this.match(ObjectiveCParser.PROPERTY); - this.state = 476; + this.state = 496; this._errHandler.sync(this); - _la = this._input.LA(1); - if(_la===ObjectiveCParser.LP) { - this.state = 472; + var la_ = this._interp.adaptivePredict(this._input,33,this._ctx); + if(la_===1) { + this.state = 492; this.match(ObjectiveCParser.LP); - this.state = 473; + this.state = 493; this.propertyAttributesList(); - this.state = 474; + this.state = 494; this.match(ObjectiveCParser.RP); - } - this.state = 479; + } + this.state = 499; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,29,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,34,this._ctx); if(la_===1) { - this.state = 478; + this.state = 498; this.ibOutletQualifier(); } - this.state = 482; + this.state = 502; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,30,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,35,this._ctx); if(la_===1) { - this.state = 481; + this.state = 501; this.match(ObjectiveCParser.IB_INSPECTABLE); } - this.state = 484; + this.state = 504; this.fieldDeclaration(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -3634,21 +4071,21 @@ ObjectiveCParser.PropertyAttributesListContext = PropertyAttributesListContext; ObjectiveCParser.prototype.propertyAttributesList = function() { var localctx = new PropertyAttributesListContext(this, this._ctx, this.state); - this.enterRule(localctx, 28, ObjectiveCParser.RULE_propertyAttributesList); + this.enterRule(localctx, 30, ObjectiveCParser.RULE_propertyAttributesList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 486; + this.state = 506; this.propertyAttribute(); - this.state = 491; + this.state = 511; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 487; + this.state = 507; this.match(ObjectiveCParser.COMMA); - this.state = 488; + this.state = 508; this.propertyAttribute(); - this.state = 493; + this.state = 513; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -3767,103 +4204,103 @@ ObjectiveCParser.PropertyAttributeContext = PropertyAttributeContext; ObjectiveCParser.prototype.propertyAttribute = function() { var localctx = new PropertyAttributeContext(this, this._ctx, this.state); - this.enterRule(localctx, 30, ObjectiveCParser.RULE_propertyAttribute); + this.enterRule(localctx, 32, ObjectiveCParser.RULE_propertyAttribute); try { - this.state = 514; + this.state = 534; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,32,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,37,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 494; + this.state = 514; this.match(ObjectiveCParser.ATOMIC); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 495; + this.state = 515; this.match(ObjectiveCParser.NONATOMIC); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 496; + this.state = 516; this.match(ObjectiveCParser.STRONG); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 497; + this.state = 517; this.match(ObjectiveCParser.WEAK); break; case 5: this.enterOuterAlt(localctx, 5); - this.state = 498; + this.state = 518; this.match(ObjectiveCParser.RETAIN); break; case 6: this.enterOuterAlt(localctx, 6); - this.state = 499; + this.state = 519; this.match(ObjectiveCParser.ASSIGN); break; case 7: this.enterOuterAlt(localctx, 7); - this.state = 500; + this.state = 520; this.match(ObjectiveCParser.UNSAFE_UNRETAINED); break; case 8: this.enterOuterAlt(localctx, 8); - this.state = 501; + this.state = 521; this.match(ObjectiveCParser.COPY); break; case 9: this.enterOuterAlt(localctx, 9); - this.state = 502; + this.state = 522; this.match(ObjectiveCParser.READONLY); break; case 10: this.enterOuterAlt(localctx, 10); - this.state = 503; + this.state = 523; this.match(ObjectiveCParser.READWRITE); break; case 11: this.enterOuterAlt(localctx, 11); - this.state = 504; + this.state = 524; this.match(ObjectiveCParser.GETTER); - this.state = 505; + this.state = 525; this.match(ObjectiveCParser.ASSIGNMENT); - this.state = 506; + this.state = 526; this.identifier(); break; case 12: this.enterOuterAlt(localctx, 12); - this.state = 507; + this.state = 527; this.match(ObjectiveCParser.SETTER); - this.state = 508; + this.state = 528; this.match(ObjectiveCParser.ASSIGNMENT); - this.state = 509; + this.state = 529; this.identifier(); - this.state = 510; + this.state = 530; this.match(ObjectiveCParser.COLON); break; case 13: this.enterOuterAlt(localctx, 13); - this.state = 512; + this.state = 532; this.nullabilitySpecifier(); break; case 14: this.enterOuterAlt(localctx, 14); - this.state = 513; + this.state = 533; this.identifier(); break; @@ -3893,6 +4330,7 @@ function ProtocolNameContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_protocolName; + this.name = null; // TypeNameContext return this; } @@ -3911,8 +4349,16 @@ ProtocolNameContext.prototype.GT = function() { return this.getToken(ObjectiveCParser.GT, 0); }; -ProtocolNameContext.prototype.identifier = function() { - return this.getTypedRuleContext(IdentifierContext,0); +ProtocolNameContext.prototype.typeName = function() { + return this.getTypedRuleContext(TypeNameContext,0); +}; + +ProtocolNameContext.prototype.COLON = function() { + return this.getToken(ObjectiveCParser.COLON, 0); +}; + +ProtocolNameContext.prototype.typeSpecifier = function() { + return this.getTypedRuleContext(TypeSpecifierContext,0); }; ProtocolNameContext.prototype.COVARIANT = function() { @@ -3943,21 +4389,41 @@ ObjectiveCParser.ProtocolNameContext = ProtocolNameContext; ObjectiveCParser.prototype.protocolName = function() { var localctx = new ProtocolNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 32, ObjectiveCParser.RULE_protocolName); + this.enterRule(localctx, 34, ObjectiveCParser.RULE_protocolName); var _la = 0; // Token type try { - this.state = 524; + this.state = 548; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.LT: this.enterOuterAlt(localctx, 1); - this.state = 516; + this.state = 536; this.match(ObjectiveCParser.LT); - this.state = 517; + this.state = 537; this.protocolList(); - this.state = 518; + this.state = 538; this.match(ObjectiveCParser.GT); break; + case ObjectiveCParser.AUTO: + case ObjectiveCParser.CHAR: + case ObjectiveCParser.CONST: + case ObjectiveCParser.DOUBLE: + case ObjectiveCParser.ENUM: + case ObjectiveCParser.EXTERN: + case ObjectiveCParser.FLOAT: + case ObjectiveCParser.INLINE: + case ObjectiveCParser.INT: + case ObjectiveCParser.LONG: + case ObjectiveCParser.REGISTER: + case ObjectiveCParser.RESTRICT: + case ObjectiveCParser.SHORT: + case ObjectiveCParser.SIGNED: + case ObjectiveCParser.STATIC: + case ObjectiveCParser.STRUCT: + case ObjectiveCParser.UNION: + case ObjectiveCParser.UNSIGNED: + case ObjectiveCParser.VOID: + case ObjectiveCParser.VOLATILE: case ObjectiveCParser.BOOL: case ObjectiveCParser.Class: case ObjectiveCParser.BYCOPY: @@ -3975,15 +4441,21 @@ ObjectiveCParser.prototype.protocolName = function() { case ObjectiveCParser.ATOMIC: case ObjectiveCParser.NONATOMIC: case ObjectiveCParser.RETAIN: + case ObjectiveCParser.ATTRIBUTE: case ObjectiveCParser.AUTORELEASING_QUALIFIER: case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE: case ObjectiveCParser.BRIDGE_RETAINED: case ObjectiveCParser.BRIDGE_TRANSFER: case ObjectiveCParser.COVARIANT: case ObjectiveCParser.CONTRAVARIANT: case ObjectiveCParser.DEPRECATED: case ObjectiveCParser.KINDOF: + case ObjectiveCParser.STRONG_QUALIFIER: + case ObjectiveCParser.TYPEOF: + case ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER: case ObjectiveCParser.UNUSED: + case ObjectiveCParser.WEAK_QUALIFIER: case ObjectiveCParser.NULL_UNSPECIFIED: case ObjectiveCParser.NULLABLE: case ObjectiveCParser.NONNULL: @@ -3991,6 +4463,8 @@ ObjectiveCParser.prototype.protocolName = function() { case ObjectiveCParser.NS_INLINE: case ObjectiveCParser.NS_ENUM: case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.NS_CLOSED_ENUM: + case ObjectiveCParser.NS_ERROR_ENUM: case ObjectiveCParser.ASSIGN: case ObjectiveCParser.COPY: case ObjectiveCParser.GETTER: @@ -4005,12 +4479,13 @@ ObjectiveCParser.prototype.protocolName = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: + case ObjectiveCParser.LP: this.enterOuterAlt(localctx, 2); - this.state = 521; + this.state = 541; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,33,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,38,this._ctx); if(la_===1) { - this.state = 520; + this.state = 540; _la = this._input.LA(1); if(!(_la===ObjectiveCParser.COVARIANT || _la===ObjectiveCParser.CONTRAVARIANT)) { this._errHandler.recoverInline(this); @@ -4021,8 +4496,18 @@ ObjectiveCParser.prototype.protocolName = function() { } } - this.state = 523; - this.identifier(); + this.state = 543; + localctx.name = this.typeName(); + this.state = 546; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(_la===ObjectiveCParser.COLON) { + this.state = 544; + this.match(ObjectiveCParser.COLON); + this.state = 545; + this.typeSpecifier(); + } + break; default: throw new antlr4.error.NoViableAltException(this); @@ -4097,23 +4582,23 @@ ObjectiveCParser.InstanceVariablesContext = InstanceVariablesContext; ObjectiveCParser.prototype.instanceVariables = function() { var localctx = new InstanceVariablesContext(this, this._ctx, this.state); - this.enterRule(localctx, 34, ObjectiveCParser.RULE_instanceVariables); + this.enterRule(localctx, 36, ObjectiveCParser.RULE_instanceVariables); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 526; + this.state = 550; this.match(ObjectiveCParser.LBRACE); - this.state = 530; + this.state = 554; this._errHandler.sync(this); _la = this._input.LA(1); - while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 68)) & ~0x1f) == 0 && ((1 << (_la - 68)) & ((1 << (ObjectiveCParser.PACKAGE - 68)) | (1 << (ObjectiveCParser.PRIVATE - 68)) | (1 << (ObjectiveCParser.PROTECTED - 68)) | (1 << (ObjectiveCParser.PUBLIC - 68)) | (1 << (ObjectiveCParser.ATOMIC - 68)) | (1 << (ObjectiveCParser.NONATOMIC - 68)) | (1 << (ObjectiveCParser.RETAIN - 68)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 68)) | (1 << (ObjectiveCParser.BLOCK - 68)) | (1 << (ObjectiveCParser.BRIDGE - 68)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 68)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 68)) | (1 << (ObjectiveCParser.COVARIANT - 68)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 68)) | (1 << (ObjectiveCParser.DEPRECATED - 68)) | (1 << (ObjectiveCParser.KINDOF - 68)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 68)) | (1 << (ObjectiveCParser.TYPEOF - 68)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 68)) | (1 << (ObjectiveCParser.UNUSED - 68)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 68)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 68)))) !== 0) || ((((_la - 100)) & ~0x1f) == 0 && ((1 << (_la - 100)) & ((1 << (ObjectiveCParser.NULLABLE - 100)) | (1 << (ObjectiveCParser.NONNULL - 100)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 100)) | (1 << (ObjectiveCParser.NS_INLINE - 100)) | (1 << (ObjectiveCParser.NS_ENUM - 100)) | (1 << (ObjectiveCParser.NS_OPTIONS - 100)) | (1 << (ObjectiveCParser.ASSIGN - 100)) | (1 << (ObjectiveCParser.COPY - 100)) | (1 << (ObjectiveCParser.GETTER - 100)) | (1 << (ObjectiveCParser.SETTER - 100)) | (1 << (ObjectiveCParser.STRONG - 100)) | (1 << (ObjectiveCParser.READONLY - 100)) | (1 << (ObjectiveCParser.READWRITE - 100)) | (1 << (ObjectiveCParser.WEAK - 100)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 100)) | (1 << (ObjectiveCParser.IB_OUTLET - 100)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 100)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 100)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 100)) | (1 << (ObjectiveCParser.IDENTIFIER - 100)))) !== 0)) { - this.state = 527; + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 68)) & ~0x1f) == 0 && ((1 << (_la - 68)) & ((1 << (ObjectiveCParser.PACKAGE - 68)) | (1 << (ObjectiveCParser.PRIVATE - 68)) | (1 << (ObjectiveCParser.PROTECTED - 68)) | (1 << (ObjectiveCParser.PUBLIC - 68)) | (1 << (ObjectiveCParser.ATOMIC - 68)) | (1 << (ObjectiveCParser.NONATOMIC - 68)) | (1 << (ObjectiveCParser.RETAIN - 68)) | (1 << (ObjectiveCParser.ATTRIBUTE - 68)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 68)) | (1 << (ObjectiveCParser.BLOCK - 68)) | (1 << (ObjectiveCParser.BRIDGE - 68)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 68)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 68)) | (1 << (ObjectiveCParser.COVARIANT - 68)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 68)) | (1 << (ObjectiveCParser.DEPRECATED - 68)) | (1 << (ObjectiveCParser.KINDOF - 68)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 68)) | (1 << (ObjectiveCParser.TYPEOF - 68)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 68)) | (1 << (ObjectiveCParser.UNUSED - 68)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 68)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 68)))) !== 0) || ((((_la - 100)) & ~0x1f) == 0 && ((1 << (_la - 100)) & ((1 << (ObjectiveCParser.NULLABLE - 100)) | (1 << (ObjectiveCParser.NONNULL - 100)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 100)) | (1 << (ObjectiveCParser.NS_INLINE - 100)) | (1 << (ObjectiveCParser.NS_ENUM - 100)) | (1 << (ObjectiveCParser.NS_OPTIONS - 100)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 100)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 100)) | (1 << (ObjectiveCParser.ASSIGN - 100)) | (1 << (ObjectiveCParser.COPY - 100)) | (1 << (ObjectiveCParser.GETTER - 100)) | (1 << (ObjectiveCParser.SETTER - 100)) | (1 << (ObjectiveCParser.STRONG - 100)) | (1 << (ObjectiveCParser.READONLY - 100)) | (1 << (ObjectiveCParser.READWRITE - 100)) | (1 << (ObjectiveCParser.WEAK - 100)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 100)) | (1 << (ObjectiveCParser.IB_OUTLET - 100)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 100)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 100)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 100)) | (1 << (ObjectiveCParser.IDENTIFIER - 100)) | (1 << (ObjectiveCParser.LP - 100)))) !== 0)) { + this.state = 551; this.visibilitySection(); - this.state = 532; + this.state = 556; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 533; + this.state = 557; this.match(ObjectiveCParser.RBRACE); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -4181,9 +4666,9 @@ ObjectiveCParser.VisibilitySectionContext = VisibilitySectionContext; ObjectiveCParser.prototype.visibilitySection = function() { var localctx = new VisibilitySectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 36, ObjectiveCParser.RULE_visibilitySection); + this.enterRule(localctx, 38, ObjectiveCParser.RULE_visibilitySection); try { - this.state = 547; + this.state = 571; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.PACKAGE: @@ -4191,33 +4676,37 @@ ObjectiveCParser.prototype.visibilitySection = function() { case ObjectiveCParser.PROTECTED: case ObjectiveCParser.PUBLIC: this.enterOuterAlt(localctx, 1); - this.state = 535; + this.state = 559; this.accessModifier(); - this.state = 539; + this.state = 563; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,36,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,42,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 536; + this.state = 560; this.fieldDeclaration(); } - this.state = 541; + this.state = 565; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,36,this._ctx); + _alt = this._interp.adaptivePredict(this._input,42,this._ctx); } break; + case ObjectiveCParser.AUTO: case ObjectiveCParser.CHAR: case ObjectiveCParser.CONST: case ObjectiveCParser.DOUBLE: case ObjectiveCParser.ENUM: + case ObjectiveCParser.EXTERN: case ObjectiveCParser.FLOAT: case ObjectiveCParser.INLINE: case ObjectiveCParser.INT: case ObjectiveCParser.LONG: + case ObjectiveCParser.REGISTER: case ObjectiveCParser.RESTRICT: case ObjectiveCParser.SHORT: case ObjectiveCParser.SIGNED: + case ObjectiveCParser.STATIC: case ObjectiveCParser.STRUCT: case ObjectiveCParser.UNION: case ObjectiveCParser.UNSIGNED: @@ -4240,6 +4729,7 @@ ObjectiveCParser.prototype.visibilitySection = function() { case ObjectiveCParser.ATOMIC: case ObjectiveCParser.NONATOMIC: case ObjectiveCParser.RETAIN: + case ObjectiveCParser.ATTRIBUTE: case ObjectiveCParser.AUTORELEASING_QUALIFIER: case ObjectiveCParser.BLOCK: case ObjectiveCParser.BRIDGE: @@ -4261,6 +4751,8 @@ ObjectiveCParser.prototype.visibilitySection = function() { case ObjectiveCParser.NS_INLINE: case ObjectiveCParser.NS_ENUM: case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.NS_CLOSED_ENUM: + case ObjectiveCParser.NS_ERROR_ENUM: case ObjectiveCParser.ASSIGN: case ObjectiveCParser.COPY: case ObjectiveCParser.GETTER: @@ -4275,22 +4767,23 @@ ObjectiveCParser.prototype.visibilitySection = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: + case ObjectiveCParser.LP: this.enterOuterAlt(localctx, 2); - this.state = 543; + this.state = 567; this._errHandler.sync(this); var _alt = 1; do { switch (_alt) { case 1: - this.state = 542; + this.state = 566; this.fieldDeclaration(); break; default: throw new antlr4.error.NoViableAltException(this); } - this.state = 545; + this.state = 569; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,37, this._ctx); + _alt = this._interp.adaptivePredict(this._input,43, this._ctx); } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); break; default: @@ -4363,11 +4856,11 @@ ObjectiveCParser.AccessModifierContext = AccessModifierContext; ObjectiveCParser.prototype.accessModifier = function() { var localctx = new AccessModifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 38, ObjectiveCParser.RULE_accessModifier); + this.enterRule(localctx, 40, ObjectiveCParser.RULE_accessModifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 549; + this.state = 573; _la = this._input.LA(1); if(!(((((_la - 68)) & ~0x1f) == 0 && ((1 << (_la - 68)) & ((1 << (ObjectiveCParser.PACKAGE - 68)) | (1 << (ObjectiveCParser.PRIVATE - 68)) | (1 << (ObjectiveCParser.PROTECTED - 68)) | (1 << (ObjectiveCParser.PUBLIC - 68)))) !== 0))) { this._errHandler.recoverInline(this); @@ -4482,41 +4975,41 @@ ObjectiveCParser.InterfaceDeclarationListContext = InterfaceDeclarationListConte ObjectiveCParser.prototype.interfaceDeclarationList = function() { var localctx = new InterfaceDeclarationListContext(this, this._ctx, this.state); - this.enterRule(localctx, 40, ObjectiveCParser.RULE_interfaceDeclarationList); + this.enterRule(localctx, 42, ObjectiveCParser.RULE_interfaceDeclarationList); try { this.enterOuterAlt(localctx, 1); - this.state = 556; + this.state = 580; this._errHandler.sync(this); var _alt = 1; do { switch (_alt) { case 1: - this.state = 556; + this.state = 580; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,39,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,45,this._ctx); switch(la_) { case 1: - this.state = 551; + this.state = 575; this.declaration(); break; case 2: - this.state = 552; + this.state = 576; this.classMethodDeclaration(); break; case 3: - this.state = 553; + this.state = 577; this.instanceMethodDeclaration(); break; case 4: - this.state = 554; + this.state = 578; this.propertyDeclaration(); break; case 5: - this.state = 555; + this.state = 579; this.functionDeclaration(); break; @@ -4525,9 +5018,9 @@ ObjectiveCParser.prototype.interfaceDeclarationList = function() { default: throw new antlr4.error.NoViableAltException(this); } - this.state = 558; + this.state = 582; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,40, this._ctx); + _alt = this._interp.adaptivePredict(this._input,46, this._ctx); } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -4588,12 +5081,12 @@ ObjectiveCParser.ClassMethodDeclarationContext = ClassMethodDeclarationContext; ObjectiveCParser.prototype.classMethodDeclaration = function() { var localctx = new ClassMethodDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 42, ObjectiveCParser.RULE_classMethodDeclaration); + this.enterRule(localctx, 44, ObjectiveCParser.RULE_classMethodDeclaration); try { this.enterOuterAlt(localctx, 1); - this.state = 560; + this.state = 584; this.match(ObjectiveCParser.ADD); - this.state = 561; + this.state = 585; this.methodDeclaration(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -4654,12 +5147,12 @@ ObjectiveCParser.InstanceMethodDeclarationContext = InstanceMethodDeclarationCon ObjectiveCParser.prototype.instanceMethodDeclaration = function() { var localctx = new InstanceMethodDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 44, ObjectiveCParser.RULE_instanceMethodDeclaration); + this.enterRule(localctx, 46, ObjectiveCParser.RULE_instanceMethodDeclaration); try { this.enterOuterAlt(localctx, 1); - this.state = 563; + this.state = 587; this.match(ObjectiveCParser.SUB); - this.state = 564; + this.state = 588; this.methodDeclaration(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -4715,6 +5208,17 @@ MethodDeclarationContext.prototype.macro = function(i) { } }; +MethodDeclarationContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + MethodDeclarationContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterMethodDeclaration(this); @@ -4735,36 +5239,94 @@ ObjectiveCParser.MethodDeclarationContext = MethodDeclarationContext; ObjectiveCParser.prototype.methodDeclaration = function() { var localctx = new MethodDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 46, ObjectiveCParser.RULE_methodDeclaration); + this.enterRule(localctx, 48, ObjectiveCParser.RULE_methodDeclaration); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 567; + this.state = 591; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LP) { - this.state = 566; + this.state = 590; this.methodType(); } - this.state = 569; + this.state = 593; this.methodSelector(); - this.state = 573; + this.state = 598; this._errHandler.sync(this); _la = this._input.LA(1); - while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 570; - this.macro(); - this.state = 575; + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 596; this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 576; - this.match(ObjectiveCParser.SEMI); - } catch (re) { - if(re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 594; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 595; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 600; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 601; + this.match(ObjectiveCParser.SEMI); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { throw re; @@ -4867,48 +5429,48 @@ ObjectiveCParser.ImplementationDefinitionListContext = ImplementationDefinitionL ObjectiveCParser.prototype.implementationDefinitionList = function() { var localctx = new ImplementationDefinitionListContext(this, this._ctx, this.state); - this.enterRule(localctx, 48, ObjectiveCParser.RULE_implementationDefinitionList); + this.enterRule(localctx, 50, ObjectiveCParser.RULE_implementationDefinitionList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 583; + this.state = 608; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 583; + this.state = 608; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,43,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,50,this._ctx); switch(la_) { case 1: - this.state = 578; + this.state = 603; this.functionDefinition(); break; case 2: - this.state = 579; + this.state = 604; this.declaration(); break; case 3: - this.state = 580; + this.state = 605; this.classMethodDefinition(); break; case 4: - this.state = 581; + this.state = 606; this.instanceMethodDefinition(); break; case 5: - this.state = 582; + this.state = 607; this.propertyImplementation(); break; } - this.state = 585; + this.state = 610; this._errHandler.sync(this); _la = this._input.LA(1); - } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)))) !== 0) || ((((_la - 78)) & ~0x1f) == 0 && ((1 << (_la - 78)) & ((1 << (ObjectiveCParser.SYNTHESIZE - 78)) | (1 << (ObjectiveCParser.ATOMIC - 78)) | (1 << (ObjectiveCParser.NONATOMIC - 78)) | (1 << (ObjectiveCParser.RETAIN - 78)) | (1 << (ObjectiveCParser.ATTRIBUTE - 78)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 78)) | (1 << (ObjectiveCParser.BLOCK - 78)) | (1 << (ObjectiveCParser.BRIDGE - 78)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 78)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 78)) | (1 << (ObjectiveCParser.COVARIANT - 78)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 78)) | (1 << (ObjectiveCParser.DEPRECATED - 78)) | (1 << (ObjectiveCParser.KINDOF - 78)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 78)) | (1 << (ObjectiveCParser.TYPEOF - 78)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 78)) | (1 << (ObjectiveCParser.UNUSED - 78)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 78)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 78)) | (1 << (ObjectiveCParser.NULLABLE - 78)) | (1 << (ObjectiveCParser.NONNULL - 78)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 78)) | (1 << (ObjectiveCParser.NS_INLINE - 78)) | (1 << (ObjectiveCParser.NS_ENUM - 78)) | (1 << (ObjectiveCParser.NS_OPTIONS - 78)) | (1 << (ObjectiveCParser.ASSIGN - 78)) | (1 << (ObjectiveCParser.COPY - 78)) | (1 << (ObjectiveCParser.GETTER - 78)) | (1 << (ObjectiveCParser.SETTER - 78)))) !== 0) || ((((_la - 110)) & ~0x1f) == 0 && ((1 << (_la - 110)) & ((1 << (ObjectiveCParser.STRONG - 110)) | (1 << (ObjectiveCParser.READONLY - 110)) | (1 << (ObjectiveCParser.READWRITE - 110)) | (1 << (ObjectiveCParser.WEAK - 110)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 110)) | (1 << (ObjectiveCParser.IB_OUTLET - 110)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 110)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 110)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 110)) | (1 << (ObjectiveCParser.IDENTIFIER - 110)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)))) !== 0) || ((((_la - 78)) & ~0x1f) == 0 && ((1 << (_la - 78)) & ((1 << (ObjectiveCParser.SYNTHESIZE - 78)) | (1 << (ObjectiveCParser.ATOMIC - 78)) | (1 << (ObjectiveCParser.NONATOMIC - 78)) | (1 << (ObjectiveCParser.RETAIN - 78)) | (1 << (ObjectiveCParser.ATTRIBUTE - 78)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 78)) | (1 << (ObjectiveCParser.BLOCK - 78)) | (1 << (ObjectiveCParser.BRIDGE - 78)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 78)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 78)) | (1 << (ObjectiveCParser.COVARIANT - 78)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 78)) | (1 << (ObjectiveCParser.DEPRECATED - 78)) | (1 << (ObjectiveCParser.KINDOF - 78)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 78)) | (1 << (ObjectiveCParser.TYPEOF - 78)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 78)) | (1 << (ObjectiveCParser.UNUSED - 78)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 78)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 78)) | (1 << (ObjectiveCParser.NULLABLE - 78)) | (1 << (ObjectiveCParser.NONNULL - 78)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 78)) | (1 << (ObjectiveCParser.NS_INLINE - 78)) | (1 << (ObjectiveCParser.NS_ENUM - 78)) | (1 << (ObjectiveCParser.NS_OPTIONS - 78)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 78)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 78)) | (1 << (ObjectiveCParser.ASSIGN - 78)))) !== 0) || ((((_la - 110)) & ~0x1f) == 0 && ((1 << (_la - 110)) & ((1 << (ObjectiveCParser.COPY - 110)) | (1 << (ObjectiveCParser.GETTER - 110)) | (1 << (ObjectiveCParser.SETTER - 110)) | (1 << (ObjectiveCParser.STRONG - 110)) | (1 << (ObjectiveCParser.READONLY - 110)) | (1 << (ObjectiveCParser.READWRITE - 110)) | (1 << (ObjectiveCParser.WEAK - 110)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 110)) | (1 << (ObjectiveCParser.IB_OUTLET - 110)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 110)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 110)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 110)) | (1 << (ObjectiveCParser.IDENTIFIER - 110)))) !== 0) || _la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { localctx.exception = re; @@ -4968,12 +5530,12 @@ ObjectiveCParser.ClassMethodDefinitionContext = ClassMethodDefinitionContext; ObjectiveCParser.prototype.classMethodDefinition = function() { var localctx = new ClassMethodDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 50, ObjectiveCParser.RULE_classMethodDefinition); + this.enterRule(localctx, 52, ObjectiveCParser.RULE_classMethodDefinition); try { this.enterOuterAlt(localctx, 1); - this.state = 587; + this.state = 612; this.match(ObjectiveCParser.ADD); - this.state = 588; + this.state = 613; this.methodDefinition(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -5034,12 +5596,12 @@ ObjectiveCParser.InstanceMethodDefinitionContext = InstanceMethodDefinitionConte ObjectiveCParser.prototype.instanceMethodDefinition = function() { var localctx = new InstanceMethodDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 52, ObjectiveCParser.RULE_instanceMethodDefinition); + this.enterRule(localctx, 54, ObjectiveCParser.RULE_instanceMethodDefinition); try { this.enterOuterAlt(localctx, 1); - this.state = 590; + this.state = 615; this.match(ObjectiveCParser.SUB); - this.state = 591; + this.state = 616; this.methodDefinition(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -5112,37 +5674,37 @@ ObjectiveCParser.MethodDefinitionContext = MethodDefinitionContext; ObjectiveCParser.prototype.methodDefinition = function() { var localctx = new MethodDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 54, ObjectiveCParser.RULE_methodDefinition); + this.enterRule(localctx, 56, ObjectiveCParser.RULE_methodDefinition); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 594; + this.state = 619; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LP) { - this.state = 593; + this.state = 618; this.methodType(); } - this.state = 596; + this.state = 621; this.methodSelector(); - this.state = 598; + this.state = 623; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0) || _la===ObjectiveCParser.MUL) { - this.state = 597; + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0) || _la===ObjectiveCParser.MUL) { + this.state = 622; this.initDeclaratorList(); } - this.state = 601; + this.state = 626; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.SEMI) { - this.state = 600; + this.state = 625; this.match(ObjectiveCParser.SEMI); } - this.state = 603; + this.state = 628; this.compoundStatement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -5169,6 +5731,7 @@ function MethodSelectorContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_methodSelector; + this.sel = null; // SelectorContext return this; } @@ -5218,44 +5781,44 @@ ObjectiveCParser.MethodSelectorContext = MethodSelectorContext; ObjectiveCParser.prototype.methodSelector = function() { var localctx = new MethodSelectorContext(this, this._ctx, this.state); - this.enterRule(localctx, 56, ObjectiveCParser.RULE_methodSelector); + this.enterRule(localctx, 58, ObjectiveCParser.RULE_methodSelector); var _la = 0; // Token type try { - this.state = 615; + this.state = 640; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,50,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,57,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 605; - this.selector(); + this.state = 630; + localctx.sel = this.selector(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 607; + this.state = 632; this._errHandler.sync(this); var _alt = 1; do { switch (_alt) { case 1: - this.state = 606; + this.state = 631; this.keywordDeclarator(); break; default: throw new antlr4.error.NoViableAltException(this); } - this.state = 609; + this.state = 634; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,48, this._ctx); + _alt = this._interp.adaptivePredict(this._input,55, this._ctx); } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); - this.state = 613; + this.state = 638; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 611; + this.state = 636; this.match(ObjectiveCParser.COMMA); - this.state = 612; + this.state = 637; this.match(ObjectiveCParser.ELIPSIS); } @@ -5287,6 +5850,10 @@ function KeywordDeclaratorContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_keywordDeclarator; + this.sel = null; // SelectorContext + this._methodType = null; // MethodTypeContext + this.types = []; // of MethodTypeContexts + this.name = null; // IdentifierContext return this; } @@ -5301,6 +5868,10 @@ KeywordDeclaratorContext.prototype.identifier = function() { return this.getTypedRuleContext(IdentifierContext,0); }; +KeywordDeclaratorContext.prototype.arcBehaviourSpecifier = function() { + return this.getTypedRuleContext(ArcBehaviourSpecifierContext,0); +}; + KeywordDeclaratorContext.prototype.selector = function() { return this.getTypedRuleContext(SelectorContext,0); }; @@ -5316,10 +5887,6 @@ KeywordDeclaratorContext.prototype.methodType = function(i) { } }; -KeywordDeclaratorContext.prototype.arcBehaviourSpecifier = function() { - return this.getTypedRuleContext(ArcBehaviourSpecifierContext,0); -}; - KeywordDeclaratorContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterKeywordDeclarator(this); @@ -5340,40 +5907,41 @@ ObjectiveCParser.KeywordDeclaratorContext = KeywordDeclaratorContext; ObjectiveCParser.prototype.keywordDeclarator = function() { var localctx = new KeywordDeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 58, ObjectiveCParser.RULE_keywordDeclarator); + this.enterRule(localctx, 60, ObjectiveCParser.RULE_keywordDeclarator); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 618; + this.state = 643; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 617; - this.selector(); + if(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 642; + localctx.sel = this.selector(); } - this.state = 620; + this.state = 645; this.match(ObjectiveCParser.COLON); - this.state = 624; + this.state = 649; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.LP) { - this.state = 621; - this.methodType(); - this.state = 626; + this.state = 646; + localctx._methodType = this.methodType(); + localctx.types.push(localctx._methodType); + this.state = 651; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 628; + this.state = 653; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,53,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,60,this._ctx); if(la_===1) { - this.state = 627; + this.state = 652; this.arcBehaviourSpecifier(); } - this.state = 630; - this.identifier(); + this.state = 655; + localctx.name = this.identifier(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { localctx.exception = re; @@ -5433,9 +6001,9 @@ ObjectiveCParser.SelectorContext = SelectorContext; ObjectiveCParser.prototype.selector = function() { var localctx = new SelectorContext(this, this._ctx, this.state); - this.enterRule(localctx, 60, ObjectiveCParser.RULE_selector); + this.enterRule(localctx, 62, ObjectiveCParser.RULE_selector); try { - this.state = 634; + this.state = 659; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.BOOL: @@ -5486,12 +6054,12 @@ ObjectiveCParser.prototype.selector = function() { case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: this.enterOuterAlt(localctx, 1); - this.state = 632; + this.state = 657; this.identifier(); break; case ObjectiveCParser.RETURN: this.enterOuterAlt(localctx, 2); - this.state = 633; + this.state = 658; this.match(ObjectiveCParser.RETURN); break; default: @@ -5560,14 +6128,14 @@ ObjectiveCParser.MethodTypeContext = MethodTypeContext; ObjectiveCParser.prototype.methodType = function() { var localctx = new MethodTypeContext(this, this._ctx, this.state); - this.enterRule(localctx, 62, ObjectiveCParser.RULE_methodType); + this.enterRule(localctx, 64, ObjectiveCParser.RULE_methodType); try { this.enterOuterAlt(localctx, 1); - this.state = 636; + this.state = 661; this.match(ObjectiveCParser.LP); - this.state = 637; + this.state = 662; this.typeName(); - this.state = 638; + this.state = 663; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -5636,27 +6204,27 @@ ObjectiveCParser.PropertyImplementationContext = PropertyImplementationContext; ObjectiveCParser.prototype.propertyImplementation = function() { var localctx = new PropertyImplementationContext(this, this._ctx, this.state); - this.enterRule(localctx, 64, ObjectiveCParser.RULE_propertyImplementation); + this.enterRule(localctx, 66, ObjectiveCParser.RULE_propertyImplementation); try { - this.state = 648; + this.state = 673; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.SYNTHESIZE: this.enterOuterAlt(localctx, 1); - this.state = 640; + this.state = 665; this.match(ObjectiveCParser.SYNTHESIZE); - this.state = 641; + this.state = 666; this.propertySynthesizeList(); - this.state = 642; + this.state = 667; this.match(ObjectiveCParser.SEMI); break; case ObjectiveCParser.DYNAMIC: this.enterOuterAlt(localctx, 2); - this.state = 644; + this.state = 669; this.match(ObjectiveCParser.DYNAMIC); - this.state = 645; + this.state = 670; this.propertySynthesizeList(); - this.state = 646; + this.state = 671; this.match(ObjectiveCParser.SEMI); break; default: @@ -5736,21 +6304,21 @@ ObjectiveCParser.PropertySynthesizeListContext = PropertySynthesizeListContext; ObjectiveCParser.prototype.propertySynthesizeList = function() { var localctx = new PropertySynthesizeListContext(this, this._ctx, this.state); - this.enterRule(localctx, 66, ObjectiveCParser.RULE_propertySynthesizeList); + this.enterRule(localctx, 68, ObjectiveCParser.RULE_propertySynthesizeList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 650; + this.state = 675; this.propertySynthesizeItem(); - this.state = 655; + this.state = 680; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 651; + this.state = 676; this.match(ObjectiveCParser.COMMA); - this.state = 652; + this.state = 677; this.propertySynthesizeItem(); - this.state = 657; + this.state = 682; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -5820,19 +6388,19 @@ ObjectiveCParser.PropertySynthesizeItemContext = PropertySynthesizeItemContext; ObjectiveCParser.prototype.propertySynthesizeItem = function() { var localctx = new PropertySynthesizeItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 68, ObjectiveCParser.RULE_propertySynthesizeItem); + this.enterRule(localctx, 70, ObjectiveCParser.RULE_propertySynthesizeItem); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 658; + this.state = 683; this.identifier(); - this.state = 661; + this.state = 686; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ASSIGNMENT) { - this.state = 659; + this.state = 684; this.match(ObjectiveCParser.ASSIGNMENT); - this.state = 660; + this.state = 685; this.identifier(); } @@ -5925,51 +6493,51 @@ ObjectiveCParser.BlockTypeContext = BlockTypeContext; ObjectiveCParser.prototype.blockType = function() { var localctx = new BlockTypeContext(this, this._ctx, this.state); - this.enterRule(localctx, 70, ObjectiveCParser.RULE_blockType); + this.enterRule(localctx, 72, ObjectiveCParser.RULE_blockType); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 664; + this.state = 689; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,58,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,65,this._ctx); if(la_===1) { - this.state = 663; + this.state = 688; this.nullabilitySpecifier(); } - this.state = 666; + this.state = 691; this.typeSpecifier(); - this.state = 668; + this.state = 693; this._errHandler.sync(this); _la = this._input.LA(1); if(((((_la - 99)) & ~0x1f) == 0 && ((1 << (_la - 99)) & ((1 << (ObjectiveCParser.NULL_UNSPECIFIED - 99)) | (1 << (ObjectiveCParser.NULLABLE - 99)) | (1 << (ObjectiveCParser.NONNULL - 99)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 99)))) !== 0)) { - this.state = 667; + this.state = 692; this.nullabilitySpecifier(); } - this.state = 670; + this.state = 695; this.match(ObjectiveCParser.LP); - this.state = 671; + this.state = 696; this.match(ObjectiveCParser.BITXOR); - this.state = 674; + this.state = 699; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,60,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,67,this._ctx); if(la_===1) { - this.state = 672; + this.state = 697; this.nullabilitySpecifier(); } else if(la_===2) { - this.state = 673; + this.state = 698; this.typeSpecifier(); } - this.state = 676; + this.state = 701; this.match(ObjectiveCParser.RP); - this.state = 678; + this.state = 703; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LP) { - this.state = 677; + this.state = 702; this.blockParameters(); } @@ -6055,33 +6623,33 @@ ObjectiveCParser.GenericsSpecifierContext = GenericsSpecifierContext; ObjectiveCParser.prototype.genericsSpecifier = function() { var localctx = new GenericsSpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 72, ObjectiveCParser.RULE_genericsSpecifier); + this.enterRule(localctx, 74, ObjectiveCParser.RULE_genericsSpecifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 680; + this.state = 705; this.match(ObjectiveCParser.LT); - this.state = 689; + this.state = 714; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 681; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 81)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 706; this.typeSpecifierWithPrefixes(); - this.state = 686; + this.state = 711; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 682; + this.state = 707; this.match(ObjectiveCParser.COMMA); - this.state = 683; + this.state = 708; this.typeSpecifierWithPrefixes(); - this.state = 688; + this.state = 713; this._errHandler.sync(this); _la = this._input.LA(1); } } - this.state = 691; + this.state = 716; this.match(ObjectiveCParser.GT); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -6149,23 +6717,23 @@ ObjectiveCParser.TypeSpecifierWithPrefixesContext = TypeSpecifierWithPrefixesCon ObjectiveCParser.prototype.typeSpecifierWithPrefixes = function() { var localctx = new TypeSpecifierWithPrefixesContext(this, this._ctx, this.state); - this.enterRule(localctx, 74, ObjectiveCParser.RULE_typeSpecifierWithPrefixes); + this.enterRule(localctx, 76, ObjectiveCParser.RULE_typeSpecifierWithPrefixes); try { this.enterOuterAlt(localctx, 1); - this.state = 696; + this.state = 721; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,64,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,71,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 693; + this.state = 718; this.typePrefix(); } - this.state = 698; + this.state = 723; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,64,this._ctx); + _alt = this._interp.adaptivePredict(this._input,71,this._ctx); } - this.state = 699; + this.state = 724; this.typeSpecifier(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -6253,46 +6821,46 @@ ObjectiveCParser.DictionaryExpressionContext = DictionaryExpressionContext; ObjectiveCParser.prototype.dictionaryExpression = function() { var localctx = new DictionaryExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 76, ObjectiveCParser.RULE_dictionaryExpression); + this.enterRule(localctx, 78, ObjectiveCParser.RULE_dictionaryExpression); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 701; + this.state = 726; this.match(ObjectiveCParser.AT); - this.state = 702; + this.state = 727; this.match(ObjectiveCParser.LBRACE); - this.state = 714; + this.state = 739; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 89)))) !== 0) || ((((_la - 125)) & ~0x1f) == 0 && ((1 << (_la - 125)) & ((1 << (ObjectiveCParser.IDENTIFIER - 125)) | (1 << (ObjectiveCParser.LP - 125)) | (1 << (ObjectiveCParser.LBRACK - 125)) | (1 << (ObjectiveCParser.AT - 125)) | (1 << (ObjectiveCParser.BANG - 125)) | (1 << (ObjectiveCParser.TILDE - 125)) | (1 << (ObjectiveCParser.INC - 125)) | (1 << (ObjectiveCParser.DEC - 125)) | (1 << (ObjectiveCParser.ADD - 125)) | (1 << (ObjectiveCParser.SUB - 125)) | (1 << (ObjectiveCParser.MUL - 125)) | (1 << (ObjectiveCParser.BITAND - 125)))) !== 0) || ((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.BITXOR - 158)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 158)) | (1 << (ObjectiveCParser.STRING_START - 158)) | (1 << (ObjectiveCParser.HEX_LITERAL - 158)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 158)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 158)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 158)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 158)))) !== 0)) { - this.state = 703; + if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (ObjectiveCParser.IB_DESIGNABLE - 121)) | (1 << (ObjectiveCParser.IDENTIFIER - 121)) | (1 << (ObjectiveCParser.LP - 121)) | (1 << (ObjectiveCParser.LBRACK - 121)) | (1 << (ObjectiveCParser.AT - 121)) | (1 << (ObjectiveCParser.BANG - 121)) | (1 << (ObjectiveCParser.TILDE - 121)))) !== 0) || ((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.INC - 154)) | (1 << (ObjectiveCParser.DEC - 154)) | (1 << (ObjectiveCParser.ADD - 154)) | (1 << (ObjectiveCParser.SUB - 154)) | (1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.BITAND - 154)) | (1 << (ObjectiveCParser.BITXOR - 154)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 154)) | (1 << (ObjectiveCParser.STRING_START - 154)) | (1 << (ObjectiveCParser.HEX_LITERAL - 154)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 154)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 154)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 154)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 154)))) !== 0)) { + this.state = 728; this.dictionaryPair(); - this.state = 708; + this.state = 733; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,65,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,72,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 704; + this.state = 729; this.match(ObjectiveCParser.COMMA); - this.state = 705; + this.state = 730; this.dictionaryPair(); } - this.state = 710; + this.state = 735; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,65,this._ctx); + _alt = this._interp.adaptivePredict(this._input,72,this._ctx); } - this.state = 712; + this.state = 737; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 711; + this.state = 736; this.match(ObjectiveCParser.COMMA); } } - this.state = 716; + this.state = 741; this.match(ObjectiveCParser.RBRACE); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -6357,14 +6925,14 @@ ObjectiveCParser.DictionaryPairContext = DictionaryPairContext; ObjectiveCParser.prototype.dictionaryPair = function() { var localctx = new DictionaryPairContext(this, this._ctx, this.state); - this.enterRule(localctx, 78, ObjectiveCParser.RULE_dictionaryPair); + this.enterRule(localctx, 80, ObjectiveCParser.RULE_dictionaryPair); try { this.enterOuterAlt(localctx, 1); - this.state = 718; + this.state = 743; this.castExpression(); - this.state = 719; + this.state = 744; this.match(ObjectiveCParser.COLON); - this.state = 720; + this.state = 745; this.expression(0); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -6437,31 +7005,31 @@ ObjectiveCParser.ArrayExpressionContext = ArrayExpressionContext; ObjectiveCParser.prototype.arrayExpression = function() { var localctx = new ArrayExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 80, ObjectiveCParser.RULE_arrayExpression); + this.enterRule(localctx, 82, ObjectiveCParser.RULE_arrayExpression); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 722; + this.state = 747; this.match(ObjectiveCParser.AT); - this.state = 723; + this.state = 748; this.match(ObjectiveCParser.LBRACK); - this.state = 728; + this.state = 753; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 89)))) !== 0) || ((((_la - 125)) & ~0x1f) == 0 && ((1 << (_la - 125)) & ((1 << (ObjectiveCParser.IDENTIFIER - 125)) | (1 << (ObjectiveCParser.LP - 125)) | (1 << (ObjectiveCParser.LBRACK - 125)) | (1 << (ObjectiveCParser.AT - 125)) | (1 << (ObjectiveCParser.BANG - 125)) | (1 << (ObjectiveCParser.TILDE - 125)) | (1 << (ObjectiveCParser.INC - 125)) | (1 << (ObjectiveCParser.DEC - 125)) | (1 << (ObjectiveCParser.ADD - 125)) | (1 << (ObjectiveCParser.SUB - 125)) | (1 << (ObjectiveCParser.MUL - 125)) | (1 << (ObjectiveCParser.BITAND - 125)))) !== 0) || ((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.BITXOR - 158)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 158)) | (1 << (ObjectiveCParser.STRING_START - 158)) | (1 << (ObjectiveCParser.HEX_LITERAL - 158)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 158)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 158)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 158)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 158)))) !== 0)) { - this.state = 724; + if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (ObjectiveCParser.IB_DESIGNABLE - 121)) | (1 << (ObjectiveCParser.IDENTIFIER - 121)) | (1 << (ObjectiveCParser.LP - 121)) | (1 << (ObjectiveCParser.LBRACK - 121)) | (1 << (ObjectiveCParser.AT - 121)) | (1 << (ObjectiveCParser.BANG - 121)) | (1 << (ObjectiveCParser.TILDE - 121)))) !== 0) || ((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.INC - 154)) | (1 << (ObjectiveCParser.DEC - 154)) | (1 << (ObjectiveCParser.ADD - 154)) | (1 << (ObjectiveCParser.SUB - 154)) | (1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.BITAND - 154)) | (1 << (ObjectiveCParser.BITXOR - 154)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 154)) | (1 << (ObjectiveCParser.STRING_START - 154)) | (1 << (ObjectiveCParser.HEX_LITERAL - 154)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 154)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 154)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 154)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 154)))) !== 0)) { + this.state = 749; this.expressions(); - this.state = 726; + this.state = 751; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 725; + this.state = 750; this.match(ObjectiveCParser.COMMA); } } - this.state = 730; + this.state = 755; this.match(ObjectiveCParser.RBRACK); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -6538,29 +7106,29 @@ ObjectiveCParser.BoxExpressionContext = BoxExpressionContext; ObjectiveCParser.prototype.boxExpression = function() { var localctx = new BoxExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 82, ObjectiveCParser.RULE_boxExpression); + this.enterRule(localctx, 84, ObjectiveCParser.RULE_boxExpression); try { - this.state = 742; + this.state = 767; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,71,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,78,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 732; + this.state = 757; this.match(ObjectiveCParser.AT); - this.state = 733; + this.state = 758; this.match(ObjectiveCParser.LP); - this.state = 734; + this.state = 759; this.expression(0); - this.state = 735; + this.state = 760; this.match(ObjectiveCParser.RP); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 737; + this.state = 762; this.match(ObjectiveCParser.AT); - this.state = 740; + this.state = 765; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.TRUE: @@ -6577,7 +7145,7 @@ ObjectiveCParser.prototype.boxExpression = function() { case ObjectiveCParser.BINARY_LITERAL: case ObjectiveCParser.DECIMAL_LITERAL: case ObjectiveCParser.FLOATING_POINT_LITERAL: - this.state = 738; + this.state = 763; this.constant(); break; case ObjectiveCParser.BOOL: @@ -6627,7 +7195,7 @@ ObjectiveCParser.prototype.boxExpression = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: - this.state = 739; + this.state = 764; this.identifier(); break; default: @@ -6661,6 +7229,8 @@ function BlockParametersContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_blockParameters; + this._typeVariableDeclaratorOrName = null; // TypeVariableDeclaratorOrNameContext + this.types = []; // of TypeVariableDeclaratorOrNameContexts return this; } @@ -6675,6 +7245,10 @@ BlockParametersContext.prototype.RP = function() { return this.getToken(ObjectiveCParser.RP, 0); }; +BlockParametersContext.prototype.VOID = function() { + return this.getToken(ObjectiveCParser.VOID, 0); +}; + BlockParametersContext.prototype.typeVariableDeclaratorOrName = function(i) { if(i===undefined) { i = null; @@ -6686,10 +7260,6 @@ BlockParametersContext.prototype.typeVariableDeclaratorOrName = function(i) { } }; -BlockParametersContext.prototype.VOID = function() { - return this.getToken(ObjectiveCParser.VOID, 0); -}; - BlockParametersContext.prototype.COMMA = function(i) { if(i===undefined) { i = null; @@ -6722,46 +7292,48 @@ ObjectiveCParser.BlockParametersContext = BlockParametersContext; ObjectiveCParser.prototype.blockParameters = function() { var localctx = new BlockParametersContext(this, this._ctx, this.state); - this.enterRule(localctx, 84, ObjectiveCParser.RULE_blockParameters); + this.enterRule(localctx, 86, ObjectiveCParser.RULE_blockParameters); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 744; + this.state = 769; this.match(ObjectiveCParser.LP); - this.state = 756; + this.state = 781; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 747; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 81)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0)) { + this.state = 772; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,72,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,79,this._ctx); switch(la_) { case 1: - this.state = 745; - this.typeVariableDeclaratorOrName(); + this.state = 770; + localctx._typeVariableDeclaratorOrName = this.typeVariableDeclaratorOrName(); + localctx.types.push(localctx._typeVariableDeclaratorOrName); break; case 2: - this.state = 746; + this.state = 771; this.match(ObjectiveCParser.VOID); break; } - this.state = 753; + this.state = 778; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 749; + this.state = 774; this.match(ObjectiveCParser.COMMA); - this.state = 750; - this.typeVariableDeclaratorOrName(); - this.state = 755; + this.state = 775; + localctx._typeVariableDeclaratorOrName = this.typeVariableDeclaratorOrName(); + localctx.types.push(localctx._typeVariableDeclaratorOrName); + this.state = 780; this._errHandler.sync(this); _la = this._input.LA(1); } } - this.state = 758; + this.state = 783; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -6822,21 +7394,21 @@ ObjectiveCParser.TypeVariableDeclaratorOrNameContext = TypeVariableDeclaratorOrN ObjectiveCParser.prototype.typeVariableDeclaratorOrName = function() { var localctx = new TypeVariableDeclaratorOrNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 86, ObjectiveCParser.RULE_typeVariableDeclaratorOrName); + this.enterRule(localctx, 88, ObjectiveCParser.RULE_typeVariableDeclaratorOrName); try { - this.state = 762; + this.state = 787; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,75,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,82,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 760; + this.state = 785; this.typeVariableDeclarator(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 761; + this.state = 786; this.typeName(); break; @@ -6912,37 +7484,37 @@ ObjectiveCParser.BlockExpressionContext = BlockExpressionContext; ObjectiveCParser.prototype.blockExpression = function() { var localctx = new BlockExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 88, ObjectiveCParser.RULE_blockExpression); + this.enterRule(localctx, 90, ObjectiveCParser.RULE_blockExpression); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 764; + this.state = 789; this.match(ObjectiveCParser.BITXOR); - this.state = 766; + this.state = 791; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,76,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,83,this._ctx); if(la_===1) { - this.state = 765; + this.state = 790; this.typeSpecifier(); } - this.state = 769; + this.state = 794; this._errHandler.sync(this); _la = this._input.LA(1); if(((((_la - 99)) & ~0x1f) == 0 && ((1 << (_la - 99)) & ((1 << (ObjectiveCParser.NULL_UNSPECIFIED - 99)) | (1 << (ObjectiveCParser.NULLABLE - 99)) | (1 << (ObjectiveCParser.NONNULL - 99)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 99)))) !== 0)) { - this.state = 768; + this.state = 793; this.nullabilitySpecifier(); } - this.state = 772; + this.state = 797; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LP) { - this.state = 771; + this.state = 796; this.blockParameters(); } - this.state = 774; + this.state = 799; this.compoundStatement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -7011,16 +7583,16 @@ ObjectiveCParser.MessageExpressionContext = MessageExpressionContext; ObjectiveCParser.prototype.messageExpression = function() { var localctx = new MessageExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 90, ObjectiveCParser.RULE_messageExpression); + this.enterRule(localctx, 92, ObjectiveCParser.RULE_messageExpression); try { this.enterOuterAlt(localctx, 1); - this.state = 776; + this.state = 801; this.match(ObjectiveCParser.LBRACK); - this.state = 777; + this.state = 802; this.receiver(); - this.state = 778; + this.state = 803; this.messageSelector(); - this.state = 779; + this.state = 804; this.match(ObjectiveCParser.RBRACK); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -7081,21 +7653,21 @@ ObjectiveCParser.ReceiverContext = ReceiverContext; ObjectiveCParser.prototype.receiver = function() { var localctx = new ReceiverContext(this, this._ctx, this.state); - this.enterRule(localctx, 92, ObjectiveCParser.RULE_receiver); + this.enterRule(localctx, 94, ObjectiveCParser.RULE_receiver); try { - this.state = 783; + this.state = 808; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,79,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,86,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 781; + this.state = 806; this.expression(0); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 782; + this.state = 807; this.typeSpecifier(); break; @@ -7166,31 +7738,31 @@ ObjectiveCParser.MessageSelectorContext = MessageSelectorContext; ObjectiveCParser.prototype.messageSelector = function() { var localctx = new MessageSelectorContext(this, this._ctx, this.state); - this.enterRule(localctx, 94, ObjectiveCParser.RULE_messageSelector); + this.enterRule(localctx, 96, ObjectiveCParser.RULE_messageSelector); var _la = 0; // Token type try { - this.state = 791; + this.state = 816; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,81,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,88,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 785; + this.state = 810; this.selector(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 787; + this.state = 812; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 786; + this.state = 811; this.keywordArgument(); - this.state = 789; + this.state = 814; this._errHandler.sync(this); _la = this._input.LA(1); - } while(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.COLON - 113)))) !== 0)); + } while(((((_la - 22)) & ~0x1f) == 0 && ((1 << (_la - 22)) & ((1 << (ObjectiveCParser.RETURN - 22)) | (1 << (ObjectiveCParser.BOOL - 22)) | (1 << (ObjectiveCParser.Class - 22)) | (1 << (ObjectiveCParser.BYCOPY - 22)) | (1 << (ObjectiveCParser.BYREF - 22)) | (1 << (ObjectiveCParser.ID - 22)) | (1 << (ObjectiveCParser.IMP - 22)) | (1 << (ObjectiveCParser.IN - 22)) | (1 << (ObjectiveCParser.INOUT - 22)) | (1 << (ObjectiveCParser.ONEWAY - 22)) | (1 << (ObjectiveCParser.OUT - 22)) | (1 << (ObjectiveCParser.PROTOCOL_ - 22)))) !== 0) || ((((_la - 54)) & ~0x1f) == 0 && ((1 << (_la - 54)) & ((1 << (ObjectiveCParser.SEL - 54)) | (1 << (ObjectiveCParser.SELF - 54)) | (1 << (ObjectiveCParser.SUPER - 54)) | (1 << (ObjectiveCParser.ATOMIC - 54)) | (1 << (ObjectiveCParser.NONATOMIC - 54)) | (1 << (ObjectiveCParser.RETAIN - 54)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 54)))) !== 0) || ((((_la - 86)) & ~0x1f) == 0 && ((1 << (_la - 86)) & ((1 << (ObjectiveCParser.BLOCK - 86)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 86)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 86)) | (1 << (ObjectiveCParser.COVARIANT - 86)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 86)) | (1 << (ObjectiveCParser.DEPRECATED - 86)) | (1 << (ObjectiveCParser.KINDOF - 86)) | (1 << (ObjectiveCParser.UNUSED - 86)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 86)) | (1 << (ObjectiveCParser.NULLABLE - 86)) | (1 << (ObjectiveCParser.NONNULL - 86)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 86)) | (1 << (ObjectiveCParser.NS_INLINE - 86)) | (1 << (ObjectiveCParser.NS_ENUM - 86)) | (1 << (ObjectiveCParser.NS_OPTIONS - 86)) | (1 << (ObjectiveCParser.ASSIGN - 86)) | (1 << (ObjectiveCParser.COPY - 86)) | (1 << (ObjectiveCParser.GETTER - 86)) | (1 << (ObjectiveCParser.SETTER - 86)) | (1 << (ObjectiveCParser.STRONG - 86)) | (1 << (ObjectiveCParser.READONLY - 86)) | (1 << (ObjectiveCParser.READWRITE - 86)) | (1 << (ObjectiveCParser.WEAK - 86)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 86)))) !== 0) || ((((_la - 118)) & ~0x1f) == 0 && ((1 << (_la - 118)) & ((1 << (ObjectiveCParser.IB_OUTLET - 118)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 118)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 118)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 118)) | (1 << (ObjectiveCParser.IDENTIFIER - 118)) | (1 << (ObjectiveCParser.COLON - 118)))) !== 0)); break; } @@ -7276,31 +7848,31 @@ ObjectiveCParser.KeywordArgumentContext = KeywordArgumentContext; ObjectiveCParser.prototype.keywordArgument = function() { var localctx = new KeywordArgumentContext(this, this._ctx, this.state); - this.enterRule(localctx, 96, ObjectiveCParser.RULE_keywordArgument); + this.enterRule(localctx, 98, ObjectiveCParser.RULE_keywordArgument); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 794; + this.state = 819; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 793; + if(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 818; this.selector(); } - this.state = 796; + this.state = 821; this.match(ObjectiveCParser.COLON); - this.state = 797; + this.state = 822; this.keywordArgumentType(); - this.state = 802; + this.state = 827; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 798; + this.state = 823; this.match(ObjectiveCParser.COMMA); - this.state = 799; + this.state = 824; this.keywordArgumentType(); - this.state = 804; + this.state = 829; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -7375,29 +7947,29 @@ ObjectiveCParser.KeywordArgumentTypeContext = KeywordArgumentTypeContext; ObjectiveCParser.prototype.keywordArgumentType = function() { var localctx = new KeywordArgumentTypeContext(this, this._ctx, this.state); - this.enterRule(localctx, 98, ObjectiveCParser.RULE_keywordArgumentType); + this.enterRule(localctx, 100, ObjectiveCParser.RULE_keywordArgumentType); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 805; + this.state = 830; this.expressions(); - this.state = 807; + this.state = 832; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,84,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,91,this._ctx); if(la_===1) { - this.state = 806; + this.state = 831; this.nullabilitySpecifier(); } - this.state = 813; + this.state = 838; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LBRACE) { - this.state = 809; + this.state = 834; this.match(ObjectiveCParser.LBRACE); - this.state = 810; + this.state = 835; this.initializerList(); - this.state = 811; + this.state = 836; this.match(ObjectiveCParser.RBRACE); } @@ -7468,16 +8040,16 @@ ObjectiveCParser.SelectorExpressionContext = SelectorExpressionContext; ObjectiveCParser.prototype.selectorExpression = function() { var localctx = new SelectorExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 100, ObjectiveCParser.RULE_selectorExpression); + this.enterRule(localctx, 102, ObjectiveCParser.RULE_selectorExpression); try { this.enterOuterAlt(localctx, 1); - this.state = 815; + this.state = 840; this.match(ObjectiveCParser.SELECTOR); - this.state = 816; + this.state = 841; this.match(ObjectiveCParser.LP); - this.state = 817; + this.state = 842; this.selectorName(); - this.state = 818; + this.state = 843; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -7553,39 +8125,39 @@ ObjectiveCParser.SelectorNameContext = SelectorNameContext; ObjectiveCParser.prototype.selectorName = function() { var localctx = new SelectorNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 102, ObjectiveCParser.RULE_selectorName); + this.enterRule(localctx, 104, ObjectiveCParser.RULE_selectorName); var _la = 0; // Token type try { - this.state = 829; + this.state = 854; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,88,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,95,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 820; + this.state = 845; this.selector(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 825; + this.state = 850; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 822; + this.state = 847; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 821; + if(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 846; this.selector(); } - this.state = 824; + this.state = 849; this.match(ObjectiveCParser.COLON); - this.state = 827; + this.state = 852; this._errHandler.sync(this); _la = this._input.LA(1); - } while(_la===ObjectiveCParser.RETURN || ((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.COLON - 113)))) !== 0)); + } while(((((_la - 22)) & ~0x1f) == 0 && ((1 << (_la - 22)) & ((1 << (ObjectiveCParser.RETURN - 22)) | (1 << (ObjectiveCParser.BOOL - 22)) | (1 << (ObjectiveCParser.Class - 22)) | (1 << (ObjectiveCParser.BYCOPY - 22)) | (1 << (ObjectiveCParser.BYREF - 22)) | (1 << (ObjectiveCParser.ID - 22)) | (1 << (ObjectiveCParser.IMP - 22)) | (1 << (ObjectiveCParser.IN - 22)) | (1 << (ObjectiveCParser.INOUT - 22)) | (1 << (ObjectiveCParser.ONEWAY - 22)) | (1 << (ObjectiveCParser.OUT - 22)) | (1 << (ObjectiveCParser.PROTOCOL_ - 22)))) !== 0) || ((((_la - 54)) & ~0x1f) == 0 && ((1 << (_la - 54)) & ((1 << (ObjectiveCParser.SEL - 54)) | (1 << (ObjectiveCParser.SELF - 54)) | (1 << (ObjectiveCParser.SUPER - 54)) | (1 << (ObjectiveCParser.ATOMIC - 54)) | (1 << (ObjectiveCParser.NONATOMIC - 54)) | (1 << (ObjectiveCParser.RETAIN - 54)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 54)))) !== 0) || ((((_la - 86)) & ~0x1f) == 0 && ((1 << (_la - 86)) & ((1 << (ObjectiveCParser.BLOCK - 86)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 86)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 86)) | (1 << (ObjectiveCParser.COVARIANT - 86)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 86)) | (1 << (ObjectiveCParser.DEPRECATED - 86)) | (1 << (ObjectiveCParser.KINDOF - 86)) | (1 << (ObjectiveCParser.UNUSED - 86)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 86)) | (1 << (ObjectiveCParser.NULLABLE - 86)) | (1 << (ObjectiveCParser.NONNULL - 86)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 86)) | (1 << (ObjectiveCParser.NS_INLINE - 86)) | (1 << (ObjectiveCParser.NS_ENUM - 86)) | (1 << (ObjectiveCParser.NS_OPTIONS - 86)) | (1 << (ObjectiveCParser.ASSIGN - 86)) | (1 << (ObjectiveCParser.COPY - 86)) | (1 << (ObjectiveCParser.GETTER - 86)) | (1 << (ObjectiveCParser.SETTER - 86)) | (1 << (ObjectiveCParser.STRONG - 86)) | (1 << (ObjectiveCParser.READONLY - 86)) | (1 << (ObjectiveCParser.READWRITE - 86)) | (1 << (ObjectiveCParser.WEAK - 86)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 86)))) !== 0) || ((((_la - 118)) & ~0x1f) == 0 && ((1 << (_la - 118)) & ((1 << (ObjectiveCParser.IB_OUTLET - 118)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 118)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 118)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 118)) | (1 << (ObjectiveCParser.IDENTIFIER - 118)) | (1 << (ObjectiveCParser.COLON - 118)))) !== 0)); break; } @@ -7656,16 +8228,16 @@ ObjectiveCParser.ProtocolExpressionContext = ProtocolExpressionContext; ObjectiveCParser.prototype.protocolExpression = function() { var localctx = new ProtocolExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 104, ObjectiveCParser.RULE_protocolExpression); + this.enterRule(localctx, 106, ObjectiveCParser.RULE_protocolExpression); try { this.enterOuterAlt(localctx, 1); - this.state = 831; + this.state = 856; this.match(ObjectiveCParser.PROTOCOL); - this.state = 832; + this.state = 857; this.match(ObjectiveCParser.LP); - this.state = 833; + this.state = 858; this.protocolName(); - this.state = 834; + this.state = 859; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -7734,16 +8306,16 @@ ObjectiveCParser.EncodeExpressionContext = EncodeExpressionContext; ObjectiveCParser.prototype.encodeExpression = function() { var localctx = new EncodeExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 106, ObjectiveCParser.RULE_encodeExpression); + this.enterRule(localctx, 108, ObjectiveCParser.RULE_encodeExpression); try { this.enterOuterAlt(localctx, 1); - this.state = 836; + this.state = 861; this.match(ObjectiveCParser.ENCODE); - this.state = 837; + this.state = 862; this.match(ObjectiveCParser.LP); - this.state = 838; + this.state = 863; this.typeName(); - this.state = 839; + this.state = 864; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -7804,12 +8376,12 @@ ObjectiveCParser.TypeVariableDeclaratorContext = TypeVariableDeclaratorContext; ObjectiveCParser.prototype.typeVariableDeclarator = function() { var localctx = new TypeVariableDeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 108, ObjectiveCParser.RULE_typeVariableDeclarator); + this.enterRule(localctx, 110, ObjectiveCParser.RULE_typeVariableDeclarator); try { this.enterOuterAlt(localctx, 1); - this.state = 841; + this.state = 866; this.declarationSpecifiers(); - this.state = 842; + this.state = 867; this.declarator(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -7882,29 +8454,29 @@ ObjectiveCParser.ThrowStatementContext = ThrowStatementContext; ObjectiveCParser.prototype.throwStatement = function() { var localctx = new ThrowStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 110, ObjectiveCParser.RULE_throwStatement); + this.enterRule(localctx, 112, ObjectiveCParser.RULE_throwStatement); try { - this.state = 851; + this.state = 876; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,89,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,96,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 844; + this.state = 869; this.match(ObjectiveCParser.THROW); - this.state = 845; + this.state = 870; this.match(ObjectiveCParser.LP); - this.state = 846; + this.state = 871; this.identifier(); - this.state = 847; + this.state = 872; this.match(ObjectiveCParser.RP); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 849; + this.state = 874; this.match(ObjectiveCParser.THROW); - this.state = 850; + this.state = 875; this.expression(0); break; @@ -7992,31 +8564,31 @@ ObjectiveCParser.TryBlockContext = TryBlockContext; ObjectiveCParser.prototype.tryBlock = function() { var localctx = new TryBlockContext(this, this._ctx, this.state); - this.enterRule(localctx, 112, ObjectiveCParser.RULE_tryBlock); + this.enterRule(localctx, 114, ObjectiveCParser.RULE_tryBlock); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 853; + this.state = 878; this.match(ObjectiveCParser.TRY); - this.state = 854; + this.state = 879; localctx.tryStatement = this.compoundStatement(); - this.state = 858; + this.state = 883; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.CATCH) { - this.state = 855; + this.state = 880; this.catchStatement(); - this.state = 860; + this.state = 885; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 863; + this.state = 888; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.FINALLY) { - this.state = 861; + this.state = 886; this.match(ObjectiveCParser.FINALLY); - this.state = 862; + this.state = 887; localctx.finallyStatement = this.compoundStatement(); } @@ -8091,18 +8663,18 @@ ObjectiveCParser.CatchStatementContext = CatchStatementContext; ObjectiveCParser.prototype.catchStatement = function() { var localctx = new CatchStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 114, ObjectiveCParser.RULE_catchStatement); + this.enterRule(localctx, 116, ObjectiveCParser.RULE_catchStatement); try { this.enterOuterAlt(localctx, 1); - this.state = 865; + this.state = 890; this.match(ObjectiveCParser.CATCH); - this.state = 866; + this.state = 891; this.match(ObjectiveCParser.LP); - this.state = 867; + this.state = 892; this.typeVariableDeclarator(); - this.state = 868; + this.state = 893; this.match(ObjectiveCParser.RP); - this.state = 869; + this.state = 894; this.compoundStatement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -8175,18 +8747,18 @@ ObjectiveCParser.SynchronizedStatementContext = SynchronizedStatementContext; ObjectiveCParser.prototype.synchronizedStatement = function() { var localctx = new SynchronizedStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 116, ObjectiveCParser.RULE_synchronizedStatement); + this.enterRule(localctx, 118, ObjectiveCParser.RULE_synchronizedStatement); try { this.enterOuterAlt(localctx, 1); - this.state = 871; + this.state = 896; this.match(ObjectiveCParser.SYNCHRONIZED); - this.state = 872; + this.state = 897; this.match(ObjectiveCParser.LP); - this.state = 873; + this.state = 898; this.expression(0); - this.state = 874; + this.state = 899; this.match(ObjectiveCParser.RP); - this.state = 875; + this.state = 900; this.compoundStatement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -8247,12 +8819,12 @@ ObjectiveCParser.AutoreleaseStatementContext = AutoreleaseStatementContext; ObjectiveCParser.prototype.autoreleaseStatement = function() { var localctx = new AutoreleaseStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 118, ObjectiveCParser.RULE_autoreleaseStatement); + this.enterRule(localctx, 120, ObjectiveCParser.RULE_autoreleaseStatement); try { this.enterOuterAlt(localctx, 1); - this.state = 877; + this.state = 902; this.match(ObjectiveCParser.AUTORELEASEPOOL); - this.state = 878; + this.state = 903; this.compoundStatement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -8293,6 +8865,28 @@ FunctionDeclarationContext.prototype.SEMI = function() { return this.getToken(ObjectiveCParser.SEMI, 0); }; +FunctionDeclarationContext.prototype.macro = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(MacroContext); + } else { + return this.getTypedRuleContext(MacroContext,i); + } +}; + +FunctionDeclarationContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + FunctionDeclarationContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterFunctionDeclaration(this); @@ -8313,52 +8907,143 @@ ObjectiveCParser.FunctionDeclarationContext = FunctionDeclarationContext; ObjectiveCParser.prototype.functionDeclaration = function() { var localctx = new FunctionDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 120, ObjectiveCParser.RULE_functionDeclaration); + this.enterRule(localctx, 122, ObjectiveCParser.RULE_functionDeclaration); + var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 880; + this.state = 905; this.functionSignature(); - this.state = 881; - this.match(ObjectiveCParser.SEMI); - } catch (re) { - if(re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; -}; - - -function FunctionDefinitionContext(parser, parent, invokingState) { - if(parent===undefined) { - parent = null; - } - if(invokingState===undefined || invokingState===null) { - invokingState = -1; - } - antlr4.ParserRuleContext.call(this, parent, invokingState); - this.parser = parser; - this.ruleIndex = ObjectiveCParser.RULE_functionDefinition; - return this; -} - -FunctionDefinitionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); -FunctionDefinitionContext.prototype.constructor = FunctionDefinitionContext; - -FunctionDefinitionContext.prototype.functionSignature = function() { - return this.getTypedRuleContext(FunctionSignatureContext,0); -}; - -FunctionDefinitionContext.prototype.compoundStatement = function() { + this.state = 910; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 908; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 906; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 907; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 912; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 913; + this.match(ObjectiveCParser.SEMI); + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + + +function FunctionDefinitionContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ObjectiveCParser.RULE_functionDefinition; + return this; +} + +FunctionDefinitionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FunctionDefinitionContext.prototype.constructor = FunctionDefinitionContext; + +FunctionDefinitionContext.prototype.functionSignature = function() { + return this.getTypedRuleContext(FunctionSignatureContext,0); +}; + +FunctionDefinitionContext.prototype.compoundStatement = function() { return this.getTypedRuleContext(CompoundStatementContext,0); }; +FunctionDefinitionContext.prototype.macro = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(MacroContext); + } else { + return this.getTypedRuleContext(MacroContext,i); + } +}; + +FunctionDefinitionContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + FunctionDefinitionContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterFunctionDefinition(this); @@ -8379,12 +9064,81 @@ ObjectiveCParser.FunctionDefinitionContext = FunctionDefinitionContext; ObjectiveCParser.prototype.functionDefinition = function() { var localctx = new FunctionDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 122, ObjectiveCParser.RULE_functionDefinition); + this.enterRule(localctx, 124, ObjectiveCParser.RULE_functionDefinition); + var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 883; + this.state = 915; this.functionSignature(); - this.state = 884; + this.state = 920; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 918; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 916; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 917; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 922; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 923; this.compoundStatement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -8461,41 +9215,196 @@ ObjectiveCParser.FunctionSignatureContext = FunctionSignatureContext; ObjectiveCParser.prototype.functionSignature = function() { var localctx = new FunctionSignatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 124, ObjectiveCParser.RULE_functionSignature); + this.enterRule(localctx, 126, ObjectiveCParser.RULE_functionSignature); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 887; + this.state = 926; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,92,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,103,this._ctx); if(la_===1) { - this.state = 886; + this.state = 925; this.declarationSpecifiers(); } - this.state = 889; + this.state = 928; this.identifier(); - this.state = 890; + this.state = 929; this.match(ObjectiveCParser.LP); - this.state = 892; + this.state = 931; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 891; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 81)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0)) { + this.state = 930; this.parameterList(); } - this.state = 894; + this.state = 933; this.match(ObjectiveCParser.RP); - this.state = 897; + this.state = 936; this._errHandler.sync(this); - _la = this._input.LA(1); - if(_la===ObjectiveCParser.ATTRIBUTE) { - this.state = 896; + var la_ = this._interp.adaptivePredict(this._input,105,this._ctx); + if(la_===1) { + this.state = 935; this.attributeSpecifier(); + } + } catch (re) { + if(re instanceof antlr4.error.RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } finally { + this.exitRule(); + } + return localctx; +}; + + +function FunctionPointerContext(parser, parent, invokingState) { + if(parent===undefined) { + parent = null; + } + if(invokingState===undefined || invokingState===null) { + invokingState = -1; + } + antlr4.ParserRuleContext.call(this, parent, invokingState); + this.parser = parser; + this.ruleIndex = ObjectiveCParser.RULE_functionPointer; + this.name = null; // IdentifierContext + return this; +} + +FunctionPointerContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); +FunctionPointerContext.prototype.constructor = FunctionPointerContext; +FunctionPointerContext.prototype.LP = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(ObjectiveCParser.LP); + } else { + return this.getToken(ObjectiveCParser.LP, i); + } +}; + + +FunctionPointerContext.prototype.MUL = function() { + return this.getToken(ObjectiveCParser.MUL, 0); +}; + +FunctionPointerContext.prototype.RP = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(ObjectiveCParser.RP); + } else { + return this.getToken(ObjectiveCParser.RP, i); + } +}; + + +FunctionPointerContext.prototype.declarationSpecifiers = function() { + return this.getTypedRuleContext(DeclarationSpecifiersContext,0); +}; + +FunctionPointerContext.prototype.attributeSpecifier = function() { + return this.getTypedRuleContext(AttributeSpecifierContext,0); +}; + +FunctionPointerContext.prototype.nullabilitySpecifier = function() { + return this.getTypedRuleContext(NullabilitySpecifierContext,0); +}; + +FunctionPointerContext.prototype.parameterList = function() { + return this.getTypedRuleContext(ParameterListContext,0); +}; + +FunctionPointerContext.prototype.identifier = function() { + return this.getTypedRuleContext(IdentifierContext,0); +}; + +FunctionPointerContext.prototype.enterRule = function(listener) { + if(listener instanceof ObjectiveCParserListener ) { + listener.enterFunctionPointer(this); + } +}; + +FunctionPointerContext.prototype.exitRule = function(listener) { + if(listener instanceof ObjectiveCParserListener ) { + listener.exitFunctionPointer(this); + } +}; + + + + +ObjectiveCParser.FunctionPointerContext = FunctionPointerContext; + +ObjectiveCParser.prototype.functionPointer = function() { + + var localctx = new FunctionPointerContext(this, this._ctx, this.state); + this.enterRule(localctx, 128, ObjectiveCParser.RULE_functionPointer); + var _la = 0; // Token type + try { + this.enterOuterAlt(localctx, 1); + this.state = 939; + this._errHandler.sync(this); + _la = this._input.LA(1); + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 81)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 938; + this.declarationSpecifiers(); + } + + this.state = 941; + this.match(ObjectiveCParser.LP); + this.state = 942; + this.match(ObjectiveCParser.MUL); + this.state = 944; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,107,this._ctx); + if(la_===1) { + this.state = 943; + this.nullabilitySpecifier(); + + } + this.state = 947; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 946; + localctx.name = this.identifier(); + } + + this.state = 949; + this.match(ObjectiveCParser.RP); + + this.state = 951; + this.match(ObjectiveCParser.LP); + this.state = 953; + this._errHandler.sync(this); + _la = this._input.LA(1); + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 81)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0)) { + this.state = 952; + this.parameterList(); + } + + this.state = 955; + this.match(ObjectiveCParser.RP); + this.state = 958; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,110,this._ctx); + if(la_===1) { + this.state = 957; + this.attributeSpecifier(); + + } } catch (re) { if(re instanceof antlr4.error.RecognitionException) { localctx.exception = re; @@ -8555,17 +9464,17 @@ ObjectiveCParser.AttributeContext = AttributeContext; ObjectiveCParser.prototype.attribute = function() { var localctx = new AttributeContext(this, this._ctx, this.state); - this.enterRule(localctx, 126, ObjectiveCParser.RULE_attribute); + this.enterRule(localctx, 130, ObjectiveCParser.RULE_attribute); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 899; + this.state = 960; this.attributeName(); - this.state = 901; + this.state = 962; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LP) { - this.state = 900; + this.state = 961; this.attributeParameters(); } @@ -8628,14 +9537,14 @@ ObjectiveCParser.AttributeNameContext = AttributeNameContext; ObjectiveCParser.prototype.attributeName = function() { var localctx = new AttributeNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 128, ObjectiveCParser.RULE_attributeName); + this.enterRule(localctx, 132, ObjectiveCParser.RULE_attributeName); try { - this.state = 905; + this.state = 966; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.CONST: this.enterOuterAlt(localctx, 1); - this.state = 903; + this.state = 964; this.match(ObjectiveCParser.CONST); break; case ObjectiveCParser.BOOL: @@ -8686,7 +9595,7 @@ ObjectiveCParser.prototype.attributeName = function() { case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: this.enterOuterAlt(localctx, 2); - this.state = 904; + this.state = 965; this.identifier(); break; default: @@ -8755,21 +9664,21 @@ ObjectiveCParser.AttributeParametersContext = AttributeParametersContext; ObjectiveCParser.prototype.attributeParameters = function() { var localctx = new AttributeParametersContext(this, this._ctx, this.state); - this.enterRule(localctx, 130, ObjectiveCParser.RULE_attributeParameters); + this.enterRule(localctx, 134, ObjectiveCParser.RULE_attributeParameters); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 907; + this.state = 968; this.match(ObjectiveCParser.LP); - this.state = 909; + this.state = 970; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===ObjectiveCParser.CONST || ((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 152)) & ~0x1f) == 0 && ((1 << (_la - 152)) & ((1 << (ObjectiveCParser.ADD - 152)) | (1 << (ObjectiveCParser.SUB - 152)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 152)) | (1 << (ObjectiveCParser.STRING_START - 152)) | (1 << (ObjectiveCParser.HEX_LITERAL - 152)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 152)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 152)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 152)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 152)))) !== 0)) { - this.state = 908; + if(_la===ObjectiveCParser.CONST || ((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 156)) & ~0x1f) == 0 && ((1 << (_la - 156)) & ((1 << (ObjectiveCParser.ADD - 156)) | (1 << (ObjectiveCParser.SUB - 156)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 156)) | (1 << (ObjectiveCParser.STRING_START - 156)) | (1 << (ObjectiveCParser.HEX_LITERAL - 156)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 156)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 156)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 156)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 156)))) !== 0)) { + this.state = 969; this.attributeParameterList(); } - this.state = 911; + this.state = 972; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -8845,21 +9754,21 @@ ObjectiveCParser.AttributeParameterListContext = AttributeParameterListContext; ObjectiveCParser.prototype.attributeParameterList = function() { var localctx = new AttributeParameterListContext(this, this._ctx, this.state); - this.enterRule(localctx, 132, ObjectiveCParser.RULE_attributeParameterList); + this.enterRule(localctx, 136, ObjectiveCParser.RULE_attributeParameterList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 913; + this.state = 974; this.attributeParameter(); - this.state = 918; + this.state = 979; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 914; + this.state = 975; this.match(ObjectiveCParser.COMMA); - this.state = 915; + this.state = 976; this.attributeParameter(); - this.state = 920; + this.state = 981; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -8930,33 +9839,33 @@ ObjectiveCParser.AttributeParameterContext = AttributeParameterContext; ObjectiveCParser.prototype.attributeParameter = function() { var localctx = new AttributeParameterContext(this, this._ctx, this.state); - this.enterRule(localctx, 134, ObjectiveCParser.RULE_attributeParameter); + this.enterRule(localctx, 138, ObjectiveCParser.RULE_attributeParameter); try { - this.state = 925; + this.state = 986; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,99,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,115,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 921; + this.state = 982; this.attribute(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 922; + this.state = 983; this.constant(); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 923; + this.state = 984; this.stringLiteral(); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 924; + this.state = 985; this.attributeParameterAssignment(); break; @@ -9035,14 +9944,14 @@ ObjectiveCParser.AttributeParameterAssignmentContext = AttributeParameterAssignm ObjectiveCParser.prototype.attributeParameterAssignment = function() { var localctx = new AttributeParameterAssignmentContext(this, this._ctx, this.state); - this.enterRule(localctx, 136, ObjectiveCParser.RULE_attributeParameterAssignment); + this.enterRule(localctx, 140, ObjectiveCParser.RULE_attributeParameterAssignment); try { this.enterOuterAlt(localctx, 1); - this.state = 927; + this.state = 988; this.attributeName(); - this.state = 928; + this.state = 989; this.match(ObjectiveCParser.ASSIGNMENT); - this.state = 932; + this.state = 993; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.TRUE: @@ -9059,7 +9968,7 @@ ObjectiveCParser.prototype.attributeParameterAssignment = function() { case ObjectiveCParser.BINARY_LITERAL: case ObjectiveCParser.DECIMAL_LITERAL: case ObjectiveCParser.FLOATING_POINT_LITERAL: - this.state = 929; + this.state = 990; this.constant(); break; case ObjectiveCParser.CONST: @@ -9110,11 +10019,11 @@ ObjectiveCParser.prototype.attributeParameterAssignment = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: - this.state = 930; + this.state = 991; this.attributeName(); break; case ObjectiveCParser.STRING_START: - this.state = 931; + this.state = 992; this.stringLiteral(); break; default: @@ -9187,33 +10096,33 @@ ObjectiveCParser.DeclarationContext = DeclarationContext; ObjectiveCParser.prototype.declaration = function() { var localctx = new DeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 138, ObjectiveCParser.RULE_declaration); + this.enterRule(localctx, 142, ObjectiveCParser.RULE_declaration); try { - this.state = 938; + this.state = 999; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,101,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,117,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 934; + this.state = 995; this.functionCallExpression(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 935; + this.state = 996; this.enumDeclaration(); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 936; + this.state = 997; this.varDeclaration(); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 937; + this.state = 998; this.typedefDeclaration(); break; @@ -9300,35 +10209,35 @@ ObjectiveCParser.FunctionCallExpressionContext = FunctionCallExpressionContext; ObjectiveCParser.prototype.functionCallExpression = function() { var localctx = new FunctionCallExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 140, ObjectiveCParser.RULE_functionCallExpression); + this.enterRule(localctx, 144, ObjectiveCParser.RULE_functionCallExpression); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 941; + this.state = 1002; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ATTRIBUTE) { - this.state = 940; + this.state = 1001; this.attributeSpecifier(); } - this.state = 943; + this.state = 1004; this.identifier(); - this.state = 945; + this.state = 1006; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ATTRIBUTE) { - this.state = 944; + this.state = 1005; this.attributeSpecifier(); } - this.state = 947; + this.state = 1008; this.match(ObjectiveCParser.LP); - this.state = 948; + this.state = 1009; this.directDeclarator(); - this.state = 949; + this.state = 1010; this.match(ObjectiveCParser.RP); - this.state = 950; + this.state = 1011; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -9370,25 +10279,25 @@ EnumDeclarationContext.prototype.SEMI = function() { return this.getToken(ObjectiveCParser.SEMI, 0); }; -EnumDeclarationContext.prototype.attributeSpecifier = function(i) { +EnumDeclarationContext.prototype.macro = function(i) { if(i===undefined) { i = null; } if(i===null) { - return this.getTypedRuleContexts(AttributeSpecifierContext); + return this.getTypedRuleContexts(MacroContext); } else { - return this.getTypedRuleContext(AttributeSpecifierContext,i); + return this.getTypedRuleContext(MacroContext,i); } }; -EnumDeclarationContext.prototype.macro = function(i) { +EnumDeclarationContext.prototype.attributeSpecifier = function(i) { if(i===undefined) { i = null; } if(i===null) { - return this.getTypedRuleContexts(MacroContext); + return this.getTypedRuleContexts(AttributeSpecifierContext); } else { - return this.getTypedRuleContext(MacroContext,i); + return this.getTypedRuleContext(AttributeSpecifierContext,i); } }; @@ -9420,22 +10329,18 @@ ObjectiveCParser.EnumDeclarationContext = EnumDeclarationContext; ObjectiveCParser.prototype.enumDeclaration = function() { var localctx = new EnumDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 142, ObjectiveCParser.RULE_enumDeclaration); + this.enterRule(localctx, 146, ObjectiveCParser.RULE_enumDeclaration); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 956; + this.state = 1017; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,105,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,121,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 954; + this.state = 1015; this._errHandler.sync(this); switch(this._input.LA(1)) { - case ObjectiveCParser.ATTRIBUTE: - this.state = 952; - this.attributeSpecifier(); - break; case ObjectiveCParser.BOOL: case ObjectiveCParser.Class: case ObjectiveCParser.BYCOPY: @@ -9483,47 +10388,109 @@ ObjectiveCParser.prototype.enumDeclaration = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: - this.state = 953; + this.state = 1013; this.macro(); break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 1014; + this.attributeSpecifier(); + break; default: throw new antlr4.error.NoViableAltException(this); } } - this.state = 958; + this.state = 1019; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,105,this._ctx); + _alt = this._interp.adaptivePredict(this._input,121,this._ctx); } - this.state = 960; + this.state = 1021; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.TYPEDEF) { - this.state = 959; + this.state = 1020; this.match(ObjectiveCParser.TYPEDEF); } - this.state = 962; + this.state = 1023; this.enumSpecifier(); - this.state = 964; + this.state = 1025; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,107,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,123,this._ctx); if(la_===1) { - this.state = 963; + this.state = 1024; localctx.name = this.identifier(); } - this.state = 969; + this.state = 1031; this._errHandler.sync(this); _la = this._input.LA(1); - while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 966; - this.macro(); - this.state = 971; + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1029; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 1027; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 1028; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 1033; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 972; + this.state = 1034; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -9568,6 +10535,28 @@ VarDeclarationContext.prototype.initDeclaratorList = function() { return this.getTypedRuleContext(InitDeclaratorListContext,0); }; +VarDeclarationContext.prototype.macro = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(MacroContext); + } else { + return this.getTypedRuleContext(MacroContext,i); + } +}; + +VarDeclarationContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + VarDeclarationContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterVarDeclaration(this); @@ -9588,27 +10577,96 @@ ObjectiveCParser.VarDeclarationContext = VarDeclarationContext; ObjectiveCParser.prototype.varDeclaration = function() { var localctx = new VarDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 144, ObjectiveCParser.RULE_varDeclaration); + this.enterRule(localctx, 148, ObjectiveCParser.RULE_varDeclaration); + var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 978; + this.state = 1040; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,109,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,126,this._ctx); switch(la_) { case 1: - this.state = 974; + this.state = 1036; this.declarationSpecifiers(); - this.state = 975; + this.state = 1037; this.initDeclaratorList(); break; case 2: - this.state = 977; + this.state = 1039; this.declarationSpecifiers(); break; } - this.state = 980; + this.state = 1046; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1044; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 1042; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 1043; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 1048; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1049; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -9657,8 +10715,42 @@ TypedefDeclarationContext.prototype.typeDeclaratorList = function() { return this.getTypedRuleContext(TypeDeclaratorListContext,0); }; -TypedefDeclarationContext.prototype.attributeSpecifier = function() { - return this.getTypedRuleContext(AttributeSpecifierContext,0); +TypedefDeclarationContext.prototype.functionPointer = function() { + return this.getTypedRuleContext(FunctionPointerContext,0); +}; + +TypedefDeclarationContext.prototype.functionSignature = function() { + return this.getTypedRuleContext(FunctionSignatureContext,0); +}; + +TypedefDeclarationContext.prototype.structOrUnionSpecifier = function() { + return this.getTypedRuleContext(StructOrUnionSpecifierContext,0); +}; + +TypedefDeclarationContext.prototype.identifier = function() { + return this.getTypedRuleContext(IdentifierContext,0); +}; + +TypedefDeclarationContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + +TypedefDeclarationContext.prototype.macro = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(MacroContext); + } else { + return this.getTypedRuleContext(MacroContext,i); + } }; TypedefDeclarationContext.prototype.enterRule = function(listener) { @@ -9681,38 +10773,123 @@ ObjectiveCParser.TypedefDeclarationContext = TypedefDeclarationContext; ObjectiveCParser.prototype.typedefDeclaration = function() { var localctx = new TypedefDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 146, ObjectiveCParser.RULE_typedefDeclaration); + this.enterRule(localctx, 150, ObjectiveCParser.RULE_typedefDeclaration); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 983; + this.state = 1052; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ATTRIBUTE) { - this.state = 982; + this.state = 1051; this.attributeSpecifier(); } - this.state = 985; + this.state = 1054; this.match(ObjectiveCParser.TYPEDEF); - this.state = 990; + this.state = 1064; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,111,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,130,this._ctx); switch(la_) { case 1: - this.state = 986; + this.state = 1055; this.declarationSpecifiers(); - this.state = 987; + this.state = 1056; this.typeDeclaratorList(); break; case 2: - this.state = 989; + this.state = 1058; this.declarationSpecifiers(); break; + case 3: + this.state = 1059; + this.functionPointer(); + break; + + case 4: + this.state = 1060; + this.functionSignature(); + break; + + case 5: + this.state = 1061; + this.structOrUnionSpecifier(); + this.state = 1062; + this.identifier(); + break; + + } + this.state = 1070; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1068; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 1066; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 1067; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 1072; + this._errHandler.sync(this); + _la = this._input.LA(1); } - this.state = 992; + this.state = 1073; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -9788,21 +10965,21 @@ ObjectiveCParser.TypeDeclaratorListContext = TypeDeclaratorListContext; ObjectiveCParser.prototype.typeDeclaratorList = function() { var localctx = new TypeDeclaratorListContext(this, this._ctx, this.state); - this.enterRule(localctx, 148, ObjectiveCParser.RULE_typeDeclaratorList); + this.enterRule(localctx, 152, ObjectiveCParser.RULE_typeDeclaratorList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 994; + this.state = 1075; this.typeDeclarator(); - this.state = 999; + this.state = 1080; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 995; + this.state = 1076; this.match(ObjectiveCParser.COMMA); - this.state = 996; + this.state = 1077; this.typeDeclarator(); - this.state = 1001; + this.state = 1082; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -9865,19 +11042,19 @@ ObjectiveCParser.TypeDeclaratorContext = TypeDeclaratorContext; ObjectiveCParser.prototype.typeDeclarator = function() { var localctx = new TypeDeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 150, ObjectiveCParser.RULE_typeDeclarator); + this.enterRule(localctx, 154, ObjectiveCParser.RULE_typeDeclarator); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1003; + this.state = 1084; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.MUL) { - this.state = 1002; + this.state = 1083; this.pointer(); } - this.state = 1005; + this.state = 1086; this.directDeclarator(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -10018,56 +11195,56 @@ ObjectiveCParser.DeclarationSpecifiersContext = DeclarationSpecifiersContext; ObjectiveCParser.prototype.declarationSpecifiers = function() { var localctx = new DeclarationSpecifiersContext(this, this._ctx, this.state); - this.enterRule(localctx, 152, ObjectiveCParser.RULE_declarationSpecifiers); + this.enterRule(localctx, 156, ObjectiveCParser.RULE_declarationSpecifiers); try { this.enterOuterAlt(localctx, 1); - this.state = 1015; + this.state = 1096; this._errHandler.sync(this); var _alt = 1; do { switch (_alt) { case 1: - this.state = 1015; + this.state = 1096; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,114,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,135,this._ctx); switch(la_) { case 1: - this.state = 1007; + this.state = 1088; this.storageClassSpecifier(); break; case 2: - this.state = 1008; + this.state = 1089; this.attributeSpecifier(); break; case 3: - this.state = 1009; + this.state = 1090; this.arcBehaviourSpecifier(); break; case 4: - this.state = 1010; + this.state = 1091; this.nullabilitySpecifier(); break; case 5: - this.state = 1011; + this.state = 1092; this.ibOutletQualifier(); break; case 6: - this.state = 1012; + this.state = 1093; this.typePrefix(); break; case 7: - this.state = 1013; + this.state = 1094; this.typeQualifier(); break; case 8: - this.state = 1014; + this.state = 1095; this.typeSpecifier(); break; @@ -10076,9 +11253,9 @@ ObjectiveCParser.prototype.declarationSpecifiers = function() { default: throw new antlr4.error.NoViableAltException(this); } - this.state = 1017; + this.state = 1098; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,115, this._ctx); + _alt = this._interp.adaptivePredict(this._input,136, this._ctx); } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -10182,33 +11359,33 @@ ObjectiveCParser.AttributeSpecifierContext = AttributeSpecifierContext; ObjectiveCParser.prototype.attributeSpecifier = function() { var localctx = new AttributeSpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 154, ObjectiveCParser.RULE_attributeSpecifier); + this.enterRule(localctx, 158, ObjectiveCParser.RULE_attributeSpecifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1019; + this.state = 1100; this.match(ObjectiveCParser.ATTRIBUTE); - this.state = 1020; + this.state = 1101; this.match(ObjectiveCParser.LP); - this.state = 1021; + this.state = 1102; this.match(ObjectiveCParser.LP); - this.state = 1022; + this.state = 1103; this.attribute(); - this.state = 1027; + this.state = 1108; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 1023; + this.state = 1104; this.match(ObjectiveCParser.COMMA); - this.state = 1024; + this.state = 1105; this.attribute(); - this.state = 1029; + this.state = 1110; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1030; + this.state = 1111; this.match(ObjectiveCParser.RP); - this.state = 1031; + this.state = 1112; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -10284,21 +11461,21 @@ ObjectiveCParser.InitDeclaratorListContext = InitDeclaratorListContext; ObjectiveCParser.prototype.initDeclaratorList = function() { var localctx = new InitDeclaratorListContext(this, this._ctx, this.state); - this.enterRule(localctx, 156, ObjectiveCParser.RULE_initDeclaratorList); + this.enterRule(localctx, 160, ObjectiveCParser.RULE_initDeclaratorList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1033; + this.state = 1114; this.initDeclarator(); - this.state = 1038; + this.state = 1119; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 1034; + this.state = 1115; this.match(ObjectiveCParser.COMMA); - this.state = 1035; + this.state = 1116; this.initDeclarator(); - this.state = 1040; + this.state = 1121; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -10337,6 +11514,28 @@ InitDeclaratorContext.prototype.declarator = function() { return this.getTypedRuleContext(DeclaratorContext,0); }; +InitDeclaratorContext.prototype.macro = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(MacroContext); + } else { + return this.getTypedRuleContext(MacroContext,i); + } +}; + +InitDeclaratorContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + InitDeclaratorContext.prototype.ASSIGNMENT = function() { return this.getToken(ObjectiveCParser.ASSIGNMENT, 0); }; @@ -10365,19 +11564,90 @@ ObjectiveCParser.InitDeclaratorContext = InitDeclaratorContext; ObjectiveCParser.prototype.initDeclarator = function() { var localctx = new InitDeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 158, ObjectiveCParser.RULE_initDeclarator); + this.enterRule(localctx, 162, ObjectiveCParser.RULE_initDeclarator); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1041; + this.state = 1122; this.declarator(); - this.state = 1044; + this.state = 1127; + this._errHandler.sync(this); + var _alt = this._interp.adaptivePredict(this._input,140,this._ctx) + while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { + if(_alt===1) { + this.state = 1125; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 1123; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 1124; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + } + this.state = 1129; + this._errHandler.sync(this); + _alt = this._interp.adaptivePredict(this._input,140,this._ctx); + } + + this.state = 1132; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ASSIGNMENT) { - this.state = 1042; + this.state = 1130; this.match(ObjectiveCParser.ASSIGNMENT); - this.state = 1043; + this.state = 1131; this.initializer(); } @@ -10463,11 +11733,11 @@ ObjectiveCParser.StructOrUnionSpecifierContext = StructOrUnionSpecifierContext; ObjectiveCParser.prototype.structOrUnionSpecifier = function() { var localctx = new StructOrUnionSpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 160, ObjectiveCParser.RULE_structOrUnionSpecifier); + this.enterRule(localctx, 164, ObjectiveCParser.RULE_structOrUnionSpecifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1046; + this.state = 1134; _la = this._input.LA(1); if(!(_la===ObjectiveCParser.STRUCT || _la===ObjectiveCParser.UNION)) { this._errHandler.recoverInline(this); @@ -10476,37 +11746,37 @@ ObjectiveCParser.prototype.structOrUnionSpecifier = function() { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1059; + this.state = 1147; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,121,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,144,this._ctx); switch(la_) { case 1: - this.state = 1047; + this.state = 1135; this.identifier(); break; case 2: - this.state = 1049; + this.state = 1137; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 1048; + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1136; this.identifier(); } - this.state = 1051; + this.state = 1139; this.match(ObjectiveCParser.LBRACE); - this.state = 1053; + this.state = 1141; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 1052; + this.state = 1140; this.fieldDeclaration(); - this.state = 1055; + this.state = 1143; this._errHandler.sync(this); _la = this._input.LA(1); - } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)); - this.state = 1057; + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 81)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0)); + this.state = 1145; this.match(ObjectiveCParser.RBRACE); break; @@ -10542,6 +11812,10 @@ function FieldDeclarationContext(parser, parent, invokingState) { FieldDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); FieldDeclarationContext.prototype.constructor = FieldDeclarationContext; +FieldDeclarationContext.prototype.SEMI = function() { + return this.getToken(ObjectiveCParser.SEMI, 0); +}; + FieldDeclarationContext.prototype.specifierQualifierList = function() { return this.getTypedRuleContext(SpecifierQualifierListContext,0); }; @@ -10550,8 +11824,8 @@ FieldDeclarationContext.prototype.fieldDeclaratorList = function() { return this.getTypedRuleContext(FieldDeclaratorListContext,0); }; -FieldDeclarationContext.prototype.SEMI = function() { - return this.getToken(ObjectiveCParser.SEMI, 0); +FieldDeclarationContext.prototype.functionPointer = function() { + return this.getTypedRuleContext(FunctionPointerContext,0); }; FieldDeclarationContext.prototype.macro = function(i) { @@ -10565,6 +11839,17 @@ FieldDeclarationContext.prototype.macro = function(i) { } }; +FieldDeclarationContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + FieldDeclarationContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterFieldDeclaration(this); @@ -10585,25 +11870,96 @@ ObjectiveCParser.FieldDeclarationContext = FieldDeclarationContext; ObjectiveCParser.prototype.fieldDeclaration = function() { var localctx = new FieldDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 162, ObjectiveCParser.RULE_fieldDeclaration); + this.enterRule(localctx, 166, ObjectiveCParser.RULE_fieldDeclaration); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1061; - this.specifierQualifierList(); - this.state = 1062; - this.fieldDeclaratorList(); - this.state = 1066; + this.state = 1153; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,145,this._ctx); + switch(la_) { + case 1: + this.state = 1149; + this.specifierQualifierList(); + this.state = 1150; + this.fieldDeclaratorList(); + break; + + case 2: + this.state = 1152; + this.functionPointer(); + break; + + } + this.state = 1159; this._errHandler.sync(this); _la = this._input.LA(1); - while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 1063; - this.macro(); - this.state = 1068; + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1157; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 1155; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 1156; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 1161; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1069; + this.state = 1162; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -10722,46 +12078,46 @@ ObjectiveCParser.SpecifierQualifierListContext = SpecifierQualifierListContext; ObjectiveCParser.prototype.specifierQualifierList = function() { var localctx = new SpecifierQualifierListContext(this, this._ctx, this.state); - this.enterRule(localctx, 164, ObjectiveCParser.RULE_specifierQualifierList); + this.enterRule(localctx, 168, ObjectiveCParser.RULE_specifierQualifierList); try { this.enterOuterAlt(localctx, 1); - this.state = 1077; + this.state = 1170; this._errHandler.sync(this); var _alt = 1; do { switch (_alt) { case 1: - this.state = 1077; + this.state = 1170; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,123,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,148,this._ctx); switch(la_) { case 1: - this.state = 1071; + this.state = 1164; this.arcBehaviourSpecifier(); break; case 2: - this.state = 1072; + this.state = 1165; this.nullabilitySpecifier(); break; case 3: - this.state = 1073; + this.state = 1166; this.ibOutletQualifier(); break; case 4: - this.state = 1074; + this.state = 1167; this.typePrefix(); break; case 5: - this.state = 1075; + this.state = 1168; this.typeQualifier(); break; case 6: - this.state = 1076; + this.state = 1169; this.typeSpecifier(); break; @@ -10770,9 +12126,9 @@ ObjectiveCParser.prototype.specifierQualifierList = function() { default: throw new antlr4.error.NoViableAltException(this); } - this.state = 1079; + this.state = 1172; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,124, this._ctx); + _alt = this._interp.adaptivePredict(this._input,149, this._ctx); } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -10845,25 +12201,25 @@ ObjectiveCParser.IbOutletQualifierContext = IbOutletQualifierContext; ObjectiveCParser.prototype.ibOutletQualifier = function() { var localctx = new IbOutletQualifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 166, ObjectiveCParser.RULE_ibOutletQualifier); + this.enterRule(localctx, 170, ObjectiveCParser.RULE_ibOutletQualifier); try { - this.state = 1087; + this.state = 1180; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.IB_OUTLET_COLLECTION: this.enterOuterAlt(localctx, 1); - this.state = 1081; + this.state = 1174; this.match(ObjectiveCParser.IB_OUTLET_COLLECTION); - this.state = 1082; + this.state = 1175; this.match(ObjectiveCParser.LP); - this.state = 1083; + this.state = 1176; this.identifier(); - this.state = 1084; + this.state = 1177; this.match(ObjectiveCParser.RP); break; case ObjectiveCParser.IB_OUTLET: this.enterOuterAlt(localctx, 2); - this.state = 1086; + this.state = 1179; this.match(ObjectiveCParser.IB_OUTLET); break; default: @@ -10936,11 +12292,11 @@ ObjectiveCParser.ArcBehaviourSpecifierContext = ArcBehaviourSpecifierContext; ObjectiveCParser.prototype.arcBehaviourSpecifier = function() { var localctx = new ArcBehaviourSpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 168, ObjectiveCParser.RULE_arcBehaviourSpecifier); + this.enterRule(localctx, 172, ObjectiveCParser.RULE_arcBehaviourSpecifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1089; + this.state = 1182; _la = this._input.LA(1); if(!(((((_la - 85)) & ~0x1f) == 0 && ((1 << (_la - 85)) & ((1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 85)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 85)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 85)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 85)))) !== 0))) { this._errHandler.recoverInline(this); @@ -11016,11 +12372,11 @@ ObjectiveCParser.NullabilitySpecifierContext = NullabilitySpecifierContext; ObjectiveCParser.prototype.nullabilitySpecifier = function() { var localctx = new NullabilitySpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 170, ObjectiveCParser.RULE_nullabilitySpecifier); + this.enterRule(localctx, 174, ObjectiveCParser.RULE_nullabilitySpecifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1091; + this.state = 1184; _la = this._input.LA(1); if(!(((((_la - 99)) & ~0x1f) == 0 && ((1 << (_la - 99)) & ((1 << (ObjectiveCParser.NULL_UNSPECIFIED - 99)) | (1 << (ObjectiveCParser.NULLABLE - 99)) | (1 << (ObjectiveCParser.NONNULL - 99)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 99)))) !== 0))) { this._errHandler.recoverInline(this); @@ -11096,11 +12452,11 @@ ObjectiveCParser.StorageClassSpecifierContext = StorageClassSpecifierContext; ObjectiveCParser.prototype.storageClassSpecifier = function() { var localctx = new StorageClassSpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 172, ObjectiveCParser.RULE_storageClassSpecifier); + this.enterRule(localctx, 176, ObjectiveCParser.RULE_storageClassSpecifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1093; + this.state = 1186; _la = this._input.LA(1); if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.STATIC))) !== 0))) { this._errHandler.recoverInline(this); @@ -11188,11 +12544,11 @@ ObjectiveCParser.TypePrefixContext = TypePrefixContext; ObjectiveCParser.prototype.typePrefix = function() { var localctx = new TypePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 174, ObjectiveCParser.RULE_typePrefix); + this.enterRule(localctx, 178, ObjectiveCParser.RULE_typePrefix); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1095; + this.state = 1188; _la = this._input.LA(1); if(!(_la===ObjectiveCParser.INLINE || ((((_la - 86)) & ~0x1f) == 0 && ((1 << (_la - 86)) & ((1 << (ObjectiveCParser.BLOCK - 86)) | (1 << (ObjectiveCParser.BRIDGE - 86)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 86)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 86)) | (1 << (ObjectiveCParser.KINDOF - 86)) | (1 << (ObjectiveCParser.NS_INLINE - 86)))) !== 0))) { this._errHandler.recoverInline(this); @@ -11268,24 +12624,24 @@ ObjectiveCParser.TypeQualifierContext = TypeQualifierContext; ObjectiveCParser.prototype.typeQualifier = function() { var localctx = new TypeQualifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 176, ObjectiveCParser.RULE_typeQualifier); + this.enterRule(localctx, 180, ObjectiveCParser.RULE_typeQualifier); try { - this.state = 1101; + this.state = 1194; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.CONST: this.enterOuterAlt(localctx, 1); - this.state = 1097; + this.state = 1190; this.match(ObjectiveCParser.CONST); break; case ObjectiveCParser.VOLATILE: this.enterOuterAlt(localctx, 2); - this.state = 1098; + this.state = 1191; this.match(ObjectiveCParser.VOLATILE); break; case ObjectiveCParser.RESTRICT: this.enterOuterAlt(localctx, 3); - this.state = 1099; + this.state = 1192; this.match(ObjectiveCParser.RESTRICT); break; case ObjectiveCParser.BYCOPY: @@ -11295,7 +12651,7 @@ ObjectiveCParser.prototype.typeQualifier = function() { case ObjectiveCParser.ONEWAY: case ObjectiveCParser.OUT: this.enterOuterAlt(localctx, 4); - this.state = 1100; + this.state = 1193; this.protocolQualifier(); break; default: @@ -11376,11 +12732,11 @@ ObjectiveCParser.ProtocolQualifierContext = ProtocolQualifierContext; ObjectiveCParser.prototype.protocolQualifier = function() { var localctx = new ProtocolQualifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 178, ObjectiveCParser.RULE_protocolQualifier); + this.enterRule(localctx, 182, ObjectiveCParser.RULE_protocolQualifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1103; + this.state = 1196; _la = this._input.LA(1); if(!(((((_la - 42)) & ~0x1f) == 0 && ((1 << (_la - 42)) & ((1 << (ObjectiveCParser.BYCOPY - 42)) | (1 << (ObjectiveCParser.BYREF - 42)) | (1 << (ObjectiveCParser.IN - 42)) | (1 << (ObjectiveCParser.INOUT - 42)) | (1 << (ObjectiveCParser.ONEWAY - 42)) | (1 << (ObjectiveCParser.OUT - 42)))) !== 0))) { this._errHandler.recoverInline(this); @@ -11500,105 +12856,92 @@ ObjectiveCParser.TypeSpecifierContext = TypeSpecifierContext; ObjectiveCParser.prototype.typeSpecifier = function() { var localctx = new TypeSpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 180, ObjectiveCParser.RULE_typeSpecifier); + this.enterRule(localctx, 184, ObjectiveCParser.RULE_typeSpecifier); try { - this.state = 1122; + this.enterOuterAlt(localctx, 1); + this.state = 1212; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,128,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,152,this._ctx); switch(la_) { case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1105; + this.state = 1198; this.match(ObjectiveCParser.VOID); break; case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1106; + this.state = 1199; this.match(ObjectiveCParser.CHAR); break; case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1107; + this.state = 1200; this.match(ObjectiveCParser.SHORT); break; case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1108; + this.state = 1201; this.match(ObjectiveCParser.INT); break; case 5: - this.enterOuterAlt(localctx, 5); - this.state = 1109; + this.state = 1202; this.match(ObjectiveCParser.LONG); break; case 6: - this.enterOuterAlt(localctx, 6); - this.state = 1110; + this.state = 1203; this.match(ObjectiveCParser.FLOAT); break; case 7: - this.enterOuterAlt(localctx, 7); - this.state = 1111; + this.state = 1204; this.match(ObjectiveCParser.DOUBLE); break; case 8: - this.enterOuterAlt(localctx, 8); - this.state = 1112; + this.state = 1205; this.match(ObjectiveCParser.SIGNED); break; case 9: - this.enterOuterAlt(localctx, 9); - this.state = 1113; + this.state = 1206; this.match(ObjectiveCParser.UNSIGNED); break; case 10: - this.enterOuterAlt(localctx, 10); - this.state = 1114; + this.state = 1207; this.typeofExpression(); break; case 11: - this.enterOuterAlt(localctx, 11); - this.state = 1115; + this.state = 1208; this.genericTypeSpecifier(); break; case 12: - this.enterOuterAlt(localctx, 12); - this.state = 1116; + this.state = 1209; this.structOrUnionSpecifier(); break; case 13: - this.enterOuterAlt(localctx, 13); - this.state = 1117; + this.state = 1210; this.enumSpecifier(); break; case 14: - this.enterOuterAlt(localctx, 14); - this.state = 1118; + this.state = 1211; this.identifier(); - this.state = 1120; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,127,this._ctx); - if(la_===1) { - this.state = 1119; - this.pointer(); - - } break; } + this.state = 1215; + this._errHandler.sync(this); + var la_ = this._interp.adaptivePredict(this._input,153,this._ctx); + if(la_===1) { + this.state = 1214; + this.pointer(); + + } } catch (re) { if(re instanceof antlr4.error.RecognitionException) { localctx.exception = re; @@ -11666,17 +13009,17 @@ ObjectiveCParser.TypeofExpressionContext = TypeofExpressionContext; ObjectiveCParser.prototype.typeofExpression = function() { var localctx = new TypeofExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 182, ObjectiveCParser.RULE_typeofExpression); + this.enterRule(localctx, 186, ObjectiveCParser.RULE_typeofExpression); try { this.enterOuterAlt(localctx, 1); - this.state = 1124; + this.state = 1217; this.match(ObjectiveCParser.TYPEOF); - this.state = 1125; + this.state = 1218; this.match(ObjectiveCParser.LP); - this.state = 1126; + this.state = 1219; this.expression(0); - this.state = 1127; + this.state = 1220; this.match(ObjectiveCParser.RP); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -11752,21 +13095,21 @@ ObjectiveCParser.FieldDeclaratorListContext = FieldDeclaratorListContext; ObjectiveCParser.prototype.fieldDeclaratorList = function() { var localctx = new FieldDeclaratorListContext(this, this._ctx, this.state); - this.enterRule(localctx, 184, ObjectiveCParser.RULE_fieldDeclaratorList); + this.enterRule(localctx, 188, ObjectiveCParser.RULE_fieldDeclaratorList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1129; + this.state = 1222; this.fieldDeclarator(); - this.state = 1134; + this.state = 1227; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 1130; + this.state = 1223; this.match(ObjectiveCParser.COMMA); - this.state = 1131; + this.state = 1224; this.fieldDeclarator(); - this.state = 1136; + this.state = 1229; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -11833,32 +13176,32 @@ ObjectiveCParser.FieldDeclaratorContext = FieldDeclaratorContext; ObjectiveCParser.prototype.fieldDeclarator = function() { var localctx = new FieldDeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 186, ObjectiveCParser.RULE_fieldDeclarator); + this.enterRule(localctx, 190, ObjectiveCParser.RULE_fieldDeclarator); var _la = 0; // Token type try { - this.state = 1143; + this.state = 1236; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,131,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,156,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1137; + this.state = 1230; this.declarator(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1139; + this.state = 1232; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0) || _la===ObjectiveCParser.MUL) { - this.state = 1138; + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0) || _la===ObjectiveCParser.MUL) { + this.state = 1231; this.declarator(); } - this.state = 1141; + this.state = 1234; this.match(ObjectiveCParser.COLON); - this.state = 1142; + this.state = 1235; this.constant(); break; @@ -11935,10 +13278,6 @@ EnumSpecifierContext.prototype.LP = function() { return this.getToken(ObjectiveCParser.LP, 0); }; -EnumSpecifierContext.prototype.COMMA = function() { - return this.getToken(ObjectiveCParser.COMMA, 0); -}; - EnumSpecifierContext.prototype.RP = function() { return this.getToken(ObjectiveCParser.RP, 0); }; @@ -11951,6 +13290,18 @@ EnumSpecifierContext.prototype.NS_ENUM = function() { return this.getToken(ObjectiveCParser.NS_ENUM, 0); }; +EnumSpecifierContext.prototype.NS_ERROR_ENUM = function() { + return this.getToken(ObjectiveCParser.NS_ERROR_ENUM, 0); +}; + +EnumSpecifierContext.prototype.NS_CLOSED_ENUM = function() { + return this.getToken(ObjectiveCParser.NS_CLOSED_ENUM, 0); +}; + +EnumSpecifierContext.prototype.COMMA = function() { + return this.getToken(ObjectiveCParser.COMMA, 0); +}; + EnumSpecifierContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterEnumSpecifier(this); @@ -11971,35 +13322,35 @@ ObjectiveCParser.EnumSpecifierContext = EnumSpecifierContext; ObjectiveCParser.prototype.enumSpecifier = function() { var localctx = new EnumSpecifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 188, ObjectiveCParser.RULE_enumSpecifier); + this.enterRule(localctx, 192, ObjectiveCParser.RULE_enumSpecifier); var _la = 0; // Token type try { - this.state = 1176; + this.state = 1271; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.ENUM: this.enterOuterAlt(localctx, 1); - this.state = 1145; + this.state = 1238; this.match(ObjectiveCParser.ENUM); - this.state = 1151; + this.state = 1244; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,133,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,158,this._ctx); if(la_===1) { - this.state = 1147; + this.state = 1240; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 1146; + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1239; localctx.name = this.identifier(); } - this.state = 1149; + this.state = 1242; this.match(ObjectiveCParser.COLON); - this.state = 1150; + this.state = 1243; this.typeName(); } - this.state = 1164; + this.state = 1257; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.BOOL: @@ -12049,27 +13400,27 @@ ObjectiveCParser.prototype.enumSpecifier = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: - this.state = 1153; + this.state = 1246; this.identifier(); - this.state = 1158; + this.state = 1251; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,134,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,159,this._ctx); if(la_===1) { - this.state = 1154; + this.state = 1247; this.match(ObjectiveCParser.LBRACE); - this.state = 1155; + this.state = 1248; this.enumeratorList(); - this.state = 1156; + this.state = 1249; this.match(ObjectiveCParser.RBRACE); } break; case ObjectiveCParser.LBRACE: - this.state = 1160; + this.state = 1253; this.match(ObjectiveCParser.LBRACE); - this.state = 1161; + this.state = 1254; this.enumeratorList(); - this.state = 1162; + this.state = 1255; this.match(ObjectiveCParser.RBRACE); break; default: @@ -12078,32 +13429,40 @@ ObjectiveCParser.prototype.enumSpecifier = function() { break; case ObjectiveCParser.NS_ENUM: case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.NS_CLOSED_ENUM: + case ObjectiveCParser.NS_ERROR_ENUM: this.enterOuterAlt(localctx, 2); - this.state = 1166; + this.state = 1259; localctx.type = this._input.LT(1); _la = this._input.LA(1); - if(!(_la===ObjectiveCParser.NS_ENUM || _la===ObjectiveCParser.NS_OPTIONS)) { + if(!(((((_la - 104)) & ~0x1f) == 0 && ((1 << (_la - 104)) & ((1 << (ObjectiveCParser.NS_ENUM - 104)) | (1 << (ObjectiveCParser.NS_OPTIONS - 104)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 104)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 104)))) !== 0))) { localctx.type = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1167; + this.state = 1260; this.match(ObjectiveCParser.LP); - this.state = 1168; + this.state = 1261; this.typeName(); - this.state = 1169; - this.match(ObjectiveCParser.COMMA); - this.state = 1170; - localctx.name = this.identifier(); - this.state = 1171; + this.state = 1264; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(_la===ObjectiveCParser.COMMA) { + this.state = 1262; + this.match(ObjectiveCParser.COMMA); + this.state = 1263; + localctx.name = this.identifier(); + } + + this.state = 1266; this.match(ObjectiveCParser.RP); - this.state = 1172; + this.state = 1267; this.match(ObjectiveCParser.LBRACE); - this.state = 1173; + this.state = 1268; this.enumeratorList(); - this.state = 1174; + this.state = 1269; this.match(ObjectiveCParser.RBRACE); break; default: @@ -12185,34 +13544,34 @@ ObjectiveCParser.EnumeratorListContext = EnumeratorListContext; ObjectiveCParser.prototype.enumeratorList = function() { var localctx = new EnumeratorListContext(this, this._ctx, this.state); - this.enterRule(localctx, 190, ObjectiveCParser.RULE_enumeratorList); + this.enterRule(localctx, 194, ObjectiveCParser.RULE_enumeratorList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1178; + this.state = 1273; localctx._enumerator = this.enumerator(); localctx.list.push(localctx._enumerator); - this.state = 1183; + this.state = 1278; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,137,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,163,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 1179; + this.state = 1274; this.match(ObjectiveCParser.COMMA); - this.state = 1180; + this.state = 1275; localctx._enumerator = this.enumerator(); localctx.list.push(localctx._enumerator); } - this.state = 1185; + this.state = 1280; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,137,this._ctx); + _alt = this._interp.adaptivePredict(this._input,163,this._ctx); } - this.state = 1187; + this.state = 1282; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 1186; + this.state = 1281; this.match(ObjectiveCParser.COMMA); } @@ -12253,10 +13612,6 @@ EnumeratorContext.prototype.enumeratorIdentifier = function() { return this.getTypedRuleContext(EnumeratorIdentifierContext,0); }; -EnumeratorContext.prototype.ASSIGNMENT = function() { - return this.getToken(ObjectiveCParser.ASSIGNMENT, 0); -}; - EnumeratorContext.prototype.macro = function(i) { if(i===undefined) { i = null; @@ -12268,6 +13623,21 @@ EnumeratorContext.prototype.macro = function(i) { } }; +EnumeratorContext.prototype.attributeSpecifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(AttributeSpecifierContext); + } else { + return this.getTypedRuleContext(AttributeSpecifierContext,i); + } +}; + +EnumeratorContext.prototype.ASSIGNMENT = function() { + return this.getToken(ObjectiveCParser.ASSIGNMENT, 0); +}; + EnumeratorContext.prototype.expression = function() { return this.getTypedRuleContext(ExpressionContext,0); }; @@ -12292,32 +13662,90 @@ ObjectiveCParser.EnumeratorContext = EnumeratorContext; ObjectiveCParser.prototype.enumerator = function() { var localctx = new EnumeratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 192, ObjectiveCParser.RULE_enumerator); + this.enterRule(localctx, 196, ObjectiveCParser.RULE_enumerator); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1189; + this.state = 1284; localctx.name = this.enumeratorIdentifier(); - this.state = 1192; - this._errHandler.sync(this); - _la = this._input.LA(1); - if(_la===ObjectiveCParser.ASSIGNMENT) { - this.state = 1190; - this.match(ObjectiveCParser.ASSIGNMENT); - this.state = 1191; - localctx.value = this.expression(0); - } - - this.state = 1197; + this.state = 1289; this._errHandler.sync(this); _la = this._input.LA(1); - while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 1194; - this.macro(); - this.state = 1199; + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1287; + this._errHandler.sync(this); + switch(this._input.LA(1)) { + case ObjectiveCParser.BOOL: + case ObjectiveCParser.Class: + case ObjectiveCParser.BYCOPY: + case ObjectiveCParser.BYREF: + case ObjectiveCParser.ID: + case ObjectiveCParser.IMP: + case ObjectiveCParser.IN: + case ObjectiveCParser.INOUT: + case ObjectiveCParser.ONEWAY: + case ObjectiveCParser.OUT: + case ObjectiveCParser.PROTOCOL_: + case ObjectiveCParser.SEL: + case ObjectiveCParser.SELF: + case ObjectiveCParser.SUPER: + case ObjectiveCParser.ATOMIC: + case ObjectiveCParser.NONATOMIC: + case ObjectiveCParser.RETAIN: + case ObjectiveCParser.AUTORELEASING_QUALIFIER: + case ObjectiveCParser.BLOCK: + case ObjectiveCParser.BRIDGE_RETAINED: + case ObjectiveCParser.BRIDGE_TRANSFER: + case ObjectiveCParser.COVARIANT: + case ObjectiveCParser.CONTRAVARIANT: + case ObjectiveCParser.DEPRECATED: + case ObjectiveCParser.KINDOF: + case ObjectiveCParser.UNUSED: + case ObjectiveCParser.NULL_UNSPECIFIED: + case ObjectiveCParser.NULLABLE: + case ObjectiveCParser.NONNULL: + case ObjectiveCParser.NULL_RESETTABLE: + case ObjectiveCParser.NS_INLINE: + case ObjectiveCParser.NS_ENUM: + case ObjectiveCParser.NS_OPTIONS: + case ObjectiveCParser.ASSIGN: + case ObjectiveCParser.COPY: + case ObjectiveCParser.GETTER: + case ObjectiveCParser.SETTER: + case ObjectiveCParser.STRONG: + case ObjectiveCParser.READONLY: + case ObjectiveCParser.READWRITE: + case ObjectiveCParser.WEAK: + case ObjectiveCParser.UNSAFE_UNRETAINED: + case ObjectiveCParser.IB_OUTLET: + case ObjectiveCParser.IB_OUTLET_COLLECTION: + case ObjectiveCParser.IB_INSPECTABLE: + case ObjectiveCParser.IB_DESIGNABLE: + case ObjectiveCParser.IDENTIFIER: + this.state = 1285; + this.macro(); + break; + case ObjectiveCParser.ATTRIBUTE: + this.state = 1286; + this.attributeSpecifier(); + break; + default: + throw new antlr4.error.NoViableAltException(this); + } + this.state = 1291; this._errHandler.sync(this); _la = this._input.LA(1); } + this.state = 1294; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(_la===ObjectiveCParser.ASSIGNMENT) { + this.state = 1292; + this.match(ObjectiveCParser.ASSIGNMENT); + this.state = 1293; + localctx.value = this.expression(0); + } + } catch (re) { if(re instanceof antlr4.error.RecognitionException) { localctx.exception = re; @@ -12377,9 +13805,9 @@ ObjectiveCParser.EnumeratorIdentifierContext = EnumeratorIdentifierContext; ObjectiveCParser.prototype.enumeratorIdentifier = function() { var localctx = new EnumeratorIdentifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 194, ObjectiveCParser.RULE_enumeratorIdentifier); + this.enterRule(localctx, 198, ObjectiveCParser.RULE_enumeratorIdentifier); try { - this.state = 1202; + this.state = 1298; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.BOOL: @@ -12430,12 +13858,12 @@ ObjectiveCParser.prototype.enumeratorIdentifier = function() { case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: this.enterOuterAlt(localctx, 1); - this.state = 1200; + this.state = 1296; this.identifier(); break; case ObjectiveCParser.DEFAULT: this.enterOuterAlt(localctx, 2); - this.state = 1201; + this.state = 1297; this.match(ObjectiveCParser.DEFAULT); break; default: @@ -12531,16 +13959,16 @@ ObjectiveCParser.DirectDeclaratorContext = DirectDeclaratorContext; ObjectiveCParser.prototype.directDeclarator = function() { var localctx = new DirectDeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 196, ObjectiveCParser.RULE_directDeclarator); + this.enterRule(localctx, 200, ObjectiveCParser.RULE_directDeclarator); var _la = 0; // Token type try { - this.state = 1227; + this.state = 1323; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,146,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,173,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1209; + this.state = 1305; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.BOOL: @@ -12590,27 +14018,27 @@ ObjectiveCParser.prototype.directDeclarator = function() { case ObjectiveCParser.IB_INSPECTABLE: case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: - this.state = 1204; + this.state = 1300; this.identifier(); break; case ObjectiveCParser.LP: - this.state = 1205; + this.state = 1301; this.match(ObjectiveCParser.LP); - this.state = 1206; + this.state = 1302; this.declarator(); - this.state = 1207; + this.state = 1303; this.match(ObjectiveCParser.RP); break; default: throw new antlr4.error.NoViableAltException(this); } - this.state = 1214; + this.state = 1310; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.LBRACK) { - this.state = 1211; + this.state = 1307; this.declaratorSuffix(); - this.state = 1216; + this.state = 1312; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -12618,29 +14046,29 @@ ObjectiveCParser.prototype.directDeclarator = function() { case 2: this.enterOuterAlt(localctx, 2); - this.state = 1217; + this.state = 1313; this.match(ObjectiveCParser.LP); - this.state = 1218; + this.state = 1314; this.match(ObjectiveCParser.BITXOR); - this.state = 1220; + this.state = 1316; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,144,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,171,this._ctx); if(la_===1) { - this.state = 1219; + this.state = 1315; this.nullabilitySpecifier(); } - this.state = 1223; + this.state = 1319; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 1222; + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1318; this.identifier(); } - this.state = 1225; + this.state = 1321; this.match(ObjectiveCParser.RP); - this.state = 1226; + this.state = 1322; this.blockParameters(); break; @@ -12708,21 +14136,21 @@ ObjectiveCParser.DeclaratorSuffixContext = DeclaratorSuffixContext; ObjectiveCParser.prototype.declaratorSuffix = function() { var localctx = new DeclaratorSuffixContext(this, this._ctx, this.state); - this.enterRule(localctx, 198, ObjectiveCParser.RULE_declaratorSuffix); + this.enterRule(localctx, 202, ObjectiveCParser.RULE_declaratorSuffix); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1229; + this.state = 1325; this.match(ObjectiveCParser.LBRACK); - this.state = 1231; + this.state = 1327; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 152)) & ~0x1f) == 0 && ((1 << (_la - 152)) & ((1 << (ObjectiveCParser.ADD - 152)) | (1 << (ObjectiveCParser.SUB - 152)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 152)) | (1 << (ObjectiveCParser.HEX_LITERAL - 152)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 152)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 152)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 152)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 152)))) !== 0)) { - this.state = 1230; + if(((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 156)) & ~0x1f) == 0 && ((1 << (_la - 156)) & ((1 << (ObjectiveCParser.ADD - 156)) | (1 << (ObjectiveCParser.SUB - 156)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 156)) | (1 << (ObjectiveCParser.HEX_LITERAL - 156)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 156)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 156)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 156)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 156)))) !== 0)) { + this.state = 1326; this.constantExpression(); } - this.state = 1233; + this.state = 1329; this.match(ObjectiveCParser.RBRACK); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -12787,19 +14215,19 @@ ObjectiveCParser.ParameterListContext = ParameterListContext; ObjectiveCParser.prototype.parameterList = function() { var localctx = new ParameterListContext(this, this._ctx, this.state); - this.enterRule(localctx, 200, ObjectiveCParser.RULE_parameterList); + this.enterRule(localctx, 204, ObjectiveCParser.RULE_parameterList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1235; + this.state = 1331; this.parameterDeclarationList(); - this.state = 1238; + this.state = 1334; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 1236; + this.state = 1332; this.match(ObjectiveCParser.COMMA); - this.state = 1237; + this.state = 1333; this.match(ObjectiveCParser.ELIPSIS); } @@ -12828,6 +14256,7 @@ function PointerContext(parser, parent, invokingState) { antlr4.ParserRuleContext.call(this, parent, invokingState); this.parser = parser; this.ruleIndex = ObjectiveCParser.RULE_pointer; + this.nextPointer = null; // PointerContext return this; } @@ -12866,25 +14295,25 @@ ObjectiveCParser.PointerContext = PointerContext; ObjectiveCParser.prototype.pointer = function() { var localctx = new PointerContext(this, this._ctx, this.state); - this.enterRule(localctx, 202, ObjectiveCParser.RULE_pointer); + this.enterRule(localctx, 206, ObjectiveCParser.RULE_pointer); try { this.enterOuterAlt(localctx, 1); - this.state = 1240; + this.state = 1336; this.match(ObjectiveCParser.MUL); - this.state = 1242; + this.state = 1338; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,149,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,176,this._ctx); if(la_===1) { - this.state = 1241; + this.state = 1337; this.declarationSpecifiers(); } - this.state = 1245; + this.state = 1341; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,150,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,177,this._ctx); if(la_===1) { - this.state = 1244; - this.pointer(); + this.state = 1340; + localctx.nextPointer = this.pointer(); } } catch (re) { @@ -12922,18 +14351,41 @@ function MacroContext(parser, parent, invokingState) { MacroContext.prototype = Object.create(antlr4.ParserRuleContext.prototype); MacroContext.prototype.constructor = MacroContext; -MacroContext.prototype.identifier = function() { - return this.getTypedRuleContext(IdentifierContext,0); +MacroContext.prototype.identifier = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTypedRuleContexts(IdentifierContext); + } else { + return this.getTypedRuleContext(IdentifierContext,i); + } }; -MacroContext.prototype.LP = function() { - return this.getToken(ObjectiveCParser.LP, 0); +MacroContext.prototype.LP = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(ObjectiveCParser.LP); + } else { + return this.getToken(ObjectiveCParser.LP, i); + } }; -MacroContext.prototype.RP = function() { - return this.getToken(ObjectiveCParser.RP, 0); + +MacroContext.prototype.RP = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(ObjectiveCParser.RP); + } else { + return this.getToken(ObjectiveCParser.RP, i); + } }; + MacroContext.prototype.primaryExpression = function(i) { if(i===undefined) { i = null; @@ -12968,6 +14420,30 @@ MacroContext.prototype.COMMA = function(i) { }; +MacroContext.prototype.DOT = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(ObjectiveCParser.DOT); + } else { + return this.getToken(ObjectiveCParser.DOT, i); + } +}; + + +MacroContext.prototype.COLON = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(ObjectiveCParser.COLON); + } else { + return this.getToken(ObjectiveCParser.COLON, i); + } +}; + + MacroContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterMacro(this); @@ -12988,63 +14464,102 @@ ObjectiveCParser.MacroContext = MacroContext; ObjectiveCParser.prototype.macro = function() { var localctx = new MacroContext(this, this._ctx, this.state); - this.enterRule(localctx, 204, ObjectiveCParser.RULE_macro); + this.enterRule(localctx, 208, ObjectiveCParser.RULE_macro); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1247; + this.state = 1343; this.identifier(); - this.state = 1265; + this.state = 1381; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LP) { - this.state = 1248; + this.state = 1344; this.match(ObjectiveCParser.LP); - this.state = 1251; + this.state = 1367; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,151,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,181,this._ctx); switch(la_) { case 1: - this.state = 1249; + this.state = 1345; localctx._primaryExpression = this.primaryExpression(); localctx.messages.push(localctx._primaryExpression); break; case 2: - this.state = 1250; + this.state = 1346; localctx._osVersion = this.osVersion(); localctx.osVersions.push(localctx._osVersion); break; + case 3: + this.state = 1347; + this.identifier(); + this.state = 1352; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(_la===ObjectiveCParser.DOT) { + this.state = 1348; + this.match(ObjectiveCParser.DOT); + this.state = 1349; + this.identifier(); + this.state = 1354; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1365; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(_la===ObjectiveCParser.LP) { + this.state = 1355; + this.match(ObjectiveCParser.LP); + this.state = 1361; + this._errHandler.sync(this); + _la = this._input.LA(1); + while(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { + this.state = 1356; + this.identifier(); + this.state = 1357; + this.match(ObjectiveCParser.COLON); + this.state = 1363; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 1364; + this.match(ObjectiveCParser.RP); + } + + break; + } - this.state = 1260; + this.state = 1376; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 1253; + this.state = 1369; this.match(ObjectiveCParser.COMMA); - this.state = 1256; + this.state = 1372; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,152,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,182,this._ctx); switch(la_) { case 1: - this.state = 1254; + this.state = 1370; localctx._primaryExpression = this.primaryExpression(); localctx.messages.push(localctx._primaryExpression); break; case 2: - this.state = 1255; + this.state = 1371; localctx._osVersion = this.osVersion(); localctx.osVersions.push(localctx._osVersion); break; } - this.state = 1262; + this.state = 1378; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1263; + this.state = 1379; this.match(ObjectiveCParser.RP); } @@ -13115,29 +14630,29 @@ ObjectiveCParser.ArrayInitializerContext = ArrayInitializerContext; ObjectiveCParser.prototype.arrayInitializer = function() { var localctx = new ArrayInitializerContext(this, this._ctx, this.state); - this.enterRule(localctx, 206, ObjectiveCParser.RULE_arrayInitializer); + this.enterRule(localctx, 210, ObjectiveCParser.RULE_arrayInitializer); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1267; + this.state = 1383; this.match(ObjectiveCParser.LBRACE); - this.state = 1272; + this.state = 1388; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 89)))) !== 0) || ((((_la - 125)) & ~0x1f) == 0 && ((1 << (_la - 125)) & ((1 << (ObjectiveCParser.IDENTIFIER - 125)) | (1 << (ObjectiveCParser.LP - 125)) | (1 << (ObjectiveCParser.LBRACK - 125)) | (1 << (ObjectiveCParser.AT - 125)) | (1 << (ObjectiveCParser.BANG - 125)) | (1 << (ObjectiveCParser.TILDE - 125)) | (1 << (ObjectiveCParser.INC - 125)) | (1 << (ObjectiveCParser.DEC - 125)) | (1 << (ObjectiveCParser.ADD - 125)) | (1 << (ObjectiveCParser.SUB - 125)) | (1 << (ObjectiveCParser.MUL - 125)) | (1 << (ObjectiveCParser.BITAND - 125)))) !== 0) || ((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.BITXOR - 158)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 158)) | (1 << (ObjectiveCParser.STRING_START - 158)) | (1 << (ObjectiveCParser.HEX_LITERAL - 158)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 158)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 158)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 158)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 158)))) !== 0)) { - this.state = 1268; + if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (ObjectiveCParser.IB_DESIGNABLE - 121)) | (1 << (ObjectiveCParser.IDENTIFIER - 121)) | (1 << (ObjectiveCParser.LP - 121)) | (1 << (ObjectiveCParser.LBRACK - 121)) | (1 << (ObjectiveCParser.AT - 121)) | (1 << (ObjectiveCParser.BANG - 121)) | (1 << (ObjectiveCParser.TILDE - 121)))) !== 0) || ((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.INC - 154)) | (1 << (ObjectiveCParser.DEC - 154)) | (1 << (ObjectiveCParser.ADD - 154)) | (1 << (ObjectiveCParser.SUB - 154)) | (1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.BITAND - 154)) | (1 << (ObjectiveCParser.BITXOR - 154)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 154)) | (1 << (ObjectiveCParser.STRING_START - 154)) | (1 << (ObjectiveCParser.HEX_LITERAL - 154)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 154)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 154)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 154)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 154)))) !== 0)) { + this.state = 1384; this.expressions(); - this.state = 1270; + this.state = 1386; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 1269; + this.state = 1385; this.match(ObjectiveCParser.COMMA); } } - this.state = 1274; + this.state = 1390; this.match(ObjectiveCParser.RBRACE); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -13233,48 +14748,48 @@ ObjectiveCParser.StructInitializerContext = StructInitializerContext; ObjectiveCParser.prototype.structInitializer = function() { var localctx = new StructInitializerContext(this, this._ctx, this.state); - this.enterRule(localctx, 208, ObjectiveCParser.RULE_structInitializer); + this.enterRule(localctx, 212, ObjectiveCParser.RULE_structInitializer); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1276; + this.state = 1392; this.match(ObjectiveCParser.LBRACE); - this.state = 1290; + this.state = 1406; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.DOT) { - this.state = 1277; + this.state = 1393; this.match(ObjectiveCParser.DOT); - this.state = 1278; + this.state = 1394; this.expression(0); - this.state = 1284; + this.state = 1400; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,157,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,187,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 1279; + this.state = 1395; this.match(ObjectiveCParser.COMMA); - this.state = 1280; + this.state = 1396; this.match(ObjectiveCParser.DOT); - this.state = 1281; + this.state = 1397; this.expression(0); } - this.state = 1286; + this.state = 1402; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,157,this._ctx); + _alt = this._interp.adaptivePredict(this._input,187,this._ctx); } - this.state = 1288; + this.state = 1404; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 1287; + this.state = 1403; this.match(ObjectiveCParser.COMMA); } } - this.state = 1292; + this.state = 1408; this.match(ObjectiveCParser.RBRACE); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -13350,32 +14865,32 @@ ObjectiveCParser.InitializerListContext = InitializerListContext; ObjectiveCParser.prototype.initializerList = function() { var localctx = new InitializerListContext(this, this._ctx, this.state); - this.enterRule(localctx, 210, ObjectiveCParser.RULE_initializerList); + this.enterRule(localctx, 214, ObjectiveCParser.RULE_initializerList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1294; + this.state = 1410; this.initializer(); - this.state = 1299; + this.state = 1415; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,160,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,190,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 1295; + this.state = 1411; this.match(ObjectiveCParser.COMMA); - this.state = 1296; + this.state = 1412; this.initializer(); } - this.state = 1301; + this.state = 1417; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,160,this._ctx); + _alt = this._interp.adaptivePredict(this._input,190,this._ctx); } - this.state = 1303; + this.state = 1419; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 1302; + this.state = 1418; this.match(ObjectiveCParser.COMMA); } @@ -13422,6 +14937,10 @@ TypeNameContext.prototype.blockType = function() { return this.getTypedRuleContext(BlockTypeContext,0); }; +TypeNameContext.prototype.functionPointer = function() { + return this.getTypedRuleContext(FunctionPointerContext,0); +}; + TypeNameContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterTypeName(this); @@ -13442,22 +14961,22 @@ ObjectiveCParser.TypeNameContext = TypeNameContext; ObjectiveCParser.prototype.typeName = function() { var localctx = new TypeNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 212, ObjectiveCParser.RULE_typeName); + this.enterRule(localctx, 216, ObjectiveCParser.RULE_typeName); var _la = 0; // Token type try { - this.state = 1310; + this.state = 1427; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,163,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,193,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1305; + this.state = 1421; this.specifierQualifierList(); - this.state = 1307; + this.state = 1423; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 126)) & ~0x1f) == 0 && ((1 << (_la - 126)) & ((1 << (ObjectiveCParser.LP - 126)) | (1 << (ObjectiveCParser.LBRACK - 126)) | (1 << (ObjectiveCParser.MUL - 126)))) !== 0)) { - this.state = 1306; + if(((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (ObjectiveCParser.LP - 130)) | (1 << (ObjectiveCParser.LBRACK - 130)) | (1 << (ObjectiveCParser.MUL - 130)))) !== 0)) { + this.state = 1422; this.abstractDeclarator(); } @@ -13465,10 +14984,16 @@ ObjectiveCParser.prototype.typeName = function() { case 2: this.enterOuterAlt(localctx, 2); - this.state = 1309; + this.state = 1425; this.blockType(); break; + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 1426; + this.functionPointer(); + break; + } } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -13583,69 +15108,69 @@ ObjectiveCParser.AbstractDeclaratorContext = AbstractDeclaratorContext; ObjectiveCParser.prototype.abstractDeclarator = function() { var localctx = new AbstractDeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 214, ObjectiveCParser.RULE_abstractDeclarator); + this.enterRule(localctx, 218, ObjectiveCParser.RULE_abstractDeclarator); var _la = 0; // Token type try { - this.state = 1335; + this.state = 1452; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.MUL: this.enterOuterAlt(localctx, 1); - this.state = 1312; + this.state = 1429; this.pointer(); - this.state = 1314; + this.state = 1431; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 126)) & ~0x1f) == 0 && ((1 << (_la - 126)) & ((1 << (ObjectiveCParser.LP - 126)) | (1 << (ObjectiveCParser.LBRACK - 126)) | (1 << (ObjectiveCParser.MUL - 126)))) !== 0)) { - this.state = 1313; + if(((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (ObjectiveCParser.LP - 130)) | (1 << (ObjectiveCParser.LBRACK - 130)) | (1 << (ObjectiveCParser.MUL - 130)))) !== 0)) { + this.state = 1430; this.abstractDeclarator(); } break; case ObjectiveCParser.LP: this.enterOuterAlt(localctx, 2); - this.state = 1316; + this.state = 1433; this.match(ObjectiveCParser.LP); - this.state = 1318; + this.state = 1435; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 126)) & ~0x1f) == 0 && ((1 << (_la - 126)) & ((1 << (ObjectiveCParser.LP - 126)) | (1 << (ObjectiveCParser.LBRACK - 126)) | (1 << (ObjectiveCParser.MUL - 126)))) !== 0)) { - this.state = 1317; + if(((((_la - 130)) & ~0x1f) == 0 && ((1 << (_la - 130)) & ((1 << (ObjectiveCParser.LP - 130)) | (1 << (ObjectiveCParser.LBRACK - 130)) | (1 << (ObjectiveCParser.MUL - 130)))) !== 0)) { + this.state = 1434; this.abstractDeclarator(); } - this.state = 1320; + this.state = 1437; this.match(ObjectiveCParser.RP); - this.state = 1322; + this.state = 1439; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 1321; + this.state = 1438; this.abstractDeclaratorSuffix(); - this.state = 1324; + this.state = 1441; this._errHandler.sync(this); _la = this._input.LA(1); } while(_la===ObjectiveCParser.LP || _la===ObjectiveCParser.LBRACK); break; case ObjectiveCParser.LBRACK: this.enterOuterAlt(localctx, 3); - this.state = 1331; + this.state = 1448; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 1326; + this.state = 1443; this.match(ObjectiveCParser.LBRACK); - this.state = 1328; + this.state = 1445; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 152)) & ~0x1f) == 0 && ((1 << (_la - 152)) & ((1 << (ObjectiveCParser.ADD - 152)) | (1 << (ObjectiveCParser.SUB - 152)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 152)) | (1 << (ObjectiveCParser.HEX_LITERAL - 152)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 152)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 152)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 152)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 152)))) !== 0)) { - this.state = 1327; + if(((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 156)) & ~0x1f) == 0 && ((1 << (_la - 156)) & ((1 << (ObjectiveCParser.ADD - 156)) | (1 << (ObjectiveCParser.SUB - 156)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 156)) | (1 << (ObjectiveCParser.HEX_LITERAL - 156)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 156)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 156)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 156)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 156)))) !== 0)) { + this.state = 1444; this.constantExpression(); } - this.state = 1330; + this.state = 1447; this.match(ObjectiveCParser.RBRACK); - this.state = 1333; + this.state = 1450; this._errHandler.sync(this); _la = this._input.LA(1); } while(_la===ObjectiveCParser.LBRACK); @@ -13728,40 +15253,40 @@ ObjectiveCParser.AbstractDeclaratorSuffixContext = AbstractDeclaratorSuffixConte ObjectiveCParser.prototype.abstractDeclaratorSuffix = function() { var localctx = new AbstractDeclaratorSuffixContext(this, this._ctx, this.state); - this.enterRule(localctx, 216, ObjectiveCParser.RULE_abstractDeclaratorSuffix); + this.enterRule(localctx, 220, ObjectiveCParser.RULE_abstractDeclaratorSuffix); var _la = 0; // Token type try { - this.state = 1347; + this.state = 1464; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.LBRACK: this.enterOuterAlt(localctx, 1); - this.state = 1337; + this.state = 1454; this.match(ObjectiveCParser.LBRACK); - this.state = 1339; + this.state = 1456; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 152)) & ~0x1f) == 0 && ((1 << (_la - 152)) & ((1 << (ObjectiveCParser.ADD - 152)) | (1 << (ObjectiveCParser.SUB - 152)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 152)) | (1 << (ObjectiveCParser.HEX_LITERAL - 152)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 152)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 152)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 152)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 152)))) !== 0)) { - this.state = 1338; + if(((((_la - 38)) & ~0x1f) == 0 && ((1 << (_la - 38)) & ((1 << (ObjectiveCParser.TRUE - 38)) | (1 << (ObjectiveCParser.FALSE - 38)) | (1 << (ObjectiveCParser.BOOL - 38)) | (1 << (ObjectiveCParser.Class - 38)) | (1 << (ObjectiveCParser.BYCOPY - 38)) | (1 << (ObjectiveCParser.BYREF - 38)) | (1 << (ObjectiveCParser.ID - 38)) | (1 << (ObjectiveCParser.IMP - 38)) | (1 << (ObjectiveCParser.IN - 38)) | (1 << (ObjectiveCParser.INOUT - 38)) | (1 << (ObjectiveCParser.NIL - 38)) | (1 << (ObjectiveCParser.NO - 38)) | (1 << (ObjectiveCParser.NULL - 38)) | (1 << (ObjectiveCParser.ONEWAY - 38)) | (1 << (ObjectiveCParser.OUT - 38)) | (1 << (ObjectiveCParser.PROTOCOL_ - 38)) | (1 << (ObjectiveCParser.SEL - 38)) | (1 << (ObjectiveCParser.SELF - 38)) | (1 << (ObjectiveCParser.SUPER - 38)) | (1 << (ObjectiveCParser.YES - 38)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0) || ((((_la - 156)) & ~0x1f) == 0 && ((1 << (_la - 156)) & ((1 << (ObjectiveCParser.ADD - 156)) | (1 << (ObjectiveCParser.SUB - 156)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 156)) | (1 << (ObjectiveCParser.HEX_LITERAL - 156)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 156)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 156)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 156)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 156)))) !== 0)) { + this.state = 1455; this.constantExpression(); } - this.state = 1341; + this.state = 1458; this.match(ObjectiveCParser.RBRACK); break; case ObjectiveCParser.LP: this.enterOuterAlt(localctx, 2); - this.state = 1342; + this.state = 1459; this.match(ObjectiveCParser.LP); - this.state = 1344; + this.state = 1461; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0)) { - this.state = 1343; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.ATTRIBUTE - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 81)) | (1 << (ObjectiveCParser.TYPEOF - 81)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 81)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0)) { + this.state = 1460; this.parameterDeclarationList(); } - this.state = 1346; + this.state = 1463; this.match(ObjectiveCParser.RP); break; default: @@ -13841,24 +15366,24 @@ ObjectiveCParser.ParameterDeclarationListContext = ParameterDeclarationListConte ObjectiveCParser.prototype.parameterDeclarationList = function() { var localctx = new ParameterDeclarationListContext(this, this._ctx, this.state); - this.enterRule(localctx, 218, ObjectiveCParser.RULE_parameterDeclarationList); + this.enterRule(localctx, 222, ObjectiveCParser.RULE_parameterDeclarationList); try { this.enterOuterAlt(localctx, 1); - this.state = 1349; + this.state = 1466; this.parameterDeclaration(); - this.state = 1354; + this.state = 1471; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,173,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,203,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 1350; + this.state = 1467; this.match(ObjectiveCParser.COMMA); - this.state = 1351; + this.state = 1468; this.parameterDeclaration(); } - this.state = 1356; + this.state = 1473; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,173,this._ctx); + _alt = this._interp.adaptivePredict(this._input,203,this._ctx); } } catch (re) { @@ -13904,6 +15429,10 @@ ParameterDeclarationContext.prototype.VOID = function() { return this.getToken(ObjectiveCParser.VOID, 0); }; +ParameterDeclarationContext.prototype.functionPointer = function() { + return this.getTypedRuleContext(FunctionPointerContext,0); +}; + ParameterDeclarationContext.prototype.enterRule = function(listener) { if(listener instanceof ObjectiveCParserListener ) { listener.enterParameterDeclaration(this); @@ -13924,26 +15453,39 @@ ObjectiveCParser.ParameterDeclarationContext = ParameterDeclarationContext; ObjectiveCParser.prototype.parameterDeclaration = function() { var localctx = new ParameterDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 220, ObjectiveCParser.RULE_parameterDeclaration); + this.enterRule(localctx, 224, ObjectiveCParser.RULE_parameterDeclaration); + var _la = 0; // Token type try { - this.state = 1361; + this.state = 1480; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,174,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,205,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1357; + this.state = 1474; this.declarationSpecifiers(); - this.state = 1358; - this.declarator(); + this.state = 1476; + this._errHandler.sync(this); + _la = this._input.LA(1); + if(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)) | (1 << (ObjectiveCParser.LP - 113)))) !== 0) || _la===ObjectiveCParser.MUL) { + this.state = 1475; + this.declarator(); + } + break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1360; + this.state = 1478; this.match(ObjectiveCParser.VOID); break; + case 3: + this.enterOuterAlt(localctx, 3); + this.state = 1479; + this.functionPointer(); + break; + } } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -14004,19 +15546,19 @@ ObjectiveCParser.DeclaratorContext = DeclaratorContext; ObjectiveCParser.prototype.declarator = function() { var localctx = new DeclaratorContext(this, this._ctx, this.state); - this.enterRule(localctx, 222, ObjectiveCParser.RULE_declarator); + this.enterRule(localctx, 226, ObjectiveCParser.RULE_declarator); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1364; + this.state = 1483; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.MUL) { - this.state = 1363; + this.state = 1482; this.pointer(); } - this.state = 1366; + this.state = 1485; this.directDeclarator(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -14113,21 +15655,21 @@ ObjectiveCParser.StatementContext = StatementContext; ObjectiveCParser.prototype.statement = function() { var localctx = new StatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 224, ObjectiveCParser.RULE_statement); + this.enterRule(localctx, 228, ObjectiveCParser.RULE_statement); try { - this.state = 1409; + this.state = 1528; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,186,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,217,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1368; + this.state = 1487; this.labeledStatement(); - this.state = 1370; + this.state = 1489; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,176,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,207,this._ctx); if(la_===1) { - this.state = 1369; + this.state = 1488; this.match(ObjectiveCParser.SEMI); } @@ -14135,13 +15677,13 @@ ObjectiveCParser.prototype.statement = function() { case 2: this.enterOuterAlt(localctx, 2); - this.state = 1372; + this.state = 1491; this.compoundStatement(); - this.state = 1374; + this.state = 1493; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,177,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,208,this._ctx); if(la_===1) { - this.state = 1373; + this.state = 1492; this.match(ObjectiveCParser.SEMI); } @@ -14149,13 +15691,13 @@ ObjectiveCParser.prototype.statement = function() { case 3: this.enterOuterAlt(localctx, 3); - this.state = 1376; + this.state = 1495; this.selectionStatement(); - this.state = 1378; + this.state = 1497; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,178,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,209,this._ctx); if(la_===1) { - this.state = 1377; + this.state = 1496; this.match(ObjectiveCParser.SEMI); } @@ -14163,13 +15705,13 @@ ObjectiveCParser.prototype.statement = function() { case 4: this.enterOuterAlt(localctx, 4); - this.state = 1380; + this.state = 1499; this.iterationStatement(); - this.state = 1382; + this.state = 1501; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,179,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,210,this._ctx); if(la_===1) { - this.state = 1381; + this.state = 1500; this.match(ObjectiveCParser.SEMI); } @@ -14177,13 +15719,13 @@ ObjectiveCParser.prototype.statement = function() { case 5: this.enterOuterAlt(localctx, 5); - this.state = 1384; + this.state = 1503; this.jumpStatement(); - this.state = 1386; + this.state = 1505; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,180,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,211,this._ctx); if(la_===1) { - this.state = 1385; + this.state = 1504; this.match(ObjectiveCParser.SEMI); } @@ -14191,13 +15733,13 @@ ObjectiveCParser.prototype.statement = function() { case 6: this.enterOuterAlt(localctx, 6); - this.state = 1388; + this.state = 1507; this.synchronizedStatement(); - this.state = 1390; + this.state = 1509; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,181,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,212,this._ctx); if(la_===1) { - this.state = 1389; + this.state = 1508; this.match(ObjectiveCParser.SEMI); } @@ -14205,13 +15747,13 @@ ObjectiveCParser.prototype.statement = function() { case 7: this.enterOuterAlt(localctx, 7); - this.state = 1392; + this.state = 1511; this.autoreleaseStatement(); - this.state = 1394; + this.state = 1513; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,182,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,213,this._ctx); if(la_===1) { - this.state = 1393; + this.state = 1512; this.match(ObjectiveCParser.SEMI); } @@ -14219,13 +15761,13 @@ ObjectiveCParser.prototype.statement = function() { case 8: this.enterOuterAlt(localctx, 8); - this.state = 1396; + this.state = 1515; this.throwStatement(); - this.state = 1398; + this.state = 1517; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,183,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,214,this._ctx); if(la_===1) { - this.state = 1397; + this.state = 1516; this.match(ObjectiveCParser.SEMI); } @@ -14233,13 +15775,13 @@ ObjectiveCParser.prototype.statement = function() { case 9: this.enterOuterAlt(localctx, 9); - this.state = 1400; + this.state = 1519; this.tryBlock(); - this.state = 1402; + this.state = 1521; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,184,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,215,this._ctx); if(la_===1) { - this.state = 1401; + this.state = 1520; this.match(ObjectiveCParser.SEMI); } @@ -14247,13 +15789,13 @@ ObjectiveCParser.prototype.statement = function() { case 10: this.enterOuterAlt(localctx, 10); - this.state = 1404; + this.state = 1523; this.expressions(); - this.state = 1406; + this.state = 1525; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,185,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,216,this._ctx); if(la_===1) { - this.state = 1405; + this.state = 1524; this.match(ObjectiveCParser.SEMI); } @@ -14261,7 +15803,7 @@ ObjectiveCParser.prototype.statement = function() { case 11: this.enterOuterAlt(localctx, 11); - this.state = 1408; + this.state = 1527; this.match(ObjectiveCParser.SEMI); break; @@ -14329,14 +15871,14 @@ ObjectiveCParser.LabeledStatementContext = LabeledStatementContext; ObjectiveCParser.prototype.labeledStatement = function() { var localctx = new LabeledStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 226, ObjectiveCParser.RULE_labeledStatement); + this.enterRule(localctx, 230, ObjectiveCParser.RULE_labeledStatement); try { this.enterOuterAlt(localctx, 1); - this.state = 1411; + this.state = 1530; this.identifier(); - this.state = 1412; + this.state = 1531; this.match(ObjectiveCParser.COLON); - this.state = 1413; + this.state = 1532; this.statement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -14404,19 +15946,19 @@ ObjectiveCParser.RangeExpressionContext = RangeExpressionContext; ObjectiveCParser.prototype.rangeExpression = function() { var localctx = new RangeExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 228, ObjectiveCParser.RULE_rangeExpression); + this.enterRule(localctx, 232, ObjectiveCParser.RULE_rangeExpression); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1415; + this.state = 1534; this.constantExpression(); - this.state = 1418; + this.state = 1537; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ELIPSIS) { - this.state = 1416; + this.state = 1535; this.match(ObjectiveCParser.ELIPSIS); - this.state = 1417; + this.state = 1536; this.constantExpression(); } @@ -14501,36 +16043,36 @@ ObjectiveCParser.CompoundStatementContext = CompoundStatementContext; ObjectiveCParser.prototype.compoundStatement = function() { var localctx = new CompoundStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 230, ObjectiveCParser.RULE_compoundStatement); + this.enterRule(localctx, 234, ObjectiveCParser.RULE_compoundStatement); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1420; + this.state = 1539; this.match(ObjectiveCParser.LBRACE); - this.state = 1425; + this.state = 1544; this._errHandler.sync(this); _la = this._input.LA(1); - while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.BREAK) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.CONTINUE) | (1 << ObjectiveCParser.DO) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.FOR) | (1 << ObjectiveCParser.GOTO) | (1 << ObjectiveCParser.IF) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.RETURN) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.SWITCH) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.WHILE - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.AUTORELEASEPOOL - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.SYNCHRONIZED - 69)) | (1 << (ObjectiveCParser.THROW - 69)) | (1 << (ObjectiveCParser.TRY - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.ATTRIBUTE - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 69)) | (1 << (ObjectiveCParser.TYPEOF - 69)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)) | (1 << (ObjectiveCParser.LBRACE - 101)) | (1 << (ObjectiveCParser.LBRACK - 101)) | (1 << (ObjectiveCParser.SEMI - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (ObjectiveCParser.AT - 136)) | (1 << (ObjectiveCParser.BANG - 136)) | (1 << (ObjectiveCParser.TILDE - 136)) | (1 << (ObjectiveCParser.INC - 136)) | (1 << (ObjectiveCParser.DEC - 136)) | (1 << (ObjectiveCParser.ADD - 136)) | (1 << (ObjectiveCParser.SUB - 136)) | (1 << (ObjectiveCParser.MUL - 136)) | (1 << (ObjectiveCParser.BITAND - 136)) | (1 << (ObjectiveCParser.BITXOR - 136)))) !== 0) || ((((_la - 171)) & ~0x1f) == 0 && ((1 << (_la - 171)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 171)) | (1 << (ObjectiveCParser.STRING_START - 171)) | (1 << (ObjectiveCParser.HEX_LITERAL - 171)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 171)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 171)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 171)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 171)))) !== 0)) { - this.state = 1423; + while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.BREAK) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.CONTINUE) | (1 << ObjectiveCParser.DO) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.FOR) | (1 << ObjectiveCParser.GOTO) | (1 << ObjectiveCParser.IF) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.RETURN) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.SWITCH) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.WHILE - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.AUTORELEASEPOOL - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.SYNCHRONIZED - 69)) | (1 << (ObjectiveCParser.THROW - 69)) | (1 << (ObjectiveCParser.TRY - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.ATTRIBUTE - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 69)) | (1 << (ObjectiveCParser.TYPEOF - 69)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 101)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)) | (1 << (ObjectiveCParser.LBRACE - 101)))) !== 0) || ((((_la - 134)) & ~0x1f) == 0 && ((1 << (_la - 134)) & ((1 << (ObjectiveCParser.LBRACK - 134)) | (1 << (ObjectiveCParser.SEMI - 134)) | (1 << (ObjectiveCParser.AT - 134)) | (1 << (ObjectiveCParser.BANG - 134)) | (1 << (ObjectiveCParser.TILDE - 134)) | (1 << (ObjectiveCParser.INC - 134)) | (1 << (ObjectiveCParser.DEC - 134)) | (1 << (ObjectiveCParser.ADD - 134)) | (1 << (ObjectiveCParser.SUB - 134)) | (1 << (ObjectiveCParser.MUL - 134)) | (1 << (ObjectiveCParser.BITAND - 134)) | (1 << (ObjectiveCParser.BITXOR - 134)))) !== 0) || ((((_la - 175)) & ~0x1f) == 0 && ((1 << (_la - 175)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 175)) | (1 << (ObjectiveCParser.STRING_START - 175)) | (1 << (ObjectiveCParser.HEX_LITERAL - 175)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 175)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 175)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 175)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 175)))) !== 0)) { + this.state = 1542; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,188,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,219,this._ctx); switch(la_) { case 1: - this.state = 1421; + this.state = 1540; this.declaration(); break; case 2: - this.state = 1422; + this.state = 1541; this.statement(); break; } - this.state = 1427; + this.state = 1546; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1428; + this.state = 1547; this.match(ObjectiveCParser.RBRACE); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -14620,37 +16162,37 @@ ObjectiveCParser.SelectionStatementContext = SelectionStatementContext; ObjectiveCParser.prototype.selectionStatement = function() { var localctx = new SelectionStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 232, ObjectiveCParser.RULE_selectionStatement); + this.enterRule(localctx, 236, ObjectiveCParser.RULE_selectionStatement); try { - this.state = 1440; + this.state = 1559; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.IF: this.enterOuterAlt(localctx, 1); - this.state = 1430; + this.state = 1549; this.match(ObjectiveCParser.IF); - this.state = 1431; + this.state = 1550; this.match(ObjectiveCParser.LP); - this.state = 1432; + this.state = 1551; this.expression(0); - this.state = 1433; + this.state = 1552; this.match(ObjectiveCParser.RP); - this.state = 1434; + this.state = 1553; localctx.ifBody = this.statement(); - this.state = 1437; + this.state = 1556; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,190,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,221,this._ctx); if(la_===1) { - this.state = 1435; + this.state = 1554; this.match(ObjectiveCParser.ELSE); - this.state = 1436; + this.state = 1555; localctx.elseBody = this.statement(); } break; case ObjectiveCParser.SWITCH: this.enterOuterAlt(localctx, 2); - this.state = 1439; + this.state = 1558; this.switchStatement(); break; default: @@ -14727,18 +16269,18 @@ ObjectiveCParser.SwitchStatementContext = SwitchStatementContext; ObjectiveCParser.prototype.switchStatement = function() { var localctx = new SwitchStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 234, ObjectiveCParser.RULE_switchStatement); + this.enterRule(localctx, 238, ObjectiveCParser.RULE_switchStatement); try { this.enterOuterAlt(localctx, 1); - this.state = 1442; + this.state = 1561; this.match(ObjectiveCParser.SWITCH); - this.state = 1443; + this.state = 1562; this.match(ObjectiveCParser.LP); - this.state = 1444; + this.state = 1563; this.expression(0); - this.state = 1445; + this.state = 1564; this.match(ObjectiveCParser.RP); - this.state = 1446; + this.state = 1565; this.switchBlock(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -14810,23 +16352,23 @@ ObjectiveCParser.SwitchBlockContext = SwitchBlockContext; ObjectiveCParser.prototype.switchBlock = function() { var localctx = new SwitchBlockContext(this, this._ctx, this.state); - this.enterRule(localctx, 236, ObjectiveCParser.RULE_switchBlock); + this.enterRule(localctx, 240, ObjectiveCParser.RULE_switchBlock); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1448; + this.state = 1567; this.match(ObjectiveCParser.LBRACE); - this.state = 1452; + this.state = 1571; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.CASE || _la===ObjectiveCParser.DEFAULT) { - this.state = 1449; + this.state = 1568; this.switchSection(); - this.state = 1454; + this.state = 1573; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1455; + this.state = 1574; this.match(ObjectiveCParser.RBRACE); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -14901,30 +16443,30 @@ ObjectiveCParser.SwitchSectionContext = SwitchSectionContext; ObjectiveCParser.prototype.switchSection = function() { var localctx = new SwitchSectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 238, ObjectiveCParser.RULE_switchSection); + this.enterRule(localctx, 242, ObjectiveCParser.RULE_switchSection); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1458; + this.state = 1577; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 1457; + this.state = 1576; this.switchLabel(); - this.state = 1460; + this.state = 1579; this._errHandler.sync(this); _la = this._input.LA(1); } while(_la===ObjectiveCParser.CASE || _la===ObjectiveCParser.DEFAULT); - this.state = 1463; + this.state = 1582; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 1462; + this.state = 1581; this.statement(); - this.state = 1465; + this.state = 1584; this._errHandler.sync(this); _la = this._input.LA(1); - } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.BREAK) | (1 << ObjectiveCParser.CONTINUE) | (1 << ObjectiveCParser.DO) | (1 << ObjectiveCParser.FOR) | (1 << ObjectiveCParser.GOTO) | (1 << ObjectiveCParser.IF) | (1 << ObjectiveCParser.RETURN) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.SWITCH))) !== 0) || ((((_la - 34)) & ~0x1f) == 0 && ((1 << (_la - 34)) & ((1 << (ObjectiveCParser.WHILE - 34)) | (1 << (ObjectiveCParser.TRUE - 34)) | (1 << (ObjectiveCParser.FALSE - 34)) | (1 << (ObjectiveCParser.BOOL - 34)) | (1 << (ObjectiveCParser.Class - 34)) | (1 << (ObjectiveCParser.BYCOPY - 34)) | (1 << (ObjectiveCParser.BYREF - 34)) | (1 << (ObjectiveCParser.ID - 34)) | (1 << (ObjectiveCParser.IMP - 34)) | (1 << (ObjectiveCParser.IN - 34)) | (1 << (ObjectiveCParser.INOUT - 34)) | (1 << (ObjectiveCParser.NIL - 34)) | (1 << (ObjectiveCParser.NO - 34)) | (1 << (ObjectiveCParser.NULL - 34)) | (1 << (ObjectiveCParser.ONEWAY - 34)) | (1 << (ObjectiveCParser.OUT - 34)) | (1 << (ObjectiveCParser.PROTOCOL_ - 34)) | (1 << (ObjectiveCParser.SEL - 34)) | (1 << (ObjectiveCParser.SELF - 34)) | (1 << (ObjectiveCParser.SUPER - 34)) | (1 << (ObjectiveCParser.YES - 34)) | (1 << (ObjectiveCParser.AUTORELEASEPOOL - 34)) | (1 << (ObjectiveCParser.ENCODE - 34)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.SYNCHRONIZED - 69)) | (1 << (ObjectiveCParser.THROW - 69)) | (1 << (ObjectiveCParser.TRY - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)) | (1 << (ObjectiveCParser.LBRACE - 101)) | (1 << (ObjectiveCParser.LBRACK - 101)) | (1 << (ObjectiveCParser.SEMI - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (ObjectiveCParser.AT - 136)) | (1 << (ObjectiveCParser.BANG - 136)) | (1 << (ObjectiveCParser.TILDE - 136)) | (1 << (ObjectiveCParser.INC - 136)) | (1 << (ObjectiveCParser.DEC - 136)) | (1 << (ObjectiveCParser.ADD - 136)) | (1 << (ObjectiveCParser.SUB - 136)) | (1 << (ObjectiveCParser.MUL - 136)) | (1 << (ObjectiveCParser.BITAND - 136)) | (1 << (ObjectiveCParser.BITXOR - 136)))) !== 0) || ((((_la - 171)) & ~0x1f) == 0 && ((1 << (_la - 171)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 171)) | (1 << (ObjectiveCParser.STRING_START - 171)) | (1 << (ObjectiveCParser.HEX_LITERAL - 171)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 171)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 171)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 171)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 171)))) !== 0)); + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.BREAK) | (1 << ObjectiveCParser.CONTINUE) | (1 << ObjectiveCParser.DO) | (1 << ObjectiveCParser.FOR) | (1 << ObjectiveCParser.GOTO) | (1 << ObjectiveCParser.IF) | (1 << ObjectiveCParser.RETURN) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.SWITCH))) !== 0) || ((((_la - 34)) & ~0x1f) == 0 && ((1 << (_la - 34)) & ((1 << (ObjectiveCParser.WHILE - 34)) | (1 << (ObjectiveCParser.TRUE - 34)) | (1 << (ObjectiveCParser.FALSE - 34)) | (1 << (ObjectiveCParser.BOOL - 34)) | (1 << (ObjectiveCParser.Class - 34)) | (1 << (ObjectiveCParser.BYCOPY - 34)) | (1 << (ObjectiveCParser.BYREF - 34)) | (1 << (ObjectiveCParser.ID - 34)) | (1 << (ObjectiveCParser.IMP - 34)) | (1 << (ObjectiveCParser.IN - 34)) | (1 << (ObjectiveCParser.INOUT - 34)) | (1 << (ObjectiveCParser.NIL - 34)) | (1 << (ObjectiveCParser.NO - 34)) | (1 << (ObjectiveCParser.NULL - 34)) | (1 << (ObjectiveCParser.ONEWAY - 34)) | (1 << (ObjectiveCParser.OUT - 34)) | (1 << (ObjectiveCParser.PROTOCOL_ - 34)) | (1 << (ObjectiveCParser.SEL - 34)) | (1 << (ObjectiveCParser.SELF - 34)) | (1 << (ObjectiveCParser.SUPER - 34)) | (1 << (ObjectiveCParser.YES - 34)) | (1 << (ObjectiveCParser.AUTORELEASEPOOL - 34)) | (1 << (ObjectiveCParser.ENCODE - 34)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.SYNCHRONIZED - 69)) | (1 << (ObjectiveCParser.THROW - 69)) | (1 << (ObjectiveCParser.TRY - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)) | (1 << (ObjectiveCParser.LBRACE - 101)))) !== 0) || ((((_la - 134)) & ~0x1f) == 0 && ((1 << (_la - 134)) & ((1 << (ObjectiveCParser.LBRACK - 134)) | (1 << (ObjectiveCParser.SEMI - 134)) | (1 << (ObjectiveCParser.AT - 134)) | (1 << (ObjectiveCParser.BANG - 134)) | (1 << (ObjectiveCParser.TILDE - 134)) | (1 << (ObjectiveCParser.INC - 134)) | (1 << (ObjectiveCParser.DEC - 134)) | (1 << (ObjectiveCParser.ADD - 134)) | (1 << (ObjectiveCParser.SUB - 134)) | (1 << (ObjectiveCParser.MUL - 134)) | (1 << (ObjectiveCParser.BITAND - 134)) | (1 << (ObjectiveCParser.BITXOR - 134)))) !== 0) || ((((_la - 175)) & ~0x1f) == 0 && ((1 << (_la - 175)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 175)) | (1 << (ObjectiveCParser.STRING_START - 175)) | (1 << (ObjectiveCParser.HEX_LITERAL - 175)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 175)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 175)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 175)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 175)))) !== 0)); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { localctx.exception = re; @@ -15000,16 +16542,16 @@ ObjectiveCParser.SwitchLabelContext = SwitchLabelContext; ObjectiveCParser.prototype.switchLabel = function() { var localctx = new SwitchLabelContext(this, this._ctx, this.state); - this.enterRule(localctx, 240, ObjectiveCParser.RULE_switchLabel); + this.enterRule(localctx, 244, ObjectiveCParser.RULE_switchLabel); try { - this.state = 1479; + this.state = 1598; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.CASE: this.enterOuterAlt(localctx, 1); - this.state = 1467; + this.state = 1586; this.match(ObjectiveCParser.CASE); - this.state = 1473; + this.state = 1592; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.TRUE: @@ -15073,28 +16615,28 @@ ObjectiveCParser.prototype.switchLabel = function() { case ObjectiveCParser.BINARY_LITERAL: case ObjectiveCParser.DECIMAL_LITERAL: case ObjectiveCParser.FLOATING_POINT_LITERAL: - this.state = 1468; + this.state = 1587; this.rangeExpression(); break; case ObjectiveCParser.LP: - this.state = 1469; + this.state = 1588; this.match(ObjectiveCParser.LP); - this.state = 1470; + this.state = 1589; this.rangeExpression(); - this.state = 1471; + this.state = 1590; this.match(ObjectiveCParser.RP); break; default: throw new antlr4.error.NoViableAltException(this); } - this.state = 1475; + this.state = 1594; this.match(ObjectiveCParser.COLON); break; case ObjectiveCParser.DEFAULT: this.enterOuterAlt(localctx, 2); - this.state = 1477; + this.state = 1596; this.match(ObjectiveCParser.DEFAULT); - this.state = 1478; + this.state = 1597; this.match(ObjectiveCParser.COLON); break; default: @@ -15167,33 +16709,33 @@ ObjectiveCParser.IterationStatementContext = IterationStatementContext; ObjectiveCParser.prototype.iterationStatement = function() { var localctx = new IterationStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 242, ObjectiveCParser.RULE_iterationStatement); + this.enterRule(localctx, 246, ObjectiveCParser.RULE_iterationStatement); try { - this.state = 1485; + this.state = 1604; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,197,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,228,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1481; + this.state = 1600; this.whileStatement(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1482; + this.state = 1601; this.doStatement(); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 1483; + this.state = 1602; this.forStatement(); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 1484; + this.state = 1603; this.forInStatement(); break; @@ -15269,18 +16811,18 @@ ObjectiveCParser.WhileStatementContext = WhileStatementContext; ObjectiveCParser.prototype.whileStatement = function() { var localctx = new WhileStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 244, ObjectiveCParser.RULE_whileStatement); + this.enterRule(localctx, 248, ObjectiveCParser.RULE_whileStatement); try { this.enterOuterAlt(localctx, 1); - this.state = 1487; + this.state = 1606; this.match(ObjectiveCParser.WHILE); - this.state = 1488; + this.state = 1607; this.match(ObjectiveCParser.LP); - this.state = 1489; + this.state = 1608; this.expression(0); - this.state = 1490; + this.state = 1609; this.match(ObjectiveCParser.RP); - this.state = 1491; + this.state = 1610; this.statement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -15361,22 +16903,22 @@ ObjectiveCParser.DoStatementContext = DoStatementContext; ObjectiveCParser.prototype.doStatement = function() { var localctx = new DoStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 246, ObjectiveCParser.RULE_doStatement); + this.enterRule(localctx, 250, ObjectiveCParser.RULE_doStatement); try { this.enterOuterAlt(localctx, 1); - this.state = 1493; + this.state = 1612; this.match(ObjectiveCParser.DO); - this.state = 1494; + this.state = 1613; this.statement(); - this.state = 1495; + this.state = 1614; this.match(ObjectiveCParser.WHILE); - this.state = 1496; + this.state = 1615; this.match(ObjectiveCParser.LP); - this.state = 1497; + this.state = 1616; this.expression(0); - this.state = 1498; + this.state = 1617; this.match(ObjectiveCParser.RP); - this.state = 1499; + this.state = 1618; this.match(ObjectiveCParser.SEMI); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -15469,45 +17011,45 @@ ObjectiveCParser.ForStatementContext = ForStatementContext; ObjectiveCParser.prototype.forStatement = function() { var localctx = new ForStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 248, ObjectiveCParser.RULE_forStatement); + this.enterRule(localctx, 252, ObjectiveCParser.RULE_forStatement); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1501; + this.state = 1620; this.match(ObjectiveCParser.FOR); - this.state = 1502; + this.state = 1621; this.match(ObjectiveCParser.LP); - this.state = 1504; + this.state = 1623; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.ATTRIBUTE - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 69)) | (1 << (ObjectiveCParser.TYPEOF - 69)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)) | (1 << (ObjectiveCParser.LBRACK - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (ObjectiveCParser.AT - 136)) | (1 << (ObjectiveCParser.BANG - 136)) | (1 << (ObjectiveCParser.TILDE - 136)) | (1 << (ObjectiveCParser.INC - 136)) | (1 << (ObjectiveCParser.DEC - 136)) | (1 << (ObjectiveCParser.ADD - 136)) | (1 << (ObjectiveCParser.SUB - 136)) | (1 << (ObjectiveCParser.MUL - 136)) | (1 << (ObjectiveCParser.BITAND - 136)) | (1 << (ObjectiveCParser.BITXOR - 136)))) !== 0) || ((((_la - 171)) & ~0x1f) == 0 && ((1 << (_la - 171)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 171)) | (1 << (ObjectiveCParser.STRING_START - 171)) | (1 << (ObjectiveCParser.HEX_LITERAL - 171)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 171)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 171)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 171)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 171)))) !== 0)) { - this.state = 1503; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.ATTRIBUTE - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 69)) | (1 << (ObjectiveCParser.TYPEOF - 69)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 101)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)))) !== 0) || ((((_la - 134)) & ~0x1f) == 0 && ((1 << (_la - 134)) & ((1 << (ObjectiveCParser.LBRACK - 134)) | (1 << (ObjectiveCParser.AT - 134)) | (1 << (ObjectiveCParser.BANG - 134)) | (1 << (ObjectiveCParser.TILDE - 134)) | (1 << (ObjectiveCParser.INC - 134)) | (1 << (ObjectiveCParser.DEC - 134)) | (1 << (ObjectiveCParser.ADD - 134)) | (1 << (ObjectiveCParser.SUB - 134)) | (1 << (ObjectiveCParser.MUL - 134)) | (1 << (ObjectiveCParser.BITAND - 134)) | (1 << (ObjectiveCParser.BITXOR - 134)))) !== 0) || ((((_la - 175)) & ~0x1f) == 0 && ((1 << (_la - 175)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 175)) | (1 << (ObjectiveCParser.STRING_START - 175)) | (1 << (ObjectiveCParser.HEX_LITERAL - 175)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 175)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 175)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 175)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 175)))) !== 0)) { + this.state = 1622; this.forLoopInitializer(); } - this.state = 1506; + this.state = 1625; this.match(ObjectiveCParser.SEMI); - this.state = 1508; + this.state = 1627; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 89)))) !== 0) || ((((_la - 125)) & ~0x1f) == 0 && ((1 << (_la - 125)) & ((1 << (ObjectiveCParser.IDENTIFIER - 125)) | (1 << (ObjectiveCParser.LP - 125)) | (1 << (ObjectiveCParser.LBRACK - 125)) | (1 << (ObjectiveCParser.AT - 125)) | (1 << (ObjectiveCParser.BANG - 125)) | (1 << (ObjectiveCParser.TILDE - 125)) | (1 << (ObjectiveCParser.INC - 125)) | (1 << (ObjectiveCParser.DEC - 125)) | (1 << (ObjectiveCParser.ADD - 125)) | (1 << (ObjectiveCParser.SUB - 125)) | (1 << (ObjectiveCParser.MUL - 125)) | (1 << (ObjectiveCParser.BITAND - 125)))) !== 0) || ((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.BITXOR - 158)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 158)) | (1 << (ObjectiveCParser.STRING_START - 158)) | (1 << (ObjectiveCParser.HEX_LITERAL - 158)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 158)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 158)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 158)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 158)))) !== 0)) { - this.state = 1507; + if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (ObjectiveCParser.IB_DESIGNABLE - 121)) | (1 << (ObjectiveCParser.IDENTIFIER - 121)) | (1 << (ObjectiveCParser.LP - 121)) | (1 << (ObjectiveCParser.LBRACK - 121)) | (1 << (ObjectiveCParser.AT - 121)) | (1 << (ObjectiveCParser.BANG - 121)) | (1 << (ObjectiveCParser.TILDE - 121)))) !== 0) || ((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.INC - 154)) | (1 << (ObjectiveCParser.DEC - 154)) | (1 << (ObjectiveCParser.ADD - 154)) | (1 << (ObjectiveCParser.SUB - 154)) | (1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.BITAND - 154)) | (1 << (ObjectiveCParser.BITXOR - 154)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 154)) | (1 << (ObjectiveCParser.STRING_START - 154)) | (1 << (ObjectiveCParser.HEX_LITERAL - 154)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 154)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 154)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 154)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 154)))) !== 0)) { + this.state = 1626; this.expression(0); } - this.state = 1510; + this.state = 1629; this.match(ObjectiveCParser.SEMI); - this.state = 1512; + this.state = 1631; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 89)))) !== 0) || ((((_la - 125)) & ~0x1f) == 0 && ((1 << (_la - 125)) & ((1 << (ObjectiveCParser.IDENTIFIER - 125)) | (1 << (ObjectiveCParser.LP - 125)) | (1 << (ObjectiveCParser.LBRACK - 125)) | (1 << (ObjectiveCParser.AT - 125)) | (1 << (ObjectiveCParser.BANG - 125)) | (1 << (ObjectiveCParser.TILDE - 125)) | (1 << (ObjectiveCParser.INC - 125)) | (1 << (ObjectiveCParser.DEC - 125)) | (1 << (ObjectiveCParser.ADD - 125)) | (1 << (ObjectiveCParser.SUB - 125)) | (1 << (ObjectiveCParser.MUL - 125)) | (1 << (ObjectiveCParser.BITAND - 125)))) !== 0) || ((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.BITXOR - 158)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 158)) | (1 << (ObjectiveCParser.STRING_START - 158)) | (1 << (ObjectiveCParser.HEX_LITERAL - 158)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 158)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 158)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 158)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 158)))) !== 0)) { - this.state = 1511; + if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (ObjectiveCParser.IB_DESIGNABLE - 121)) | (1 << (ObjectiveCParser.IDENTIFIER - 121)) | (1 << (ObjectiveCParser.LP - 121)) | (1 << (ObjectiveCParser.LBRACK - 121)) | (1 << (ObjectiveCParser.AT - 121)) | (1 << (ObjectiveCParser.BANG - 121)) | (1 << (ObjectiveCParser.TILDE - 121)))) !== 0) || ((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.INC - 154)) | (1 << (ObjectiveCParser.DEC - 154)) | (1 << (ObjectiveCParser.ADD - 154)) | (1 << (ObjectiveCParser.SUB - 154)) | (1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.BITAND - 154)) | (1 << (ObjectiveCParser.BITXOR - 154)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 154)) | (1 << (ObjectiveCParser.STRING_START - 154)) | (1 << (ObjectiveCParser.HEX_LITERAL - 154)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 154)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 154)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 154)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 154)))) !== 0)) { + this.state = 1630; this.expressions(); } - this.state = 1514; + this.state = 1633; this.match(ObjectiveCParser.RP); - this.state = 1515; + this.state = 1634; this.statement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -15572,23 +17114,23 @@ ObjectiveCParser.ForLoopInitializerContext = ForLoopInitializerContext; ObjectiveCParser.prototype.forLoopInitializer = function() { var localctx = new ForLoopInitializerContext(this, this._ctx, this.state); - this.enterRule(localctx, 250, ObjectiveCParser.RULE_forLoopInitializer); + this.enterRule(localctx, 254, ObjectiveCParser.RULE_forLoopInitializer); try { - this.state = 1521; + this.state = 1640; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,201,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,232,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1517; + this.state = 1636; this.declarationSpecifiers(); - this.state = 1518; + this.state = 1637; this.initDeclaratorList(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1520; + this.state = 1639; this.expressions(); break; @@ -15672,29 +17214,29 @@ ObjectiveCParser.ForInStatementContext = ForInStatementContext; ObjectiveCParser.prototype.forInStatement = function() { var localctx = new ForInStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 252, ObjectiveCParser.RULE_forInStatement); + this.enterRule(localctx, 256, ObjectiveCParser.RULE_forInStatement); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1523; + this.state = 1642; this.match(ObjectiveCParser.FOR); - this.state = 1524; + this.state = 1643; this.match(ObjectiveCParser.LP); - this.state = 1525; + this.state = 1644; this.typeVariableDeclarator(); - this.state = 1526; + this.state = 1645; this.match(ObjectiveCParser.IN); - this.state = 1528; + this.state = 1647; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 89)))) !== 0) || ((((_la - 125)) & ~0x1f) == 0 && ((1 << (_la - 125)) & ((1 << (ObjectiveCParser.IDENTIFIER - 125)) | (1 << (ObjectiveCParser.LP - 125)) | (1 << (ObjectiveCParser.LBRACK - 125)) | (1 << (ObjectiveCParser.AT - 125)) | (1 << (ObjectiveCParser.BANG - 125)) | (1 << (ObjectiveCParser.TILDE - 125)) | (1 << (ObjectiveCParser.INC - 125)) | (1 << (ObjectiveCParser.DEC - 125)) | (1 << (ObjectiveCParser.ADD - 125)) | (1 << (ObjectiveCParser.SUB - 125)) | (1 << (ObjectiveCParser.MUL - 125)) | (1 << (ObjectiveCParser.BITAND - 125)))) !== 0) || ((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.BITXOR - 158)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 158)) | (1 << (ObjectiveCParser.STRING_START - 158)) | (1 << (ObjectiveCParser.HEX_LITERAL - 158)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 158)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 158)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 158)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 158)))) !== 0)) { - this.state = 1527; + if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (ObjectiveCParser.IB_DESIGNABLE - 121)) | (1 << (ObjectiveCParser.IDENTIFIER - 121)) | (1 << (ObjectiveCParser.LP - 121)) | (1 << (ObjectiveCParser.LBRACK - 121)) | (1 << (ObjectiveCParser.AT - 121)) | (1 << (ObjectiveCParser.BANG - 121)) | (1 << (ObjectiveCParser.TILDE - 121)))) !== 0) || ((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.INC - 154)) | (1 << (ObjectiveCParser.DEC - 154)) | (1 << (ObjectiveCParser.ADD - 154)) | (1 << (ObjectiveCParser.SUB - 154)) | (1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.BITAND - 154)) | (1 << (ObjectiveCParser.BITXOR - 154)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 154)) | (1 << (ObjectiveCParser.STRING_START - 154)) | (1 << (ObjectiveCParser.HEX_LITERAL - 154)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 154)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 154)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 154)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 154)))) !== 0)) { + this.state = 1646; this.expression(0); } - this.state = 1530; + this.state = 1649; this.match(ObjectiveCParser.RP); - this.state = 1531; + this.state = 1650; this.statement(); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -15771,37 +17313,37 @@ ObjectiveCParser.JumpStatementContext = JumpStatementContext; ObjectiveCParser.prototype.jumpStatement = function() { var localctx = new JumpStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 254, ObjectiveCParser.RULE_jumpStatement); + this.enterRule(localctx, 258, ObjectiveCParser.RULE_jumpStatement); try { - this.state = 1541; + this.state = 1660; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.GOTO: this.enterOuterAlt(localctx, 1); - this.state = 1533; + this.state = 1652; this.match(ObjectiveCParser.GOTO); - this.state = 1534; + this.state = 1653; this.identifier(); break; case ObjectiveCParser.CONTINUE: this.enterOuterAlt(localctx, 2); - this.state = 1535; + this.state = 1654; this.match(ObjectiveCParser.CONTINUE); break; case ObjectiveCParser.BREAK: this.enterOuterAlt(localctx, 3); - this.state = 1536; + this.state = 1655; this.match(ObjectiveCParser.BREAK); break; case ObjectiveCParser.RETURN: this.enterOuterAlt(localctx, 4); - this.state = 1537; + this.state = 1656; this.match(ObjectiveCParser.RETURN); - this.state = 1539; + this.state = 1658; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,203,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,234,this._ctx); if(la_===1) { - this.state = 1538; + this.state = 1657; this.expression(0); } @@ -15883,24 +17425,24 @@ ObjectiveCParser.ExpressionsContext = ExpressionsContext; ObjectiveCParser.prototype.expressions = function() { var localctx = new ExpressionsContext(this, this._ctx, this.state); - this.enterRule(localctx, 256, ObjectiveCParser.RULE_expressions); + this.enterRule(localctx, 260, ObjectiveCParser.RULE_expressions); try { this.enterOuterAlt(localctx, 1); - this.state = 1543; + this.state = 1662; this.expression(0); - this.state = 1548; + this.state = 1667; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,205,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,236,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 1544; + this.state = 1663; this.match(ObjectiveCParser.COMMA); - this.state = 1545; + this.state = 1664; this.expression(0); } - this.state = 1550; + this.state = 1669; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,205,this._ctx); + _alt = this._interp.adaptivePredict(this._input,236,this._ctx); } } catch (re) { @@ -16083,82 +17625,82 @@ ObjectiveCParser.prototype.expression = function(_p) { var _parentState = this.state; var localctx = new ExpressionContext(this, this._ctx, _parentState); var _prevctx = localctx; - var _startState = 258; - this.enterRecursionRule(localctx, 258, ObjectiveCParser.RULE_expression, _p); + var _startState = 262; + this.enterRecursionRule(localctx, 262, ObjectiveCParser.RULE_expression, _p); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1561; + this.state = 1680; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,206,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,237,this._ctx); switch(la_) { case 1: - this.state = 1552; + this.state = 1671; this.castExpression(); break; case 2: - this.state = 1553; + this.state = 1672; this.match(ObjectiveCParser.LP); - this.state = 1554; + this.state = 1673; this.compoundStatement(); - this.state = 1555; + this.state = 1674; this.match(ObjectiveCParser.RP); break; case 3: - this.state = 1557; + this.state = 1676; this.unaryExpression(); - this.state = 1558; + this.state = 1677; this.assignmentOperator(); - this.state = 1559; + this.state = 1678; localctx.assignmentExpression = this.expression(1); break; } this._ctx.stop = this._input.LT(-1); - this.state = 1607; + this.state = 1726; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,210,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,241,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { if(this._parseListeners!==null) { this.triggerExitRuleEvent(); } _prevctx = localctx; - this.state = 1605; + this.state = 1724; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,209,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,240,this._ctx); switch(la_) { case 1: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1563; + this.state = 1682; if (!( this.precpred(this._ctx, 13))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 13)"); } - this.state = 1564; + this.state = 1683; localctx.op = this._input.LT(1); _la = this._input.LA(1); - if(!(((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.DIV - 154)) | (1 << (ObjectiveCParser.MOD - 154)))) !== 0))) { + if(!(((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.MUL - 158)) | (1 << (ObjectiveCParser.DIV - 158)) | (1 << (ObjectiveCParser.MOD - 158)))) !== 0))) { localctx.op = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1565; + this.state = 1684; this.expression(14); break; case 2: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1566; + this.state = 1685; if (!( this.precpred(this._ctx, 12))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 12)"); } - this.state = 1567; + this.state = 1686; localctx.op = this._input.LT(1); _la = this._input.LA(1); if(!(_la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB)) { @@ -16168,68 +17710,68 @@ ObjectiveCParser.prototype.expression = function(_p) { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1568; + this.state = 1687; this.expression(13); break; case 3: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1569; + this.state = 1688; if (!( this.precpred(this._ctx, 11))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 11)"); } - this.state = 1574; + this.state = 1693; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.LT: - this.state = 1570; + this.state = 1689; this.match(ObjectiveCParser.LT); - this.state = 1571; + this.state = 1690; this.match(ObjectiveCParser.LT); break; case ObjectiveCParser.GT: - this.state = 1572; + this.state = 1691; this.match(ObjectiveCParser.GT); - this.state = 1573; + this.state = 1692; this.match(ObjectiveCParser.GT); break; default: throw new antlr4.error.NoViableAltException(this); } - this.state = 1576; + this.state = 1695; this.expression(12); break; case 4: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1577; + this.state = 1696; if (!( this.precpred(this._ctx, 10))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 10)"); } - this.state = 1578; + this.state = 1697; localctx.op = this._input.LT(1); _la = this._input.LA(1); - if(!(((((_la - 138)) & ~0x1f) == 0 && ((1 << (_la - 138)) & ((1 << (ObjectiveCParser.GT - 138)) | (1 << (ObjectiveCParser.LT - 138)) | (1 << (ObjectiveCParser.LE - 138)) | (1 << (ObjectiveCParser.GE - 138)))) !== 0))) { + if(!(((((_la - 142)) & ~0x1f) == 0 && ((1 << (_la - 142)) & ((1 << (ObjectiveCParser.GT - 142)) | (1 << (ObjectiveCParser.LT - 142)) | (1 << (ObjectiveCParser.LE - 142)) | (1 << (ObjectiveCParser.GE - 142)))) !== 0))) { localctx.op = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1579; + this.state = 1698; this.expression(11); break; case 5: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1580; + this.state = 1699; if (!( this.precpred(this._ctx, 9))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 9)"); } - this.state = 1581; + this.state = 1700; localctx.op = this._input.LT(1); _la = this._input.LA(1); if(!(_la===ObjectiveCParser.EQUAL || _la===ObjectiveCParser.NOTEQUAL)) { @@ -16239,103 +17781,103 @@ ObjectiveCParser.prototype.expression = function(_p) { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1582; + this.state = 1701; this.expression(10); break; case 6: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1583; + this.state = 1702; if (!( this.precpred(this._ctx, 8))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 8)"); } - this.state = 1584; + this.state = 1703; localctx.op = this.match(ObjectiveCParser.BITAND); - this.state = 1585; + this.state = 1704; this.expression(9); break; case 7: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1586; + this.state = 1705; if (!( this.precpred(this._ctx, 7))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 7)"); } - this.state = 1587; + this.state = 1706; localctx.op = this.match(ObjectiveCParser.BITXOR); - this.state = 1588; + this.state = 1707; this.expression(8); break; case 8: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1589; + this.state = 1708; if (!( this.precpred(this._ctx, 6))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 6)"); } - this.state = 1590; + this.state = 1709; localctx.op = this.match(ObjectiveCParser.BITOR); - this.state = 1591; + this.state = 1710; this.expression(7); break; case 9: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1592; + this.state = 1711; if (!( this.precpred(this._ctx, 5))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 5)"); } - this.state = 1593; + this.state = 1712; localctx.op = this.match(ObjectiveCParser.AND); - this.state = 1594; + this.state = 1713; this.expression(6); break; case 10: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1595; + this.state = 1714; if (!( this.precpred(this._ctx, 4))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 4)"); } - this.state = 1596; + this.state = 1715; localctx.op = this.match(ObjectiveCParser.OR); - this.state = 1597; + this.state = 1716; this.expression(5); break; case 11: localctx = new ExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_expression); - this.state = 1598; + this.state = 1717; if (!( this.precpred(this._ctx, 3))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 3)"); } - this.state = 1599; + this.state = 1718; this.match(ObjectiveCParser.QUESTION); - this.state = 1601; + this.state = 1720; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 89)))) !== 0) || ((((_la - 125)) & ~0x1f) == 0 && ((1 << (_la - 125)) & ((1 << (ObjectiveCParser.IDENTIFIER - 125)) | (1 << (ObjectiveCParser.LP - 125)) | (1 << (ObjectiveCParser.LBRACK - 125)) | (1 << (ObjectiveCParser.AT - 125)) | (1 << (ObjectiveCParser.BANG - 125)) | (1 << (ObjectiveCParser.TILDE - 125)) | (1 << (ObjectiveCParser.INC - 125)) | (1 << (ObjectiveCParser.DEC - 125)) | (1 << (ObjectiveCParser.ADD - 125)) | (1 << (ObjectiveCParser.SUB - 125)) | (1 << (ObjectiveCParser.MUL - 125)) | (1 << (ObjectiveCParser.BITAND - 125)))) !== 0) || ((((_la - 158)) & ~0x1f) == 0 && ((1 << (_la - 158)) & ((1 << (ObjectiveCParser.BITXOR - 158)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 158)) | (1 << (ObjectiveCParser.STRING_START - 158)) | (1 << (ObjectiveCParser.HEX_LITERAL - 158)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 158)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 158)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 158)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 158)))) !== 0)) { - this.state = 1600; + if(((((_la - 25)) & ~0x1f) == 0 && ((1 << (_la - 25)) & ((1 << (ObjectiveCParser.SIZEOF - 25)) | (1 << (ObjectiveCParser.TRUE - 25)) | (1 << (ObjectiveCParser.FALSE - 25)) | (1 << (ObjectiveCParser.BOOL - 25)) | (1 << (ObjectiveCParser.Class - 25)) | (1 << (ObjectiveCParser.BYCOPY - 25)) | (1 << (ObjectiveCParser.BYREF - 25)) | (1 << (ObjectiveCParser.ID - 25)) | (1 << (ObjectiveCParser.IMP - 25)) | (1 << (ObjectiveCParser.IN - 25)) | (1 << (ObjectiveCParser.INOUT - 25)) | (1 << (ObjectiveCParser.NIL - 25)) | (1 << (ObjectiveCParser.NO - 25)) | (1 << (ObjectiveCParser.NULL - 25)) | (1 << (ObjectiveCParser.ONEWAY - 25)) | (1 << (ObjectiveCParser.OUT - 25)) | (1 << (ObjectiveCParser.PROTOCOL_ - 25)) | (1 << (ObjectiveCParser.SEL - 25)) | (1 << (ObjectiveCParser.SELF - 25)) | (1 << (ObjectiveCParser.SUPER - 25)))) !== 0) || ((((_la - 57)) & ~0x1f) == 0 && ((1 << (_la - 57)) & ((1 << (ObjectiveCParser.YES - 57)) | (1 << (ObjectiveCParser.ENCODE - 57)) | (1 << (ObjectiveCParser.PROTOCOL - 57)) | (1 << (ObjectiveCParser.SELECTOR - 57)) | (1 << (ObjectiveCParser.ATOMIC - 57)) | (1 << (ObjectiveCParser.NONATOMIC - 57)) | (1 << (ObjectiveCParser.RETAIN - 57)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 57)) | (1 << (ObjectiveCParser.BLOCK - 57)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 57)))) !== 0) || ((((_la - 89)) & ~0x1f) == 0 && ((1 << (_la - 89)) & ((1 << (ObjectiveCParser.BRIDGE_TRANSFER - 89)) | (1 << (ObjectiveCParser.COVARIANT - 89)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 89)) | (1 << (ObjectiveCParser.DEPRECATED - 89)) | (1 << (ObjectiveCParser.KINDOF - 89)) | (1 << (ObjectiveCParser.UNUSED - 89)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 89)) | (1 << (ObjectiveCParser.NULLABLE - 89)) | (1 << (ObjectiveCParser.NONNULL - 89)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 89)) | (1 << (ObjectiveCParser.NS_INLINE - 89)) | (1 << (ObjectiveCParser.NS_ENUM - 89)) | (1 << (ObjectiveCParser.NS_OPTIONS - 89)) | (1 << (ObjectiveCParser.ASSIGN - 89)) | (1 << (ObjectiveCParser.COPY - 89)) | (1 << (ObjectiveCParser.GETTER - 89)) | (1 << (ObjectiveCParser.SETTER - 89)) | (1 << (ObjectiveCParser.STRONG - 89)) | (1 << (ObjectiveCParser.READONLY - 89)) | (1 << (ObjectiveCParser.READWRITE - 89)) | (1 << (ObjectiveCParser.WEAK - 89)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 89)) | (1 << (ObjectiveCParser.IB_OUTLET - 89)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 89)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 89)))) !== 0) || ((((_la - 121)) & ~0x1f) == 0 && ((1 << (_la - 121)) & ((1 << (ObjectiveCParser.IB_DESIGNABLE - 121)) | (1 << (ObjectiveCParser.IDENTIFIER - 121)) | (1 << (ObjectiveCParser.LP - 121)) | (1 << (ObjectiveCParser.LBRACK - 121)) | (1 << (ObjectiveCParser.AT - 121)) | (1 << (ObjectiveCParser.BANG - 121)) | (1 << (ObjectiveCParser.TILDE - 121)))) !== 0) || ((((_la - 154)) & ~0x1f) == 0 && ((1 << (_la - 154)) & ((1 << (ObjectiveCParser.INC - 154)) | (1 << (ObjectiveCParser.DEC - 154)) | (1 << (ObjectiveCParser.ADD - 154)) | (1 << (ObjectiveCParser.SUB - 154)) | (1 << (ObjectiveCParser.MUL - 154)) | (1 << (ObjectiveCParser.BITAND - 154)) | (1 << (ObjectiveCParser.BITXOR - 154)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 154)) | (1 << (ObjectiveCParser.STRING_START - 154)) | (1 << (ObjectiveCParser.HEX_LITERAL - 154)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 154)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 154)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 154)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 154)))) !== 0)) { + this.state = 1719; localctx.trueExpression = this.expression(0); } - this.state = 1603; + this.state = 1722; this.match(ObjectiveCParser.COLON); - this.state = 1604; + this.state = 1723; localctx.falseExpression = this.expression(4); break; } } - this.state = 1609; + this.state = 1728; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,210,this._ctx); + _alt = this._interp.adaptivePredict(this._input,241,this._ctx); } } catch( error) { @@ -16433,13 +17975,13 @@ ObjectiveCParser.AssignmentOperatorContext = AssignmentOperatorContext; ObjectiveCParser.prototype.assignmentOperator = function() { var localctx = new AssignmentOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 260, ObjectiveCParser.RULE_assignmentOperator); + this.enterRule(localctx, 264, ObjectiveCParser.RULE_assignmentOperator); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1610; + this.state = 1729; _la = this._input.LA(1); - if(!(((((_la - 137)) & ~0x1f) == 0 && ((1 << (_la - 137)) & ((1 << (ObjectiveCParser.ASSIGNMENT - 137)) | (1 << (ObjectiveCParser.ADD_ASSIGN - 137)) | (1 << (ObjectiveCParser.SUB_ASSIGN - 137)) | (1 << (ObjectiveCParser.MUL_ASSIGN - 137)) | (1 << (ObjectiveCParser.DIV_ASSIGN - 137)) | (1 << (ObjectiveCParser.AND_ASSIGN - 137)) | (1 << (ObjectiveCParser.OR_ASSIGN - 137)) | (1 << (ObjectiveCParser.XOR_ASSIGN - 137)) | (1 << (ObjectiveCParser.MOD_ASSIGN - 137)) | (1 << (ObjectiveCParser.LSHIFT_ASSIGN - 137)))) !== 0) || _la===ObjectiveCParser.RSHIFT_ASSIGN)) { + if(!(((((_la - 141)) & ~0x1f) == 0 && ((1 << (_la - 141)) & ((1 << (ObjectiveCParser.ASSIGNMENT - 141)) | (1 << (ObjectiveCParser.ADD_ASSIGN - 141)) | (1 << (ObjectiveCParser.SUB_ASSIGN - 141)) | (1 << (ObjectiveCParser.MUL_ASSIGN - 141)) | (1 << (ObjectiveCParser.DIV_ASSIGN - 141)) | (1 << (ObjectiveCParser.AND_ASSIGN - 141)) | (1 << (ObjectiveCParser.OR_ASSIGN - 141)) | (1 << (ObjectiveCParser.XOR_ASSIGN - 141)) | (1 << (ObjectiveCParser.MOD_ASSIGN - 141)) | (1 << (ObjectiveCParser.LSHIFT_ASSIGN - 141)))) !== 0) || _la===ObjectiveCParser.RSHIFT_ASSIGN)) { this._errHandler.recoverInline(this); } else { @@ -16521,37 +18063,37 @@ ObjectiveCParser.CastExpressionContext = CastExpressionContext; ObjectiveCParser.prototype.castExpression = function() { var localctx = new CastExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 262, ObjectiveCParser.RULE_castExpression); + this.enterRule(localctx, 266, ObjectiveCParser.RULE_castExpression); try { - this.state = 1621; + this.state = 1740; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,212,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,243,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1612; + this.state = 1731; this.unaryExpression(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1613; + this.state = 1732; this.match(ObjectiveCParser.LP); - this.state = 1614; + this.state = 1733; this.typeName(); - this.state = 1615; + this.state = 1734; this.match(ObjectiveCParser.RP); - this.state = 1619; + this.state = 1738; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,211,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,242,this._ctx); switch(la_) { case 1: - this.state = 1617; + this.state = 1736; this.castExpression(); break; case 2: - this.state = 1618; + this.state = 1737; this.initializer(); break; @@ -16622,27 +18164,27 @@ ObjectiveCParser.InitializerContext = InitializerContext; ObjectiveCParser.prototype.initializer = function() { var localctx = new InitializerContext(this, this._ctx, this.state); - this.enterRule(localctx, 264, ObjectiveCParser.RULE_initializer); + this.enterRule(localctx, 268, ObjectiveCParser.RULE_initializer); try { - this.state = 1626; + this.state = 1745; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,213,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,244,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1623; + this.state = 1742; this.expression(0); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1624; + this.state = 1743; this.arrayInitializer(); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 1625; + this.state = 1744; this.structInitializer(); break; @@ -16706,9 +18248,9 @@ ObjectiveCParser.ConstantExpressionContext = ConstantExpressionContext; ObjectiveCParser.prototype.constantExpression = function() { var localctx = new ConstantExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 266, ObjectiveCParser.RULE_constantExpression); + this.enterRule(localctx, 270, ObjectiveCParser.RULE_constantExpression); try { - this.state = 1630; + this.state = 1749; this._errHandler.sync(this); switch(this._input.LA(1)) { case ObjectiveCParser.BOOL: @@ -16759,7 +18301,7 @@ ObjectiveCParser.prototype.constantExpression = function() { case ObjectiveCParser.IB_DESIGNABLE: case ObjectiveCParser.IDENTIFIER: this.enterOuterAlt(localctx, 1); - this.state = 1628; + this.state = 1747; this.identifier(); break; case ObjectiveCParser.TRUE: @@ -16777,7 +18319,7 @@ ObjectiveCParser.prototype.constantExpression = function() { case ObjectiveCParser.DECIMAL_LITERAL: case ObjectiveCParser.FLOATING_POINT_LITERAL: this.enterOuterAlt(localctx, 2); - this.state = 1629; + this.state = 1748; this.constant(); break; default: @@ -16875,38 +18417,38 @@ ObjectiveCParser.UnaryExpressionContext = UnaryExpressionContext; ObjectiveCParser.prototype.unaryExpression = function() { var localctx = new UnaryExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 268, ObjectiveCParser.RULE_unaryExpression); + this.enterRule(localctx, 272, ObjectiveCParser.RULE_unaryExpression); var _la = 0; // Token type try { - this.state = 1646; + this.state = 1765; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,216,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,247,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1632; + this.state = 1751; this.postfixExpression(0); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1633; + this.state = 1752; this.match(ObjectiveCParser.SIZEOF); - this.state = 1639; + this.state = 1758; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,215,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,246,this._ctx); switch(la_) { case 1: - this.state = 1634; + this.state = 1753; this.unaryExpression(); break; case 2: - this.state = 1635; + this.state = 1754; this.match(ObjectiveCParser.LP); - this.state = 1636; + this.state = 1755; this.typeSpecifier(); - this.state = 1637; + this.state = 1756; this.match(ObjectiveCParser.RP); break; @@ -16915,7 +18457,7 @@ ObjectiveCParser.prototype.unaryExpression = function() { case 3: this.enterOuterAlt(localctx, 3); - this.state = 1641; + this.state = 1760; localctx.op = this._input.LT(1); _la = this._input.LA(1); if(!(_la===ObjectiveCParser.INC || _la===ObjectiveCParser.DEC)) { @@ -16925,15 +18467,15 @@ ObjectiveCParser.prototype.unaryExpression = function() { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1642; + this.state = 1761; this.unaryExpression(); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 1643; + this.state = 1762; this.unaryOperator(); - this.state = 1644; + this.state = 1763; this.castExpression(); break; @@ -17013,13 +18555,13 @@ ObjectiveCParser.UnaryOperatorContext = UnaryOperatorContext; ObjectiveCParser.prototype.unaryOperator = function() { var localctx = new UnaryOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 270, ObjectiveCParser.RULE_unaryOperator); + this.enterRule(localctx, 274, ObjectiveCParser.RULE_unaryOperator); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1648; + this.state = 1767; _la = this._input.LA(1); - if(!(((((_la - 140)) & ~0x1f) == 0 && ((1 << (_la - 140)) & ((1 << (ObjectiveCParser.BANG - 140)) | (1 << (ObjectiveCParser.TILDE - 140)) | (1 << (ObjectiveCParser.ADD - 140)) | (1 << (ObjectiveCParser.SUB - 140)) | (1 << (ObjectiveCParser.MUL - 140)) | (1 << (ObjectiveCParser.BITAND - 140)))) !== 0))) { + if(!(((((_la - 144)) & ~0x1f) == 0 && ((1 << (_la - 144)) & ((1 << (ObjectiveCParser.BANG - 144)) | (1 << (ObjectiveCParser.TILDE - 144)) | (1 << (ObjectiveCParser.ADD - 144)) | (1 << (ObjectiveCParser.SUB - 144)) | (1 << (ObjectiveCParser.MUL - 144)) | (1 << (ObjectiveCParser.BITAND - 144)))) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -17110,30 +18652,30 @@ ObjectiveCParser.prototype.postfixExpression = function(_p) { var _parentState = this.state; var localctx = new PostfixExpressionContext(this, this._ctx, _parentState); var _prevctx = localctx; - var _startState = 272; - this.enterRecursionRule(localctx, 272, ObjectiveCParser.RULE_postfixExpression, _p); + var _startState = 276; + this.enterRecursionRule(localctx, 276, ObjectiveCParser.RULE_postfixExpression, _p); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1651; + this.state = 1770; this.primaryExpression(); - this.state = 1655; + this.state = 1774; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,217,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,248,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 1652; + this.state = 1771; this.postfix(); } - this.state = 1657; + this.state = 1776; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,217,this._ctx); + _alt = this._interp.adaptivePredict(this._input,248,this._ctx); } this._ctx.stop = this._input.LT(-1); - this.state = 1669; + this.state = 1788; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,219,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,250,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { if(this._parseListeners!==null) { @@ -17142,11 +18684,11 @@ ObjectiveCParser.prototype.postfixExpression = function(_p) { _prevctx = localctx; localctx = new PostfixExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, ObjectiveCParser.RULE_postfixExpression); - this.state = 1658; + this.state = 1777; if (!( this.precpred(this._ctx, 1))) { throw new antlr4.error.FailedPredicateException(this, "this.precpred(this._ctx, 1)"); } - this.state = 1659; + this.state = 1778; _la = this._input.LA(1); if(!(_la===ObjectiveCParser.DOT || _la===ObjectiveCParser.STRUCTACCESS)) { this._errHandler.recoverInline(this); @@ -17155,25 +18697,25 @@ ObjectiveCParser.prototype.postfixExpression = function(_p) { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1660; + this.state = 1779; this.identifier(); - this.state = 1664; + this.state = 1783; this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input,218,this._ctx) + var _alt = this._interp.adaptivePredict(this._input,249,this._ctx) while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) { if(_alt===1) { - this.state = 1661; + this.state = 1780; this.postfix(); } - this.state = 1666; + this.state = 1785; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,218,this._ctx); + _alt = this._interp.adaptivePredict(this._input,249,this._ctx); } } - this.state = 1671; + this.state = 1790; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,219,this._ctx); + _alt = this._interp.adaptivePredict(this._input,250,this._ctx); } } catch( error) { @@ -17203,7 +18745,7 @@ function PostfixContext(parser, parent, invokingState) { this.ruleIndex = ObjectiveCParser.RULE_postfix; this._RP = null; // Token this.macroArguments = []; // of Tokens - this._tset3242 = null; // Token + this._tset3533 = null; // Token this.op = null; // Token return this; } @@ -17283,82 +18825,82 @@ ObjectiveCParser.PostfixContext = PostfixContext; ObjectiveCParser.prototype.postfix = function() { var localctx = new PostfixContext(this, this._ctx, this.state); - this.enterRule(localctx, 274, ObjectiveCParser.RULE_postfix); + this.enterRule(localctx, 278, ObjectiveCParser.RULE_postfix); var _la = 0; // Token type try { - this.state = 1690; + this.state = 1809; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,223,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,254,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1672; + this.state = 1791; this.match(ObjectiveCParser.LBRACK); - this.state = 1673; + this.state = 1792; this.expression(0); - this.state = 1674; + this.state = 1793; this.match(ObjectiveCParser.RBRACK); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1676; + this.state = 1795; this.match(ObjectiveCParser.LP); - this.state = 1678; + this.state = 1797; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.TYPEOF - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)) | (1 << (ObjectiveCParser.LBRACK - 101)))) !== 0) || ((((_la - 136)) & ~0x1f) == 0 && ((1 << (_la - 136)) & ((1 << (ObjectiveCParser.AT - 136)) | (1 << (ObjectiveCParser.BANG - 136)) | (1 << (ObjectiveCParser.TILDE - 136)) | (1 << (ObjectiveCParser.INC - 136)) | (1 << (ObjectiveCParser.DEC - 136)) | (1 << (ObjectiveCParser.ADD - 136)) | (1 << (ObjectiveCParser.SUB - 136)) | (1 << (ObjectiveCParser.MUL - 136)) | (1 << (ObjectiveCParser.BITAND - 136)) | (1 << (ObjectiveCParser.BITXOR - 136)))) !== 0) || ((((_la - 171)) & ~0x1f) == 0 && ((1 << (_la - 171)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 171)) | (1 << (ObjectiveCParser.STRING_START - 171)) | (1 << (ObjectiveCParser.HEX_LITERAL - 171)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 171)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 171)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 171)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 171)))) !== 0)) { - this.state = 1677; + if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)))) !== 0) || ((((_la - 69)) & ~0x1f) == 0 && ((1 << (_la - 69)) & ((1 << (ObjectiveCParser.PROTOCOL - 69)) | (1 << (ObjectiveCParser.SELECTOR - 69)) | (1 << (ObjectiveCParser.ATOMIC - 69)) | (1 << (ObjectiveCParser.NONATOMIC - 69)) | (1 << (ObjectiveCParser.RETAIN - 69)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 69)) | (1 << (ObjectiveCParser.BLOCK - 69)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 69)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 69)) | (1 << (ObjectiveCParser.COVARIANT - 69)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 69)) | (1 << (ObjectiveCParser.DEPRECATED - 69)) | (1 << (ObjectiveCParser.KINDOF - 69)) | (1 << (ObjectiveCParser.TYPEOF - 69)) | (1 << (ObjectiveCParser.UNUSED - 69)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 69)) | (1 << (ObjectiveCParser.NULLABLE - 69)))) !== 0) || ((((_la - 101)) & ~0x1f) == 0 && ((1 << (_la - 101)) & ((1 << (ObjectiveCParser.NONNULL - 101)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 101)) | (1 << (ObjectiveCParser.NS_INLINE - 101)) | (1 << (ObjectiveCParser.NS_ENUM - 101)) | (1 << (ObjectiveCParser.NS_OPTIONS - 101)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 101)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 101)) | (1 << (ObjectiveCParser.ASSIGN - 101)) | (1 << (ObjectiveCParser.COPY - 101)) | (1 << (ObjectiveCParser.GETTER - 101)) | (1 << (ObjectiveCParser.SETTER - 101)) | (1 << (ObjectiveCParser.STRONG - 101)) | (1 << (ObjectiveCParser.READONLY - 101)) | (1 << (ObjectiveCParser.READWRITE - 101)) | (1 << (ObjectiveCParser.WEAK - 101)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 101)) | (1 << (ObjectiveCParser.IB_OUTLET - 101)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 101)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 101)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 101)) | (1 << (ObjectiveCParser.IDENTIFIER - 101)) | (1 << (ObjectiveCParser.LP - 101)))) !== 0) || ((((_la - 134)) & ~0x1f) == 0 && ((1 << (_la - 134)) & ((1 << (ObjectiveCParser.LBRACK - 134)) | (1 << (ObjectiveCParser.AT - 134)) | (1 << (ObjectiveCParser.BANG - 134)) | (1 << (ObjectiveCParser.TILDE - 134)) | (1 << (ObjectiveCParser.INC - 134)) | (1 << (ObjectiveCParser.DEC - 134)) | (1 << (ObjectiveCParser.ADD - 134)) | (1 << (ObjectiveCParser.SUB - 134)) | (1 << (ObjectiveCParser.MUL - 134)) | (1 << (ObjectiveCParser.BITAND - 134)) | (1 << (ObjectiveCParser.BITXOR - 134)))) !== 0) || ((((_la - 175)) & ~0x1f) == 0 && ((1 << (_la - 175)) & ((1 << (ObjectiveCParser.CHARACTER_LITERAL - 175)) | (1 << (ObjectiveCParser.STRING_START - 175)) | (1 << (ObjectiveCParser.HEX_LITERAL - 175)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 175)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 175)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 175)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 175)))) !== 0)) { + this.state = 1796; this.argumentExpressionList(); } - this.state = 1680; + this.state = 1799; this.match(ObjectiveCParser.RP); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 1681; + this.state = 1800; this.match(ObjectiveCParser.LP); - this.state = 1684; + this.state = 1803; this._errHandler.sync(this); _la = this._input.LA(1); do { - this.state = 1684; + this.state = 1803; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,221,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,252,this._ctx); switch(la_) { case 1: - this.state = 1682; + this.state = 1801; this.match(ObjectiveCParser.COMMA); break; case 2: - this.state = 1683; - localctx._tset3242 = this._input.LT(1); + this.state = 1802; + localctx._tset3533 = this._input.LT(1); _la = this._input.LA(1); if(_la<=0 || _la===ObjectiveCParser.RP) { - localctx._tset3242 = this._errHandler.recoverInline(this); + localctx._tset3533 = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - localctx.macroArguments.push(localctx._tset3242); + localctx.macroArguments.push(localctx._tset3533); break; } - this.state = 1686; + this.state = 1805; this._errHandler.sync(this); _la = this._input.LA(1); - } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.BREAK) | (1 << ObjectiveCParser.CASE) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.CONTINUE) | (1 << ObjectiveCParser.DEFAULT) | (1 << ObjectiveCParser.DO) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ELSE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.FOR) | (1 << ObjectiveCParser.GOTO) | (1 << ObjectiveCParser.IF) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.RETURN) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.SWITCH) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.WHILE - 32)) | (1 << (ObjectiveCParser.BOOL_ - 32)) | (1 << (ObjectiveCParser.COMPLEX - 32)) | (1 << (ObjectiveCParser.IMAGINERY - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.AUTORELEASEPOOL - 32)) | (1 << (ObjectiveCParser.CATCH - 32)) | (1 << (ObjectiveCParser.CLASS - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)) | (1 << (ObjectiveCParser.END - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (ObjectiveCParser.FINALLY - 64)) | (1 << (ObjectiveCParser.IMPLEMENTATION - 64)) | (1 << (ObjectiveCParser.INTERFACE - 64)) | (1 << (ObjectiveCParser.IMPORT - 64)) | (1 << (ObjectiveCParser.PACKAGE - 64)) | (1 << (ObjectiveCParser.PROTOCOL - 64)) | (1 << (ObjectiveCParser.OPTIONAL - 64)) | (1 << (ObjectiveCParser.PRIVATE - 64)) | (1 << (ObjectiveCParser.PROPERTY - 64)) | (1 << (ObjectiveCParser.PROTECTED - 64)) | (1 << (ObjectiveCParser.PUBLIC - 64)) | (1 << (ObjectiveCParser.REQUIRED - 64)) | (1 << (ObjectiveCParser.SELECTOR - 64)) | (1 << (ObjectiveCParser.SYNCHRONIZED - 64)) | (1 << (ObjectiveCParser.SYNTHESIZE - 64)) | (1 << (ObjectiveCParser.THROW - 64)) | (1 << (ObjectiveCParser.TRY - 64)) | (1 << (ObjectiveCParser.ATOMIC - 64)) | (1 << (ObjectiveCParser.NONATOMIC - 64)) | (1 << (ObjectiveCParser.RETAIN - 64)) | (1 << (ObjectiveCParser.ATTRIBUTE - 64)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 64)) | (1 << (ObjectiveCParser.BLOCK - 64)) | (1 << (ObjectiveCParser.BRIDGE - 64)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 64)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 64)) | (1 << (ObjectiveCParser.COVARIANT - 64)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 64)) | (1 << (ObjectiveCParser.DEPRECATED - 64)) | (1 << (ObjectiveCParser.KINDOF - 64)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 64)) | (1 << (ObjectiveCParser.TYPEOF - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 96)) | (1 << (ObjectiveCParser.UNUSED - 96)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 96)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 96)) | (1 << (ObjectiveCParser.NULLABLE - 96)) | (1 << (ObjectiveCParser.NONNULL - 96)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 96)) | (1 << (ObjectiveCParser.NS_INLINE - 96)) | (1 << (ObjectiveCParser.NS_ENUM - 96)) | (1 << (ObjectiveCParser.NS_OPTIONS - 96)) | (1 << (ObjectiveCParser.ASSIGN - 96)) | (1 << (ObjectiveCParser.COPY - 96)) | (1 << (ObjectiveCParser.GETTER - 96)) | (1 << (ObjectiveCParser.SETTER - 96)) | (1 << (ObjectiveCParser.STRONG - 96)) | (1 << (ObjectiveCParser.READONLY - 96)) | (1 << (ObjectiveCParser.READWRITE - 96)) | (1 << (ObjectiveCParser.WEAK - 96)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 96)) | (1 << (ObjectiveCParser.IB_OUTLET - 96)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 96)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 96)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 96)) | (1 << (ObjectiveCParser.NS_ASSUME_NONNULL_BEGIN - 96)) | (1 << (ObjectiveCParser.NS_ASSUME_NONNULL_END - 96)) | (1 << (ObjectiveCParser.EXTERN_SUFFIX - 96)) | (1 << (ObjectiveCParser.IOS_SUFFIX - 96)) | (1 << (ObjectiveCParser.MAC_SUFFIX - 96)) | (1 << (ObjectiveCParser.TVOS_PROHIBITED - 96)) | (1 << (ObjectiveCParser.IDENTIFIER - 96)) | (1 << (ObjectiveCParser.LP - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (ObjectiveCParser.LBRACE - 128)) | (1 << (ObjectiveCParser.RBRACE - 128)) | (1 << (ObjectiveCParser.LBRACK - 128)) | (1 << (ObjectiveCParser.RBRACK - 128)) | (1 << (ObjectiveCParser.SEMI - 128)) | (1 << (ObjectiveCParser.COMMA - 128)) | (1 << (ObjectiveCParser.DOT - 128)) | (1 << (ObjectiveCParser.STRUCTACCESS - 128)) | (1 << (ObjectiveCParser.AT - 128)) | (1 << (ObjectiveCParser.ASSIGNMENT - 128)) | (1 << (ObjectiveCParser.GT - 128)) | (1 << (ObjectiveCParser.LT - 128)) | (1 << (ObjectiveCParser.BANG - 128)) | (1 << (ObjectiveCParser.TILDE - 128)) | (1 << (ObjectiveCParser.QUESTION - 128)) | (1 << (ObjectiveCParser.COLON - 128)) | (1 << (ObjectiveCParser.EQUAL - 128)) | (1 << (ObjectiveCParser.LE - 128)) | (1 << (ObjectiveCParser.GE - 128)) | (1 << (ObjectiveCParser.NOTEQUAL - 128)) | (1 << (ObjectiveCParser.AND - 128)) | (1 << (ObjectiveCParser.OR - 128)) | (1 << (ObjectiveCParser.INC - 128)) | (1 << (ObjectiveCParser.DEC - 128)) | (1 << (ObjectiveCParser.ADD - 128)) | (1 << (ObjectiveCParser.SUB - 128)) | (1 << (ObjectiveCParser.MUL - 128)) | (1 << (ObjectiveCParser.DIV - 128)) | (1 << (ObjectiveCParser.BITAND - 128)) | (1 << (ObjectiveCParser.BITOR - 128)) | (1 << (ObjectiveCParser.BITXOR - 128)) | (1 << (ObjectiveCParser.MOD - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (ObjectiveCParser.ADD_ASSIGN - 160)) | (1 << (ObjectiveCParser.SUB_ASSIGN - 160)) | (1 << (ObjectiveCParser.MUL_ASSIGN - 160)) | (1 << (ObjectiveCParser.DIV_ASSIGN - 160)) | (1 << (ObjectiveCParser.AND_ASSIGN - 160)) | (1 << (ObjectiveCParser.OR_ASSIGN - 160)) | (1 << (ObjectiveCParser.XOR_ASSIGN - 160)) | (1 << (ObjectiveCParser.MOD_ASSIGN - 160)) | (1 << (ObjectiveCParser.LSHIFT_ASSIGN - 160)) | (1 << (ObjectiveCParser.RSHIFT_ASSIGN - 160)) | (1 << (ObjectiveCParser.ELIPSIS - 160)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 160)) | (1 << (ObjectiveCParser.STRING_START - 160)) | (1 << (ObjectiveCParser.HEX_LITERAL - 160)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 160)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 160)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 160)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 160)) | (1 << (ObjectiveCParser.VERSION_SEMATIC - 160)) | (1 << (ObjectiveCParser.WS - 160)) | (1 << (ObjectiveCParser.MULTI_COMMENT - 160)) | (1 << (ObjectiveCParser.SINGLE_COMMENT - 160)) | (1 << (ObjectiveCParser.BACKSLASH - 160)) | (1 << (ObjectiveCParser.SHARP - 160)) | (1 << (ObjectiveCParser.STRING_NEWLINE - 160)) | (1 << (ObjectiveCParser.STRING_END - 160)) | (1 << (ObjectiveCParser.STRING_VALUE - 160)) | (1 << (ObjectiveCParser.DIRECTIVE_IMPORT - 160)) | (1 << (ObjectiveCParser.DIRECTIVE_INCLUDE - 160)) | (1 << (ObjectiveCParser.DIRECTIVE_PRAGMA - 160)) | (1 << (ObjectiveCParser.DIRECTIVE_DEFINE - 160)) | (1 << (ObjectiveCParser.DIRECTIVE_DEFINED - 160)))) !== 0) || ((((_la - 192)) & ~0x1f) == 0 && ((1 << (_la - 192)) & ((1 << (ObjectiveCParser.DIRECTIVE_IF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ELIF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ELSE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_UNDEF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_IFDEF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_IFNDEF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ENDIF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_TRUE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_FALSE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ERROR - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_WARNING - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_BANG - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_LP - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_RP - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_EQUAL - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_NOTEQUAL - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_AND - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_OR - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_LT - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_GT - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_LE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_GE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_STRING - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ID - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_DECIMAL_LITERAL - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_FLOAT - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_NEWLINE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_MULTI_COMMENT - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_SINGLE_COMMENT - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_BACKSLASH_NEWLINE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_TEXT_NEWLINE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_TEXT - 192)))) !== 0)); - this.state = 1688; + } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << ObjectiveCParser.AUTO) | (1 << ObjectiveCParser.BREAK) | (1 << ObjectiveCParser.CASE) | (1 << ObjectiveCParser.CHAR) | (1 << ObjectiveCParser.CONST) | (1 << ObjectiveCParser.CONTINUE) | (1 << ObjectiveCParser.DEFAULT) | (1 << ObjectiveCParser.DO) | (1 << ObjectiveCParser.DOUBLE) | (1 << ObjectiveCParser.ELSE) | (1 << ObjectiveCParser.ENUM) | (1 << ObjectiveCParser.EXTERN) | (1 << ObjectiveCParser.FLOAT) | (1 << ObjectiveCParser.FOR) | (1 << ObjectiveCParser.GOTO) | (1 << ObjectiveCParser.IF) | (1 << ObjectiveCParser.INLINE) | (1 << ObjectiveCParser.INT) | (1 << ObjectiveCParser.LONG) | (1 << ObjectiveCParser.REGISTER) | (1 << ObjectiveCParser.RESTRICT) | (1 << ObjectiveCParser.RETURN) | (1 << ObjectiveCParser.SHORT) | (1 << ObjectiveCParser.SIGNED) | (1 << ObjectiveCParser.SIZEOF) | (1 << ObjectiveCParser.STATIC) | (1 << ObjectiveCParser.STRUCT) | (1 << ObjectiveCParser.SWITCH) | (1 << ObjectiveCParser.TYPEDEF) | (1 << ObjectiveCParser.UNION) | (1 << ObjectiveCParser.UNSIGNED))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (ObjectiveCParser.VOID - 32)) | (1 << (ObjectiveCParser.VOLATILE - 32)) | (1 << (ObjectiveCParser.WHILE - 32)) | (1 << (ObjectiveCParser.BOOL_ - 32)) | (1 << (ObjectiveCParser.COMPLEX - 32)) | (1 << (ObjectiveCParser.IMAGINERY - 32)) | (1 << (ObjectiveCParser.TRUE - 32)) | (1 << (ObjectiveCParser.FALSE - 32)) | (1 << (ObjectiveCParser.BOOL - 32)) | (1 << (ObjectiveCParser.Class - 32)) | (1 << (ObjectiveCParser.BYCOPY - 32)) | (1 << (ObjectiveCParser.BYREF - 32)) | (1 << (ObjectiveCParser.ID - 32)) | (1 << (ObjectiveCParser.IMP - 32)) | (1 << (ObjectiveCParser.IN - 32)) | (1 << (ObjectiveCParser.INOUT - 32)) | (1 << (ObjectiveCParser.NIL - 32)) | (1 << (ObjectiveCParser.NO - 32)) | (1 << (ObjectiveCParser.NULL - 32)) | (1 << (ObjectiveCParser.ONEWAY - 32)) | (1 << (ObjectiveCParser.OUT - 32)) | (1 << (ObjectiveCParser.PROTOCOL_ - 32)) | (1 << (ObjectiveCParser.SEL - 32)) | (1 << (ObjectiveCParser.SELF - 32)) | (1 << (ObjectiveCParser.SUPER - 32)) | (1 << (ObjectiveCParser.YES - 32)) | (1 << (ObjectiveCParser.AUTORELEASEPOOL - 32)) | (1 << (ObjectiveCParser.CATCH - 32)) | (1 << (ObjectiveCParser.CLASS - 32)) | (1 << (ObjectiveCParser.DYNAMIC - 32)) | (1 << (ObjectiveCParser.ENCODE - 32)) | (1 << (ObjectiveCParser.END - 32)))) !== 0) || ((((_la - 64)) & ~0x1f) == 0 && ((1 << (_la - 64)) & ((1 << (ObjectiveCParser.FINALLY - 64)) | (1 << (ObjectiveCParser.IMPLEMENTATION - 64)) | (1 << (ObjectiveCParser.INTERFACE - 64)) | (1 << (ObjectiveCParser.IMPORT - 64)) | (1 << (ObjectiveCParser.PACKAGE - 64)) | (1 << (ObjectiveCParser.PROTOCOL - 64)) | (1 << (ObjectiveCParser.OPTIONAL - 64)) | (1 << (ObjectiveCParser.PRIVATE - 64)) | (1 << (ObjectiveCParser.PROPERTY - 64)) | (1 << (ObjectiveCParser.PROTECTED - 64)) | (1 << (ObjectiveCParser.PUBLIC - 64)) | (1 << (ObjectiveCParser.REQUIRED - 64)) | (1 << (ObjectiveCParser.SELECTOR - 64)) | (1 << (ObjectiveCParser.SYNCHRONIZED - 64)) | (1 << (ObjectiveCParser.SYNTHESIZE - 64)) | (1 << (ObjectiveCParser.THROW - 64)) | (1 << (ObjectiveCParser.TRY - 64)) | (1 << (ObjectiveCParser.ATOMIC - 64)) | (1 << (ObjectiveCParser.NONATOMIC - 64)) | (1 << (ObjectiveCParser.RETAIN - 64)) | (1 << (ObjectiveCParser.ATTRIBUTE - 64)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 64)) | (1 << (ObjectiveCParser.BLOCK - 64)) | (1 << (ObjectiveCParser.BRIDGE - 64)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 64)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 64)) | (1 << (ObjectiveCParser.COVARIANT - 64)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 64)) | (1 << (ObjectiveCParser.DEPRECATED - 64)) | (1 << (ObjectiveCParser.KINDOF - 64)) | (1 << (ObjectiveCParser.STRONG_QUALIFIER - 64)) | (1 << (ObjectiveCParser.TYPEOF - 64)))) !== 0) || ((((_la - 96)) & ~0x1f) == 0 && ((1 << (_la - 96)) & ((1 << (ObjectiveCParser.UNSAFE_UNRETAINED_QUALIFIER - 96)) | (1 << (ObjectiveCParser.UNUSED - 96)) | (1 << (ObjectiveCParser.WEAK_QUALIFIER - 96)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 96)) | (1 << (ObjectiveCParser.NULLABLE - 96)) | (1 << (ObjectiveCParser.NONNULL - 96)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 96)) | (1 << (ObjectiveCParser.NS_INLINE - 96)) | (1 << (ObjectiveCParser.NS_ENUM - 96)) | (1 << (ObjectiveCParser.NS_OPTIONS - 96)) | (1 << (ObjectiveCParser.NS_CLOSED_ENUM - 96)) | (1 << (ObjectiveCParser.NS_TYPED_EXTENSIBLE_ENUM - 96)) | (1 << (ObjectiveCParser.NS_ERROR_ENUM - 96)) | (1 << (ObjectiveCParser.ASSIGN - 96)) | (1 << (ObjectiveCParser.COPY - 96)) | (1 << (ObjectiveCParser.GETTER - 96)) | (1 << (ObjectiveCParser.SETTER - 96)) | (1 << (ObjectiveCParser.STRONG - 96)) | (1 << (ObjectiveCParser.READONLY - 96)) | (1 << (ObjectiveCParser.READWRITE - 96)) | (1 << (ObjectiveCParser.WEAK - 96)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 96)) | (1 << (ObjectiveCParser.IB_OUTLET - 96)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 96)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 96)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 96)) | (1 << (ObjectiveCParser.NS_ASSUME_NONNULL_BEGIN - 96)) | (1 << (ObjectiveCParser.NS_ASSUME_NONNULL_END - 96)) | (1 << (ObjectiveCParser.EXTERN_SUFFIX - 96)) | (1 << (ObjectiveCParser.IOS_SUFFIX - 96)) | (1 << (ObjectiveCParser.MAC_SUFFIX - 96)) | (1 << (ObjectiveCParser.TVOS_PROHIBITED - 96)))) !== 0) || ((((_la - 128)) & ~0x1f) == 0 && ((1 << (_la - 128)) & ((1 << (ObjectiveCParser.NS_NOESCAPE - 128)) | (1 << (ObjectiveCParser.IDENTIFIER - 128)) | (1 << (ObjectiveCParser.LP - 128)) | (1 << (ObjectiveCParser.LBRACE - 128)) | (1 << (ObjectiveCParser.RBRACE - 128)) | (1 << (ObjectiveCParser.LBRACK - 128)) | (1 << (ObjectiveCParser.RBRACK - 128)) | (1 << (ObjectiveCParser.SEMI - 128)) | (1 << (ObjectiveCParser.COMMA - 128)) | (1 << (ObjectiveCParser.DOT - 128)) | (1 << (ObjectiveCParser.STRUCTACCESS - 128)) | (1 << (ObjectiveCParser.AT - 128)) | (1 << (ObjectiveCParser.ASSIGNMENT - 128)) | (1 << (ObjectiveCParser.GT - 128)) | (1 << (ObjectiveCParser.LT - 128)) | (1 << (ObjectiveCParser.BANG - 128)) | (1 << (ObjectiveCParser.TILDE - 128)) | (1 << (ObjectiveCParser.QUESTION - 128)) | (1 << (ObjectiveCParser.COLON - 128)) | (1 << (ObjectiveCParser.EQUAL - 128)) | (1 << (ObjectiveCParser.LE - 128)) | (1 << (ObjectiveCParser.GE - 128)) | (1 << (ObjectiveCParser.NOTEQUAL - 128)) | (1 << (ObjectiveCParser.AND - 128)) | (1 << (ObjectiveCParser.OR - 128)) | (1 << (ObjectiveCParser.INC - 128)) | (1 << (ObjectiveCParser.DEC - 128)) | (1 << (ObjectiveCParser.ADD - 128)) | (1 << (ObjectiveCParser.SUB - 128)) | (1 << (ObjectiveCParser.MUL - 128)) | (1 << (ObjectiveCParser.DIV - 128)))) !== 0) || ((((_la - 160)) & ~0x1f) == 0 && ((1 << (_la - 160)) & ((1 << (ObjectiveCParser.BITAND - 160)) | (1 << (ObjectiveCParser.BITOR - 160)) | (1 << (ObjectiveCParser.BITXOR - 160)) | (1 << (ObjectiveCParser.MOD - 160)) | (1 << (ObjectiveCParser.ADD_ASSIGN - 160)) | (1 << (ObjectiveCParser.SUB_ASSIGN - 160)) | (1 << (ObjectiveCParser.MUL_ASSIGN - 160)) | (1 << (ObjectiveCParser.DIV_ASSIGN - 160)) | (1 << (ObjectiveCParser.AND_ASSIGN - 160)) | (1 << (ObjectiveCParser.OR_ASSIGN - 160)) | (1 << (ObjectiveCParser.XOR_ASSIGN - 160)) | (1 << (ObjectiveCParser.MOD_ASSIGN - 160)) | (1 << (ObjectiveCParser.LSHIFT_ASSIGN - 160)) | (1 << (ObjectiveCParser.RSHIFT_ASSIGN - 160)) | (1 << (ObjectiveCParser.ELIPSIS - 160)) | (1 << (ObjectiveCParser.CHARACTER_LITERAL - 160)) | (1 << (ObjectiveCParser.STRING_START - 160)) | (1 << (ObjectiveCParser.HEX_LITERAL - 160)) | (1 << (ObjectiveCParser.OCTAL_LITERAL - 160)) | (1 << (ObjectiveCParser.BINARY_LITERAL - 160)) | (1 << (ObjectiveCParser.DECIMAL_LITERAL - 160)) | (1 << (ObjectiveCParser.FLOATING_POINT_LITERAL - 160)) | (1 << (ObjectiveCParser.VERSION_SEMATIC - 160)) | (1 << (ObjectiveCParser.WS - 160)) | (1 << (ObjectiveCParser.MULTI_COMMENT - 160)) | (1 << (ObjectiveCParser.SINGLE_COMMENT - 160)) | (1 << (ObjectiveCParser.BACKSLASH - 160)) | (1 << (ObjectiveCParser.SHARP - 160)) | (1 << (ObjectiveCParser.STRING_NEWLINE - 160)) | (1 << (ObjectiveCParser.STRING_END - 160)) | (1 << (ObjectiveCParser.STRING_VALUE - 160)) | (1 << (ObjectiveCParser.DIRECTIVE_IMPORT - 160)))) !== 0) || ((((_la - 192)) & ~0x1f) == 0 && ((1 << (_la - 192)) & ((1 << (ObjectiveCParser.DIRECTIVE_INCLUDE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_PRAGMA - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_DEFINE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_DEFINED - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_IF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ELIF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ELSE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_UNDEF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_IFDEF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_IFNDEF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ENDIF - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_TRUE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_FALSE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ERROR - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_WARNING - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_BANG - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_LP - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_RP - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_EQUAL - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_NOTEQUAL - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_AND - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_OR - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_LT - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_GT - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_LE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_GE - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_ADD - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_SUB - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_MUL - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_DIV - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_BITAND - 192)) | (1 << (ObjectiveCParser.DIRECTIVE_BITOR - 192)))) !== 0) || ((((_la - 224)) & ~0x1f) == 0 && ((1 << (_la - 224)) & ((1 << (ObjectiveCParser.DIRECTIVE_BITXOR - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_MOD - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_DOT - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_STRING - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_ID - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_DECIMAL_LITERAL - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_FLOAT - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_NEWLINE - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_MULTI_COMMENT - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_SINGLE_COMMENT - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_BACKSLASH_NEWLINE - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_TEXT_NEWLINE - 224)) | (1 << (ObjectiveCParser.DIRECTIVE_TEXT - 224)))) !== 0)); + this.state = 1807; this.match(ObjectiveCParser.RP); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 1689; + this.state = 1808; localctx.op = this._input.LT(1); _la = this._input.LA(1); if(!(_la===ObjectiveCParser.INC || _la===ObjectiveCParser.DEC)) { @@ -17445,21 +18987,21 @@ ObjectiveCParser.ArgumentExpressionListContext = ArgumentExpressionListContext; ObjectiveCParser.prototype.argumentExpressionList = function() { var localctx = new ArgumentExpressionListContext(this, this._ctx, this.state); - this.enterRule(localctx, 276, ObjectiveCParser.RULE_argumentExpressionList); + this.enterRule(localctx, 280, ObjectiveCParser.RULE_argumentExpressionList); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1692; + this.state = 1811; this.argumentExpression(); - this.state = 1697; + this.state = 1816; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.COMMA) { - this.state = 1693; + this.state = 1812; this.match(ObjectiveCParser.COMMA); - this.state = 1694; + this.state = 1813; this.argumentExpression(); - this.state = 1699; + this.state = 1818; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -17522,21 +19064,21 @@ ObjectiveCParser.ArgumentExpressionContext = ArgumentExpressionContext; ObjectiveCParser.prototype.argumentExpression = function() { var localctx = new ArgumentExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 278, ObjectiveCParser.RULE_argumentExpression); + this.enterRule(localctx, 282, ObjectiveCParser.RULE_argumentExpression); try { - this.state = 1702; + this.state = 1821; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,225,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,256,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1700; + this.state = 1819; this.expression(0); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1701; + this.state = 1820; this.typeSpecifier(); break; @@ -17611,6 +19153,18 @@ OsVersionContext.prototype.VERSION_SEMATIC = function(i) { }; +OsVersionContext.prototype.IDENTIFIER = function(i) { + if(i===undefined) { + i = null; + } + if(i===null) { + return this.getTokens(ObjectiveCParser.IDENTIFIER); + } else { + return this.getToken(ObjectiveCParser.IDENTIFIER, i); + } +}; + + OsVersionContext.prototype.COMMA = function() { return this.getToken(ObjectiveCParser.COMMA, 0); }; @@ -17635,38 +19189,38 @@ ObjectiveCParser.OsVersionContext = OsVersionContext; ObjectiveCParser.prototype.osVersion = function() { var localctx = new OsVersionContext(this, this._ctx, this.state); - this.enterRule(localctx, 280, ObjectiveCParser.RULE_osVersion); + this.enterRule(localctx, 284, ObjectiveCParser.RULE_osVersion); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1704; + this.state = 1823; localctx.os = this.identifier(); - this.state = 1712; + this.state = 1831; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.LP) { - this.state = 1705; + this.state = 1824; this.match(ObjectiveCParser.LP); - this.state = 1706; + this.state = 1825; localctx.min = this._input.LT(1); _la = this._input.LA(1); - if(!(_la===ObjectiveCParser.FLOATING_POINT_LITERAL || _la===ObjectiveCParser.VERSION_SEMATIC)) { + if(!(_la===ObjectiveCParser.IDENTIFIER || _la===ObjectiveCParser.FLOATING_POINT_LITERAL || _la===ObjectiveCParser.VERSION_SEMATIC)) { localctx.min = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1709; + this.state = 1828; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.COMMA) { - this.state = 1707; + this.state = 1826; this.match(ObjectiveCParser.COMMA); - this.state = 1708; + this.state = 1827; localctx.max = this._input.LT(1); _la = this._input.LA(1); - if(!(_la===ObjectiveCParser.FLOATING_POINT_LITERAL || _la===ObjectiveCParser.VERSION_SEMATIC)) { + if(!(_la===ObjectiveCParser.IDENTIFIER || _la===ObjectiveCParser.FLOATING_POINT_LITERAL || _la===ObjectiveCParser.VERSION_SEMATIC)) { localctx.max = this._errHandler.recoverInline(this); } else { @@ -17675,7 +19229,7 @@ ObjectiveCParser.prototype.osVersion = function() { } } - this.state = 1711; + this.state = 1830; this.match(ObjectiveCParser.RP); } @@ -17786,85 +19340,85 @@ ObjectiveCParser.PrimaryExpressionContext = PrimaryExpressionContext; ObjectiveCParser.prototype.primaryExpression = function() { var localctx = new PrimaryExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 282, ObjectiveCParser.RULE_primaryExpression); + this.enterRule(localctx, 286, ObjectiveCParser.RULE_primaryExpression); try { - this.state = 1729; + this.state = 1848; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,228,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,259,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1714; + this.state = 1833; this.identifier(); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1715; + this.state = 1834; this.constant(); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 1716; + this.state = 1835; this.stringLiteral(); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 1717; + this.state = 1836; this.match(ObjectiveCParser.LP); - this.state = 1718; + this.state = 1837; this.expression(0); - this.state = 1719; + this.state = 1838; this.match(ObjectiveCParser.RP); break; case 5: this.enterOuterAlt(localctx, 5); - this.state = 1721; + this.state = 1840; this.messageExpression(); break; case 6: this.enterOuterAlt(localctx, 6); - this.state = 1722; + this.state = 1841; this.selectorExpression(); break; case 7: this.enterOuterAlt(localctx, 7); - this.state = 1723; + this.state = 1842; this.protocolExpression(); break; case 8: this.enterOuterAlt(localctx, 8); - this.state = 1724; + this.state = 1843; this.encodeExpression(); break; case 9: this.enterOuterAlt(localctx, 9); - this.state = 1725; + this.state = 1844; this.dictionaryExpression(); break; case 10: this.enterOuterAlt(localctx, 10); - this.state = 1726; + this.state = 1845; this.arrayExpression(); break; case 11: this.enterOuterAlt(localctx, 11); - this.state = 1727; + this.state = 1846; this.boxExpression(); break; case 12: this.enterOuterAlt(localctx, 12); - this.state = 1728; + this.state = 1847; this.blockExpression(); break; @@ -17976,38 +19530,38 @@ ObjectiveCParser.ConstantContext = ConstantContext; ObjectiveCParser.prototype.constant = function() { var localctx = new ConstantContext(this, this._ctx, this.state); - this.enterRule(localctx, 284, ObjectiveCParser.RULE_constant); + this.enterRule(localctx, 288, ObjectiveCParser.RULE_constant); var _la = 0; // Token type try { - this.state = 1749; + this.state = 1868; this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input,231,this._ctx); + var la_ = this._interp.adaptivePredict(this._input,262,this._ctx); switch(la_) { case 1: this.enterOuterAlt(localctx, 1); - this.state = 1731; + this.state = 1850; this.match(ObjectiveCParser.HEX_LITERAL); break; case 2: this.enterOuterAlt(localctx, 2); - this.state = 1732; + this.state = 1851; this.match(ObjectiveCParser.OCTAL_LITERAL); break; case 3: this.enterOuterAlt(localctx, 3); - this.state = 1733; + this.state = 1852; this.match(ObjectiveCParser.BINARY_LITERAL); break; case 4: this.enterOuterAlt(localctx, 4); - this.state = 1735; + this.state = 1854; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { - this.state = 1734; + this.state = 1853; _la = this._input.LA(1); if(!(_la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB)) { this._errHandler.recoverInline(this); @@ -18018,17 +19572,17 @@ ObjectiveCParser.prototype.constant = function() { } } - this.state = 1737; + this.state = 1856; this.match(ObjectiveCParser.DECIMAL_LITERAL); break; case 5: this.enterOuterAlt(localctx, 5); - this.state = 1739; + this.state = 1858; this._errHandler.sync(this); _la = this._input.LA(1); if(_la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB) { - this.state = 1738; + this.state = 1857; _la = this._input.LA(1); if(!(_la===ObjectiveCParser.ADD || _la===ObjectiveCParser.SUB)) { this._errHandler.recoverInline(this); @@ -18039,49 +19593,49 @@ ObjectiveCParser.prototype.constant = function() { } } - this.state = 1741; + this.state = 1860; this.match(ObjectiveCParser.FLOATING_POINT_LITERAL); break; case 6: this.enterOuterAlt(localctx, 6); - this.state = 1742; + this.state = 1861; this.match(ObjectiveCParser.CHARACTER_LITERAL); break; case 7: this.enterOuterAlt(localctx, 7); - this.state = 1743; + this.state = 1862; this.match(ObjectiveCParser.NIL); break; case 8: this.enterOuterAlt(localctx, 8); - this.state = 1744; + this.state = 1863; this.match(ObjectiveCParser.NULL); break; case 9: this.enterOuterAlt(localctx, 9); - this.state = 1745; + this.state = 1864; this.match(ObjectiveCParser.YES); break; case 10: this.enterOuterAlt(localctx, 10); - this.state = 1746; + this.state = 1865; this.match(ObjectiveCParser.NO); break; case 11: this.enterOuterAlt(localctx, 11); - this.state = 1747; + this.state = 1866; this.match(ObjectiveCParser.TRUE); break; case 12: this.enterOuterAlt(localctx, 12); - this.state = 1748; + this.state = 1867; this.match(ObjectiveCParser.FALSE); break; @@ -18185,23 +19739,23 @@ ObjectiveCParser.StringLiteralContext = StringLiteralContext; ObjectiveCParser.prototype.stringLiteral = function() { var localctx = new StringLiteralContext(this, this._ctx, this.state); - this.enterRule(localctx, 286, ObjectiveCParser.RULE_stringLiteral); + this.enterRule(localctx, 290, ObjectiveCParser.RULE_stringLiteral); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1759; + this.state = 1878; this._errHandler.sync(this); var _alt = 1; do { switch (_alt) { case 1: - this.state = 1751; + this.state = 1870; this.match(ObjectiveCParser.STRING_START); - this.state = 1755; + this.state = 1874; this._errHandler.sync(this); _la = this._input.LA(1); while(_la===ObjectiveCParser.STRING_NEWLINE || _la===ObjectiveCParser.STRING_VALUE) { - this.state = 1752; + this.state = 1871; _la = this._input.LA(1); if(!(_la===ObjectiveCParser.STRING_NEWLINE || _la===ObjectiveCParser.STRING_VALUE)) { this._errHandler.recoverInline(this); @@ -18210,19 +19764,19 @@ ObjectiveCParser.prototype.stringLiteral = function() { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1757; + this.state = 1876; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1758; + this.state = 1877; this.match(ObjectiveCParser.STRING_END); break; default: throw new antlr4.error.NoViableAltException(this); } - this.state = 1761; + this.state = 1880; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input,233, this._ctx); + _alt = this._interp.adaptivePredict(this._input,264, this._ctx); } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER ); } catch (re) { if(re instanceof antlr4.error.RecognitionException) { @@ -18463,13 +20017,13 @@ ObjectiveCParser.IdentifierContext = IdentifierContext; ObjectiveCParser.prototype.identifier = function() { var localctx = new IdentifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 288, ObjectiveCParser.RULE_identifier); + this.enterRule(localctx, 292, ObjectiveCParser.RULE_identifier); var _la = 0; // Token type try { this.enterOuterAlt(localctx, 1); - this.state = 1763; + this.state = 1882; _la = this._input.LA(1); - if(!(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)) | (1 << (ObjectiveCParser.STRONG - 81)) | (1 << (ObjectiveCParser.READONLY - 81)) | (1 << (ObjectiveCParser.READWRITE - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0))) { + if(!(((((_la - 40)) & ~0x1f) == 0 && ((1 << (_la - 40)) & ((1 << (ObjectiveCParser.BOOL - 40)) | (1 << (ObjectiveCParser.Class - 40)) | (1 << (ObjectiveCParser.BYCOPY - 40)) | (1 << (ObjectiveCParser.BYREF - 40)) | (1 << (ObjectiveCParser.ID - 40)) | (1 << (ObjectiveCParser.IMP - 40)) | (1 << (ObjectiveCParser.IN - 40)) | (1 << (ObjectiveCParser.INOUT - 40)) | (1 << (ObjectiveCParser.ONEWAY - 40)) | (1 << (ObjectiveCParser.OUT - 40)) | (1 << (ObjectiveCParser.PROTOCOL_ - 40)) | (1 << (ObjectiveCParser.SEL - 40)) | (1 << (ObjectiveCParser.SELF - 40)) | (1 << (ObjectiveCParser.SUPER - 40)))) !== 0) || ((((_la - 81)) & ~0x1f) == 0 && ((1 << (_la - 81)) & ((1 << (ObjectiveCParser.ATOMIC - 81)) | (1 << (ObjectiveCParser.NONATOMIC - 81)) | (1 << (ObjectiveCParser.RETAIN - 81)) | (1 << (ObjectiveCParser.AUTORELEASING_QUALIFIER - 81)) | (1 << (ObjectiveCParser.BLOCK - 81)) | (1 << (ObjectiveCParser.BRIDGE_RETAINED - 81)) | (1 << (ObjectiveCParser.BRIDGE_TRANSFER - 81)) | (1 << (ObjectiveCParser.COVARIANT - 81)) | (1 << (ObjectiveCParser.CONTRAVARIANT - 81)) | (1 << (ObjectiveCParser.DEPRECATED - 81)) | (1 << (ObjectiveCParser.KINDOF - 81)) | (1 << (ObjectiveCParser.UNUSED - 81)) | (1 << (ObjectiveCParser.NULL_UNSPECIFIED - 81)) | (1 << (ObjectiveCParser.NULLABLE - 81)) | (1 << (ObjectiveCParser.NONNULL - 81)) | (1 << (ObjectiveCParser.NULL_RESETTABLE - 81)) | (1 << (ObjectiveCParser.NS_INLINE - 81)) | (1 << (ObjectiveCParser.NS_ENUM - 81)) | (1 << (ObjectiveCParser.NS_OPTIONS - 81)) | (1 << (ObjectiveCParser.ASSIGN - 81)) | (1 << (ObjectiveCParser.COPY - 81)) | (1 << (ObjectiveCParser.GETTER - 81)) | (1 << (ObjectiveCParser.SETTER - 81)))) !== 0) || ((((_la - 113)) & ~0x1f) == 0 && ((1 << (_la - 113)) & ((1 << (ObjectiveCParser.STRONG - 113)) | (1 << (ObjectiveCParser.READONLY - 113)) | (1 << (ObjectiveCParser.READWRITE - 113)) | (1 << (ObjectiveCParser.WEAK - 113)) | (1 << (ObjectiveCParser.UNSAFE_UNRETAINED - 113)) | (1 << (ObjectiveCParser.IB_OUTLET - 113)) | (1 << (ObjectiveCParser.IB_OUTLET_COLLECTION - 113)) | (1 << (ObjectiveCParser.IB_INSPECTABLE - 113)) | (1 << (ObjectiveCParser.IB_DESIGNABLE - 113)) | (1 << (ObjectiveCParser.IDENTIFIER - 113)))) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -18493,9 +20047,9 @@ ObjectiveCParser.prototype.identifier = function() { ObjectiveCParser.prototype.sempred = function(localctx, ruleIndex, predIndex) { switch(ruleIndex) { - case 129: + case 131: return this.expression_sempred(localctx, predIndex); - case 136: + case 138: return this.postfixExpression_sempred(localctx, predIndex); default: throw "No predicate with index:" + ruleIndex; diff --git a/parser/objc/ObjectiveCParser.tokens b/parser/objc/ObjectiveCParser.tokens index f848b10..e15d691 100644 --- a/parser/objc/ObjectiveCParser.tokens +++ b/parser/objc/ObjectiveCParser.tokens @@ -103,124 +103,137 @@ NULL_RESETTABLE=102 NS_INLINE=103 NS_ENUM=104 NS_OPTIONS=105 -ASSIGN=106 -COPY=107 -GETTER=108 -SETTER=109 -STRONG=110 -READONLY=111 -READWRITE=112 -WEAK=113 -UNSAFE_UNRETAINED=114 -IB_OUTLET=115 -IB_OUTLET_COLLECTION=116 -IB_INSPECTABLE=117 -IB_DESIGNABLE=118 -NS_ASSUME_NONNULL_BEGIN=119 -NS_ASSUME_NONNULL_END=120 -EXTERN_SUFFIX=121 -IOS_SUFFIX=122 -MAC_SUFFIX=123 -TVOS_PROHIBITED=124 -IDENTIFIER=125 -LP=126 -RP=127 -LBRACE=128 -RBRACE=129 -LBRACK=130 -RBRACK=131 -SEMI=132 -COMMA=133 -DOT=134 -STRUCTACCESS=135 -AT=136 -ASSIGNMENT=137 -GT=138 -LT=139 -BANG=140 -TILDE=141 -QUESTION=142 -COLON=143 -EQUAL=144 -LE=145 -GE=146 -NOTEQUAL=147 -AND=148 -OR=149 -INC=150 -DEC=151 -ADD=152 -SUB=153 -MUL=154 -DIV=155 -BITAND=156 -BITOR=157 -BITXOR=158 -MOD=159 -ADD_ASSIGN=160 -SUB_ASSIGN=161 -MUL_ASSIGN=162 -DIV_ASSIGN=163 -AND_ASSIGN=164 -OR_ASSIGN=165 -XOR_ASSIGN=166 -MOD_ASSIGN=167 -LSHIFT_ASSIGN=168 -RSHIFT_ASSIGN=169 -ELIPSIS=170 -CHARACTER_LITERAL=171 -STRING_START=172 -HEX_LITERAL=173 -OCTAL_LITERAL=174 -BINARY_LITERAL=175 -DECIMAL_LITERAL=176 -FLOATING_POINT_LITERAL=177 -VERSION_SEMATIC=178 -WS=179 -MULTI_COMMENT=180 -SINGLE_COMMENT=181 -BACKSLASH=182 -SHARP=183 -STRING_NEWLINE=184 -STRING_END=185 -STRING_VALUE=186 -DIRECTIVE_IMPORT=187 -DIRECTIVE_INCLUDE=188 -DIRECTIVE_PRAGMA=189 -DIRECTIVE_DEFINE=190 -DIRECTIVE_DEFINED=191 -DIRECTIVE_IF=192 -DIRECTIVE_ELIF=193 -DIRECTIVE_ELSE=194 -DIRECTIVE_UNDEF=195 -DIRECTIVE_IFDEF=196 -DIRECTIVE_IFNDEF=197 -DIRECTIVE_ENDIF=198 -DIRECTIVE_TRUE=199 -DIRECTIVE_FALSE=200 -DIRECTIVE_ERROR=201 -DIRECTIVE_WARNING=202 -DIRECTIVE_BANG=203 -DIRECTIVE_LP=204 -DIRECTIVE_RP=205 -DIRECTIVE_EQUAL=206 -DIRECTIVE_NOTEQUAL=207 -DIRECTIVE_AND=208 -DIRECTIVE_OR=209 -DIRECTIVE_LT=210 -DIRECTIVE_GT=211 -DIRECTIVE_LE=212 -DIRECTIVE_GE=213 -DIRECTIVE_STRING=214 -DIRECTIVE_ID=215 -DIRECTIVE_DECIMAL_LITERAL=216 -DIRECTIVE_FLOAT=217 -DIRECTIVE_NEWLINE=218 -DIRECTIVE_MULTI_COMMENT=219 -DIRECTIVE_SINGLE_COMMENT=220 -DIRECTIVE_BACKSLASH_NEWLINE=221 -DIRECTIVE_TEXT_NEWLINE=222 -DIRECTIVE_TEXT=223 +NS_CLOSED_ENUM=106 +NS_TYPED_EXTENSIBLE_ENUM=107 +NS_ERROR_ENUM=108 +ASSIGN=109 +COPY=110 +GETTER=111 +SETTER=112 +STRONG=113 +READONLY=114 +READWRITE=115 +WEAK=116 +UNSAFE_UNRETAINED=117 +IB_OUTLET=118 +IB_OUTLET_COLLECTION=119 +IB_INSPECTABLE=120 +IB_DESIGNABLE=121 +NS_ASSUME_NONNULL_BEGIN=122 +NS_ASSUME_NONNULL_END=123 +EXTERN_SUFFIX=124 +IOS_SUFFIX=125 +MAC_SUFFIX=126 +TVOS_PROHIBITED=127 +NS_NOESCAPE=128 +IDENTIFIER=129 +LP=130 +RP=131 +LBRACE=132 +RBRACE=133 +LBRACK=134 +RBRACK=135 +SEMI=136 +COMMA=137 +DOT=138 +STRUCTACCESS=139 +AT=140 +ASSIGNMENT=141 +GT=142 +LT=143 +BANG=144 +TILDE=145 +QUESTION=146 +COLON=147 +EQUAL=148 +LE=149 +GE=150 +NOTEQUAL=151 +AND=152 +OR=153 +INC=154 +DEC=155 +ADD=156 +SUB=157 +MUL=158 +DIV=159 +BITAND=160 +BITOR=161 +BITXOR=162 +MOD=163 +ADD_ASSIGN=164 +SUB_ASSIGN=165 +MUL_ASSIGN=166 +DIV_ASSIGN=167 +AND_ASSIGN=168 +OR_ASSIGN=169 +XOR_ASSIGN=170 +MOD_ASSIGN=171 +LSHIFT_ASSIGN=172 +RSHIFT_ASSIGN=173 +ELIPSIS=174 +CHARACTER_LITERAL=175 +STRING_START=176 +HEX_LITERAL=177 +OCTAL_LITERAL=178 +BINARY_LITERAL=179 +DECIMAL_LITERAL=180 +FLOATING_POINT_LITERAL=181 +VERSION_SEMATIC=182 +WS=183 +MULTI_COMMENT=184 +SINGLE_COMMENT=185 +BACKSLASH=186 +SHARP=187 +STRING_NEWLINE=188 +STRING_END=189 +STRING_VALUE=190 +DIRECTIVE_IMPORT=191 +DIRECTIVE_INCLUDE=192 +DIRECTIVE_PRAGMA=193 +DIRECTIVE_DEFINE=194 +DIRECTIVE_DEFINED=195 +DIRECTIVE_IF=196 +DIRECTIVE_ELIF=197 +DIRECTIVE_ELSE=198 +DIRECTIVE_UNDEF=199 +DIRECTIVE_IFDEF=200 +DIRECTIVE_IFNDEF=201 +DIRECTIVE_ENDIF=202 +DIRECTIVE_TRUE=203 +DIRECTIVE_FALSE=204 +DIRECTIVE_ERROR=205 +DIRECTIVE_WARNING=206 +DIRECTIVE_BANG=207 +DIRECTIVE_LP=208 +DIRECTIVE_RP=209 +DIRECTIVE_EQUAL=210 +DIRECTIVE_NOTEQUAL=211 +DIRECTIVE_AND=212 +DIRECTIVE_OR=213 +DIRECTIVE_LT=214 +DIRECTIVE_GT=215 +DIRECTIVE_LE=216 +DIRECTIVE_GE=217 +DIRECTIVE_ADD=218 +DIRECTIVE_SUB=219 +DIRECTIVE_MUL=220 +DIRECTIVE_DIV=221 +DIRECTIVE_BITAND=222 +DIRECTIVE_BITOR=223 +DIRECTIVE_BITXOR=224 +DIRECTIVE_MOD=225 +DIRECTIVE_DOT=226 +DIRECTIVE_STRING=227 +DIRECTIVE_ID=228 +DIRECTIVE_DECIMAL_LITERAL=229 +DIRECTIVE_FLOAT=230 +DIRECTIVE_NEWLINE=231 +DIRECTIVE_MULTI_COMMENT=232 +DIRECTIVE_SINGLE_COMMENT=233 +DIRECTIVE_BACKSLASH_NEWLINE=234 +DIRECTIVE_TEXT_NEWLINE=235 +DIRECTIVE_TEXT=236 'auto'=1 'break'=2 'case'=3 @@ -319,58 +332,53 @@ DIRECTIVE_TEXT=223 'NS_INLINE'=103 'NS_ENUM'=104 'NS_OPTIONS'=105 -'assign'=106 -'copy'=107 -'getter'=108 -'setter'=109 -'strong'=110 -'readonly'=111 -'readwrite'=112 -'weak'=113 -'unsafe_unretained'=114 -'IBOutlet'=115 -'IBOutletCollection'=116 -'IBInspectable'=117 -'IB_DESIGNABLE'=118 -'__TVOS_PROHIBITED'=124 -'{'=128 -'}'=129 -'['=130 -']'=131 -';'=132 -','=133 -'.'=134 -'->'=135 -'@'=136 -'='=137 -'~'=141 -'?'=142 -':'=143 -'++'=150 -'--'=151 -'+'=152 -'-'=153 -'*'=154 -'/'=155 -'&'=156 -'|'=157 -'^'=158 -'%'=159 -'+='=160 -'-='=161 -'*='=162 -'/='=163 -'&='=164 -'|='=165 -'^='=166 -'%='=167 -'<<='=168 -'>>='=169 -'...'=170 -'\\'=182 -'defined'=191 -'elif'=193 -'undef'=195 -'ifdef'=196 -'ifndef'=197 -'endif'=198 +'NS_CLOSED_ENUM'=106 +'NS_TYPED_EXTENSIBLE_ENUM'=107 +'NS_ERROR_ENUM'=108 +'assign'=109 +'copy'=110 +'getter'=111 +'setter'=112 +'strong'=113 +'readonly'=114 +'readwrite'=115 +'weak'=116 +'unsafe_unretained'=117 +'IBOutlet'=118 +'IBOutletCollection'=119 +'IBInspectable'=120 +'IB_DESIGNABLE'=121 +'__TVOS_PROHIBITED'=127 +'NS_NOESCAPE'=128 +'{'=132 +'}'=133 +'['=134 +']'=135 +';'=136 +','=137 +'->'=139 +'@'=140 +'='=141 +'~'=145 +'?'=146 +':'=147 +'++'=154 +'--'=155 +'+='=164 +'-='=165 +'*='=166 +'/='=167 +'&='=168 +'|='=169 +'^='=170 +'%='=171 +'<<='=172 +'>>='=173 +'...'=174 +'\\'=186 +'defined'=195 +'elif'=197 +'undef'=199 +'ifdef'=200 +'ifndef'=201 +'endif'=202 diff --git a/parser/objc/ObjectiveCParserListener.js b/parser/objc/ObjectiveCParserListener.js index 4915b7e..1fa9fc5 100644 --- a/parser/objc/ObjectiveCParserListener.js +++ b/parser/objc/ObjectiveCParserListener.js @@ -110,6 +110,15 @@ ObjectiveCParserListener.prototype.exitProtocolDeclarationList = function(ctx) { }; +// Enter a parse tree produced by ObjectiveCParser#classDeclaration. +ObjectiveCParserListener.prototype.enterClassDeclaration = function(ctx) { +}; + +// Exit a parse tree produced by ObjectiveCParser#classDeclaration. +ObjectiveCParserListener.prototype.exitClassDeclaration = function(ctx) { +}; + + // Enter a parse tree produced by ObjectiveCParser#classDeclarationList. ObjectiveCParserListener.prototype.enterClassDeclarationList = function(ctx) { }; @@ -578,6 +587,15 @@ ObjectiveCParserListener.prototype.exitFunctionSignature = function(ctx) { }; +// Enter a parse tree produced by ObjectiveCParser#functionPointer. +ObjectiveCParserListener.prototype.enterFunctionPointer = function(ctx) { +}; + +// Exit a parse tree produced by ObjectiveCParser#functionPointer. +ObjectiveCParserListener.prototype.exitFunctionPointer = function(ctx) { +}; + + // Enter a parse tree produced by ObjectiveCParser#attribute. ObjectiveCParserListener.prototype.enterAttribute = function(ctx) { }; diff --git a/test/objc/BoxPhoto.h b/test/objc/BoxPhoto.h index 48b3391..26d4134 100644 --- a/test/objc/BoxPhoto.h +++ b/test/objc/BoxPhoto.h @@ -25,7 +25,7 @@ typedef enum aaaa : NSUInteger { API_UNAVAILABLE(ios) typedef NS_OPTIONS(NSInteger, BoxPermissions) { - BoxPermissionUnknown = 0 API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos), + BoxPermissionUnknown API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos) = 0, BoxPermissionDelete = 1, BoxPermissionDownload = 2, BoxPermissionInvite = 4, @@ -35,6 +35,12 @@ typedef NS_OPTIONS(NSInteger, BoxPermissions) BoxPermissionUpload = 64 } API_UNAVAILABLE(tvos); +NS_ENUM(NSUInteger) { + MyEnumValueA API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos) = 0, + MyEnumValueB, + MyEnumValueC, +}; + API_AVAILABLE(ios(6.0)) @interface BoxPhoto : ProviderFilePhoto {