diff --git a/.gitignore b/.gitignore index 59e74bf2..0f11938b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,60 +1,62 @@ -# Compiled Object files -*.slo -*.lo -*.o -*.obj -*.x -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app -/build/ -/plugins/ -/.cproject -/.project -/.settings/ -**/*.jar -**/.ptp* -*.ab -/dist/ -/*egg*/ -/python/*egg* -/*tmp*/ -/wheelhouse/ -**/.ipynb_checkpoints -compile_commands.json -/docs/doxygen/html** -**/*.dat -**/.antlr -__pycache__/ -# IDE files -.vscode/* -.theia/* - -# LLVM files -*.ll -*.bc - -# Build results -[Bb]in/ -[Oo]bj/ -*.bson +# Compiled Object files +*.slo +*.lo +*.o +*.obj +*.x +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +/build/ +/cmake-build-debug +.idea +/plugins/ +/.cproject +/.project +/.settings/ +**/*.jar +**/.ptp* +*.ab +/dist/ +/*egg*/ +/python/*egg* +/*tmp*/ +/wheelhouse/ +**/.ipynb_checkpoints +compile_commands.json +/docs/doxygen/html** +**/*.dat +**/.antlr +__pycache__/ +# IDE files +.vscode/* +.theia/* + +# LLVM files +*.ll +*.bc + +# Build results +[Bb]in/ +[Oo]bj/ +*.bson diff --git a/mlir/parsers/qasm3/antlr/generated/qasm3.interp b/mlir/parsers/qasm3/antlr/generated/qasm3.interp index 898866b6..fab73247 100644 --- a/mlir/parsers/qasm3/antlr/generated/qasm3.interp +++ b/mlir/parsers/qasm3/antlr/generated/qasm3.interp @@ -1,357 +1,357 @@ -token literal names: -null -'OPENQASM' -'include' -'compute' -'action' -'QCOR_EXPECT_TRUE' -'qubit' -'qreg' -'bit' -'creg' -'int' -'uint' -'float' -'angle' -'fixed' -'bool' -'int64_t' -'double' -'const' -'let' -'||' -'gate' -'CX' -'U' -'gphase' -'measure' -'barrier' -'inv' -'pow' -'ctrl' -'@' -'reset' -'~' -'!' -'>' -'<' -'>=' -'<=' -'==' -'!=' -'&&' -'|' -'^' -'&' -'<<' -'>>' -'+' -'*' -'/' -'%' -'++' -'--' -'sin' -'cos' -'tan' -'arctan' -'arccos' -'arcsin' -'exp' -'ln' -'sqrt' -'rotl' -'rotr' -'popcount' -'lengthof' -'+=' -'-=' -'*=' -'/=' -'&=' -'|=' -'~=' -'^=' -'<<=' -'>>=' -'in' -'if' -'else' -'for' -'while' -'range' -'break' -'continue' -'end' -'kernel' -'def' -'return' -'#pragma' -'length' -'stretch' -'boxas' -'boxto' -'stretchinf' -'delay' -'rotary' -'defcalgrammar' -'defcal' -'"openpulse"' -'[' -']' -'{' -'}' -'(' -')' -':' -';' -'.' -',' -'=' -'->' -'-' -'extern' -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -LBRACKET -RBRACKET -LBRACE -RBRACE -LPAREN -RPAREN -COLON -SEMICOLON -DOT -COMMA -EQUALS -ARROW -MINUS -EXTERN -Constant -Whitespace -Newline -Integer -Identifier -RealNumber -TimingLiteral -StringLiteral -LineComment -BlockComment - -rule names: -program -header -version -include -globalStatement -statement -compute_action_stmt -qcor_test_statement -quantumDeclarationStatement -classicalDeclarationStatement -classicalAssignment -assignmentStatement -returnSignature -designator -doubleDesignator -identifierList -association -quantumType -quantumDeclaration -quantumArgument -quantumArgumentList -bitType -singleDesignatorType -doubleDesignatorType -noDesignatorType -classicalType -constantDeclaration -singleDesignatorDeclaration -doubleDesignatorDeclaration -noDesignatorDeclaration -bitDeclaration -classicalDeclaration -classicalTypeList -classicalArgument -classicalArgumentList -aliasStatement -indexIdentifier -indexIdentifierList -indexEqualsAssignmentList -rangeDefinition -quantumGateDefinition -quantumGateSignature -quantumBlock -quantumLoop -quantumLoopBlock -quantumStatement -quantumInstruction -quantumPhase -quantumMeasurement -quantumMeasurementAssignment -quantumBarrier -quantumGateModifier -quantumGateCall -quantumGateName -unaryOperator -relationalOperator -logicalOperator -expressionStatement -expression -xOrExpression -bitAndExpression -bitShiftExpression -additiveExpression -multiplicativeExpression -unaryExpression -expressionTerminator -incrementor -builtInCall -builtInMath -castOperator -expressionList -booleanExpression -comparsionExpression -equalsExpression -assignmentOperator -equalsAssignmentList -membershipTest -setDeclaration -programBlock -branchingStatement -loopSignature -loopStatement -cLikeLoopStatement -controlDirectiveStatement -controlDirective -kernelDeclaration -kernelCall -subroutineDefinition -returnStatement -subroutineBlock -subroutineCall -pragma -timingType -timingBox -timingTerminator -timingIdentifier -timingInstructionName -timingInstruction -timingStatement -calibration -calibrationGrammarDeclaration -calibrationDefinition -calibrationGrammar -calibrationArgumentList - - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 123, 1000, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 3, 2, 3, 2, 3, 2, 7, 2, 214, 10, 2, 12, 2, 14, 2, 217, 11, 2, 3, 3, 5, 3, 220, 10, 3, 3, 3, 7, 3, 223, 10, 3, 12, 3, 14, 3, 226, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 242, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 255, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 5, 11, 273, 10, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 281, 10, 12, 3, 13, 3, 13, 5, 13, 285, 10, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 7, 17, 304, 10, 17, 12, 17, 14, 17, 307, 11, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 321, 10, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 7, 22, 328, 10, 22, 12, 22, 14, 22, 331, 11, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 347, 10, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 358, 10, 27, 5, 27, 360, 10, 27, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 369, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 375, 10, 30, 3, 31, 3, 31, 3, 31, 5, 31, 380, 10, 31, 3, 32, 3, 32, 3, 32, 5, 32, 385, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 391, 10, 33, 3, 34, 3, 34, 3, 34, 7, 34, 396, 10, 34, 12, 34, 14, 34, 399, 11, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 7, 36, 409, 10, 36, 12, 36, 14, 36, 412, 11, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 430, 10, 38, 5, 38, 432, 10, 38, 3, 38, 3, 38, 3, 38, 7, 38, 437, 10, 38, 12, 38, 14, 38, 440, 11, 38, 3, 39, 3, 39, 3, 39, 7, 39, 445, 10, 39, 12, 39, 14, 39, 448, 11, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 456, 10, 40, 12, 40, 14, 40, 459, 11, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 5, 41, 466, 10, 41, 3, 41, 3, 41, 5, 41, 470, 10, 41, 3, 41, 3, 41, 5, 41, 474, 10, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 5, 43, 485, 10, 43, 3, 43, 5, 43, 488, 10, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 496, 10, 44, 12, 44, 14, 44, 499, 11, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 7, 46, 509, 10, 46, 12, 46, 14, 46, 512, 11, 46, 3, 46, 5, 46, 515, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 521, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 527, 10, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 5, 51, 540, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 546, 10, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 558, 10, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 5, 54, 565, 10, 54, 3, 54, 5, 54, 568, 10, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 579, 10, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 594, 10, 60, 3, 60, 3, 60, 3, 60, 7, 60, 599, 10, 60, 12, 60, 14, 60, 602, 11, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 7, 61, 610, 10, 61, 12, 61, 14, 61, 613, 11, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 7, 62, 621, 10, 62, 12, 62, 14, 62, 624, 11, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 632, 10, 63, 12, 63, 14, 63, 635, 11, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 643, 10, 64, 12, 64, 14, 64, 646, 11, 64, 3, 65, 3, 65, 3, 65, 5, 65, 651, 10, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 657, 10, 65, 7, 65, 659, 10, 65, 12, 65, 14, 65, 662, 11, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, 683, 10, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 7, 67, 692, 10, 67, 12, 67, 14, 67, 695, 11, 67, 3, 68, 3, 68, 3, 69, 3, 69, 5, 69, 701, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 7, 72, 714, 10, 72, 12, 72, 14, 72, 717, 11, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 5, 73, 724, 10, 73, 3, 73, 3, 73, 3, 73, 3, 73, 7, 73, 730, 10, 73, 12, 73, 14, 73, 733, 11, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 740, 10, 74, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 7, 77, 751, 10, 77, 12, 77, 14, 77, 754, 11, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 5, 79, 769, 10, 79, 3, 80, 3, 80, 3, 80, 7, 80, 774, 10, 80, 12, 80, 14, 80, 777, 11, 80, 3, 80, 5, 80, 780, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 789, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 798, 10, 82, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 831, 10, 84, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 5, 87, 842, 10, 87, 3, 87, 5, 87, 845, 10, 87, 3, 87, 5, 87, 848, 10, 87, 3, 87, 5, 87, 851, 10, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 5, 88, 858, 10, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 866, 10, 89, 3, 89, 5, 89, 869, 10, 89, 3, 89, 5, 89, 872, 10, 89, 3, 89, 5, 89, 875, 10, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 7, 91, 884, 10, 91, 12, 91, 14, 91, 887, 11, 91, 3, 91, 5, 91, 890, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 895, 10, 91, 3, 92, 3, 92, 3, 92, 5, 92, 900, 10, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 7, 93, 909, 10, 93, 12, 93, 14, 93, 912, 11, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 5, 94, 919, 10, 94, 5, 94, 921, 10, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 5, 95, 929, 10, 95, 3, 96, 3, 96, 5, 96, 933, 10, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 940, 10, 97, 3, 97, 5, 97, 943, 10, 97, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 5, 99, 950, 10, 99, 3, 99, 5, 99, 953, 10, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 962, 10, 100, 3, 101, 3, 101, 5, 101, 966, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 976, 10, 103, 3, 103, 5, 103, 979, 10, 103, 3, 103, 3, 103, 5, 103, 983, 10, 103, 3, 103, 3, 103, 7, 103, 987, 10, 103, 12, 103, 14, 103, 990, 11, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 5, 105, 998, 10, 105, 3, 105, 3, 988, 11, 74, 118, 120, 122, 124, 126, 128, 132, 144, 106, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 2, 19, 4, 2, 117, 117, 119, 119, 3, 2, 8, 9, 3, 2, 10, 11, 3, 2, 12, 15, 4, 2, 24, 25, 118, 118, 3, 2, 34, 35, 3, 2, 36, 41, 4, 2, 22, 22, 42, 42, 3, 2, 46, 47, 4, 2, 48, 48, 112, 112, 3, 2, 49, 51, 3, 2, 52, 53, 3, 2, 54, 66, 4, 2, 67, 76, 110, 110, 3, 2, 83, 85, 3, 2, 95, 96, 4, 2, 99, 99, 121, 121, 2, 1031, 2, 210, 3, 2, 2, 2, 4, 219, 3, 2, 2, 2, 6, 227, 3, 2, 2, 2, 8, 231, 3, 2, 2, 2, 10, 241, 3, 2, 2, 2, 12, 254, 3, 2, 2, 2, 14, 256, 3, 2, 2, 2, 16, 261, 3, 2, 2, 2, 18, 267, 3, 2, 2, 2, 20, 272, 3, 2, 2, 2, 22, 276, 3, 2, 2, 2, 24, 284, 3, 2, 2, 2, 26, 288, 3, 2, 2, 2, 28, 291, 3, 2, 2, 2, 30, 295, 3, 2, 2, 2, 32, 305, 3, 2, 2, 2, 34, 310, 3, 2, 2, 2, 36, 313, 3, 2, 2, 2, 38, 315, 3, 2, 2, 2, 40, 318, 3, 2, 2, 2, 42, 329, 3, 2, 2, 2, 44, 334, 3, 2, 2, 2, 46, 336, 3, 2, 2, 2, 48, 338, 3, 2, 2, 2, 50, 346, 3, 2, 2, 2, 52, 359, 3, 2, 2, 2, 54, 361, 3, 2, 2, 2, 56, 364, 3, 2, 2, 2, 58, 370, 3, 2, 2, 2, 60, 376, 3, 2, 2, 2, 62, 381, 3, 2, 2, 2, 64, 390, 3, 2, 2, 2, 66, 397, 3, 2, 2, 2, 68, 402, 3, 2, 2, 2, 70, 410, 3, 2, 2, 2, 72, 415, 3, 2, 2, 2, 74, 431, 3, 2, 2, 2, 76, 446, 3, 2, 2, 2, 78, 457, 3, 2, 2, 2, 80, 463, 3, 2, 2, 2, 82, 477, 3, 2, 2, 2, 84, 481, 3, 2, 2, 2, 86, 491, 3, 2, 2, 2, 88, 502, 3, 2, 2, 2, 90, 514, 3, 2, 2, 2, 92, 520, 3, 2, 2, 2, 94, 526, 3, 2, 2, 2, 96, 528, 3, 2, 2, 2, 98, 533, 3, 2, 2, 2, 100, 545, 3, 2, 2, 2, 102, 547, 3, 2, 2, 2, 104, 557, 3, 2, 2, 2, 106, 561, 3, 2, 2, 2, 108, 578, 3, 2, 2, 2, 110, 580, 3, 2, 2, 2, 112, 582, 3, 2, 2, 2, 114, 584, 3, 2, 2, 2, 116, 586, 3, 2, 2, 2, 118, 593, 3, 2, 2, 2, 120, 603, 3, 2, 2, 2, 122, 614, 3, 2, 2, 2, 124, 625, 3, 2, 2, 2, 126, 636, 3, 2, 2, 2, 128, 650, 3, 2, 2, 2, 130, 663, 3, 2, 2, 2, 132, 682, 3, 2, 2, 2, 134, 696, 3, 2, 2, 2, 136, 700, 3, 2, 2, 2, 138, 706, 3, 2, 2, 2, 140, 708, 3, 2, 2, 2, 142, 715, 3, 2, 2, 2, 144, 723, 3, 2, 2, 2, 146, 739, 3, 2, 2, 2, 148, 741, 3, 2, 2, 2, 150, 744, 3, 2, 2, 2, 152, 752, 3, 2, 2, 2, 154, 758, 3, 2, 2, 2, 156, 768, 3, 2, 2, 2, 158, 779, 3, 2, 2, 2, 160, 781, 3, 2, 2, 2, 162, 797, 3, 2, 2, 2, 164, 799, 3, 2, 2, 2, 166, 830, 3, 2, 2, 2, 168, 832, 3, 2, 2, 2, 170, 835, 3, 2, 2, 2, 172, 837, 3, 2, 2, 2, 174, 854, 3, 2, 2, 2, 176, 861, 3, 2, 2, 2, 178, 878, 3, 2, 2, 2, 180, 894, 3, 2, 2, 2, 182, 896, 3, 2, 2, 2, 184, 905, 3, 2, 2, 2, 186, 920, 3, 2, 2, 2, 188, 928, 3, 2, 2, 2, 190, 932, 3, 2, 2, 2, 192, 942, 3, 2, 2, 2, 194, 944, 3, 2, 2, 2, 196, 946, 3, 2, 2, 2, 198, 961, 3, 2, 2, 2, 200, 965, 3, 2, 2, 2, 202, 967, 3, 2, 2, 2, 204, 971, 3, 2, 2, 2, 206, 993, 3, 2, 2, 2, 208, 997, 3, 2, 2, 2, 210, 215, 5, 4, 3, 2, 211, 214, 5, 10, 6, 2, 212, 214, 5, 12, 7, 2, 213, 211, 3, 2, 2, 2, 213, 212, 3, 2, 2, 2, 214, 217, 3, 2, 2, 2, 215, 213, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 3, 3, 2, 2, 2, 217, 215, 3, 2, 2, 2, 218, 220, 5, 6, 4, 2, 219, 218, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 224, 3, 2, 2, 2, 221, 223, 5, 8, 5, 2, 222, 221, 3, 2, 2, 2, 223, 226, 3, 2, 2, 2, 224, 222, 3, 2, 2, 2, 224, 225, 3, 2, 2, 2, 225, 5, 3, 2, 2, 2, 226, 224, 3, 2, 2, 2, 227, 228, 7, 3, 2, 2, 228, 229, 9, 2, 2, 2, 229, 230, 7, 107, 2, 2, 230, 7, 3, 2, 2, 2, 231, 232, 7, 4, 2, 2, 232, 233, 7, 121, 2, 2, 233, 234, 7, 107, 2, 2, 234, 9, 3, 2, 2, 2, 235, 242, 5, 176, 89, 2, 236, 242, 5, 172, 87, 2, 237, 242, 5, 82, 42, 2, 238, 242, 5, 200, 101, 2, 239, 242, 5, 18, 10, 2, 240, 242, 5, 184, 93, 2, 241, 235, 3, 2, 2, 2, 241, 236, 3, 2, 2, 2, 241, 237, 3, 2, 2, 2, 241, 238, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 241, 240, 3, 2, 2, 2, 242, 11, 3, 2, 2, 2, 243, 255, 5, 116, 59, 2, 244, 255, 5, 24, 13, 2, 245, 255, 5, 20, 11, 2, 246, 255, 5, 160, 81, 2, 247, 255, 5, 164, 83, 2, 248, 255, 5, 168, 85, 2, 249, 255, 5, 72, 37, 2, 250, 255, 5, 92, 47, 2, 251, 255, 5, 178, 90, 2, 252, 255, 5, 16, 9, 2, 253, 255, 5, 14, 8, 2, 254, 243, 3, 2, 2, 2, 254, 244, 3, 2, 2, 2, 254, 245, 3, 2, 2, 2, 254, 246, 3, 2, 2, 2, 254, 247, 3, 2, 2, 2, 254, 248, 3, 2, 2, 2, 254, 249, 3, 2, 2, 2, 254, 250, 3, 2, 2, 2, 254, 251, 3, 2, 2, 2, 254, 252, 3, 2, 2, 2, 254, 253, 3, 2, 2, 2, 255, 13, 3, 2, 2, 2, 256, 257, 7, 5, 2, 2, 257, 258, 5, 158, 80, 2, 258, 259, 7, 6, 2, 2, 259, 260, 5, 158, 80, 2, 260, 15, 3, 2, 2, 2, 261, 262, 7, 7, 2, 2, 262, 263, 7, 104, 2, 2, 263, 264, 5, 144, 73, 2, 264, 265, 7, 105, 2, 2, 265, 266, 7, 107, 2, 2, 266, 17, 3, 2, 2, 2, 267, 268, 5, 38, 20, 2, 268, 269, 7, 107, 2, 2, 269, 19, 3, 2, 2, 2, 270, 273, 5, 64, 33, 2, 271, 273, 5, 54, 28, 2, 272, 270, 3, 2, 2, 2, 272, 271, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 275, 7, 107, 2, 2, 275, 21, 3, 2, 2, 2, 276, 277, 5, 74, 38, 2, 277, 280, 5, 150, 76, 2, 278, 281, 5, 118, 60, 2, 279, 281, 5, 74, 38, 2, 280, 278, 3, 2, 2, 2, 280, 279, 3, 2, 2, 2, 281, 23, 3, 2, 2, 2, 282, 285, 5, 22, 12, 2, 283, 285, 5, 100, 51, 2, 284, 282, 3, 2, 2, 2, 284, 283, 3, 2, 2, 2, 285, 286, 3, 2, 2, 2, 286, 287, 7, 107, 2, 2, 287, 25, 3, 2, 2, 2, 288, 289, 7, 111, 2, 2, 289, 290, 5, 52, 27, 2, 290, 27, 3, 2, 2, 2, 291, 292, 7, 100, 2, 2, 292, 293, 5, 118, 60, 2, 293, 294, 7, 101, 2, 2, 294, 29, 3, 2, 2, 2, 295, 296, 7, 100, 2, 2, 296, 297, 5, 118, 60, 2, 297, 298, 7, 109, 2, 2, 298, 299, 5, 118, 60, 2, 299, 300, 7, 101, 2, 2, 300, 31, 3, 2, 2, 2, 301, 302, 7, 118, 2, 2, 302, 304, 7, 109, 2, 2, 303, 301, 3, 2, 2, 2, 304, 307, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 308, 3, 2, 2, 2, 307, 305, 3, 2, 2, 2, 308, 309, 7, 118, 2, 2, 309, 33, 3, 2, 2, 2, 310, 311, 7, 106, 2, 2, 311, 312, 7, 118, 2, 2, 312, 35, 3, 2, 2, 2, 313, 314, 9, 3, 2, 2, 314, 37, 3, 2, 2, 2, 315, 316, 5, 36, 19, 2, 316, 317, 5, 76, 39, 2, 317, 39, 3, 2, 2, 2, 318, 320, 5, 36, 19, 2, 319, 321, 5, 28, 15, 2, 320, 319, 3, 2, 2, 2, 320, 321, 3, 2, 2, 2, 321, 322, 3, 2, 2, 2, 322, 323, 5, 34, 18, 2, 323, 41, 3, 2, 2, 2, 324, 325, 5, 40, 21, 2, 325, 326, 7, 109, 2, 2, 326, 328, 3, 2, 2, 2, 327, 324, 3, 2, 2, 2, 328, 331, 3, 2, 2, 2, 329, 327, 3, 2, 2, 2, 329, 330, 3, 2, 2, 2, 330, 332, 3, 2, 2, 2, 331, 329, 3, 2, 2, 2, 332, 333, 5, 40, 21, 2, 333, 43, 3, 2, 2, 2, 334, 335, 9, 4, 2, 2, 335, 45, 3, 2, 2, 2, 336, 337, 9, 5, 2, 2, 337, 47, 3, 2, 2, 2, 338, 339, 7, 16, 2, 2, 339, 49, 3, 2, 2, 2, 340, 347, 7, 17, 2, 2, 341, 347, 5, 186, 94, 2, 342, 347, 7, 12, 2, 2, 343, 347, 7, 18, 2, 2, 344, 347, 7, 14, 2, 2, 345, 347, 7, 19, 2, 2, 346, 340, 3, 2, 2, 2, 346, 341, 3, 2, 2, 2, 346, 342, 3, 2, 2, 2, 346, 343, 3, 2, 2, 2, 346, 344, 3, 2, 2, 2, 346, 345, 3, 2, 2, 2, 347, 51, 3, 2, 2, 2, 348, 349, 5, 46, 24, 2, 349, 350, 5, 28, 15, 2, 350, 360, 3, 2, 2, 2, 351, 352, 5, 48, 25, 2, 352, 353, 5, 30, 16, 2, 353, 360, 3, 2, 2, 2, 354, 360, 5, 50, 26, 2, 355, 357, 5, 44, 23, 2, 356, 358, 5, 28, 15, 2, 357, 356, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 360, 3, 2, 2, 2, 359, 348, 3, 2, 2, 2, 359, 351, 3, 2, 2, 2, 359, 354, 3, 2, 2, 2, 359, 355, 3, 2, 2, 2, 360, 53, 3, 2, 2, 2, 361, 362, 7, 20, 2, 2, 362, 363, 5, 152, 77, 2, 363, 55, 3, 2, 2, 2, 364, 365, 5, 46, 24, 2, 365, 368, 5, 28, 15, 2, 366, 369, 5, 32, 17, 2, 367, 369, 5, 152, 77, 2, 368, 366, 3, 2, 2, 2, 368, 367, 3, 2, 2, 2, 369, 57, 3, 2, 2, 2, 370, 371, 5, 48, 25, 2, 371, 374, 5, 30, 16, 2, 372, 375, 5, 32, 17, 2, 373, 375, 5, 152, 77, 2, 374, 372, 3, 2, 2, 2, 374, 373, 3, 2, 2, 2, 375, 59, 3, 2, 2, 2, 376, 379, 5, 50, 26, 2, 377, 380, 5, 32, 17, 2, 378, 380, 5, 152, 77, 2, 379, 377, 3, 2, 2, 2, 379, 378, 3, 2, 2, 2, 380, 61, 3, 2, 2, 2, 381, 384, 5, 44, 23, 2, 382, 385, 5, 76, 39, 2, 383, 385, 5, 78, 40, 2, 384, 382, 3, 2, 2, 2, 384, 383, 3, 2, 2, 2, 385, 63, 3, 2, 2, 2, 386, 391, 5, 56, 29, 2, 387, 391, 5, 58, 30, 2, 388, 391, 5, 60, 31, 2, 389, 391, 5, 62, 32, 2, 390, 386, 3, 2, 2, 2, 390, 387, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 390, 389, 3, 2, 2, 2, 391, 65, 3, 2, 2, 2, 392, 393, 5, 52, 27, 2, 393, 394, 7, 109, 2, 2, 394, 396, 3, 2, 2, 2, 395, 392, 3, 2, 2, 2, 396, 399, 3, 2, 2, 2, 397, 395, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 400, 3, 2, 2, 2, 399, 397, 3, 2, 2, 2, 400, 401, 5, 52, 27, 2, 401, 67, 3, 2, 2, 2, 402, 403, 5, 52, 27, 2, 403, 404, 5, 34, 18, 2, 404, 69, 3, 2, 2, 2, 405, 406, 5, 68, 35, 2, 406, 407, 7, 109, 2, 2, 407, 409, 3, 2, 2, 2, 408, 405, 3, 2, 2, 2, 409, 412, 3, 2, 2, 2, 410, 408, 3, 2, 2, 2, 410, 411, 3, 2, 2, 2, 411, 413, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 413, 414, 5, 68, 35, 2, 414, 71, 3, 2, 2, 2, 415, 416, 7, 21, 2, 2, 416, 417, 7, 118, 2, 2, 417, 418, 7, 110, 2, 2, 418, 419, 5, 74, 38, 2, 419, 420, 7, 107, 2, 2, 420, 73, 3, 2, 2, 2, 421, 422, 8, 38, 1, 2, 422, 423, 7, 118, 2, 2, 423, 432, 5, 80, 41, 2, 424, 429, 7, 118, 2, 2, 425, 426, 7, 100, 2, 2, 426, 427, 5, 142, 72, 2, 427, 428, 7, 101, 2, 2, 428, 430, 3, 2, 2, 2, 429, 425, 3, 2, 2, 2, 429, 430, 3, 2, 2, 2, 430, 432, 3, 2, 2, 2, 431, 421, 3, 2, 2, 2, 431, 424, 3, 2, 2, 2, 432, 438, 3, 2, 2, 2, 433, 434, 12, 3, 2, 2, 434, 435, 7, 22, 2, 2, 435, 437, 5, 74, 38, 4, 436, 433, 3, 2, 2, 2, 437, 440, 3, 2, 2, 2, 438, 436, 3, 2, 2, 2, 438, 439, 3, 2, 2, 2, 439, 75, 3, 2, 2, 2, 440, 438, 3, 2, 2, 2, 441, 442, 5, 74, 38, 2, 442, 443, 7, 109, 2, 2, 443, 445, 3, 2, 2, 2, 444, 441, 3, 2, 2, 2, 445, 448, 3, 2, 2, 2, 446, 444, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 449, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 449, 450, 5, 74, 38, 2, 450, 77, 3, 2, 2, 2, 451, 452, 5, 74, 38, 2, 452, 453, 5, 148, 75, 2, 453, 454, 7, 109, 2, 2, 454, 456, 3, 2, 2, 2, 455, 451, 3, 2, 2, 2, 456, 459, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 457, 458, 3, 2, 2, 2, 458, 460, 3, 2, 2, 2, 459, 457, 3, 2, 2, 2, 460, 461, 5, 74, 38, 2, 461, 462, 5, 148, 75, 2, 462, 79, 3, 2, 2, 2, 463, 465, 7, 100, 2, 2, 464, 466, 5, 118, 60, 2, 465, 464, 3, 2, 2, 2, 465, 466, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 469, 7, 106, 2, 2, 468, 470, 5, 118, 60, 2, 469, 468, 3, 2, 2, 2, 469, 470, 3, 2, 2, 2, 470, 473, 3, 2, 2, 2, 471, 472, 7, 106, 2, 2, 472, 474, 5, 118, 60, 2, 473, 471, 3, 2, 2, 2, 473, 474, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 476, 7, 101, 2, 2, 476, 81, 3, 2, 2, 2, 477, 478, 7, 23, 2, 2, 478, 479, 5, 84, 43, 2, 479, 480, 5, 86, 44, 2, 480, 83, 3, 2, 2, 2, 481, 487, 9, 6, 2, 2, 482, 484, 7, 104, 2, 2, 483, 485, 5, 32, 17, 2, 484, 483, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 488, 7, 105, 2, 2, 487, 482, 3, 2, 2, 2, 487, 488, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 490, 5, 32, 17, 2, 490, 85, 3, 2, 2, 2, 491, 497, 7, 102, 2, 2, 492, 496, 5, 14, 8, 2, 493, 496, 5, 92, 47, 2, 494, 496, 5, 88, 45, 2, 495, 492, 3, 2, 2, 2, 495, 493, 3, 2, 2, 2, 495, 494, 3, 2, 2, 2, 496, 499, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 500, 3, 2, 2, 2, 499, 497, 3, 2, 2, 2, 500, 501, 7, 103, 2, 2, 501, 87, 3, 2, 2, 2, 502, 503, 5, 162, 82, 2, 503, 504, 5, 90, 46, 2, 504, 89, 3, 2, 2, 2, 505, 515, 5, 92, 47, 2, 506, 510, 7, 102, 2, 2, 507, 509, 5, 92, 47, 2, 508, 507, 3, 2, 2, 2, 509, 512, 3, 2, 2, 2, 510, 508, 3, 2, 2, 2, 510, 511, 3, 2, 2, 2, 511, 513, 3, 2, 2, 2, 512, 510, 3, 2, 2, 2, 513, 515, 7, 103, 2, 2, 514, 505, 3, 2, 2, 2, 514, 506, 3, 2, 2, 2, 515, 91, 3, 2, 2, 2, 516, 517, 5, 94, 48, 2, 517, 518, 7, 107, 2, 2, 518, 521, 3, 2, 2, 2, 519, 521, 5, 198, 100, 2, 520, 516, 3, 2, 2, 2, 520, 519, 3, 2, 2, 2, 521, 93, 3, 2, 2, 2, 522, 527, 5, 106, 54, 2, 523, 527, 5, 96, 49, 2, 524, 527, 5, 98, 50, 2, 525, 527, 5, 102, 52, 2, 526, 522, 3, 2, 2, 2, 526, 523, 3, 2, 2, 2, 526, 524, 3, 2, 2, 2, 526, 525, 3, 2, 2, 2, 527, 95, 3, 2, 2, 2, 528, 529, 7, 26, 2, 2, 529, 530, 7, 104, 2, 2, 530, 531, 7, 118, 2, 2, 531, 532, 7, 105, 2, 2, 532, 97, 3, 2, 2, 2, 533, 534, 7, 27, 2, 2, 534, 535, 5, 76, 39, 2, 535, 99, 3, 2, 2, 2, 536, 539, 5, 98, 50, 2, 537, 538, 7, 111, 2, 2, 538, 540, 5, 76, 39, 2, 539, 537, 3, 2, 2, 2, 539, 540, 3, 2, 2, 2, 540, 546, 3, 2, 2, 2, 541, 542, 5, 76, 39, 2, 542, 543, 7, 110, 2, 2, 543, 544, 5, 98, 50, 2, 544, 546, 3, 2, 2, 2, 545, 536, 3, 2, 2, 2, 545, 541, 3, 2, 2, 2, 546, 101, 3, 2, 2, 2, 547, 548, 7, 28, 2, 2, 548, 549, 5, 76, 39, 2, 549, 103, 3, 2, 2, 2, 550, 558, 7, 29, 2, 2, 551, 552, 7, 30, 2, 2, 552, 553, 7, 104, 2, 2, 553, 554, 5, 118, 60, 2, 554, 555, 7, 105, 2, 2, 555, 558, 3, 2, 2, 2, 556, 558, 7, 31, 2, 2, 557, 550, 3, 2, 2, 2, 557, 551, 3, 2, 2, 2, 557, 556, 3, 2, 2, 2, 558, 559, 3, 2, 2, 2, 559, 560, 7, 32, 2, 2, 560, 105, 3, 2, 2, 2, 561, 567, 5, 108, 55, 2, 562, 564, 7, 104, 2, 2, 563, 565, 5, 142, 72, 2, 564, 563, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 568, 7, 105, 2, 2, 567, 562, 3, 2, 2, 2, 567, 568, 3, 2, 2, 2, 568, 569, 3, 2, 2, 2, 569, 570, 5, 76, 39, 2, 570, 107, 3, 2, 2, 2, 571, 579, 7, 24, 2, 2, 572, 579, 7, 25, 2, 2, 573, 579, 7, 33, 2, 2, 574, 579, 7, 118, 2, 2, 575, 576, 5, 104, 53, 2, 576, 577, 5, 108, 55, 2, 577, 579, 3, 2, 2, 2, 578, 571, 3, 2, 2, 2, 578, 572, 3, 2, 2, 2, 578, 573, 3, 2, 2, 2, 578, 574, 3, 2, 2, 2, 578, 575, 3, 2, 2, 2, 579, 109, 3, 2, 2, 2, 580, 581, 9, 7, 2, 2, 581, 111, 3, 2, 2, 2, 582, 583, 9, 8, 2, 2, 583, 113, 3, 2, 2, 2, 584, 585, 9, 9, 2, 2, 585, 115, 3, 2, 2, 2, 586, 587, 5, 118, 60, 2, 587, 588, 7, 107, 2, 2, 588, 117, 3, 2, 2, 2, 589, 590, 8, 60, 1, 2, 590, 594, 5, 132, 67, 2, 591, 594, 5, 130, 66, 2, 592, 594, 5, 120, 61, 2, 593, 589, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 593, 592, 3, 2, 2, 2, 594, 600, 3, 2, 2, 2, 595, 596, 12, 3, 2, 2, 596, 597, 7, 43, 2, 2, 597, 599, 5, 120, 61, 2, 598, 595, 3, 2, 2, 2, 599, 602, 3, 2, 2, 2, 600, 598, 3, 2, 2, 2, 600, 601, 3, 2, 2, 2, 601, 119, 3, 2, 2, 2, 602, 600, 3, 2, 2, 2, 603, 604, 8, 61, 1, 2, 604, 605, 5, 122, 62, 2, 605, 611, 3, 2, 2, 2, 606, 607, 12, 3, 2, 2, 607, 608, 7, 44, 2, 2, 608, 610, 5, 122, 62, 2, 609, 606, 3, 2, 2, 2, 610, 613, 3, 2, 2, 2, 611, 609, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 121, 3, 2, 2, 2, 613, 611, 3, 2, 2, 2, 614, 615, 8, 62, 1, 2, 615, 616, 5, 124, 63, 2, 616, 622, 3, 2, 2, 2, 617, 618, 12, 3, 2, 2, 618, 619, 7, 45, 2, 2, 619, 621, 5, 124, 63, 2, 620, 617, 3, 2, 2, 2, 621, 624, 3, 2, 2, 2, 622, 620, 3, 2, 2, 2, 622, 623, 3, 2, 2, 2, 623, 123, 3, 2, 2, 2, 624, 622, 3, 2, 2, 2, 625, 626, 8, 63, 1, 2, 626, 627, 5, 126, 64, 2, 627, 633, 3, 2, 2, 2, 628, 629, 12, 3, 2, 2, 629, 630, 9, 10, 2, 2, 630, 632, 5, 126, 64, 2, 631, 628, 3, 2, 2, 2, 632, 635, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 633, 634, 3, 2, 2, 2, 634, 125, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 636, 637, 8, 64, 1, 2, 637, 638, 5, 128, 65, 2, 638, 644, 3, 2, 2, 2, 639, 640, 12, 3, 2, 2, 640, 641, 9, 11, 2, 2, 641, 643, 5, 128, 65, 2, 642, 639, 3, 2, 2, 2, 643, 646, 3, 2, 2, 2, 644, 642, 3, 2, 2, 2, 644, 645, 3, 2, 2, 2, 645, 127, 3, 2, 2, 2, 646, 644, 3, 2, 2, 2, 647, 648, 8, 65, 1, 2, 648, 651, 5, 132, 67, 2, 649, 651, 5, 130, 66, 2, 650, 647, 3, 2, 2, 2, 650, 649, 3, 2, 2, 2, 651, 660, 3, 2, 2, 2, 652, 653, 12, 3, 2, 2, 653, 656, 9, 12, 2, 2, 654, 657, 5, 132, 67, 2, 655, 657, 5, 130, 66, 2, 656, 654, 3, 2, 2, 2, 656, 655, 3, 2, 2, 2, 657, 659, 3, 2, 2, 2, 658, 652, 3, 2, 2, 2, 659, 662, 3, 2, 2, 2, 660, 658, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 129, 3, 2, 2, 2, 662, 660, 3, 2, 2, 2, 663, 664, 5, 110, 56, 2, 664, 665, 5, 132, 67, 2, 665, 131, 3, 2, 2, 2, 666, 667, 8, 67, 1, 2, 667, 683, 7, 114, 2, 2, 668, 683, 7, 117, 2, 2, 669, 683, 7, 119, 2, 2, 670, 683, 7, 118, 2, 2, 671, 683, 7, 121, 2, 2, 672, 683, 5, 136, 69, 2, 673, 683, 5, 174, 88, 2, 674, 683, 5, 182, 92, 2, 675, 683, 5, 190, 96, 2, 676, 677, 7, 112, 2, 2, 677, 683, 5, 132, 67, 6, 678, 679, 7, 104, 2, 2, 679, 680, 5, 118, 60, 2, 680, 681, 7, 105, 2, 2, 681, 683, 3, 2, 2, 2, 682, 666, 3, 2, 2, 2, 682, 668, 3, 2, 2, 2, 682, 669, 3, 2, 2, 2, 682, 670, 3, 2, 2, 2, 682, 671, 3, 2, 2, 2, 682, 672, 3, 2, 2, 2, 682, 673, 3, 2, 2, 2, 682, 674, 3, 2, 2, 2, 682, 675, 3, 2, 2, 2, 682, 676, 3, 2, 2, 2, 682, 678, 3, 2, 2, 2, 683, 693, 3, 2, 2, 2, 684, 685, 12, 4, 2, 2, 685, 686, 7, 100, 2, 2, 686, 687, 5, 118, 60, 2, 687, 688, 7, 101, 2, 2, 688, 692, 3, 2, 2, 2, 689, 690, 12, 3, 2, 2, 690, 692, 5, 134, 68, 2, 691, 684, 3, 2, 2, 2, 691, 689, 3, 2, 2, 2, 692, 695, 3, 2, 2, 2, 693, 691, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 133, 3, 2, 2, 2, 695, 693, 3, 2, 2, 2, 696, 697, 9, 13, 2, 2, 697, 135, 3, 2, 2, 2, 698, 701, 5, 138, 70, 2, 699, 701, 5, 140, 71, 2, 700, 698, 3, 2, 2, 2, 700, 699, 3, 2, 2, 2, 701, 702, 3, 2, 2, 2, 702, 703, 7, 104, 2, 2, 703, 704, 5, 142, 72, 2, 704, 705, 7, 105, 2, 2, 705, 137, 3, 2, 2, 2, 706, 707, 9, 14, 2, 2, 707, 139, 3, 2, 2, 2, 708, 709, 5, 52, 27, 2, 709, 141, 3, 2, 2, 2, 710, 711, 5, 118, 60, 2, 711, 712, 7, 109, 2, 2, 712, 714, 3, 2, 2, 2, 713, 710, 3, 2, 2, 2, 714, 717, 3, 2, 2, 2, 715, 713, 3, 2, 2, 2, 715, 716, 3, 2, 2, 2, 716, 718, 3, 2, 2, 2, 717, 715, 3, 2, 2, 2, 718, 719, 5, 118, 60, 2, 719, 143, 3, 2, 2, 2, 720, 721, 8, 73, 1, 2, 721, 724, 5, 154, 78, 2, 722, 724, 5, 146, 74, 2, 723, 720, 3, 2, 2, 2, 723, 722, 3, 2, 2, 2, 724, 731, 3, 2, 2, 2, 725, 726, 12, 3, 2, 2, 726, 727, 5, 114, 58, 2, 727, 728, 5, 146, 74, 2, 728, 730, 3, 2, 2, 2, 729, 725, 3, 2, 2, 2, 730, 733, 3, 2, 2, 2, 731, 729, 3, 2, 2, 2, 731, 732, 3, 2, 2, 2, 732, 145, 3, 2, 2, 2, 733, 731, 3, 2, 2, 2, 734, 740, 5, 118, 60, 2, 735, 736, 5, 118, 60, 2, 736, 737, 5, 112, 57, 2, 737, 738, 5, 118, 60, 2, 738, 740, 3, 2, 2, 2, 739, 734, 3, 2, 2, 2, 739, 735, 3, 2, 2, 2, 740, 147, 3, 2, 2, 2, 741, 742, 7, 110, 2, 2, 742, 743, 5, 118, 60, 2, 743, 149, 3, 2, 2, 2, 744, 745, 9, 15, 2, 2, 745, 151, 3, 2, 2, 2, 746, 747, 7, 118, 2, 2, 747, 748, 5, 148, 75, 2, 748, 749, 7, 109, 2, 2, 749, 751, 3, 2, 2, 2, 750, 746, 3, 2, 2, 2, 751, 754, 3, 2, 2, 2, 752, 750, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 755, 3, 2, 2, 2, 754, 752, 3, 2, 2, 2, 755, 756, 7, 118, 2, 2, 756, 757, 5, 148, 75, 2, 757, 153, 3, 2, 2, 2, 758, 759, 7, 118, 2, 2, 759, 760, 7, 77, 2, 2, 760, 761, 5, 156, 79, 2, 761, 155, 3, 2, 2, 2, 762, 763, 7, 102, 2, 2, 763, 764, 5, 142, 72, 2, 764, 765, 7, 103, 2, 2, 765, 769, 3, 2, 2, 2, 766, 769, 5, 80, 41, 2, 767, 769, 7, 118, 2, 2, 768, 762, 3, 2, 2, 2, 768, 766, 3, 2, 2, 2, 768, 767, 3, 2, 2, 2, 769, 157, 3, 2, 2, 2, 770, 780, 5, 12, 7, 2, 771, 775, 7, 102, 2, 2, 772, 774, 5, 12, 7, 2, 773, 772, 3, 2, 2, 2, 774, 777, 3, 2, 2, 2, 775, 773, 3, 2, 2, 2, 775, 776, 3, 2, 2, 2, 776, 778, 3, 2, 2, 2, 777, 775, 3, 2, 2, 2, 778, 780, 7, 103, 2, 2, 779, 770, 3, 2, 2, 2, 779, 771, 3, 2, 2, 2, 780, 159, 3, 2, 2, 2, 781, 782, 7, 78, 2, 2, 782, 783, 7, 104, 2, 2, 783, 784, 5, 144, 73, 2, 784, 785, 7, 105, 2, 2, 785, 788, 5, 158, 80, 2, 786, 787, 7, 79, 2, 2, 787, 789, 5, 158, 80, 2, 788, 786, 3, 2, 2, 2, 788, 789, 3, 2, 2, 2, 789, 161, 3, 2, 2, 2, 790, 791, 7, 80, 2, 2, 791, 798, 5, 154, 78, 2, 792, 793, 7, 81, 2, 2, 793, 794, 7, 104, 2, 2, 794, 795, 5, 144, 73, 2, 795, 796, 7, 105, 2, 2, 796, 798, 3, 2, 2, 2, 797, 790, 3, 2, 2, 2, 797, 792, 3, 2, 2, 2, 798, 163, 3, 2, 2, 2, 799, 800, 5, 162, 82, 2, 800, 801, 5, 158, 80, 2, 801, 165, 3, 2, 2, 2, 802, 803, 7, 80, 2, 2, 803, 804, 7, 104, 2, 2, 804, 805, 5, 52, 27, 2, 805, 806, 7, 118, 2, 2, 806, 807, 5, 148, 75, 2, 807, 808, 7, 107, 2, 2, 808, 809, 5, 144, 73, 2, 809, 810, 7, 107, 2, 2, 810, 811, 5, 118, 60, 2, 811, 812, 7, 105, 2, 2, 812, 813, 7, 102, 2, 2, 813, 814, 5, 158, 80, 2, 814, 815, 7, 103, 2, 2, 815, 831, 3, 2, 2, 2, 816, 817, 7, 80, 2, 2, 817, 818, 7, 104, 2, 2, 818, 819, 5, 52, 27, 2, 819, 820, 7, 118, 2, 2, 820, 821, 7, 106, 2, 2, 821, 822, 7, 82, 2, 2, 822, 823, 7, 104, 2, 2, 823, 824, 5, 118, 60, 2, 824, 825, 7, 105, 2, 2, 825, 826, 7, 105, 2, 2, 826, 827, 7, 102, 2, 2, 827, 828, 5, 158, 80, 2, 828, 829, 7, 103, 2, 2, 829, 831, 3, 2, 2, 2, 830, 802, 3, 2, 2, 2, 830, 816, 3, 2, 2, 2, 831, 167, 3, 2, 2, 2, 832, 833, 5, 170, 86, 2, 833, 834, 7, 107, 2, 2, 834, 169, 3, 2, 2, 2, 835, 836, 9, 16, 2, 2, 836, 171, 3, 2, 2, 2, 837, 838, 7, 86, 2, 2, 838, 844, 7, 118, 2, 2, 839, 841, 7, 104, 2, 2, 840, 842, 5, 66, 34, 2, 841, 840, 3, 2, 2, 2, 841, 842, 3, 2, 2, 2, 842, 843, 3, 2, 2, 2, 843, 845, 7, 105, 2, 2, 844, 839, 3, 2, 2, 2, 844, 845, 3, 2, 2, 2, 845, 847, 3, 2, 2, 2, 846, 848, 5, 26, 14, 2, 847, 846, 3, 2, 2, 2, 847, 848, 3, 2, 2, 2, 848, 850, 3, 2, 2, 2, 849, 851, 5, 52, 27, 2, 850, 849, 3, 2, 2, 2, 850, 851, 3, 2, 2, 2, 851, 852, 3, 2, 2, 2, 852, 853, 7, 107, 2, 2, 853, 173, 3, 2, 2, 2, 854, 855, 7, 118, 2, 2, 855, 857, 7, 104, 2, 2, 856, 858, 5, 142, 72, 2, 857, 856, 3, 2, 2, 2, 857, 858, 3, 2, 2, 2, 858, 859, 3, 2, 2, 2, 859, 860, 7, 105, 2, 2, 860, 175, 3, 2, 2, 2, 861, 862, 7, 87, 2, 2, 862, 868, 7, 118, 2, 2, 863, 865, 7, 104, 2, 2, 864, 866, 5, 70, 36, 2, 865, 864, 3, 2, 2, 2, 865, 866, 3, 2, 2, 2, 866, 867, 3, 2, 2, 2, 867, 869, 7, 105, 2, 2, 868, 863, 3, 2, 2, 2, 868, 869, 3, 2, 2, 2, 869, 871, 3, 2, 2, 2, 870, 872, 5, 42, 22, 2, 871, 870, 3, 2, 2, 2, 871, 872, 3, 2, 2, 2, 872, 874, 3, 2, 2, 2, 873, 875, 5, 26, 14, 2, 874, 873, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 876, 3, 2, 2, 2, 876, 877, 5, 180, 91, 2, 877, 177, 3, 2, 2, 2, 878, 879, 7, 88, 2, 2, 879, 880, 5, 12, 7, 2, 880, 179, 3, 2, 2, 2, 881, 885, 7, 102, 2, 2, 882, 884, 5, 12, 7, 2, 883, 882, 3, 2, 2, 2, 884, 887, 3, 2, 2, 2, 885, 883, 3, 2, 2, 2, 885, 886, 3, 2, 2, 2, 886, 889, 3, 2, 2, 2, 887, 885, 3, 2, 2, 2, 888, 890, 5, 178, 90, 2, 889, 888, 3, 2, 2, 2, 889, 890, 3, 2, 2, 2, 890, 891, 3, 2, 2, 2, 891, 895, 7, 103, 2, 2, 892, 893, 7, 113, 2, 2, 893, 895, 7, 107, 2, 2, 894, 881, 3, 2, 2, 2, 894, 892, 3, 2, 2, 2, 895, 181, 3, 2, 2, 2, 896, 897, 7, 118, 2, 2, 897, 899, 7, 104, 2, 2, 898, 900, 5, 142, 72, 2, 899, 898, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 901, 3, 2, 2, 2, 901, 902, 7, 105, 2, 2, 902, 903, 3, 2, 2, 2, 903, 904, 5, 142, 72, 2, 904, 183, 3, 2, 2, 2, 905, 906, 7, 89, 2, 2, 906, 910, 7, 102, 2, 2, 907, 909, 5, 12, 7, 2, 908, 907, 3, 2, 2, 2, 909, 912, 3, 2, 2, 2, 910, 908, 3, 2, 2, 2, 910, 911, 3, 2, 2, 2, 911, 913, 3, 2, 2, 2, 912, 910, 3, 2, 2, 2, 913, 914, 7, 103, 2, 2, 914, 185, 3, 2, 2, 2, 915, 921, 7, 90, 2, 2, 916, 918, 7, 91, 2, 2, 917, 919, 7, 117, 2, 2, 918, 917, 3, 2, 2, 2, 918, 919, 3, 2, 2, 2, 919, 921, 3, 2, 2, 2, 920, 915, 3, 2, 2, 2, 920, 916, 3, 2, 2, 2, 921, 187, 3, 2, 2, 2, 922, 923, 7, 92, 2, 2, 923, 924, 7, 118, 2, 2, 924, 929, 5, 86, 44, 2, 925, 926, 7, 93, 2, 2, 926, 927, 7, 120, 2, 2, 927, 929, 5, 86, 44, 2, 928, 922, 3, 2, 2, 2, 928, 925, 3, 2, 2, 2, 929, 189, 3, 2, 2, 2, 930, 933, 5, 192, 97, 2, 931, 933, 7, 94, 2, 2, 932, 930, 3, 2, 2, 2, 932, 931, 3, 2, 2, 2, 933, 191, 3, 2, 2, 2, 934, 943, 7, 120, 2, 2, 935, 936, 7, 66, 2, 2, 936, 939, 7, 104, 2, 2, 937, 940, 7, 118, 2, 2, 938, 940, 5, 86, 44, 2, 939, 937, 3, 2, 2, 2, 939, 938, 3, 2, 2, 2, 940, 941, 3, 2, 2, 2, 941, 943, 7, 105, 2, 2, 942, 934, 3, 2, 2, 2, 942, 935, 3, 2, 2, 2, 943, 193, 3, 2, 2, 2, 944, 945, 9, 17, 2, 2, 945, 195, 3, 2, 2, 2, 946, 952, 5, 194, 98, 2, 947, 949, 7, 104, 2, 2, 948, 950, 5, 142, 72, 2, 949, 948, 3, 2, 2, 2, 949, 950, 3, 2, 2, 2, 950, 951, 3, 2, 2, 2, 951, 953, 7, 105, 2, 2, 952, 947, 3, 2, 2, 2, 952, 953, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 955, 5, 28, 15, 2, 955, 956, 5, 76, 39, 2, 956, 197, 3, 2, 2, 2, 957, 958, 5, 196, 99, 2, 958, 959, 7, 107, 2, 2, 959, 962, 3, 2, 2, 2, 960, 962, 5, 188, 95, 2, 961, 957, 3, 2, 2, 2, 961, 960, 3, 2, 2, 2, 962, 199, 3, 2, 2, 2, 963, 966, 5, 202, 102, 2, 964, 966, 5, 204, 103, 2, 965, 963, 3, 2, 2, 2, 965, 964, 3, 2, 2, 2, 966, 201, 3, 2, 2, 2, 967, 968, 7, 97, 2, 2, 968, 969, 5, 206, 104, 2, 969, 970, 7, 107, 2, 2, 970, 203, 3, 2, 2, 2, 971, 972, 7, 98, 2, 2, 972, 978, 7, 118, 2, 2, 973, 975, 7, 104, 2, 2, 974, 976, 5, 208, 105, 2, 975, 974, 3, 2, 2, 2, 975, 976, 3, 2, 2, 2, 976, 977, 3, 2, 2, 2, 977, 979, 7, 105, 2, 2, 978, 973, 3, 2, 2, 2, 978, 979, 3, 2, 2, 2, 979, 980, 3, 2, 2, 2, 980, 982, 5, 32, 17, 2, 981, 983, 5, 26, 14, 2, 982, 981, 3, 2, 2, 2, 982, 983, 3, 2, 2, 2, 983, 984, 3, 2, 2, 2, 984, 988, 7, 102, 2, 2, 985, 987, 11, 2, 2, 2, 986, 985, 3, 2, 2, 2, 987, 990, 3, 2, 2, 2, 988, 989, 3, 2, 2, 2, 988, 986, 3, 2, 2, 2, 989, 991, 3, 2, 2, 2, 990, 988, 3, 2, 2, 2, 991, 992, 7, 103, 2, 2, 992, 205, 3, 2, 2, 2, 993, 994, 9, 18, 2, 2, 994, 207, 3, 2, 2, 2, 995, 998, 5, 70, 36, 2, 996, 998, 5, 142, 72, 2, 997, 995, 3, 2, 2, 2, 997, 996, 3, 2, 2, 2, 998, 209, 3, 2, 2, 2, 99, 213, 215, 219, 224, 241, 254, 272, 280, 284, 305, 320, 329, 346, 357, 359, 368, 374, 379, 384, 390, 397, 410, 429, 431, 438, 446, 457, 465, 469, 473, 484, 487, 495, 497, 510, 514, 520, 526, 539, 545, 557, 564, 567, 578, 593, 600, 611, 622, 633, 644, 650, 656, 660, 682, 691, 693, 700, 715, 723, 731, 739, 752, 768, 775, 779, 788, 797, 830, 841, 844, 847, 850, 857, 865, 868, 871, 874, 885, 889, 894, 899, 910, 918, 920, 928, 932, 939, 942, 949, 952, 961, 965, 975, 978, 982, 988, 997] \ No newline at end of file +token literal names: +null +'OPENQASM' +'include' +'compute' +'action' +'QCOR_EXPECT_TRUE' +'qubit' +'qreg' +'bit' +'creg' +'int' +'uint' +'float' +'angle' +'fixed' +'bool' +'int64_t' +'double' +'const' +'let' +'||' +'gate' +'CX' +'U' +'gphase' +'measure' +'barrier' +'inv' +'pow' +'ctrl' +'@' +'reset' +'~' +'!' +'>' +'<' +'>=' +'<=' +'==' +'!=' +'&&' +'|' +'^' +'&' +'<<' +'>>' +'+' +'*' +'/' +'%' +'++' +'--' +'sin' +'cos' +'tan' +'arctan' +'arccos' +'arcsin' +'exp' +'ln' +'sqrt' +'rotl' +'rotr' +'popcount' +'lengthof' +'+=' +'-=' +'*=' +'/=' +'&=' +'|=' +'~=' +'^=' +'<<=' +'>>=' +'in' +'if' +'else' +'for' +'while' +'range' +'break' +'continue' +'end' +'kernel' +'def' +'return' +'#pragma' +'length' +'stretch' +'boxas' +'boxto' +'stretchinf' +'delay' +'rotary' +'defcalgrammar' +'defcal' +'"openpulse"' +'[' +']' +'{' +'}' +'(' +')' +':' +';' +'.' +',' +'=' +'->' +'-' +'extern' +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +LBRACKET +RBRACKET +LBRACE +RBRACE +LPAREN +RPAREN +COLON +SEMICOLON +DOT +COMMA +EQUALS +ARROW +MINUS +EXTERN +Constant +Whitespace +Newline +Integer +Identifier +RealNumber +TimingLiteral +StringLiteral +LineComment +BlockComment + +rule names: +program +header +version +include +globalStatement +statement +compute_action_stmt +qcor_test_statement +quantumDeclarationStatement +classicalDeclarationStatement +classicalAssignment +assignmentStatement +returnSignature +designator +doubleDesignator +identifierList +association +quantumType +quantumDeclaration +quantumArgument +quantumArgumentList +bitType +singleDesignatorType +doubleDesignatorType +noDesignatorType +classicalType +constantDeclaration +singleDesignatorDeclaration +doubleDesignatorDeclaration +noDesignatorDeclaration +bitDeclaration +classicalDeclaration +classicalTypeList +classicalArgument +classicalArgumentList +aliasStatement +indexIdentifier +indexIdentifierList +indexEqualsAssignmentList +rangeDefinition +quantumGateDefinition +quantumGateSignature +quantumBlock +quantumLoop +quantumLoopBlock +quantumStatement +quantumInstruction +quantumPhase +quantumMeasurement +quantumMeasurementAssignment +quantumBarrier +quantumGateModifier +quantumGateCall +quantumGateName +unaryOperator +relationalOperator +logicalOperator +expressionStatement +expression +xOrExpression +bitAndExpression +bitShiftExpression +additiveExpression +multiplicativeExpression +unaryExpression +expressionTerminator +incrementor +builtInCall +builtInMath +castOperator +expressionList +booleanExpression +comparsionExpression +equalsExpression +assignmentOperator +equalsAssignmentList +membershipTest +setDeclaration +programBlock +branchingStatement +loopSignature +loopStatement +cLikeLoopStatement +controlDirectiveStatement +controlDirective +kernelDeclaration +kernelCall +subroutineDefinition +returnStatement +subroutineBlock +subroutineCall +pragma +timingType +timingBox +timingTerminator +timingIdentifier +timingInstructionName +timingInstruction +timingStatement +calibration +calibrationGrammarDeclaration +calibrationDefinition +calibrationGrammar +calibrationArgumentList + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 123, 1009, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 3, 2, 3, 2, 3, 2, 7, 2, 214, 10, 2, 12, 2, 14, 2, 217, 11, 2, 3, 3, 5, 3, 220, 10, 3, 3, 3, 7, 3, 223, 10, 3, 12, 3, 14, 3, 226, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 242, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 255, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 5, 11, 273, 10, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 281, 10, 12, 3, 13, 3, 13, 5, 13, 285, 10, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 7, 17, 304, 10, 17, 12, 17, 14, 17, 307, 11, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 5, 20, 319, 10, 20, 3, 20, 3, 20, 5, 20, 323, 10, 20, 3, 20, 5, 20, 326, 10, 20, 3, 21, 3, 21, 5, 21, 330, 10, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 7, 22, 337, 10, 22, 12, 22, 14, 22, 340, 11, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 356, 10, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 367, 10, 27, 5, 27, 369, 10, 27, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 378, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 384, 10, 30, 3, 31, 3, 31, 3, 31, 5, 31, 389, 10, 31, 3, 32, 3, 32, 3, 32, 5, 32, 394, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 400, 10, 33, 3, 34, 3, 34, 3, 34, 7, 34, 405, 10, 34, 12, 34, 14, 34, 408, 11, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 7, 36, 418, 10, 36, 12, 36, 14, 36, 421, 11, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 439, 10, 38, 5, 38, 441, 10, 38, 3, 38, 3, 38, 3, 38, 7, 38, 446, 10, 38, 12, 38, 14, 38, 449, 11, 38, 3, 39, 3, 39, 3, 39, 7, 39, 454, 10, 39, 12, 39, 14, 39, 457, 11, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 465, 10, 40, 12, 40, 14, 40, 468, 11, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 5, 41, 475, 10, 41, 3, 41, 3, 41, 5, 41, 479, 10, 41, 3, 41, 3, 41, 5, 41, 483, 10, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 5, 43, 494, 10, 43, 3, 43, 5, 43, 497, 10, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 7, 44, 505, 10, 44, 12, 44, 14, 44, 508, 11, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 7, 46, 518, 10, 46, 12, 46, 14, 46, 521, 11, 46, 3, 46, 5, 46, 524, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 530, 10, 47, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 536, 10, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 5, 51, 549, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 555, 10, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 5, 53, 567, 10, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 5, 54, 574, 10, 54, 3, 54, 5, 54, 577, 10, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 588, 10, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 603, 10, 60, 3, 60, 3, 60, 3, 60, 7, 60, 608, 10, 60, 12, 60, 14, 60, 611, 11, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 7, 61, 619, 10, 61, 12, 61, 14, 61, 622, 11, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 7, 62, 630, 10, 62, 12, 62, 14, 62, 633, 11, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 641, 10, 63, 12, 63, 14, 63, 644, 11, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 652, 10, 64, 12, 64, 14, 64, 655, 11, 64, 3, 65, 3, 65, 3, 65, 5, 65, 660, 10, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 666, 10, 65, 7, 65, 668, 10, 65, 12, 65, 14, 65, 671, 11, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, 692, 10, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 7, 67, 701, 10, 67, 12, 67, 14, 67, 704, 11, 67, 3, 68, 3, 68, 3, 69, 3, 69, 5, 69, 710, 10, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 7, 72, 723, 10, 72, 12, 72, 14, 72, 726, 11, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 5, 73, 733, 10, 73, 3, 73, 3, 73, 3, 73, 3, 73, 7, 73, 739, 10, 73, 12, 73, 14, 73, 742, 11, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 5, 74, 749, 10, 74, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 7, 77, 760, 10, 77, 12, 77, 14, 77, 763, 11, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 5, 79, 778, 10, 79, 3, 80, 3, 80, 3, 80, 7, 80, 783, 10, 80, 12, 80, 14, 80, 786, 11, 80, 3, 80, 5, 80, 789, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 798, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 807, 10, 82, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 5, 84, 840, 10, 84, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 5, 87, 851, 10, 87, 3, 87, 5, 87, 854, 10, 87, 3, 87, 5, 87, 857, 10, 87, 3, 87, 5, 87, 860, 10, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 5, 88, 867, 10, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 5, 89, 875, 10, 89, 3, 89, 5, 89, 878, 10, 89, 3, 89, 5, 89, 881, 10, 89, 3, 89, 5, 89, 884, 10, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 7, 91, 893, 10, 91, 12, 91, 14, 91, 896, 11, 91, 3, 91, 5, 91, 899, 10, 91, 3, 91, 3, 91, 3, 91, 5, 91, 904, 10, 91, 3, 92, 3, 92, 3, 92, 5, 92, 909, 10, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 7, 93, 918, 10, 93, 12, 93, 14, 93, 921, 11, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 5, 94, 928, 10, 94, 5, 94, 930, 10, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 5, 95, 938, 10, 95, 3, 96, 3, 96, 5, 96, 942, 10, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 5, 97, 949, 10, 97, 3, 97, 5, 97, 952, 10, 97, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 5, 99, 959, 10, 99, 3, 99, 5, 99, 962, 10, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 5, 100, 971, 10, 100, 3, 101, 3, 101, 5, 101, 975, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 985, 10, 103, 3, 103, 5, 103, 988, 10, 103, 3, 103, 3, 103, 5, 103, 992, 10, 103, 3, 103, 3, 103, 7, 103, 996, 10, 103, 12, 103, 14, 103, 999, 11, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 5, 105, 1007, 10, 105, 3, 105, 3, 997, 11, 74, 118, 120, 122, 124, 126, 128, 132, 144, 106, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 2, 19, 4, 2, 117, 117, 119, 119, 3, 2, 8, 9, 3, 2, 10, 11, 3, 2, 12, 15, 4, 2, 24, 25, 118, 118, 3, 2, 34, 35, 3, 2, 36, 41, 4, 2, 22, 22, 42, 42, 3, 2, 46, 47, 4, 2, 48, 48, 112, 112, 3, 2, 49, 51, 3, 2, 52, 53, 3, 2, 54, 66, 4, 2, 67, 76, 110, 110, 3, 2, 83, 85, 3, 2, 95, 96, 4, 2, 99, 99, 121, 121, 2, 1043, 2, 210, 3, 2, 2, 2, 4, 219, 3, 2, 2, 2, 6, 227, 3, 2, 2, 2, 8, 231, 3, 2, 2, 2, 10, 241, 3, 2, 2, 2, 12, 254, 3, 2, 2, 2, 14, 256, 3, 2, 2, 2, 16, 261, 3, 2, 2, 2, 18, 267, 3, 2, 2, 2, 20, 272, 3, 2, 2, 2, 22, 276, 3, 2, 2, 2, 24, 284, 3, 2, 2, 2, 26, 288, 3, 2, 2, 2, 28, 291, 3, 2, 2, 2, 30, 295, 3, 2, 2, 2, 32, 305, 3, 2, 2, 2, 34, 310, 3, 2, 2, 2, 36, 313, 3, 2, 2, 2, 38, 325, 3, 2, 2, 2, 40, 327, 3, 2, 2, 2, 42, 338, 3, 2, 2, 2, 44, 343, 3, 2, 2, 2, 46, 345, 3, 2, 2, 2, 48, 347, 3, 2, 2, 2, 50, 355, 3, 2, 2, 2, 52, 368, 3, 2, 2, 2, 54, 370, 3, 2, 2, 2, 56, 373, 3, 2, 2, 2, 58, 379, 3, 2, 2, 2, 60, 385, 3, 2, 2, 2, 62, 390, 3, 2, 2, 2, 64, 399, 3, 2, 2, 2, 66, 406, 3, 2, 2, 2, 68, 411, 3, 2, 2, 2, 70, 419, 3, 2, 2, 2, 72, 424, 3, 2, 2, 2, 74, 440, 3, 2, 2, 2, 76, 455, 3, 2, 2, 2, 78, 466, 3, 2, 2, 2, 80, 472, 3, 2, 2, 2, 82, 486, 3, 2, 2, 2, 84, 490, 3, 2, 2, 2, 86, 500, 3, 2, 2, 2, 88, 511, 3, 2, 2, 2, 90, 523, 3, 2, 2, 2, 92, 529, 3, 2, 2, 2, 94, 535, 3, 2, 2, 2, 96, 537, 3, 2, 2, 2, 98, 542, 3, 2, 2, 2, 100, 554, 3, 2, 2, 2, 102, 556, 3, 2, 2, 2, 104, 566, 3, 2, 2, 2, 106, 570, 3, 2, 2, 2, 108, 587, 3, 2, 2, 2, 110, 589, 3, 2, 2, 2, 112, 591, 3, 2, 2, 2, 114, 593, 3, 2, 2, 2, 116, 595, 3, 2, 2, 2, 118, 602, 3, 2, 2, 2, 120, 612, 3, 2, 2, 2, 122, 623, 3, 2, 2, 2, 124, 634, 3, 2, 2, 2, 126, 645, 3, 2, 2, 2, 128, 659, 3, 2, 2, 2, 130, 672, 3, 2, 2, 2, 132, 691, 3, 2, 2, 2, 134, 705, 3, 2, 2, 2, 136, 709, 3, 2, 2, 2, 138, 715, 3, 2, 2, 2, 140, 717, 3, 2, 2, 2, 142, 724, 3, 2, 2, 2, 144, 732, 3, 2, 2, 2, 146, 748, 3, 2, 2, 2, 148, 750, 3, 2, 2, 2, 150, 753, 3, 2, 2, 2, 152, 761, 3, 2, 2, 2, 154, 767, 3, 2, 2, 2, 156, 777, 3, 2, 2, 2, 158, 788, 3, 2, 2, 2, 160, 790, 3, 2, 2, 2, 162, 806, 3, 2, 2, 2, 164, 808, 3, 2, 2, 2, 166, 839, 3, 2, 2, 2, 168, 841, 3, 2, 2, 2, 170, 844, 3, 2, 2, 2, 172, 846, 3, 2, 2, 2, 174, 863, 3, 2, 2, 2, 176, 870, 3, 2, 2, 2, 178, 887, 3, 2, 2, 2, 180, 903, 3, 2, 2, 2, 182, 905, 3, 2, 2, 2, 184, 914, 3, 2, 2, 2, 186, 929, 3, 2, 2, 2, 188, 937, 3, 2, 2, 2, 190, 941, 3, 2, 2, 2, 192, 951, 3, 2, 2, 2, 194, 953, 3, 2, 2, 2, 196, 955, 3, 2, 2, 2, 198, 970, 3, 2, 2, 2, 200, 974, 3, 2, 2, 2, 202, 976, 3, 2, 2, 2, 204, 980, 3, 2, 2, 2, 206, 1002, 3, 2, 2, 2, 208, 1006, 3, 2, 2, 2, 210, 215, 5, 4, 3, 2, 211, 214, 5, 10, 6, 2, 212, 214, 5, 12, 7, 2, 213, 211, 3, 2, 2, 2, 213, 212, 3, 2, 2, 2, 214, 217, 3, 2, 2, 2, 215, 213, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 3, 3, 2, 2, 2, 217, 215, 3, 2, 2, 2, 218, 220, 5, 6, 4, 2, 219, 218, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 224, 3, 2, 2, 2, 221, 223, 5, 8, 5, 2, 222, 221, 3, 2, 2, 2, 223, 226, 3, 2, 2, 2, 224, 222, 3, 2, 2, 2, 224, 225, 3, 2, 2, 2, 225, 5, 3, 2, 2, 2, 226, 224, 3, 2, 2, 2, 227, 228, 7, 3, 2, 2, 228, 229, 9, 2, 2, 2, 229, 230, 7, 107, 2, 2, 230, 7, 3, 2, 2, 2, 231, 232, 7, 4, 2, 2, 232, 233, 7, 121, 2, 2, 233, 234, 7, 107, 2, 2, 234, 9, 3, 2, 2, 2, 235, 242, 5, 176, 89, 2, 236, 242, 5, 172, 87, 2, 237, 242, 5, 82, 42, 2, 238, 242, 5, 200, 101, 2, 239, 242, 5, 18, 10, 2, 240, 242, 5, 184, 93, 2, 241, 235, 3, 2, 2, 2, 241, 236, 3, 2, 2, 2, 241, 237, 3, 2, 2, 2, 241, 238, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 241, 240, 3, 2, 2, 2, 242, 11, 3, 2, 2, 2, 243, 255, 5, 116, 59, 2, 244, 255, 5, 24, 13, 2, 245, 255, 5, 20, 11, 2, 246, 255, 5, 160, 81, 2, 247, 255, 5, 164, 83, 2, 248, 255, 5, 168, 85, 2, 249, 255, 5, 72, 37, 2, 250, 255, 5, 92, 47, 2, 251, 255, 5, 178, 90, 2, 252, 255, 5, 16, 9, 2, 253, 255, 5, 14, 8, 2, 254, 243, 3, 2, 2, 2, 254, 244, 3, 2, 2, 2, 254, 245, 3, 2, 2, 2, 254, 246, 3, 2, 2, 2, 254, 247, 3, 2, 2, 2, 254, 248, 3, 2, 2, 2, 254, 249, 3, 2, 2, 2, 254, 250, 3, 2, 2, 2, 254, 251, 3, 2, 2, 2, 254, 252, 3, 2, 2, 2, 254, 253, 3, 2, 2, 2, 255, 13, 3, 2, 2, 2, 256, 257, 7, 5, 2, 2, 257, 258, 5, 158, 80, 2, 258, 259, 7, 6, 2, 2, 259, 260, 5, 158, 80, 2, 260, 15, 3, 2, 2, 2, 261, 262, 7, 7, 2, 2, 262, 263, 7, 104, 2, 2, 263, 264, 5, 144, 73, 2, 264, 265, 7, 105, 2, 2, 265, 266, 7, 107, 2, 2, 266, 17, 3, 2, 2, 2, 267, 268, 5, 38, 20, 2, 268, 269, 7, 107, 2, 2, 269, 19, 3, 2, 2, 2, 270, 273, 5, 64, 33, 2, 271, 273, 5, 54, 28, 2, 272, 270, 3, 2, 2, 2, 272, 271, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 275, 7, 107, 2, 2, 275, 21, 3, 2, 2, 2, 276, 277, 5, 74, 38, 2, 277, 280, 5, 150, 76, 2, 278, 281, 5, 118, 60, 2, 279, 281, 5, 74, 38, 2, 280, 278, 3, 2, 2, 2, 280, 279, 3, 2, 2, 2, 281, 23, 3, 2, 2, 2, 282, 285, 5, 22, 12, 2, 283, 285, 5, 100, 51, 2, 284, 282, 3, 2, 2, 2, 284, 283, 3, 2, 2, 2, 285, 286, 3, 2, 2, 2, 286, 287, 7, 107, 2, 2, 287, 25, 3, 2, 2, 2, 288, 289, 7, 111, 2, 2, 289, 290, 5, 52, 27, 2, 290, 27, 3, 2, 2, 2, 291, 292, 7, 100, 2, 2, 292, 293, 5, 118, 60, 2, 293, 294, 7, 101, 2, 2, 294, 29, 3, 2, 2, 2, 295, 296, 7, 100, 2, 2, 296, 297, 5, 118, 60, 2, 297, 298, 7, 109, 2, 2, 298, 299, 5, 118, 60, 2, 299, 300, 7, 101, 2, 2, 300, 31, 3, 2, 2, 2, 301, 302, 7, 118, 2, 2, 302, 304, 7, 109, 2, 2, 303, 301, 3, 2, 2, 2, 304, 307, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 308, 3, 2, 2, 2, 307, 305, 3, 2, 2, 2, 308, 309, 7, 118, 2, 2, 309, 33, 3, 2, 2, 2, 310, 311, 7, 106, 2, 2, 311, 312, 7, 118, 2, 2, 312, 35, 3, 2, 2, 2, 313, 314, 9, 3, 2, 2, 314, 37, 3, 2, 2, 2, 315, 316, 7, 9, 2, 2, 316, 318, 7, 118, 2, 2, 317, 319, 5, 28, 15, 2, 318, 317, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 326, 3, 2, 2, 2, 320, 322, 7, 8, 2, 2, 321, 323, 5, 28, 15, 2, 322, 321, 3, 2, 2, 2, 322, 323, 3, 2, 2, 2, 323, 324, 3, 2, 2, 2, 324, 326, 7, 118, 2, 2, 325, 315, 3, 2, 2, 2, 325, 320, 3, 2, 2, 2, 326, 39, 3, 2, 2, 2, 327, 329, 5, 36, 19, 2, 328, 330, 5, 28, 15, 2, 329, 328, 3, 2, 2, 2, 329, 330, 3, 2, 2, 2, 330, 331, 3, 2, 2, 2, 331, 332, 5, 34, 18, 2, 332, 41, 3, 2, 2, 2, 333, 334, 5, 40, 21, 2, 334, 335, 7, 109, 2, 2, 335, 337, 3, 2, 2, 2, 336, 333, 3, 2, 2, 2, 337, 340, 3, 2, 2, 2, 338, 336, 3, 2, 2, 2, 338, 339, 3, 2, 2, 2, 339, 341, 3, 2, 2, 2, 340, 338, 3, 2, 2, 2, 341, 342, 5, 40, 21, 2, 342, 43, 3, 2, 2, 2, 343, 344, 9, 4, 2, 2, 344, 45, 3, 2, 2, 2, 345, 346, 9, 5, 2, 2, 346, 47, 3, 2, 2, 2, 347, 348, 7, 16, 2, 2, 348, 49, 3, 2, 2, 2, 349, 356, 7, 17, 2, 2, 350, 356, 5, 186, 94, 2, 351, 356, 7, 12, 2, 2, 352, 356, 7, 18, 2, 2, 353, 356, 7, 14, 2, 2, 354, 356, 7, 19, 2, 2, 355, 349, 3, 2, 2, 2, 355, 350, 3, 2, 2, 2, 355, 351, 3, 2, 2, 2, 355, 352, 3, 2, 2, 2, 355, 353, 3, 2, 2, 2, 355, 354, 3, 2, 2, 2, 356, 51, 3, 2, 2, 2, 357, 358, 5, 46, 24, 2, 358, 359, 5, 28, 15, 2, 359, 369, 3, 2, 2, 2, 360, 361, 5, 48, 25, 2, 361, 362, 5, 30, 16, 2, 362, 369, 3, 2, 2, 2, 363, 369, 5, 50, 26, 2, 364, 366, 5, 44, 23, 2, 365, 367, 5, 28, 15, 2, 366, 365, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 369, 3, 2, 2, 2, 368, 357, 3, 2, 2, 2, 368, 360, 3, 2, 2, 2, 368, 363, 3, 2, 2, 2, 368, 364, 3, 2, 2, 2, 369, 53, 3, 2, 2, 2, 370, 371, 7, 20, 2, 2, 371, 372, 5, 152, 77, 2, 372, 55, 3, 2, 2, 2, 373, 374, 5, 46, 24, 2, 374, 377, 5, 28, 15, 2, 375, 378, 5, 32, 17, 2, 376, 378, 5, 152, 77, 2, 377, 375, 3, 2, 2, 2, 377, 376, 3, 2, 2, 2, 378, 57, 3, 2, 2, 2, 379, 380, 5, 48, 25, 2, 380, 383, 5, 30, 16, 2, 381, 384, 5, 32, 17, 2, 382, 384, 5, 152, 77, 2, 383, 381, 3, 2, 2, 2, 383, 382, 3, 2, 2, 2, 384, 59, 3, 2, 2, 2, 385, 388, 5, 50, 26, 2, 386, 389, 5, 32, 17, 2, 387, 389, 5, 152, 77, 2, 388, 386, 3, 2, 2, 2, 388, 387, 3, 2, 2, 2, 389, 61, 3, 2, 2, 2, 390, 393, 5, 44, 23, 2, 391, 394, 5, 76, 39, 2, 392, 394, 5, 78, 40, 2, 393, 391, 3, 2, 2, 2, 393, 392, 3, 2, 2, 2, 394, 63, 3, 2, 2, 2, 395, 400, 5, 56, 29, 2, 396, 400, 5, 58, 30, 2, 397, 400, 5, 60, 31, 2, 398, 400, 5, 62, 32, 2, 399, 395, 3, 2, 2, 2, 399, 396, 3, 2, 2, 2, 399, 397, 3, 2, 2, 2, 399, 398, 3, 2, 2, 2, 400, 65, 3, 2, 2, 2, 401, 402, 5, 52, 27, 2, 402, 403, 7, 109, 2, 2, 403, 405, 3, 2, 2, 2, 404, 401, 3, 2, 2, 2, 405, 408, 3, 2, 2, 2, 406, 404, 3, 2, 2, 2, 406, 407, 3, 2, 2, 2, 407, 409, 3, 2, 2, 2, 408, 406, 3, 2, 2, 2, 409, 410, 5, 52, 27, 2, 410, 67, 3, 2, 2, 2, 411, 412, 5, 52, 27, 2, 412, 413, 5, 34, 18, 2, 413, 69, 3, 2, 2, 2, 414, 415, 5, 68, 35, 2, 415, 416, 7, 109, 2, 2, 416, 418, 3, 2, 2, 2, 417, 414, 3, 2, 2, 2, 418, 421, 3, 2, 2, 2, 419, 417, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 422, 3, 2, 2, 2, 421, 419, 3, 2, 2, 2, 422, 423, 5, 68, 35, 2, 423, 71, 3, 2, 2, 2, 424, 425, 7, 21, 2, 2, 425, 426, 7, 118, 2, 2, 426, 427, 7, 110, 2, 2, 427, 428, 5, 74, 38, 2, 428, 429, 7, 107, 2, 2, 429, 73, 3, 2, 2, 2, 430, 431, 8, 38, 1, 2, 431, 432, 7, 118, 2, 2, 432, 441, 5, 80, 41, 2, 433, 438, 7, 118, 2, 2, 434, 435, 7, 100, 2, 2, 435, 436, 5, 142, 72, 2, 436, 437, 7, 101, 2, 2, 437, 439, 3, 2, 2, 2, 438, 434, 3, 2, 2, 2, 438, 439, 3, 2, 2, 2, 439, 441, 3, 2, 2, 2, 440, 430, 3, 2, 2, 2, 440, 433, 3, 2, 2, 2, 441, 447, 3, 2, 2, 2, 442, 443, 12, 3, 2, 2, 443, 444, 7, 22, 2, 2, 444, 446, 5, 74, 38, 4, 445, 442, 3, 2, 2, 2, 446, 449, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 75, 3, 2, 2, 2, 449, 447, 3, 2, 2, 2, 450, 451, 5, 74, 38, 2, 451, 452, 7, 109, 2, 2, 452, 454, 3, 2, 2, 2, 453, 450, 3, 2, 2, 2, 454, 457, 3, 2, 2, 2, 455, 453, 3, 2, 2, 2, 455, 456, 3, 2, 2, 2, 456, 458, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 458, 459, 5, 74, 38, 2, 459, 77, 3, 2, 2, 2, 460, 461, 5, 74, 38, 2, 461, 462, 5, 148, 75, 2, 462, 463, 7, 109, 2, 2, 463, 465, 3, 2, 2, 2, 464, 460, 3, 2, 2, 2, 465, 468, 3, 2, 2, 2, 466, 464, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 469, 3, 2, 2, 2, 468, 466, 3, 2, 2, 2, 469, 470, 5, 74, 38, 2, 470, 471, 5, 148, 75, 2, 471, 79, 3, 2, 2, 2, 472, 474, 7, 100, 2, 2, 473, 475, 5, 118, 60, 2, 474, 473, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2, 476, 478, 7, 106, 2, 2, 477, 479, 5, 118, 60, 2, 478, 477, 3, 2, 2, 2, 478, 479, 3, 2, 2, 2, 479, 482, 3, 2, 2, 2, 480, 481, 7, 106, 2, 2, 481, 483, 5, 118, 60, 2, 482, 480, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 485, 7, 101, 2, 2, 485, 81, 3, 2, 2, 2, 486, 487, 7, 23, 2, 2, 487, 488, 5, 84, 43, 2, 488, 489, 5, 86, 44, 2, 489, 83, 3, 2, 2, 2, 490, 496, 9, 6, 2, 2, 491, 493, 7, 104, 2, 2, 492, 494, 5, 32, 17, 2, 493, 492, 3, 2, 2, 2, 493, 494, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 497, 7, 105, 2, 2, 496, 491, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 499, 5, 32, 17, 2, 499, 85, 3, 2, 2, 2, 500, 506, 7, 102, 2, 2, 501, 505, 5, 14, 8, 2, 502, 505, 5, 92, 47, 2, 503, 505, 5, 88, 45, 2, 504, 501, 3, 2, 2, 2, 504, 502, 3, 2, 2, 2, 504, 503, 3, 2, 2, 2, 505, 508, 3, 2, 2, 2, 506, 504, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 509, 3, 2, 2, 2, 508, 506, 3, 2, 2, 2, 509, 510, 7, 103, 2, 2, 510, 87, 3, 2, 2, 2, 511, 512, 5, 162, 82, 2, 512, 513, 5, 90, 46, 2, 513, 89, 3, 2, 2, 2, 514, 524, 5, 92, 47, 2, 515, 519, 7, 102, 2, 2, 516, 518, 5, 92, 47, 2, 517, 516, 3, 2, 2, 2, 518, 521, 3, 2, 2, 2, 519, 517, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 522, 3, 2, 2, 2, 521, 519, 3, 2, 2, 2, 522, 524, 7, 103, 2, 2, 523, 514, 3, 2, 2, 2, 523, 515, 3, 2, 2, 2, 524, 91, 3, 2, 2, 2, 525, 526, 5, 94, 48, 2, 526, 527, 7, 107, 2, 2, 527, 530, 3, 2, 2, 2, 528, 530, 5, 198, 100, 2, 529, 525, 3, 2, 2, 2, 529, 528, 3, 2, 2, 2, 530, 93, 3, 2, 2, 2, 531, 536, 5, 106, 54, 2, 532, 536, 5, 96, 49, 2, 533, 536, 5, 98, 50, 2, 534, 536, 5, 102, 52, 2, 535, 531, 3, 2, 2, 2, 535, 532, 3, 2, 2, 2, 535, 533, 3, 2, 2, 2, 535, 534, 3, 2, 2, 2, 536, 95, 3, 2, 2, 2, 537, 538, 7, 26, 2, 2, 538, 539, 7, 104, 2, 2, 539, 540, 7, 118, 2, 2, 540, 541, 7, 105, 2, 2, 541, 97, 3, 2, 2, 2, 542, 543, 7, 27, 2, 2, 543, 544, 5, 76, 39, 2, 544, 99, 3, 2, 2, 2, 545, 548, 5, 98, 50, 2, 546, 547, 7, 111, 2, 2, 547, 549, 5, 76, 39, 2, 548, 546, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 555, 3, 2, 2, 2, 550, 551, 5, 76, 39, 2, 551, 552, 7, 110, 2, 2, 552, 553, 5, 98, 50, 2, 553, 555, 3, 2, 2, 2, 554, 545, 3, 2, 2, 2, 554, 550, 3, 2, 2, 2, 555, 101, 3, 2, 2, 2, 556, 557, 7, 28, 2, 2, 557, 558, 5, 76, 39, 2, 558, 103, 3, 2, 2, 2, 559, 567, 7, 29, 2, 2, 560, 561, 7, 30, 2, 2, 561, 562, 7, 104, 2, 2, 562, 563, 5, 118, 60, 2, 563, 564, 7, 105, 2, 2, 564, 567, 3, 2, 2, 2, 565, 567, 7, 31, 2, 2, 566, 559, 3, 2, 2, 2, 566, 560, 3, 2, 2, 2, 566, 565, 3, 2, 2, 2, 567, 568, 3, 2, 2, 2, 568, 569, 7, 32, 2, 2, 569, 105, 3, 2, 2, 2, 570, 576, 5, 108, 55, 2, 571, 573, 7, 104, 2, 2, 572, 574, 5, 142, 72, 2, 573, 572, 3, 2, 2, 2, 573, 574, 3, 2, 2, 2, 574, 575, 3, 2, 2, 2, 575, 577, 7, 105, 2, 2, 576, 571, 3, 2, 2, 2, 576, 577, 3, 2, 2, 2, 577, 578, 3, 2, 2, 2, 578, 579, 5, 76, 39, 2, 579, 107, 3, 2, 2, 2, 580, 588, 7, 24, 2, 2, 581, 588, 7, 25, 2, 2, 582, 588, 7, 33, 2, 2, 583, 588, 7, 118, 2, 2, 584, 585, 5, 104, 53, 2, 585, 586, 5, 108, 55, 2, 586, 588, 3, 2, 2, 2, 587, 580, 3, 2, 2, 2, 587, 581, 3, 2, 2, 2, 587, 582, 3, 2, 2, 2, 587, 583, 3, 2, 2, 2, 587, 584, 3, 2, 2, 2, 588, 109, 3, 2, 2, 2, 589, 590, 9, 7, 2, 2, 590, 111, 3, 2, 2, 2, 591, 592, 9, 8, 2, 2, 592, 113, 3, 2, 2, 2, 593, 594, 9, 9, 2, 2, 594, 115, 3, 2, 2, 2, 595, 596, 5, 118, 60, 2, 596, 597, 7, 107, 2, 2, 597, 117, 3, 2, 2, 2, 598, 599, 8, 60, 1, 2, 599, 603, 5, 132, 67, 2, 600, 603, 5, 130, 66, 2, 601, 603, 5, 120, 61, 2, 602, 598, 3, 2, 2, 2, 602, 600, 3, 2, 2, 2, 602, 601, 3, 2, 2, 2, 603, 609, 3, 2, 2, 2, 604, 605, 12, 3, 2, 2, 605, 606, 7, 43, 2, 2, 606, 608, 5, 120, 61, 2, 607, 604, 3, 2, 2, 2, 608, 611, 3, 2, 2, 2, 609, 607, 3, 2, 2, 2, 609, 610, 3, 2, 2, 2, 610, 119, 3, 2, 2, 2, 611, 609, 3, 2, 2, 2, 612, 613, 8, 61, 1, 2, 613, 614, 5, 122, 62, 2, 614, 620, 3, 2, 2, 2, 615, 616, 12, 3, 2, 2, 616, 617, 7, 44, 2, 2, 617, 619, 5, 122, 62, 2, 618, 615, 3, 2, 2, 2, 619, 622, 3, 2, 2, 2, 620, 618, 3, 2, 2, 2, 620, 621, 3, 2, 2, 2, 621, 121, 3, 2, 2, 2, 622, 620, 3, 2, 2, 2, 623, 624, 8, 62, 1, 2, 624, 625, 5, 124, 63, 2, 625, 631, 3, 2, 2, 2, 626, 627, 12, 3, 2, 2, 627, 628, 7, 45, 2, 2, 628, 630, 5, 124, 63, 2, 629, 626, 3, 2, 2, 2, 630, 633, 3, 2, 2, 2, 631, 629, 3, 2, 2, 2, 631, 632, 3, 2, 2, 2, 632, 123, 3, 2, 2, 2, 633, 631, 3, 2, 2, 2, 634, 635, 8, 63, 1, 2, 635, 636, 5, 126, 64, 2, 636, 642, 3, 2, 2, 2, 637, 638, 12, 3, 2, 2, 638, 639, 9, 10, 2, 2, 639, 641, 5, 126, 64, 2, 640, 637, 3, 2, 2, 2, 641, 644, 3, 2, 2, 2, 642, 640, 3, 2, 2, 2, 642, 643, 3, 2, 2, 2, 643, 125, 3, 2, 2, 2, 644, 642, 3, 2, 2, 2, 645, 646, 8, 64, 1, 2, 646, 647, 5, 128, 65, 2, 647, 653, 3, 2, 2, 2, 648, 649, 12, 3, 2, 2, 649, 650, 9, 11, 2, 2, 650, 652, 5, 128, 65, 2, 651, 648, 3, 2, 2, 2, 652, 655, 3, 2, 2, 2, 653, 651, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 127, 3, 2, 2, 2, 655, 653, 3, 2, 2, 2, 656, 657, 8, 65, 1, 2, 657, 660, 5, 132, 67, 2, 658, 660, 5, 130, 66, 2, 659, 656, 3, 2, 2, 2, 659, 658, 3, 2, 2, 2, 660, 669, 3, 2, 2, 2, 661, 662, 12, 3, 2, 2, 662, 665, 9, 12, 2, 2, 663, 666, 5, 132, 67, 2, 664, 666, 5, 130, 66, 2, 665, 663, 3, 2, 2, 2, 665, 664, 3, 2, 2, 2, 666, 668, 3, 2, 2, 2, 667, 661, 3, 2, 2, 2, 668, 671, 3, 2, 2, 2, 669, 667, 3, 2, 2, 2, 669, 670, 3, 2, 2, 2, 670, 129, 3, 2, 2, 2, 671, 669, 3, 2, 2, 2, 672, 673, 5, 110, 56, 2, 673, 674, 5, 132, 67, 2, 674, 131, 3, 2, 2, 2, 675, 676, 8, 67, 1, 2, 676, 692, 7, 114, 2, 2, 677, 692, 7, 117, 2, 2, 678, 692, 7, 119, 2, 2, 679, 692, 7, 118, 2, 2, 680, 692, 7, 121, 2, 2, 681, 692, 5, 136, 69, 2, 682, 692, 5, 174, 88, 2, 683, 692, 5, 182, 92, 2, 684, 692, 5, 190, 96, 2, 685, 686, 7, 112, 2, 2, 686, 692, 5, 132, 67, 6, 687, 688, 7, 104, 2, 2, 688, 689, 5, 118, 60, 2, 689, 690, 7, 105, 2, 2, 690, 692, 3, 2, 2, 2, 691, 675, 3, 2, 2, 2, 691, 677, 3, 2, 2, 2, 691, 678, 3, 2, 2, 2, 691, 679, 3, 2, 2, 2, 691, 680, 3, 2, 2, 2, 691, 681, 3, 2, 2, 2, 691, 682, 3, 2, 2, 2, 691, 683, 3, 2, 2, 2, 691, 684, 3, 2, 2, 2, 691, 685, 3, 2, 2, 2, 691, 687, 3, 2, 2, 2, 692, 702, 3, 2, 2, 2, 693, 694, 12, 4, 2, 2, 694, 695, 7, 100, 2, 2, 695, 696, 5, 118, 60, 2, 696, 697, 7, 101, 2, 2, 697, 701, 3, 2, 2, 2, 698, 699, 12, 3, 2, 2, 699, 701, 5, 134, 68, 2, 700, 693, 3, 2, 2, 2, 700, 698, 3, 2, 2, 2, 701, 704, 3, 2, 2, 2, 702, 700, 3, 2, 2, 2, 702, 703, 3, 2, 2, 2, 703, 133, 3, 2, 2, 2, 704, 702, 3, 2, 2, 2, 705, 706, 9, 13, 2, 2, 706, 135, 3, 2, 2, 2, 707, 710, 5, 138, 70, 2, 708, 710, 5, 140, 71, 2, 709, 707, 3, 2, 2, 2, 709, 708, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 712, 7, 104, 2, 2, 712, 713, 5, 142, 72, 2, 713, 714, 7, 105, 2, 2, 714, 137, 3, 2, 2, 2, 715, 716, 9, 14, 2, 2, 716, 139, 3, 2, 2, 2, 717, 718, 5, 52, 27, 2, 718, 141, 3, 2, 2, 2, 719, 720, 5, 118, 60, 2, 720, 721, 7, 109, 2, 2, 721, 723, 3, 2, 2, 2, 722, 719, 3, 2, 2, 2, 723, 726, 3, 2, 2, 2, 724, 722, 3, 2, 2, 2, 724, 725, 3, 2, 2, 2, 725, 727, 3, 2, 2, 2, 726, 724, 3, 2, 2, 2, 727, 728, 5, 118, 60, 2, 728, 143, 3, 2, 2, 2, 729, 730, 8, 73, 1, 2, 730, 733, 5, 154, 78, 2, 731, 733, 5, 146, 74, 2, 732, 729, 3, 2, 2, 2, 732, 731, 3, 2, 2, 2, 733, 740, 3, 2, 2, 2, 734, 735, 12, 3, 2, 2, 735, 736, 5, 114, 58, 2, 736, 737, 5, 146, 74, 2, 737, 739, 3, 2, 2, 2, 738, 734, 3, 2, 2, 2, 739, 742, 3, 2, 2, 2, 740, 738, 3, 2, 2, 2, 740, 741, 3, 2, 2, 2, 741, 145, 3, 2, 2, 2, 742, 740, 3, 2, 2, 2, 743, 749, 5, 118, 60, 2, 744, 745, 5, 118, 60, 2, 745, 746, 5, 112, 57, 2, 746, 747, 5, 118, 60, 2, 747, 749, 3, 2, 2, 2, 748, 743, 3, 2, 2, 2, 748, 744, 3, 2, 2, 2, 749, 147, 3, 2, 2, 2, 750, 751, 7, 110, 2, 2, 751, 752, 5, 118, 60, 2, 752, 149, 3, 2, 2, 2, 753, 754, 9, 15, 2, 2, 754, 151, 3, 2, 2, 2, 755, 756, 7, 118, 2, 2, 756, 757, 5, 148, 75, 2, 757, 758, 7, 109, 2, 2, 758, 760, 3, 2, 2, 2, 759, 755, 3, 2, 2, 2, 760, 763, 3, 2, 2, 2, 761, 759, 3, 2, 2, 2, 761, 762, 3, 2, 2, 2, 762, 764, 3, 2, 2, 2, 763, 761, 3, 2, 2, 2, 764, 765, 7, 118, 2, 2, 765, 766, 5, 148, 75, 2, 766, 153, 3, 2, 2, 2, 767, 768, 7, 118, 2, 2, 768, 769, 7, 77, 2, 2, 769, 770, 5, 156, 79, 2, 770, 155, 3, 2, 2, 2, 771, 772, 7, 102, 2, 2, 772, 773, 5, 142, 72, 2, 773, 774, 7, 103, 2, 2, 774, 778, 3, 2, 2, 2, 775, 778, 5, 80, 41, 2, 776, 778, 7, 118, 2, 2, 777, 771, 3, 2, 2, 2, 777, 775, 3, 2, 2, 2, 777, 776, 3, 2, 2, 2, 778, 157, 3, 2, 2, 2, 779, 789, 5, 12, 7, 2, 780, 784, 7, 102, 2, 2, 781, 783, 5, 12, 7, 2, 782, 781, 3, 2, 2, 2, 783, 786, 3, 2, 2, 2, 784, 782, 3, 2, 2, 2, 784, 785, 3, 2, 2, 2, 785, 787, 3, 2, 2, 2, 786, 784, 3, 2, 2, 2, 787, 789, 7, 103, 2, 2, 788, 779, 3, 2, 2, 2, 788, 780, 3, 2, 2, 2, 789, 159, 3, 2, 2, 2, 790, 791, 7, 78, 2, 2, 791, 792, 7, 104, 2, 2, 792, 793, 5, 144, 73, 2, 793, 794, 7, 105, 2, 2, 794, 797, 5, 158, 80, 2, 795, 796, 7, 79, 2, 2, 796, 798, 5, 158, 80, 2, 797, 795, 3, 2, 2, 2, 797, 798, 3, 2, 2, 2, 798, 161, 3, 2, 2, 2, 799, 800, 7, 80, 2, 2, 800, 807, 5, 154, 78, 2, 801, 802, 7, 81, 2, 2, 802, 803, 7, 104, 2, 2, 803, 804, 5, 144, 73, 2, 804, 805, 7, 105, 2, 2, 805, 807, 3, 2, 2, 2, 806, 799, 3, 2, 2, 2, 806, 801, 3, 2, 2, 2, 807, 163, 3, 2, 2, 2, 808, 809, 5, 162, 82, 2, 809, 810, 5, 158, 80, 2, 810, 165, 3, 2, 2, 2, 811, 812, 7, 80, 2, 2, 812, 813, 7, 104, 2, 2, 813, 814, 5, 52, 27, 2, 814, 815, 7, 118, 2, 2, 815, 816, 5, 148, 75, 2, 816, 817, 7, 107, 2, 2, 817, 818, 5, 144, 73, 2, 818, 819, 7, 107, 2, 2, 819, 820, 5, 118, 60, 2, 820, 821, 7, 105, 2, 2, 821, 822, 7, 102, 2, 2, 822, 823, 5, 158, 80, 2, 823, 824, 7, 103, 2, 2, 824, 840, 3, 2, 2, 2, 825, 826, 7, 80, 2, 2, 826, 827, 7, 104, 2, 2, 827, 828, 5, 52, 27, 2, 828, 829, 7, 118, 2, 2, 829, 830, 7, 106, 2, 2, 830, 831, 7, 82, 2, 2, 831, 832, 7, 104, 2, 2, 832, 833, 5, 118, 60, 2, 833, 834, 7, 105, 2, 2, 834, 835, 7, 105, 2, 2, 835, 836, 7, 102, 2, 2, 836, 837, 5, 158, 80, 2, 837, 838, 7, 103, 2, 2, 838, 840, 3, 2, 2, 2, 839, 811, 3, 2, 2, 2, 839, 825, 3, 2, 2, 2, 840, 167, 3, 2, 2, 2, 841, 842, 5, 170, 86, 2, 842, 843, 7, 107, 2, 2, 843, 169, 3, 2, 2, 2, 844, 845, 9, 16, 2, 2, 845, 171, 3, 2, 2, 2, 846, 847, 7, 86, 2, 2, 847, 853, 7, 118, 2, 2, 848, 850, 7, 104, 2, 2, 849, 851, 5, 66, 34, 2, 850, 849, 3, 2, 2, 2, 850, 851, 3, 2, 2, 2, 851, 852, 3, 2, 2, 2, 852, 854, 7, 105, 2, 2, 853, 848, 3, 2, 2, 2, 853, 854, 3, 2, 2, 2, 854, 856, 3, 2, 2, 2, 855, 857, 5, 26, 14, 2, 856, 855, 3, 2, 2, 2, 856, 857, 3, 2, 2, 2, 857, 859, 3, 2, 2, 2, 858, 860, 5, 52, 27, 2, 859, 858, 3, 2, 2, 2, 859, 860, 3, 2, 2, 2, 860, 861, 3, 2, 2, 2, 861, 862, 7, 107, 2, 2, 862, 173, 3, 2, 2, 2, 863, 864, 7, 118, 2, 2, 864, 866, 7, 104, 2, 2, 865, 867, 5, 142, 72, 2, 866, 865, 3, 2, 2, 2, 866, 867, 3, 2, 2, 2, 867, 868, 3, 2, 2, 2, 868, 869, 7, 105, 2, 2, 869, 175, 3, 2, 2, 2, 870, 871, 7, 87, 2, 2, 871, 877, 7, 118, 2, 2, 872, 874, 7, 104, 2, 2, 873, 875, 5, 70, 36, 2, 874, 873, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 876, 3, 2, 2, 2, 876, 878, 7, 105, 2, 2, 877, 872, 3, 2, 2, 2, 877, 878, 3, 2, 2, 2, 878, 880, 3, 2, 2, 2, 879, 881, 5, 42, 22, 2, 880, 879, 3, 2, 2, 2, 880, 881, 3, 2, 2, 2, 881, 883, 3, 2, 2, 2, 882, 884, 5, 26, 14, 2, 883, 882, 3, 2, 2, 2, 883, 884, 3, 2, 2, 2, 884, 885, 3, 2, 2, 2, 885, 886, 5, 180, 91, 2, 886, 177, 3, 2, 2, 2, 887, 888, 7, 88, 2, 2, 888, 889, 5, 12, 7, 2, 889, 179, 3, 2, 2, 2, 890, 894, 7, 102, 2, 2, 891, 893, 5, 12, 7, 2, 892, 891, 3, 2, 2, 2, 893, 896, 3, 2, 2, 2, 894, 892, 3, 2, 2, 2, 894, 895, 3, 2, 2, 2, 895, 898, 3, 2, 2, 2, 896, 894, 3, 2, 2, 2, 897, 899, 5, 178, 90, 2, 898, 897, 3, 2, 2, 2, 898, 899, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 904, 7, 103, 2, 2, 901, 902, 7, 113, 2, 2, 902, 904, 7, 107, 2, 2, 903, 890, 3, 2, 2, 2, 903, 901, 3, 2, 2, 2, 904, 181, 3, 2, 2, 2, 905, 906, 7, 118, 2, 2, 906, 908, 7, 104, 2, 2, 907, 909, 5, 142, 72, 2, 908, 907, 3, 2, 2, 2, 908, 909, 3, 2, 2, 2, 909, 910, 3, 2, 2, 2, 910, 911, 7, 105, 2, 2, 911, 912, 3, 2, 2, 2, 912, 913, 5, 142, 72, 2, 913, 183, 3, 2, 2, 2, 914, 915, 7, 89, 2, 2, 915, 919, 7, 102, 2, 2, 916, 918, 5, 12, 7, 2, 917, 916, 3, 2, 2, 2, 918, 921, 3, 2, 2, 2, 919, 917, 3, 2, 2, 2, 919, 920, 3, 2, 2, 2, 920, 922, 3, 2, 2, 2, 921, 919, 3, 2, 2, 2, 922, 923, 7, 103, 2, 2, 923, 185, 3, 2, 2, 2, 924, 930, 7, 90, 2, 2, 925, 927, 7, 91, 2, 2, 926, 928, 7, 117, 2, 2, 927, 926, 3, 2, 2, 2, 927, 928, 3, 2, 2, 2, 928, 930, 3, 2, 2, 2, 929, 924, 3, 2, 2, 2, 929, 925, 3, 2, 2, 2, 930, 187, 3, 2, 2, 2, 931, 932, 7, 92, 2, 2, 932, 933, 7, 118, 2, 2, 933, 938, 5, 86, 44, 2, 934, 935, 7, 93, 2, 2, 935, 936, 7, 120, 2, 2, 936, 938, 5, 86, 44, 2, 937, 931, 3, 2, 2, 2, 937, 934, 3, 2, 2, 2, 938, 189, 3, 2, 2, 2, 939, 942, 5, 192, 97, 2, 940, 942, 7, 94, 2, 2, 941, 939, 3, 2, 2, 2, 941, 940, 3, 2, 2, 2, 942, 191, 3, 2, 2, 2, 943, 952, 7, 120, 2, 2, 944, 945, 7, 66, 2, 2, 945, 948, 7, 104, 2, 2, 946, 949, 7, 118, 2, 2, 947, 949, 5, 86, 44, 2, 948, 946, 3, 2, 2, 2, 948, 947, 3, 2, 2, 2, 949, 950, 3, 2, 2, 2, 950, 952, 7, 105, 2, 2, 951, 943, 3, 2, 2, 2, 951, 944, 3, 2, 2, 2, 952, 193, 3, 2, 2, 2, 953, 954, 9, 17, 2, 2, 954, 195, 3, 2, 2, 2, 955, 961, 5, 194, 98, 2, 956, 958, 7, 104, 2, 2, 957, 959, 5, 142, 72, 2, 958, 957, 3, 2, 2, 2, 958, 959, 3, 2, 2, 2, 959, 960, 3, 2, 2, 2, 960, 962, 7, 105, 2, 2, 961, 956, 3, 2, 2, 2, 961, 962, 3, 2, 2, 2, 962, 963, 3, 2, 2, 2, 963, 964, 5, 28, 15, 2, 964, 965, 5, 76, 39, 2, 965, 197, 3, 2, 2, 2, 966, 967, 5, 196, 99, 2, 967, 968, 7, 107, 2, 2, 968, 971, 3, 2, 2, 2, 969, 971, 5, 188, 95, 2, 970, 966, 3, 2, 2, 2, 970, 969, 3, 2, 2, 2, 971, 199, 3, 2, 2, 2, 972, 975, 5, 202, 102, 2, 973, 975, 5, 204, 103, 2, 974, 972, 3, 2, 2, 2, 974, 973, 3, 2, 2, 2, 975, 201, 3, 2, 2, 2, 976, 977, 7, 97, 2, 2, 977, 978, 5, 206, 104, 2, 978, 979, 7, 107, 2, 2, 979, 203, 3, 2, 2, 2, 980, 981, 7, 98, 2, 2, 981, 987, 7, 118, 2, 2, 982, 984, 7, 104, 2, 2, 983, 985, 5, 208, 105, 2, 984, 983, 3, 2, 2, 2, 984, 985, 3, 2, 2, 2, 985, 986, 3, 2, 2, 2, 986, 988, 7, 105, 2, 2, 987, 982, 3, 2, 2, 2, 987, 988, 3, 2, 2, 2, 988, 989, 3, 2, 2, 2, 989, 991, 5, 32, 17, 2, 990, 992, 5, 26, 14, 2, 991, 990, 3, 2, 2, 2, 991, 992, 3, 2, 2, 2, 992, 993, 3, 2, 2, 2, 993, 997, 7, 102, 2, 2, 994, 996, 11, 2, 2, 2, 995, 994, 3, 2, 2, 2, 996, 999, 3, 2, 2, 2, 997, 998, 3, 2, 2, 2, 997, 995, 3, 2, 2, 2, 998, 1000, 3, 2, 2, 2, 999, 997, 3, 2, 2, 2, 1000, 1001, 7, 103, 2, 2, 1001, 205, 3, 2, 2, 2, 1002, 1003, 9, 18, 2, 2, 1003, 207, 3, 2, 2, 2, 1004, 1007, 5, 70, 36, 2, 1005, 1007, 5, 142, 72, 2, 1006, 1004, 3, 2, 2, 2, 1006, 1005, 3, 2, 2, 2, 1007, 209, 3, 2, 2, 2, 102, 213, 215, 219, 224, 241, 254, 272, 280, 284, 305, 318, 322, 325, 329, 338, 355, 366, 368, 377, 383, 388, 393, 399, 406, 419, 438, 440, 447, 455, 466, 474, 478, 482, 493, 496, 504, 506, 519, 523, 529, 535, 548, 554, 566, 573, 576, 587, 602, 609, 620, 631, 642, 653, 659, 665, 669, 691, 700, 702, 709, 724, 732, 740, 748, 761, 777, 784, 788, 797, 806, 839, 850, 853, 856, 859, 866, 874, 877, 880, 883, 894, 898, 903, 908, 919, 927, 929, 937, 941, 948, 951, 958, 961, 970, 974, 984, 987, 991, 997, 1006] \ No newline at end of file diff --git a/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.cpp b/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.cpp index 874dd865..372d4560 100644 --- a/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.cpp +++ b/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.cpp @@ -1,1050 +1,1054 @@ - -// Generated from qasm3.g4 by ANTLR 4.9.2 - - -#include "qasm3Lexer.h" - - -using namespace antlr4; - -using namespace qasm3; - -qasm3Lexer::qasm3Lexer(CharStream *input) : Lexer(input) { - _interpreter = new atn::LexerATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); -} - -qasm3Lexer::~qasm3Lexer() { - delete _interpreter; -} - -std::string qasm3Lexer::getGrammarFileName() const { - return "qasm3.g4"; -} - -const std::vector& qasm3Lexer::getRuleNames() const { - return _ruleNames; -} - -const std::vector& qasm3Lexer::getChannelNames() const { - return _channelNames; -} - -const std::vector& qasm3Lexer::getModeNames() const { - return _modeNames; -} - -const std::vector& qasm3Lexer::getTokenNames() const { - return _tokenNames; -} - -dfa::Vocabulary& qasm3Lexer::getVocabulary() const { - return _vocabulary; -} - -const std::vector qasm3Lexer::getSerializedATN() const { - return _serializedATN; -} - -const atn::ATN& qasm3Lexer::getATN() const { - return _atn; -} - - - - -// Static vars and initialization. -std::vector qasm3Lexer::_decisionToDFA; -atn::PredictionContextCache qasm3Lexer::_sharedContextCache; - -// We own the ATN which in turn owns the ATN states. -atn::ATN qasm3Lexer::_atn; -std::vector qasm3Lexer::_serializedATN; - -std::vector qasm3Lexer::_ruleNames = { - "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", - "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", - "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", - "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", - "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", - "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48", - "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56", - "T__57", "T__58", "T__59", "T__60", "T__61", "T__62", "T__63", "T__64", - "T__65", "T__66", "T__67", "T__68", "T__69", "T__70", "T__71", "T__72", - "T__73", "T__74", "T__75", "T__76", "T__77", "T__78", "T__79", "T__80", - "T__81", "T__82", "T__83", "T__84", "T__85", "T__86", "T__87", "T__88", - "T__89", "T__90", "T__91", "T__92", "T__93", "T__94", "T__95", "T__96", - "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "LPAREN", "RPAREN", "COLON", - "SEMICOLON", "DOT", "COMMA", "EQUALS", "ARROW", "MINUS", "EXTERN", "Constant", - "Whitespace", "Newline", "Digit", "Integer", "ValidUnicode", "Letter", - "FirstIdCharacter", "GeneralIdCharacter", "Identifier", "SciNotation", - "PlusMinus", "Float", "RealNumber", "TimeUnit", "TimingLiteral", "StringLiteral", - "LineComment", "BlockComment" -}; - -std::vector qasm3Lexer::_channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" -}; - -std::vector qasm3Lexer::_modeNames = { - "DEFAULT_MODE" -}; - -std::vector qasm3Lexer::_literalNames = { - "", "'OPENQASM'", "'include'", "'compute'", "'action'", "'QCOR_EXPECT_TRUE'", - "'qubit'", "'qreg'", "'bit'", "'creg'", "'int'", "'uint'", "'float'", - "'angle'", "'fixed'", "'bool'", "'int64_t'", "'double'", "'const'", "'let'", - "'||'", "'gate'", "'CX'", "'U'", "'gphase'", "'measure'", "'barrier'", - "'inv'", "'pow'", "'ctrl'", "'@'", "'reset'", "'~'", "'!'", "'>'", "'<'", - "'>='", "'<='", "'=='", "'!='", "'&&'", "'|'", "'^'", "'&'", "'<<'", "'>>'", - "'+'", "'*'", "'/'", "'%'", "'++'", "'--'", "'sin'", "'cos'", "'tan'", - "'arctan'", "'arccos'", "'arcsin'", "'exp'", "'ln'", "'sqrt'", "'rotl'", - "'rotr'", "'popcount'", "'lengthof'", "'+='", "'-='", "'*='", "'/='", - "'&='", "'|='", "'~='", "'^='", "'<<='", "'>>='", "'in'", "'if'", "'else'", - "'for'", "'while'", "'range'", "'break'", "'continue'", "'end'", "'kernel'", - "'def'", "'return'", "'#pragma'", "'length'", "'stretch'", "'boxas'", - "'boxto'", "'stretchinf'", "'delay'", "'rotary'", "'defcalgrammar'", "'defcal'", - "'\"openpulse\"'", "'['", "']'", "'{'", "'}'", "'('", "')'", "':'", "';'", - "'.'", "','", "'='", "'->'", "'-'", "'extern'" -}; - -std::vector qasm3Lexer::_symbolicNames = { - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", - "LPAREN", "RPAREN", "COLON", "SEMICOLON", "DOT", "COMMA", "EQUALS", "ARROW", - "MINUS", "EXTERN", "Constant", "Whitespace", "Newline", "Integer", "Identifier", - "RealNumber", "TimingLiteral", "StringLiteral", "LineComment", "BlockComment" -}; - -dfa::Vocabulary qasm3Lexer::_vocabulary(_literalNames, _symbolicNames); - -std::vector qasm3Lexer::_tokenNames; - -qasm3Lexer::Initializer::Initializer() { - // This code could be in a static initializer lambda, but VS doesn't allow access to private class members from there. - for (size_t i = 0; i < _symbolicNames.size(); ++i) { - std::string name = _vocabulary.getLiteralName(i); - if (name.empty()) { - name = _vocabulary.getSymbolicName(i); - } - - if (name.empty()) { - _tokenNames.push_back(""); - } else { - _tokenNames.push_back(name); - } - } - - static const uint16_t serializedATNSegment0[] = { - 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, - 0x2, 0x7b, 0x3ac, 0x8, 0x1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, - 0x4, 0x4, 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, - 0x7, 0x9, 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, - 0x9, 0xa, 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, - 0xd, 0x4, 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, - 0x4, 0x11, 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, - 0x4, 0x14, 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, - 0x4, 0x17, 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, - 0x4, 0x1a, 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, - 0x4, 0x1d, 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, - 0x4, 0x20, 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, - 0x4, 0x23, 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, - 0x4, 0x26, 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, - 0x4, 0x29, 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, - 0x4, 0x2c, 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, - 0x4, 0x2f, 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, - 0x4, 0x32, 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, - 0x4, 0x35, 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, - 0x4, 0x38, 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, - 0x4, 0x3b, 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, - 0x4, 0x3e, 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, - 0x4, 0x41, 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, - 0x4, 0x44, 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, - 0x4, 0x47, 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, - 0x4, 0x4a, 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, - 0x4, 0x4d, 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, - 0x4, 0x50, 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, - 0x4, 0x53, 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, - 0x4, 0x56, 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, - 0x4, 0x59, 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, - 0x4, 0x5c, 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, - 0x4, 0x5f, 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, - 0x4, 0x62, 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, - 0x4, 0x65, 0x9, 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67, 0x9, 0x67, - 0x4, 0x68, 0x9, 0x68, 0x4, 0x69, 0x9, 0x69, 0x4, 0x6a, 0x9, 0x6a, - 0x4, 0x6b, 0x9, 0x6b, 0x4, 0x6c, 0x9, 0x6c, 0x4, 0x6d, 0x9, 0x6d, - 0x4, 0x6e, 0x9, 0x6e, 0x4, 0x6f, 0x9, 0x6f, 0x4, 0x70, 0x9, 0x70, - 0x4, 0x71, 0x9, 0x71, 0x4, 0x72, 0x9, 0x72, 0x4, 0x73, 0x9, 0x73, - 0x4, 0x74, 0x9, 0x74, 0x4, 0x75, 0x9, 0x75, 0x4, 0x76, 0x9, 0x76, - 0x4, 0x77, 0x9, 0x77, 0x4, 0x78, 0x9, 0x78, 0x4, 0x79, 0x9, 0x79, - 0x4, 0x7a, 0x9, 0x7a, 0x4, 0x7b, 0x9, 0x7b, 0x4, 0x7c, 0x9, 0x7c, - 0x4, 0x7d, 0x9, 0x7d, 0x4, 0x7e, 0x9, 0x7e, 0x4, 0x7f, 0x9, 0x7f, - 0x4, 0x80, 0x9, 0x80, 0x4, 0x81, 0x9, 0x81, 0x4, 0x82, 0x9, 0x82, - 0x4, 0x83, 0x9, 0x83, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, - 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, - 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, - 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, - 0x3, 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, - 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, - 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, - 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, - 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, - 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, - 0x3, 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, - 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, - 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, - 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, - 0x3, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, - 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, - 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, - 0x11, 0x3, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, - 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, - 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, - 0x14, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, - 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, - 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, - 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, - 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x3, - 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, - 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, - 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, - 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, - 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, - 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, - 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, - 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, - 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, - 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x30, 0x3, - 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, - 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x35, 0x3, - 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, - 0x36, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x38, 0x3, - 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, - 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, - 0x39, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, - 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, - 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, - 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, - 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, - 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, - 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, - 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, - 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, - 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, - 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, - 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, - 0x4b, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4d, 0x3, - 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, - 0x4e, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, - 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x51, 0x3, - 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x52, 0x3, - 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3, - 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, - 0x53, 0x3, 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, - 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, - 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, - 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, - 0x58, 0x3, 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, - 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, - 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, - 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x3, - 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, - 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, - 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, - 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, - 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, - 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, - 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, - 0x60, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, - 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, - 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, - 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, 0x3, - 0x65, 0x3, 0x65, 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, - 0x68, 0x3, 0x68, 0x3, 0x69, 0x3, 0x69, 0x3, 0x6a, 0x3, 0x6a, 0x3, - 0x6b, 0x3, 0x6b, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6d, 0x3, 0x6d, 0x3, - 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x70, 0x3, - 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, - 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, - 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, - 0x71, 0x5, 0x71, 0x324, 0xa, 0x71, 0x3, 0x72, 0x6, 0x72, 0x327, 0xa, - 0x72, 0xd, 0x72, 0xe, 0x72, 0x328, 0x3, 0x72, 0x3, 0x72, 0x3, 0x73, - 0x6, 0x73, 0x32e, 0xa, 0x73, 0xd, 0x73, 0xe, 0x73, 0x32f, 0x3, 0x73, - 0x3, 0x73, 0x3, 0x74, 0x3, 0x74, 0x3, 0x75, 0x6, 0x75, 0x337, 0xa, - 0x75, 0xd, 0x75, 0xe, 0x75, 0x338, 0x3, 0x76, 0x3, 0x76, 0x3, 0x77, - 0x3, 0x77, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x5, 0x78, 0x342, 0xa, - 0x78, 0x3, 0x79, 0x3, 0x79, 0x5, 0x79, 0x346, 0xa, 0x79, 0x3, 0x7a, - 0x3, 0x7a, 0x7, 0x7a, 0x34a, 0xa, 0x7a, 0xc, 0x7a, 0xe, 0x7a, 0x34d, - 0xb, 0x7a, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7d, - 0x6, 0x7d, 0x354, 0xa, 0x7d, 0xd, 0x7d, 0xe, 0x7d, 0x355, 0x3, 0x7d, - 0x3, 0x7d, 0x7, 0x7d, 0x35a, 0xa, 0x7d, 0xc, 0x7d, 0xe, 0x7d, 0x35d, - 0xb, 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x7, 0x7d, 0x361, 0xa, 0x7d, 0xc, - 0x7d, 0xe, 0x7d, 0x364, 0xb, 0x7d, 0x5, 0x7d, 0x366, 0xa, 0x7d, 0x3, - 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x5, 0x7e, 0x36b, 0xa, 0x7e, 0x3, 0x7e, - 0x3, 0x7e, 0x5, 0x7e, 0x36f, 0xa, 0x7e, 0x3, 0x7f, 0x3, 0x7f, 0x3, - 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, - 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x5, 0x7f, 0x37c, 0xa, 0x7f, 0x3, 0x80, - 0x3, 0x80, 0x5, 0x80, 0x380, 0xa, 0x80, 0x3, 0x80, 0x3, 0x80, 0x3, - 0x81, 0x3, 0x81, 0x6, 0x81, 0x386, 0xa, 0x81, 0xd, 0x81, 0xe, 0x81, - 0x387, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x6, 0x81, 0x38d, 0xa, 0x81, - 0xd, 0x81, 0xe, 0x81, 0x38e, 0x3, 0x81, 0x5, 0x81, 0x392, 0xa, 0x81, - 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x7, 0x82, 0x398, 0xa, - 0x82, 0xc, 0x82, 0xe, 0x82, 0x39b, 0xb, 0x82, 0x3, 0x82, 0x3, 0x82, - 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x7, 0x83, 0x3a3, 0xa, - 0x83, 0xc, 0x83, 0xe, 0x83, 0x3a6, 0xb, 0x83, 0x3, 0x83, 0x3, 0x83, - 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x5, 0x387, 0x38e, 0x3a4, 0x2, 0x84, - 0x3, 0x3, 0x5, 0x4, 0x7, 0x5, 0x9, 0x6, 0xb, 0x7, 0xd, 0x8, 0xf, - 0x9, 0x11, 0xa, 0x13, 0xb, 0x15, 0xc, 0x17, 0xd, 0x19, 0xe, 0x1b, - 0xf, 0x1d, 0x10, 0x1f, 0x11, 0x21, 0x12, 0x23, 0x13, 0x25, 0x14, - 0x27, 0x15, 0x29, 0x16, 0x2b, 0x17, 0x2d, 0x18, 0x2f, 0x19, 0x31, - 0x1a, 0x33, 0x1b, 0x35, 0x1c, 0x37, 0x1d, 0x39, 0x1e, 0x3b, 0x1f, - 0x3d, 0x20, 0x3f, 0x21, 0x41, 0x22, 0x43, 0x23, 0x45, 0x24, 0x47, - 0x25, 0x49, 0x26, 0x4b, 0x27, 0x4d, 0x28, 0x4f, 0x29, 0x51, 0x2a, - 0x53, 0x2b, 0x55, 0x2c, 0x57, 0x2d, 0x59, 0x2e, 0x5b, 0x2f, 0x5d, - 0x30, 0x5f, 0x31, 0x61, 0x32, 0x63, 0x33, 0x65, 0x34, 0x67, 0x35, - 0x69, 0x36, 0x6b, 0x37, 0x6d, 0x38, 0x6f, 0x39, 0x71, 0x3a, 0x73, - 0x3b, 0x75, 0x3c, 0x77, 0x3d, 0x79, 0x3e, 0x7b, 0x3f, 0x7d, 0x40, - 0x7f, 0x41, 0x81, 0x42, 0x83, 0x43, 0x85, 0x44, 0x87, 0x45, 0x89, - 0x46, 0x8b, 0x47, 0x8d, 0x48, 0x8f, 0x49, 0x91, 0x4a, 0x93, 0x4b, - 0x95, 0x4c, 0x97, 0x4d, 0x99, 0x4e, 0x9b, 0x4f, 0x9d, 0x50, 0x9f, - 0x51, 0xa1, 0x52, 0xa3, 0x53, 0xa5, 0x54, 0xa7, 0x55, 0xa9, 0x56, - 0xab, 0x57, 0xad, 0x58, 0xaf, 0x59, 0xb1, 0x5a, 0xb3, 0x5b, 0xb5, - 0x5c, 0xb7, 0x5d, 0xb9, 0x5e, 0xbb, 0x5f, 0xbd, 0x60, 0xbf, 0x61, - 0xc1, 0x62, 0xc3, 0x63, 0xc5, 0x64, 0xc7, 0x65, 0xc9, 0x66, 0xcb, - 0x67, 0xcd, 0x68, 0xcf, 0x69, 0xd1, 0x6a, 0xd3, 0x6b, 0xd5, 0x6c, - 0xd7, 0x6d, 0xd9, 0x6e, 0xdb, 0x6f, 0xdd, 0x70, 0xdf, 0x71, 0xe1, - 0x72, 0xe3, 0x73, 0xe5, 0x74, 0xe7, 0x2, 0xe9, 0x75, 0xeb, 0x2, 0xed, - 0x2, 0xef, 0x2, 0xf1, 0x2, 0xf3, 0x76, 0xf5, 0x2, 0xf7, 0x2, 0xf9, - 0x2, 0xfb, 0x77, 0xfd, 0x2, 0xff, 0x78, 0x101, 0x79, 0x103, 0x7a, - 0x105, 0x7b, 0x3, 0x2, 0xb, 0x4, 0x2, 0xb, 0xb, 0x22, 0x22, 0x4, - 0x2, 0xc, 0xc, 0xf, 0xf, 0x3, 0x2, 0x32, 0x3b, 0x4, 0x2, 0x43, 0x5c, - 0x63, 0x7c, 0x4, 0x2, 0x26, 0x26, 0x61, 0x61, 0x4, 0x2, 0x47, 0x47, - 0x67, 0x67, 0x4, 0x2, 0x2d, 0x2d, 0x2f, 0x2f, 0x5, 0x2, 0xb, 0xc, - 0xf, 0xf, 0x24, 0x24, 0x5, 0x2, 0xb, 0xc, 0xf, 0xf, 0x29, 0x29, 0x4, - 0x3, 0x2, 0xd711, 0x3, 0xd711, 0x3, 0x24e, 0x2, 0x43, 0x2, 0x5c, - 0x2, 0x63, 0x2, 0x7c, 0x2, 0xac, 0x2, 0xac, 0x2, 0xb7, 0x2, 0xb7, - 0x2, 0xbc, 0x2, 0xbc, 0x2, 0xc2, 0x2, 0xd8, 0x2, 0xda, 0x2, 0xf8, - 0x2, 0xfa, 0x2, 0x2c3, 0x2, 0x2c8, 0x2, 0x2d3, 0x2, 0x2e2, 0x2, 0x2e6, - 0x2, 0x2ee, 0x2, 0x2ee, 0x2, 0x2f0, 0x2, 0x2f0, 0x2, 0x372, 0x2, - 0x376, 0x2, 0x378, 0x2, 0x379, 0x2, 0x37c, 0x2, 0x37f, 0x2, 0x381, - 0x2, 0x381, 0x2, 0x388, 0x2, 0x388, 0x2, 0x38a, 0x2, 0x38c, 0x2, - 0x38e, 0x2, 0x38e, 0x2, 0x390, 0x2, 0x3a3, 0x2, 0x3a5, 0x2, 0x3f7, - 0x2, 0x3f9, 0x2, 0x483, 0x2, 0x48c, 0x2, 0x531, 0x2, 0x533, 0x2, - 0x558, 0x2, 0x55b, 0x2, 0x55b, 0x2, 0x563, 0x2, 0x589, 0x2, 0x5d2, - 0x2, 0x5ec, 0x2, 0x5f2, 0x2, 0x5f4, 0x2, 0x622, 0x2, 0x64c, 0x2, - 0x670, 0x2, 0x671, 0x2, 0x673, 0x2, 0x6d5, 0x2, 0x6d7, 0x2, 0x6d7, - 0x2, 0x6e7, 0x2, 0x6e8, 0x2, 0x6f0, 0x2, 0x6f1, 0x2, 0x6fc, 0x2, - 0x6fe, 0x2, 0x701, 0x2, 0x701, 0x2, 0x712, 0x2, 0x712, 0x2, 0x714, - 0x2, 0x731, 0x2, 0x74f, 0x2, 0x7a7, 0x2, 0x7b3, 0x2, 0x7b3, 0x2, - 0x7cc, 0x2, 0x7ec, 0x2, 0x7f6, 0x2, 0x7f7, 0x2, 0x7fc, 0x2, 0x7fc, - 0x2, 0x802, 0x2, 0x817, 0x2, 0x81c, 0x2, 0x81c, 0x2, 0x826, 0x2, - 0x826, 0x2, 0x82a, 0x2, 0x82a, 0x2, 0x842, 0x2, 0x85a, 0x2, 0x862, - 0x2, 0x86c, 0x2, 0x8a2, 0x2, 0x8b6, 0x2, 0x8b8, 0x2, 0x8bf, 0x2, - 0x906, 0x2, 0x93b, 0x2, 0x93f, 0x2, 0x93f, 0x2, 0x952, 0x2, 0x952, - 0x2, 0x95a, 0x2, 0x963, 0x2, 0x973, 0x2, 0x982, 0x2, 0x987, 0x2, - 0x98e, 0x2, 0x991, 0x2, 0x992, 0x2, 0x995, 0x2, 0x9aa, 0x2, 0x9ac, - 0x2, 0x9b2, 0x2, 0x9b4, 0x2, 0x9b4, 0x2, 0x9b8, 0x2, 0x9bb, 0x2, - 0x9bf, 0x2, 0x9bf, 0x2, 0x9d0, 0x2, 0x9d0, 0x2, 0x9de, 0x2, 0x9df, - 0x2, 0x9e1, 0x2, 0x9e3, 0x2, 0x9f2, 0x2, 0x9f3, 0x2, 0x9fe, 0x2, - 0x9fe, 0x2, 0xa07, 0x2, 0xa0c, 0x2, 0xa11, 0x2, 0xa12, 0x2, 0xa15, - 0x2, 0xa2a, 0x2, 0xa2c, 0x2, 0xa32, 0x2, 0xa34, 0x2, 0xa35, 0x2, - 0xa37, 0x2, 0xa38, 0x2, 0xa3a, 0x2, 0xa3b, 0x2, 0xa5b, 0x2, 0xa5e, - 0x2, 0xa60, 0x2, 0xa60, 0x2, 0xa74, 0x2, 0xa76, 0x2, 0xa87, 0x2, - 0xa8f, 0x2, 0xa91, 0x2, 0xa93, 0x2, 0xa95, 0x2, 0xaaa, 0x2, 0xaac, - 0x2, 0xab2, 0x2, 0xab4, 0x2, 0xab5, 0x2, 0xab7, 0x2, 0xabb, 0x2, - 0xabf, 0x2, 0xabf, 0x2, 0xad2, 0x2, 0xad2, 0x2, 0xae2, 0x2, 0xae3, - 0x2, 0xafb, 0x2, 0xafb, 0x2, 0xb07, 0x2, 0xb0e, 0x2, 0xb11, 0x2, - 0xb12, 0x2, 0xb15, 0x2, 0xb2a, 0x2, 0xb2c, 0x2, 0xb32, 0x2, 0xb34, - 0x2, 0xb35, 0x2, 0xb37, 0x2, 0xb3b, 0x2, 0xb3f, 0x2, 0xb3f, 0x2, - 0xb5e, 0x2, 0xb5f, 0x2, 0xb61, 0x2, 0xb63, 0x2, 0xb73, 0x2, 0xb73, - 0x2, 0xb85, 0x2, 0xb85, 0x2, 0xb87, 0x2, 0xb8c, 0x2, 0xb90, 0x2, - 0xb92, 0x2, 0xb94, 0x2, 0xb97, 0x2, 0xb9b, 0x2, 0xb9c, 0x2, 0xb9e, - 0x2, 0xb9e, 0x2, 0xba0, 0x2, 0xba1, 0x2, 0xba5, 0x2, 0xba6, 0x2, - 0xbaa, 0x2, 0xbac, 0x2, 0xbb0, 0x2, 0xbbb, 0x2, 0xbd2, 0x2, 0xbd2, - 0x2, 0xc07, 0x2, 0xc0e, 0x2, 0xc10, 0x2, 0xc12, 0x2, 0xc14, 0x2, - 0xc2a, 0x2, 0xc2c, 0x2, 0xc3b, 0x2, 0xc3f, 0x2, 0xc3f, 0x2, 0xc5a, - 0x2, 0xc5c, 0x2, 0xc62, 0x2, 0xc63, 0x2, 0xc82, 0x2, 0xc82, 0x2, - 0xc87, 0x2, 0xc8e, 0x2, 0xc90, 0x2, 0xc92, 0x2, 0xc94, 0x2, 0xcaa, - 0x2, 0xcac, 0x2, 0xcb5, 0x2, 0xcb7, 0x2, 0xcbb, 0x2, 0xcbf, 0x2, - 0xcbf, 0x2, 0xce0, 0x2, 0xce0, 0x2, 0xce2, 0x2, 0xce3, 0x2, 0xcf3, - 0x2, 0xcf4, 0x2, 0xd07, 0x2, 0xd0e, 0x2, 0xd10, 0x2, 0xd12, 0x2, - 0xd14, 0x2, 0xd3c, 0x2, 0xd3f, 0x2, 0xd3f, 0x2, 0xd50, 0x2, 0xd50, - 0x2, 0xd56, 0x2, 0xd58, 0x2, 0xd61, 0x2, 0xd63, 0x2, 0xd7c, 0x2, - 0xd81, 0x2, 0xd87, 0x2, 0xd98, 0x2, 0xd9c, 0x2, 0xdb3, 0x2, 0xdb5, - 0x2, 0xdbd, 0x2, 0xdbf, 0x2, 0xdbf, 0x2, 0xdc2, 0x2, 0xdc8, 0x2, - 0xe03, 0x2, 0xe32, 0x2, 0xe34, 0x2, 0xe35, 0x2, 0xe42, 0x2, 0xe48, - 0x2, 0xe83, 0x2, 0xe84, 0x2, 0xe86, 0x2, 0xe86, 0x2, 0xe89, 0x2, - 0xe8a, 0x2, 0xe8c, 0x2, 0xe8c, 0x2, 0xe8f, 0x2, 0xe8f, 0x2, 0xe96, - 0x2, 0xe99, 0x2, 0xe9b, 0x2, 0xea1, 0x2, 0xea3, 0x2, 0xea5, 0x2, - 0xea7, 0x2, 0xea7, 0x2, 0xea9, 0x2, 0xea9, 0x2, 0xeac, 0x2, 0xead, - 0x2, 0xeaf, 0x2, 0xeb2, 0x2, 0xeb4, 0x2, 0xeb5, 0x2, 0xebf, 0x2, - 0xebf, 0x2, 0xec2, 0x2, 0xec6, 0x2, 0xec8, 0x2, 0xec8, 0x2, 0xede, - 0x2, 0xee1, 0x2, 0xf02, 0x2, 0xf02, 0x2, 0xf42, 0x2, 0xf49, 0x2, - 0xf4b, 0x2, 0xf6e, 0x2, 0xf8a, 0x2, 0xf8e, 0x2, 0x1002, 0x2, 0x102c, - 0x2, 0x1041, 0x2, 0x1041, 0x2, 0x1052, 0x2, 0x1057, 0x2, 0x105c, - 0x2, 0x105f, 0x2, 0x1063, 0x2, 0x1063, 0x2, 0x1067, 0x2, 0x1068, - 0x2, 0x1070, 0x2, 0x1072, 0x2, 0x1077, 0x2, 0x1083, 0x2, 0x1090, - 0x2, 0x1090, 0x2, 0x10a2, 0x2, 0x10c7, 0x2, 0x10c9, 0x2, 0x10c9, - 0x2, 0x10cf, 0x2, 0x10cf, 0x2, 0x10d2, 0x2, 0x10fc, 0x2, 0x10fe, - 0x2, 0x124a, 0x2, 0x124c, 0x2, 0x124f, 0x2, 0x1252, 0x2, 0x1258, - 0x2, 0x125a, 0x2, 0x125a, 0x2, 0x125c, 0x2, 0x125f, 0x2, 0x1262, - 0x2, 0x128a, 0x2, 0x128c, 0x2, 0x128f, 0x2, 0x1292, 0x2, 0x12b2, - 0x2, 0x12b4, 0x2, 0x12b7, 0x2, 0x12ba, 0x2, 0x12c0, 0x2, 0x12c2, - 0x2, 0x12c2, 0x2, 0x12c4, 0x2, 0x12c7, 0x2, 0x12ca, 0x2, 0x12d8, - 0x2, 0x12da, 0x2, 0x1312, 0x2, 0x1314, 0x2, 0x1317, 0x2, 0x131a, - 0x2, 0x135c, 0x2, 0x1382, 0x2, 0x1391, 0x2, 0x13a2, 0x2, 0x13f7, - 0x2, 0x13fa, 0x2, 0x13ff, 0x2, 0x1403, 0x2, 0x166e, 0x2, 0x1671, - 0x2, 0x1681, 0x2, 0x1683, 0x2, 0x169c, 0x2, 0x16a2, 0x2, 0x16ec, - 0x2, 0x16f0, 0x2, 0x16fa, 0x2, 0x1702, 0x2, 0x170e, 0x2, 0x1710, - 0x2, 0x1713, 0x2, 0x1722, 0x2, 0x1733, 0x2, 0x1742, 0x2, 0x1753, - 0x2, 0x1762, 0x2, 0x176e, 0x2, 0x1770, 0x2, 0x1772, 0x2, 0x1782, - 0x2, 0x17b5, 0x2, 0x17d9, 0x2, 0x17d9, 0x2, 0x17de, 0x2, 0x17de, - 0x2, 0x1822, 0x2, 0x1879, 0x2, 0x1882, 0x2, 0x1886, 0x2, 0x1889, - 0x2, 0x18aa, 0x2, 0x18ac, 0x2, 0x18ac, 0x2, 0x18b2, 0x2, 0x18f7, - 0x2, 0x1902, 0x2, 0x1920, 0x2, 0x1952, 0x2, 0x196f, 0x2, 0x1972, - 0x2, 0x1976, 0x2, 0x1982, 0x2, 0x19ad, 0x2, 0x19b2, 0x2, 0x19cb, - 0x2, 0x1a02, 0x2, 0x1a18, 0x2, 0x1a22, 0x2, 0x1a56, 0x2, 0x1aa9, - 0x2, 0x1aa9, 0x2, 0x1b07, 0x2, 0x1b35, 0x2, 0x1b47, 0x2, 0x1b4d, - 0x2, 0x1b85, 0x2, 0x1ba2, 0x2, 0x1bb0, 0x2, 0x1bb1, 0x2, 0x1bbc, - 0x2, 0x1be7, 0x2, 0x1c02, 0x2, 0x1c25, 0x2, 0x1c4f, 0x2, 0x1c51, - 0x2, 0x1c5c, 0x2, 0x1c7f, 0x2, 0x1c82, 0x2, 0x1c8a, 0x2, 0x1ceb, - 0x2, 0x1cee, 0x2, 0x1cf0, 0x2, 0x1cf3, 0x2, 0x1cf7, 0x2, 0x1cf8, - 0x2, 0x1d02, 0x2, 0x1dc1, 0x2, 0x1e02, 0x2, 0x1f17, 0x2, 0x1f1a, - 0x2, 0x1f1f, 0x2, 0x1f22, 0x2, 0x1f47, 0x2, 0x1f4a, 0x2, 0x1f4f, - 0x2, 0x1f52, 0x2, 0x1f59, 0x2, 0x1f5b, 0x2, 0x1f5b, 0x2, 0x1f5d, - 0x2, 0x1f5d, 0x2, 0x1f5f, 0x2, 0x1f5f, 0x2, 0x1f61, 0x2, 0x1f7f, - 0x2, 0x1f82, 0x2, 0x1fb6, 0x2, 0x1fb8, 0x2, 0x1fbe, 0x2, 0x1fc0, - 0x2, 0x1fc0, 0x2, 0x1fc4, 0x2, 0x1fc6, 0x2, 0x1fc8, 0x2, 0x1fce, - 0x2, 0x1fd2, 0x2, 0x1fd5, 0x2, 0x1fd8, 0x2, 0x1fdd, 0x2, 0x1fe2, - 0x2, 0x1fee, 0x2, 0x1ff4, 0x2, 0x1ff6, 0x2, 0x1ff8, 0x2, 0x1ffe, - 0x2, 0x2073, 0x2, 0x2073, 0x2, 0x2081, 0x2, 0x2081, 0x2, 0x2092, - 0x2, 0x209e, 0x2, 0x2104, 0x2, 0x2104, 0x2, 0x2109, 0x2, 0x2109, - 0x2, 0x210c, 0x2, 0x2115, 0x2, 0x2117, 0x2, 0x2117, 0x2, 0x211b, - 0x2, 0x211f, 0x2, 0x2126, 0x2, 0x2126, 0x2, 0x2128, 0x2, 0x2128, - 0x2, 0x212a, 0x2, 0x212a, 0x2, 0x212c, 0x2, 0x212f, 0x2, 0x2131, - 0x2, 0x213b, 0x2, 0x213e, 0x2, 0x2141, 0x2, 0x2147, 0x2, 0x214b, - 0x2, 0x2150, 0x2, 0x2150, 0x2, 0x2162, 0x2, 0x218a, 0x2, 0x2c02, - 0x2, 0x2c30, 0x2, 0x2c32, 0x2, 0x2c60, 0x2, 0x2c62, 0x2, 0x2ce6, - 0x2, 0x2ced, 0x2, 0x2cf0, 0x2, 0x2cf4, 0x2, 0x2cf5, 0x2, 0x2d02, - 0x2, 0x2d27, 0x2, 0x2d29, 0x2, 0x2d29, 0x2, 0x2d2f, 0x2, 0x2d2f, - 0x2, 0x2d32, 0x2, 0x2d69, 0x2, 0x2d71, 0x2, 0x2d71, 0x2, 0x2d82, - 0x2, 0x2d98, 0x2, 0x2da2, 0x2, 0x2da8, 0x2, 0x2daa, 0x2, 0x2db0, - 0x2, 0x2db2, 0x2, 0x2db8, 0x2, 0x2dba, 0x2, 0x2dc0, 0x2, 0x2dc2, - 0x2, 0x2dc8, 0x2, 0x2dca, 0x2, 0x2dd0, 0x2, 0x2dd2, 0x2, 0x2dd8, - 0x2, 0x2dda, 0x2, 0x2de0, 0x2, 0x2e31, 0x2, 0x2e31, 0x2, 0x3007, - 0x2, 0x3009, 0x2, 0x3023, 0x2, 0x302b, 0x2, 0x3033, 0x2, 0x3037, - 0x2, 0x303a, 0x2, 0x303e, 0x2, 0x3043, 0x2, 0x3098, 0x2, 0x309f, - 0x2, 0x30a1, 0x2, 0x30a3, 0x2, 0x30fc, 0x2, 0x30fe, 0x2, 0x3101, - 0x2, 0x3107, 0x2, 0x3130, 0x2, 0x3133, 0x2, 0x3190, 0x2, 0x31a2, - 0x2, 0x31bc, 0x2, 0x31f2, 0x2, 0x3201, 0x2, 0x3402, 0x2, 0x4db7, - 0x2, 0x4e02, 0x2, 0x9fec, 0x2, 0xa002, 0x2, 0xa48e, 0x2, 0xa4d2, - 0x2, 0xa4ff, 0x2, 0xa502, 0x2, 0xa60e, 0x2, 0xa612, 0x2, 0xa621, - 0x2, 0xa62c, 0x2, 0xa62d, 0x2, 0xa642, 0x2, 0xa670, 0x2, 0xa681, - 0x2, 0xa69f, 0x2, 0xa6a2, 0x2, 0xa6f1, 0x2, 0xa719, 0x2, 0xa721, - 0x2, 0xa724, 0x2, 0xa78a, 0x2, 0xa78d, 0x2, 0xa7b0, 0x2, 0xa7b2, - 0x2, 0xa7b9, 0x2, 0xa7f9, 0x2, 0xa803, 0x2, 0xa805, 0x2, 0xa807, - 0x2, 0xa809, 0x2, 0xa80c, 0x2, 0xa80e, 0x2, 0xa824, 0x2, 0xa842, - 0x2, 0xa875, 0x2, 0xa884, 0x2, 0xa8b5, 0x2, 0xa8f4, 0x2, 0xa8f9, - 0x2, 0xa8fd, 0x2, 0xa8fd, 0x2, 0xa8ff, 0x2, 0xa8ff, 0x2, 0xa90c, - 0x2, 0xa927, 0x2, 0xa932, 0x2, 0xa948, 0x2, 0xa962, 0x2, 0xa97e, - 0x2, 0xa986, 0x2, 0xa9b4, 0x2, 0xa9d1, 0x2, 0xa9d1, 0x2, 0xa9e2, - 0x2, 0xa9e6, 0x2, 0xa9e8, 0x2, 0xa9f1, 0x2, 0xa9fc, 0x2, 0xaa00, - 0x2, 0xaa02, 0x2, 0xaa2a, 0x2, 0xaa42, 0x2, 0xaa44, 0x2, 0xaa46, - 0x2, 0xaa4d, 0x2, 0xaa62, 0x2, 0xaa78, 0x2, 0xaa7c, 0x2, 0xaa7c, - 0x2, 0xaa80, 0x2, 0xaab1, 0x2, 0xaab3, 0x2, 0xaab3, 0x2, 0xaab7, - 0x2, 0xaab8, 0x2, 0xaabb, 0x2, 0xaabf, 0x2, 0xaac2, 0x2, 0xaac2, - 0x2, 0xaac4, 0x2, 0xaac4, 0x2, 0xaadd, 0x2, 0xaadf, 0x2, 0xaae2, - 0x2, 0xaaec, 0x2, 0xaaf4, 0x2, 0xaaf6, 0x2, 0xab03, 0x2, 0xab08, - 0x2, 0xab0b, 0x2, 0xab10, 0x2, 0xab13, 0x2, 0xab18, 0x2, 0xab22, - 0x2, 0xab28, 0x2, 0xab2a, 0x2, 0xab30, 0x2, 0xab32, 0x2, 0xab5c, - 0x2, 0xab5e, 0x2, 0xab67, 0x2, 0xab72, 0x2, 0xabe4, 0x2, 0xac02, - 0x2, 0xd7a5, 0x2, 0xd7b2, 0x2, 0xd7c8, 0x2, 0xd7cd, 0x2, 0xd7fd, - 0x2, 0xf902, 0x2, 0xfa6f, 0x2, 0xfa72, 0x2, 0xfadb, 0x2, 0xfb02, - 0x2, 0xfb08, 0x2, 0xfb15, 0x2, 0xfb19, 0x2, 0xfb1f, 0x2, 0xfb1f, - 0x2, 0xfb21, 0x2, 0xfb2a, 0x2, 0xfb2c, 0x2, 0xfb38, 0x2, 0xfb3a, - 0x2, 0xfb3e, 0x2, 0xfb40, 0x2, 0xfb40, 0x2, 0xfb42, 0x2, 0xfb43, - 0x2, 0xfb45, 0x2, 0xfb46, 0x2, 0xfb48, 0x2, 0xfbb3, 0x2, 0xfbd5, - 0x2, 0xfd3f, 0x2, 0xfd52, 0x2, 0xfd91, 0x2, 0xfd94, 0x2, 0xfdc9, - 0x2, 0xfdf2, 0x2, 0xfdfd, 0x2, 0xfe72, 0x2, 0xfe76, 0x2, 0xfe78, - 0x2, 0xfefe, 0x2, 0xff23, 0x2, 0xff3c, 0x2, 0xff43, 0x2, 0xff5c, - 0x2, 0xff68, 0x2, 0xffc0, 0x2, 0xffc4, 0x2, 0xffc9, 0x2, 0xffcc, - 0x2, 0xffd1, 0x2, 0xffd4, 0x2, 0xffd9, 0x2, 0xffdc, 0x2, 0xffde, - 0x2, 0x2, 0x3, 0xd, 0x3, 0xf, 0x3, 0x28, 0x3, 0x2a, 0x3, 0x3c, 0x3, - 0x3e, 0x3, 0x3f, 0x3, 0x41, 0x3, 0x4f, 0x3, 0x52, 0x3, 0x5f, 0x3, - 0x82, 0x3, 0xfc, 0x3, 0x142, 0x3, 0x176, 0x3, 0x282, 0x3, 0x29e, - 0x3, 0x2a2, 0x3, 0x2d2, 0x3, 0x302, 0x3, 0x321, 0x3, 0x32f, 0x3, - 0x34c, 0x3, 0x352, 0x3, 0x377, 0x3, 0x382, 0x3, 0x39f, 0x3, 0x3a2, - 0x3, 0x3c5, 0x3, 0x3ca, 0x3, 0x3d1, 0x3, 0x3d3, 0x3, 0x3d7, 0x3, - 0x402, 0x3, 0x49f, 0x3, 0x4b2, 0x3, 0x4d5, 0x3, 0x4da, 0x3, 0x4fd, - 0x3, 0x502, 0x3, 0x529, 0x3, 0x532, 0x3, 0x565, 0x3, 0x602, 0x3, - 0x738, 0x3, 0x742, 0x3, 0x757, 0x3, 0x762, 0x3, 0x769, 0x3, 0x802, - 0x3, 0x807, 0x3, 0x80a, 0x3, 0x80a, 0x3, 0x80c, 0x3, 0x837, 0x3, - 0x839, 0x3, 0x83a, 0x3, 0x83e, 0x3, 0x83e, 0x3, 0x841, 0x3, 0x857, - 0x3, 0x862, 0x3, 0x878, 0x3, 0x882, 0x3, 0x8a0, 0x3, 0x8e2, 0x3, - 0x8f4, 0x3, 0x8f6, 0x3, 0x8f7, 0x3, 0x902, 0x3, 0x917, 0x3, 0x922, - 0x3, 0x93b, 0x3, 0x982, 0x3, 0x9b9, 0x3, 0x9c0, 0x3, 0x9c1, 0x3, - 0xa02, 0x3, 0xa02, 0x3, 0xa12, 0x3, 0xa15, 0x3, 0xa17, 0x3, 0xa19, - 0x3, 0xa1b, 0x3, 0xa35, 0x3, 0xa62, 0x3, 0xa7e, 0x3, 0xa82, 0x3, - 0xa9e, 0x3, 0xac2, 0x3, 0xac9, 0x3, 0xacb, 0x3, 0xae6, 0x3, 0xb02, - 0x3, 0xb37, 0x3, 0xb42, 0x3, 0xb57, 0x3, 0xb62, 0x3, 0xb74, 0x3, - 0xb82, 0x3, 0xb93, 0x3, 0xc02, 0x3, 0xc4a, 0x3, 0xc82, 0x3, 0xcb4, - 0x3, 0xcc2, 0x3, 0xcf4, 0x3, 0x1005, 0x3, 0x1039, 0x3, 0x1085, 0x3, - 0x10b1, 0x3, 0x10d2, 0x3, 0x10ea, 0x3, 0x1105, 0x3, 0x1128, 0x3, - 0x1152, 0x3, 0x1174, 0x3, 0x1178, 0x3, 0x1178, 0x3, 0x1185, 0x3, - 0x11b4, 0x3, 0x11c3, 0x3, 0x11c6, 0x3, 0x11dc, 0x3, 0x11dc, 0x3, - 0x11de, 0x3, 0x11de, 0x3, 0x1202, 0x3, 0x1213, 0x3, 0x1215, 0x3, - 0x122d, 0x3, 0x1282, 0x3, 0x1288, 0x3, 0x128a, 0x3, 0x128a, 0x3, - 0x128c, 0x3, 0x128f, 0x3, 0x1291, 0x3, 0x129f, 0x3, 0x12a1, 0x3, - 0x12aa, 0x3, 0x12b2, 0x3, 0x12e0, 0x3, 0x1307, 0x3, 0x130e, 0x3, - 0x1311, 0x3, 0x1312, 0x3, 0x1315, 0x3, 0x132a, 0x3, 0x132c, 0x3, - 0x1332, 0x3, 0x1334, 0x3, 0x1335, 0x3, 0x1337, 0x3, 0x133b, 0x3, - 0x133f, 0x3, 0x133f, 0x3, 0x1352, 0x3, 0x1352, 0x3, 0x135f, 0x3, - 0x1363, 0x3, 0x1402, 0x3, 0x1436, 0x3, 0x1449, 0x3, 0x144c, 0x3, - 0x1482, 0x3, 0x14b1, 0x3, 0x14c6, 0x3, 0x14c7, 0x3, 0x14c9, 0x3, - 0x14c9, 0x3, 0x1582, 0x3, 0x15b0, 0x3, 0x15da, 0x3, 0x15dd, 0x3, - 0x1602, 0x3, 0x1631, 0x3, 0x1646, 0x3, 0x1646, 0x3, 0x1682, 0x3, - 0x16ac, 0x3, 0x1702, 0x3, 0x171b, 0x3, 0x18a2, 0x3, 0x18e1, 0x3, - 0x1901, 0x3, 0x1901, 0x3, 0x1a02, 0x3, 0x1a02, 0x3, 0x1a0d, 0x3, - 0x1a34, 0x3, 0x1a3c, 0x3, 0x1a3c, 0x3, 0x1a52, 0x3, 0x1a52, 0x3, - 0x1a5e, 0x3, 0x1a85, 0x3, 0x1a88, 0x3, 0x1a8b, 0x3, 0x1ac2, 0x3, - 0x1afa, 0x3, 0x1c02, 0x3, 0x1c0a, 0x3, 0x1c0c, 0x3, 0x1c30, 0x3, - 0x1c42, 0x3, 0x1c42, 0x3, 0x1c74, 0x3, 0x1c91, 0x3, 0x1d02, 0x3, - 0x1d08, 0x3, 0x1d0a, 0x3, 0x1d0b, 0x3, 0x1d0d, 0x3, 0x1d32, 0x3, - 0x1d48, 0x3, 0x1d48, 0x3, 0x2002, 0x3, 0x239b, 0x3, 0x2402, 0x3, - 0x2470, 0x3, 0x2482, 0x3, 0x2545, 0x3, 0x3002, 0x3, 0x3430, 0x3, - 0x4402, 0x3, 0x4648, 0x3, 0x6802, 0x3, 0x6a3a, 0x3, 0x6a42, 0x3, - 0x6a60, 0x3, 0x6ad2, 0x3, 0x6aef, 0x3, 0x6b02, 0x3, 0x6b31, 0x3, - 0x6b42, 0x3, 0x6b45, 0x3, 0x6b65, 0x3, 0x6b79, 0x3, 0x6b7f, 0x3, - 0x6b91, 0x3, 0x6f02, 0x3, 0x6f46, 0x3, 0x6f52, 0x3, 0x6f52, 0x3, - 0x6f95, 0x3, 0x6fa1, 0x3, 0x6fe2, 0x3, 0x6fe3, 0x3, 0x7002, 0x3, - 0x87ee, 0x3, 0x8802, 0x3, 0x8af4, 0x3, 0xb002, 0x3, 0xb120, 0x3, - 0xb172, 0x3, 0xb2fd, 0x3, 0xbc02, 0x3, 0xbc6c, 0x3, 0xbc72, 0x3, - 0xbc7e, 0x3, 0xbc82, 0x3, 0xbc8a, 0x3, 0xbc92, 0x3, 0xbc9b, 0x3, - 0xd402, 0x3, 0xd456, 0x3, 0xd458, 0x3, 0xd49e, 0x3, 0xd4a0, 0x3, - 0xd4a1, 0x3, 0xd4a4, 0x3, 0xd4a4, 0x3, 0xd4a7, 0x3, 0xd4a8, 0x3, - 0xd4ab, 0x3, 0xd4ae, 0x3, 0xd4b0, 0x3, 0xd4bb, 0x3, 0xd4bd, 0x3, - 0xd4bd, 0x3, 0xd4bf, 0x3, 0xd4c5, 0x3, 0xd4c7, 0x3, 0xd507, 0x3, - 0xd509, 0x3, 0xd50c, 0x3, 0xd50f, 0x3, 0xd516, 0x3, 0xd518, 0x3, - 0xd51e, 0x3, 0xd520, 0x3, 0xd53b, 0x3, 0xd53d, 0x3, 0xd540, 0x3, - 0xd542, 0x3, 0xd546, 0x3, 0xd548, 0x3, 0xd548, 0x3, 0xd54c, 0x3, - 0xd552, 0x3, 0xd554, 0x3, 0xd6a7, 0x3, 0xd6aa, 0x3, 0xd6c2, 0x3, - 0xd6c4, 0x3, 0xd6dc, 0x3, 0xd6de, 0x3, 0xd6fc, 0x3, 0xd6fe, 0x3, - 0xd716, 0x3, 0xd718, 0x3, 0xd736, 0x3, 0xd738, 0x3, 0xd750, 0x3, - 0xd752, 0x3, 0xd770, 0x3, 0xd772, 0x3, 0xd78a, 0x3, 0xd78c, 0x3, - 0xd7aa, 0x3, 0xd7ac, 0x3, 0xd7c4, 0x3, 0xd7c6, 0x3, 0xd7cd, 0x3, - 0xe802, 0x3, 0xe8c6, 0x3, 0xe902, 0x3, 0xe945, 0x3, 0xee02, 0x3, - 0xee05, 0x3, 0xee07, 0x3, 0xee21, 0x3, 0xee23, 0x3, 0xee24, 0x3, - 0xee26, 0x3, 0xee26, 0x3, 0xee29, 0x3, 0xee29, 0x3, 0xee2b, 0x3, - 0xee34, 0x3, 0xee36, 0x3, 0xee39, 0x3, 0xee3b, 0x3, 0xee3b, 0x3, - 0xee3d, 0x3, 0xee3d, 0x3, 0xee44, 0x3, 0xee44, 0x3, 0xee49, 0x3, - 0xee49, 0x3, 0xee4b, 0x3, 0xee4b, 0x3, 0xee4d, 0x3, 0xee4d, 0x3, - 0xee4f, 0x3, 0xee51, 0x3, 0xee53, 0x3, 0xee54, 0x3, 0xee56, 0x3, - 0xee56, 0x3, 0xee59, 0x3, 0xee59, 0x3, 0xee5b, 0x3, 0xee5b, 0x3, - 0xee5d, 0x3, 0xee5d, 0x3, 0xee5f, 0x3, 0xee5f, 0x3, 0xee61, 0x3, - 0xee61, 0x3, 0xee63, 0x3, 0xee64, 0x3, 0xee66, 0x3, 0xee66, 0x3, - 0xee69, 0x3, 0xee6c, 0x3, 0xee6e, 0x3, 0xee74, 0x3, 0xee76, 0x3, - 0xee79, 0x3, 0xee7b, 0x3, 0xee7e, 0x3, 0xee80, 0x3, 0xee80, 0x3, - 0xee82, 0x3, 0xee8b, 0x3, 0xee8d, 0x3, 0xee9d, 0x3, 0xeea3, 0x3, - 0xeea5, 0x3, 0xeea7, 0x3, 0xeeab, 0x3, 0xeead, 0x3, 0xeebd, 0x3, - 0x2, 0x4, 0xa6d8, 0x4, 0xa702, 0x4, 0xb736, 0x4, 0xb742, 0x4, 0xb81f, - 0x4, 0xb822, 0x4, 0xcea3, 0x4, 0xceb2, 0x4, 0xebe2, 0x4, 0xf802, - 0x4, 0xfa1f, 0x4, 0x3bf, 0x2, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xf, 0x3, 0x2, 0x2, 0x2, 0x2, 0x11, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x13, 0x3, 0x2, 0x2, 0x2, 0x2, 0x15, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x17, 0x3, 0x2, 0x2, 0x2, 0x2, 0x19, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x1b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x21, 0x3, 0x2, 0x2, 0x2, 0x2, 0x23, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x25, 0x3, 0x2, 0x2, 0x2, 0x2, 0x27, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x29, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2b, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2f, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x31, 0x3, 0x2, 0x2, 0x2, 0x2, 0x33, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x35, 0x3, 0x2, 0x2, 0x2, 0x2, 0x37, 0x3, 0x2, 0x2, 0x2, 0x2, 0x39, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x3b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3d, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x41, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x43, 0x3, 0x2, 0x2, 0x2, 0x2, 0x45, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x47, 0x3, 0x2, 0x2, 0x2, 0x2, 0x49, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x4f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x51, 0x3, 0x2, 0x2, 0x2, 0x2, 0x53, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x55, 0x3, 0x2, 0x2, 0x2, 0x2, 0x57, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x59, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5b, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x5d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5f, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x61, 0x3, 0x2, 0x2, 0x2, 0x2, 0x63, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x65, 0x3, 0x2, 0x2, 0x2, 0x2, 0x67, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x69, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6d, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x71, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x73, 0x3, 0x2, 0x2, 0x2, 0x2, 0x75, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x77, 0x3, 0x2, 0x2, 0x2, 0x2, 0x79, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x7b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7d, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x81, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x83, 0x3, 0x2, 0x2, 0x2, 0x2, 0x85, 0x3, 0x2, 0x2, 0x2, 0x2, 0x87, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x89, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8b, 0x3, - 0x2, 0x2, 0x2, 0x2, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8f, 0x3, 0x2, - 0x2, 0x2, 0x2, 0x91, 0x3, 0x2, 0x2, 0x2, 0x2, 0x93, 0x3, 0x2, 0x2, - 0x2, 0x2, 0x95, 0x3, 0x2, 0x2, 0x2, 0x2, 0x97, 0x3, 0x2, 0x2, 0x2, - 0x2, 0x99, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9b, 0x3, 0x2, 0x2, 0x2, 0x2, - 0x9d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9f, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa1, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xa3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa5, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xa7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa9, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xab, 0x3, 0x2, 0x2, 0x2, 0x2, 0xad, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xaf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb1, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xb3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb5, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xb7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xbb, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xbf, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xc1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc3, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc7, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xcb, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xcd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xcf, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xd1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd5, - 0x3, 0x2, 0x2, 0x2, 0x2, 0xd7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd9, 0x3, - 0x2, 0x2, 0x2, 0x2, 0xdb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xdd, 0x3, 0x2, - 0x2, 0x2, 0x2, 0xdf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe1, 0x3, 0x2, 0x2, - 0x2, 0x2, 0xe3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe5, 0x3, 0x2, 0x2, 0x2, - 0x2, 0xe9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf3, 0x3, 0x2, 0x2, 0x2, 0x2, - 0xfb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xff, 0x3, 0x2, 0x2, 0x2, 0x2, 0x101, - 0x3, 0x2, 0x2, 0x2, 0x2, 0x103, 0x3, 0x2, 0x2, 0x2, 0x2, 0x105, 0x3, - 0x2, 0x2, 0x2, 0x3, 0x107, 0x3, 0x2, 0x2, 0x2, 0x5, 0x110, 0x3, 0x2, - 0x2, 0x2, 0x7, 0x118, 0x3, 0x2, 0x2, 0x2, 0x9, 0x120, 0x3, 0x2, 0x2, - 0x2, 0xb, 0x127, 0x3, 0x2, 0x2, 0x2, 0xd, 0x138, 0x3, 0x2, 0x2, 0x2, - 0xf, 0x13e, 0x3, 0x2, 0x2, 0x2, 0x11, 0x143, 0x3, 0x2, 0x2, 0x2, - 0x13, 0x147, 0x3, 0x2, 0x2, 0x2, 0x15, 0x14c, 0x3, 0x2, 0x2, 0x2, - 0x17, 0x150, 0x3, 0x2, 0x2, 0x2, 0x19, 0x155, 0x3, 0x2, 0x2, 0x2, - 0x1b, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x1d, 0x161, 0x3, 0x2, 0x2, 0x2, - 0x1f, 0x167, 0x3, 0x2, 0x2, 0x2, 0x21, 0x16c, 0x3, 0x2, 0x2, 0x2, - 0x23, 0x174, 0x3, 0x2, 0x2, 0x2, 0x25, 0x17b, 0x3, 0x2, 0x2, 0x2, - 0x27, 0x181, 0x3, 0x2, 0x2, 0x2, 0x29, 0x185, 0x3, 0x2, 0x2, 0x2, - 0x2b, 0x188, 0x3, 0x2, 0x2, 0x2, 0x2d, 0x18d, 0x3, 0x2, 0x2, 0x2, - 0x2f, 0x190, 0x3, 0x2, 0x2, 0x2, 0x31, 0x192, 0x3, 0x2, 0x2, 0x2, - 0x33, 0x199, 0x3, 0x2, 0x2, 0x2, 0x35, 0x1a1, 0x3, 0x2, 0x2, 0x2, - 0x37, 0x1a9, 0x3, 0x2, 0x2, 0x2, 0x39, 0x1ad, 0x3, 0x2, 0x2, 0x2, - 0x3b, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x3d, 0x1b6, 0x3, 0x2, 0x2, 0x2, - 0x3f, 0x1b8, 0x3, 0x2, 0x2, 0x2, 0x41, 0x1be, 0x3, 0x2, 0x2, 0x2, - 0x43, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0x45, 0x1c2, 0x3, 0x2, 0x2, 0x2, - 0x47, 0x1c4, 0x3, 0x2, 0x2, 0x2, 0x49, 0x1c6, 0x3, 0x2, 0x2, 0x2, - 0x4b, 0x1c9, 0x3, 0x2, 0x2, 0x2, 0x4d, 0x1cc, 0x3, 0x2, 0x2, 0x2, - 0x4f, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x51, 0x1d2, 0x3, 0x2, 0x2, 0x2, - 0x53, 0x1d5, 0x3, 0x2, 0x2, 0x2, 0x55, 0x1d7, 0x3, 0x2, 0x2, 0x2, - 0x57, 0x1d9, 0x3, 0x2, 0x2, 0x2, 0x59, 0x1db, 0x3, 0x2, 0x2, 0x2, - 0x5b, 0x1de, 0x3, 0x2, 0x2, 0x2, 0x5d, 0x1e1, 0x3, 0x2, 0x2, 0x2, - 0x5f, 0x1e3, 0x3, 0x2, 0x2, 0x2, 0x61, 0x1e5, 0x3, 0x2, 0x2, 0x2, - 0x63, 0x1e7, 0x3, 0x2, 0x2, 0x2, 0x65, 0x1e9, 0x3, 0x2, 0x2, 0x2, - 0x67, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x69, 0x1ef, 0x3, 0x2, 0x2, 0x2, - 0x6b, 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x6d, 0x1f7, 0x3, 0x2, 0x2, 0x2, - 0x6f, 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x71, 0x202, 0x3, 0x2, 0x2, 0x2, - 0x73, 0x209, 0x3, 0x2, 0x2, 0x2, 0x75, 0x210, 0x3, 0x2, 0x2, 0x2, - 0x77, 0x214, 0x3, 0x2, 0x2, 0x2, 0x79, 0x217, 0x3, 0x2, 0x2, 0x2, - 0x7b, 0x21c, 0x3, 0x2, 0x2, 0x2, 0x7d, 0x221, 0x3, 0x2, 0x2, 0x2, - 0x7f, 0x226, 0x3, 0x2, 0x2, 0x2, 0x81, 0x22f, 0x3, 0x2, 0x2, 0x2, - 0x83, 0x238, 0x3, 0x2, 0x2, 0x2, 0x85, 0x23b, 0x3, 0x2, 0x2, 0x2, - 0x87, 0x23e, 0x3, 0x2, 0x2, 0x2, 0x89, 0x241, 0x3, 0x2, 0x2, 0x2, - 0x8b, 0x244, 0x3, 0x2, 0x2, 0x2, 0x8d, 0x247, 0x3, 0x2, 0x2, 0x2, - 0x8f, 0x24a, 0x3, 0x2, 0x2, 0x2, 0x91, 0x24d, 0x3, 0x2, 0x2, 0x2, - 0x93, 0x250, 0x3, 0x2, 0x2, 0x2, 0x95, 0x254, 0x3, 0x2, 0x2, 0x2, - 0x97, 0x258, 0x3, 0x2, 0x2, 0x2, 0x99, 0x25b, 0x3, 0x2, 0x2, 0x2, - 0x9b, 0x25e, 0x3, 0x2, 0x2, 0x2, 0x9d, 0x263, 0x3, 0x2, 0x2, 0x2, - 0x9f, 0x267, 0x3, 0x2, 0x2, 0x2, 0xa1, 0x26d, 0x3, 0x2, 0x2, 0x2, - 0xa3, 0x273, 0x3, 0x2, 0x2, 0x2, 0xa5, 0x279, 0x3, 0x2, 0x2, 0x2, - 0xa7, 0x282, 0x3, 0x2, 0x2, 0x2, 0xa9, 0x286, 0x3, 0x2, 0x2, 0x2, - 0xab, 0x28d, 0x3, 0x2, 0x2, 0x2, 0xad, 0x291, 0x3, 0x2, 0x2, 0x2, - 0xaf, 0x298, 0x3, 0x2, 0x2, 0x2, 0xb1, 0x2a0, 0x3, 0x2, 0x2, 0x2, - 0xb3, 0x2a7, 0x3, 0x2, 0x2, 0x2, 0xb5, 0x2af, 0x3, 0x2, 0x2, 0x2, - 0xb7, 0x2b5, 0x3, 0x2, 0x2, 0x2, 0xb9, 0x2bb, 0x3, 0x2, 0x2, 0x2, - 0xbb, 0x2c6, 0x3, 0x2, 0x2, 0x2, 0xbd, 0x2cc, 0x3, 0x2, 0x2, 0x2, - 0xbf, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0xc1, 0x2e1, 0x3, 0x2, 0x2, 0x2, - 0xc3, 0x2e8, 0x3, 0x2, 0x2, 0x2, 0xc5, 0x2f4, 0x3, 0x2, 0x2, 0x2, - 0xc7, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0xc9, 0x2f8, 0x3, 0x2, 0x2, 0x2, - 0xcb, 0x2fa, 0x3, 0x2, 0x2, 0x2, 0xcd, 0x2fc, 0x3, 0x2, 0x2, 0x2, - 0xcf, 0x2fe, 0x3, 0x2, 0x2, 0x2, 0xd1, 0x300, 0x3, 0x2, 0x2, 0x2, - 0xd3, 0x302, 0x3, 0x2, 0x2, 0x2, 0xd5, 0x304, 0x3, 0x2, 0x2, 0x2, - 0xd7, 0x306, 0x3, 0x2, 0x2, 0x2, 0xd9, 0x308, 0x3, 0x2, 0x2, 0x2, - 0xdb, 0x30a, 0x3, 0x2, 0x2, 0x2, 0xdd, 0x30d, 0x3, 0x2, 0x2, 0x2, - 0xdf, 0x30f, 0x3, 0x2, 0x2, 0x2, 0xe1, 0x323, 0x3, 0x2, 0x2, 0x2, - 0xe3, 0x326, 0x3, 0x2, 0x2, 0x2, 0xe5, 0x32d, 0x3, 0x2, 0x2, 0x2, - 0xe7, 0x333, 0x3, 0x2, 0x2, 0x2, 0xe9, 0x336, 0x3, 0x2, 0x2, 0x2, - 0xeb, 0x33a, 0x3, 0x2, 0x2, 0x2, 0xed, 0x33c, 0x3, 0x2, 0x2, 0x2, - 0xef, 0x341, 0x3, 0x2, 0x2, 0x2, 0xf1, 0x345, 0x3, 0x2, 0x2, 0x2, - 0xf3, 0x347, 0x3, 0x2, 0x2, 0x2, 0xf5, 0x34e, 0x3, 0x2, 0x2, 0x2, - 0xf7, 0x350, 0x3, 0x2, 0x2, 0x2, 0xf9, 0x365, 0x3, 0x2, 0x2, 0x2, - 0xfb, 0x367, 0x3, 0x2, 0x2, 0x2, 0xfd, 0x37b, 0x3, 0x2, 0x2, 0x2, - 0xff, 0x37f, 0x3, 0x2, 0x2, 0x2, 0x101, 0x391, 0x3, 0x2, 0x2, 0x2, - 0x103, 0x393, 0x3, 0x2, 0x2, 0x2, 0x105, 0x39e, 0x3, 0x2, 0x2, 0x2, - 0x107, 0x108, 0x7, 0x51, 0x2, 0x2, 0x108, 0x109, 0x7, 0x52, 0x2, - 0x2, 0x109, 0x10a, 0x7, 0x47, 0x2, 0x2, 0x10a, 0x10b, 0x7, 0x50, - 0x2, 0x2, 0x10b, 0x10c, 0x7, 0x53, 0x2, 0x2, 0x10c, 0x10d, 0x7, 0x43, - 0x2, 0x2, 0x10d, 0x10e, 0x7, 0x55, 0x2, 0x2, 0x10e, 0x10f, 0x7, 0x4f, - 0x2, 0x2, 0x10f, 0x4, 0x3, 0x2, 0x2, 0x2, 0x110, 0x111, 0x7, 0x6b, - 0x2, 0x2, 0x111, 0x112, 0x7, 0x70, 0x2, 0x2, 0x112, 0x113, 0x7, 0x65, - 0x2, 0x2, 0x113, 0x114, 0x7, 0x6e, 0x2, 0x2, 0x114, 0x115, 0x7, 0x77, - 0x2, 0x2, 0x115, 0x116, 0x7, 0x66, 0x2, 0x2, 0x116, 0x117, 0x7, 0x67, - 0x2, 0x2, 0x117, 0x6, 0x3, 0x2, 0x2, 0x2, 0x118, 0x119, 0x7, 0x65, - 0x2, 0x2, 0x119, 0x11a, 0x7, 0x71, 0x2, 0x2, 0x11a, 0x11b, 0x7, 0x6f, - 0x2, 0x2, 0x11b, 0x11c, 0x7, 0x72, 0x2, 0x2, 0x11c, 0x11d, 0x7, 0x77, - 0x2, 0x2, 0x11d, 0x11e, 0x7, 0x76, 0x2, 0x2, 0x11e, 0x11f, 0x7, 0x67, - 0x2, 0x2, 0x11f, 0x8, 0x3, 0x2, 0x2, 0x2, 0x120, 0x121, 0x7, 0x63, - 0x2, 0x2, 0x121, 0x122, 0x7, 0x65, 0x2, 0x2, 0x122, 0x123, 0x7, 0x76, - 0x2, 0x2, 0x123, 0x124, 0x7, 0x6b, 0x2, 0x2, 0x124, 0x125, 0x7, 0x71, - 0x2, 0x2, 0x125, 0x126, 0x7, 0x70, 0x2, 0x2, 0x126, 0xa, 0x3, 0x2, - 0x2, 0x2, 0x127, 0x128, 0x7, 0x53, 0x2, 0x2, 0x128, 0x129, 0x7, 0x45, - 0x2, 0x2, 0x129, 0x12a, 0x7, 0x51, 0x2, 0x2, 0x12a, 0x12b, 0x7, 0x54, - 0x2, 0x2, 0x12b, 0x12c, 0x7, 0x61, 0x2, 0x2, 0x12c, 0x12d, 0x7, 0x47, - 0x2, 0x2, 0x12d, 0x12e, 0x7, 0x5a, 0x2, 0x2, 0x12e, 0x12f, 0x7, 0x52, - 0x2, 0x2, 0x12f, 0x130, 0x7, 0x47, 0x2, 0x2, 0x130, 0x131, 0x7, 0x45, - 0x2, 0x2, 0x131, 0x132, 0x7, 0x56, 0x2, 0x2, 0x132, 0x133, 0x7, 0x61, - 0x2, 0x2, 0x133, 0x134, 0x7, 0x56, 0x2, 0x2, 0x134, 0x135, 0x7, 0x54, - 0x2, 0x2, 0x135, 0x136, 0x7, 0x57, 0x2, 0x2, 0x136, 0x137, 0x7, 0x47, - 0x2, 0x2, 0x137, 0xc, 0x3, 0x2, 0x2, 0x2, 0x138, 0x139, 0x7, 0x73, - 0x2, 0x2, 0x139, 0x13a, 0x7, 0x77, 0x2, 0x2, 0x13a, 0x13b, 0x7, 0x64, - 0x2, 0x2, 0x13b, 0x13c, 0x7, 0x6b, 0x2, 0x2, 0x13c, 0x13d, 0x7, 0x76, - 0x2, 0x2, 0x13d, 0xe, 0x3, 0x2, 0x2, 0x2, 0x13e, 0x13f, 0x7, 0x73, - 0x2, 0x2, 0x13f, 0x140, 0x7, 0x74, 0x2, 0x2, 0x140, 0x141, 0x7, 0x67, - 0x2, 0x2, 0x141, 0x142, 0x7, 0x69, 0x2, 0x2, 0x142, 0x10, 0x3, 0x2, - 0x2, 0x2, 0x143, 0x144, 0x7, 0x64, 0x2, 0x2, 0x144, 0x145, 0x7, 0x6b, - 0x2, 0x2, 0x145, 0x146, 0x7, 0x76, 0x2, 0x2, 0x146, 0x12, 0x3, 0x2, - 0x2, 0x2, 0x147, 0x148, 0x7, 0x65, 0x2, 0x2, 0x148, 0x149, 0x7, 0x74, - 0x2, 0x2, 0x149, 0x14a, 0x7, 0x67, 0x2, 0x2, 0x14a, 0x14b, 0x7, 0x69, - 0x2, 0x2, 0x14b, 0x14, 0x3, 0x2, 0x2, 0x2, 0x14c, 0x14d, 0x7, 0x6b, - 0x2, 0x2, 0x14d, 0x14e, 0x7, 0x70, 0x2, 0x2, 0x14e, 0x14f, 0x7, 0x76, - 0x2, 0x2, 0x14f, 0x16, 0x3, 0x2, 0x2, 0x2, 0x150, 0x151, 0x7, 0x77, - 0x2, 0x2, 0x151, 0x152, 0x7, 0x6b, 0x2, 0x2, 0x152, 0x153, 0x7, 0x70, - 0x2, 0x2, 0x153, 0x154, 0x7, 0x76, 0x2, 0x2, 0x154, 0x18, 0x3, 0x2, - 0x2, 0x2, 0x155, 0x156, 0x7, 0x68, 0x2, 0x2, 0x156, 0x157, 0x7, 0x6e, - 0x2, 0x2, 0x157, 0x158, 0x7, 0x71, 0x2, 0x2, 0x158, 0x159, 0x7, 0x63, - 0x2, 0x2, 0x159, 0x15a, 0x7, 0x76, 0x2, 0x2, 0x15a, 0x1a, 0x3, 0x2, - 0x2, 0x2, 0x15b, 0x15c, 0x7, 0x63, 0x2, 0x2, 0x15c, 0x15d, 0x7, 0x70, - 0x2, 0x2, 0x15d, 0x15e, 0x7, 0x69, 0x2, 0x2, 0x15e, 0x15f, 0x7, 0x6e, - 0x2, 0x2, 0x15f, 0x160, 0x7, 0x67, 0x2, 0x2, 0x160, 0x1c, 0x3, 0x2, - 0x2, 0x2, 0x161, 0x162, 0x7, 0x68, 0x2, 0x2, 0x162, 0x163, 0x7, 0x6b, - 0x2, 0x2, 0x163, 0x164, 0x7, 0x7a, 0x2, 0x2, 0x164, 0x165, 0x7, 0x67, - 0x2, 0x2, 0x165, 0x166, 0x7, 0x66, 0x2, 0x2, 0x166, 0x1e, 0x3, 0x2, - 0x2, 0x2, 0x167, 0x168, 0x7, 0x64, 0x2, 0x2, 0x168, 0x169, 0x7, 0x71, - 0x2, 0x2, 0x169, 0x16a, 0x7, 0x71, 0x2, 0x2, 0x16a, 0x16b, 0x7, 0x6e, - 0x2, 0x2, 0x16b, 0x20, 0x3, 0x2, 0x2, 0x2, 0x16c, 0x16d, 0x7, 0x6b, - 0x2, 0x2, 0x16d, 0x16e, 0x7, 0x70, 0x2, 0x2, 0x16e, 0x16f, 0x7, 0x76, - 0x2, 0x2, 0x16f, 0x170, 0x7, 0x38, 0x2, 0x2, 0x170, 0x171, 0x7, 0x36, - 0x2, 0x2, 0x171, 0x172, 0x7, 0x61, 0x2, 0x2, 0x172, 0x173, 0x7, 0x76, - 0x2, 0x2, 0x173, 0x22, 0x3, 0x2, 0x2, 0x2, 0x174, 0x175, 0x7, 0x66, - 0x2, 0x2, 0x175, 0x176, 0x7, 0x71, 0x2, 0x2, 0x176, 0x177, 0x7, 0x77, - 0x2, 0x2, 0x177, 0x178, 0x7, 0x64, 0x2, 0x2, 0x178, 0x179, 0x7, 0x6e, - 0x2, 0x2, 0x179, 0x17a, 0x7, 0x67, 0x2, 0x2, 0x17a, 0x24, 0x3, 0x2, - 0x2, 0x2, 0x17b, 0x17c, 0x7, 0x65, 0x2, 0x2, 0x17c, 0x17d, 0x7, 0x71, - 0x2, 0x2, 0x17d, 0x17e, 0x7, 0x70, 0x2, 0x2, 0x17e, 0x17f, 0x7, 0x75, - 0x2, 0x2, 0x17f, 0x180, 0x7, 0x76, 0x2, 0x2, 0x180, 0x26, 0x3, 0x2, - 0x2, 0x2, 0x181, 0x182, 0x7, 0x6e, 0x2, 0x2, 0x182, 0x183, 0x7, 0x67, - 0x2, 0x2, 0x183, 0x184, 0x7, 0x76, 0x2, 0x2, 0x184, 0x28, 0x3, 0x2, - 0x2, 0x2, 0x185, 0x186, 0x7, 0x7e, 0x2, 0x2, 0x186, 0x187, 0x7, 0x7e, - 0x2, 0x2, 0x187, 0x2a, 0x3, 0x2, 0x2, 0x2, 0x188, 0x189, 0x7, 0x69, - 0x2, 0x2, 0x189, 0x18a, 0x7, 0x63, 0x2, 0x2, 0x18a, 0x18b, 0x7, 0x76, - 0x2, 0x2, 0x18b, 0x18c, 0x7, 0x67, 0x2, 0x2, 0x18c, 0x2c, 0x3, 0x2, - 0x2, 0x2, 0x18d, 0x18e, 0x7, 0x45, 0x2, 0x2, 0x18e, 0x18f, 0x7, 0x5a, - 0x2, 0x2, 0x18f, 0x2e, 0x3, 0x2, 0x2, 0x2, 0x190, 0x191, 0x7, 0x57, - 0x2, 0x2, 0x191, 0x30, 0x3, 0x2, 0x2, 0x2, 0x192, 0x193, 0x7, 0x69, - 0x2, 0x2, 0x193, 0x194, 0x7, 0x72, 0x2, 0x2, 0x194, 0x195, 0x7, 0x6a, - 0x2, 0x2, 0x195, 0x196, 0x7, 0x63, 0x2, 0x2, 0x196, 0x197, 0x7, 0x75, - 0x2, 0x2, 0x197, 0x198, 0x7, 0x67, 0x2, 0x2, 0x198, 0x32, 0x3, 0x2, - 0x2, 0x2, 0x199, 0x19a, 0x7, 0x6f, 0x2, 0x2, 0x19a, 0x19b, 0x7, 0x67, - 0x2, 0x2, 0x19b, 0x19c, 0x7, 0x63, 0x2, 0x2, 0x19c, 0x19d, 0x7, 0x75, - 0x2, 0x2, 0x19d, 0x19e, 0x7, 0x77, 0x2, 0x2, 0x19e, 0x19f, 0x7, 0x74, - 0x2, 0x2, 0x19f, 0x1a0, 0x7, 0x67, 0x2, 0x2, 0x1a0, 0x34, 0x3, 0x2, - 0x2, 0x2, 0x1a1, 0x1a2, 0x7, 0x64, 0x2, 0x2, 0x1a2, 0x1a3, 0x7, 0x63, - 0x2, 0x2, 0x1a3, 0x1a4, 0x7, 0x74, 0x2, 0x2, 0x1a4, 0x1a5, 0x7, 0x74, - 0x2, 0x2, 0x1a5, 0x1a6, 0x7, 0x6b, 0x2, 0x2, 0x1a6, 0x1a7, 0x7, 0x67, - 0x2, 0x2, 0x1a7, 0x1a8, 0x7, 0x74, 0x2, 0x2, 0x1a8, 0x36, 0x3, 0x2, - 0x2, 0x2, 0x1a9, 0x1aa, 0x7, 0x6b, 0x2, 0x2, 0x1aa, 0x1ab, 0x7, 0x70, - 0x2, 0x2, 0x1ab, 0x1ac, 0x7, 0x78, 0x2, 0x2, 0x1ac, 0x38, 0x3, 0x2, - 0x2, 0x2, 0x1ad, 0x1ae, 0x7, 0x72, 0x2, 0x2, 0x1ae, 0x1af, 0x7, 0x71, - 0x2, 0x2, 0x1af, 0x1b0, 0x7, 0x79, 0x2, 0x2, 0x1b0, 0x3a, 0x3, 0x2, - 0x2, 0x2, 0x1b1, 0x1b2, 0x7, 0x65, 0x2, 0x2, 0x1b2, 0x1b3, 0x7, 0x76, - 0x2, 0x2, 0x1b3, 0x1b4, 0x7, 0x74, 0x2, 0x2, 0x1b4, 0x1b5, 0x7, 0x6e, - 0x2, 0x2, 0x1b5, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b7, 0x7, 0x42, - 0x2, 0x2, 0x1b7, 0x3e, 0x3, 0x2, 0x2, 0x2, 0x1b8, 0x1b9, 0x7, 0x74, - 0x2, 0x2, 0x1b9, 0x1ba, 0x7, 0x67, 0x2, 0x2, 0x1ba, 0x1bb, 0x7, 0x75, - 0x2, 0x2, 0x1bb, 0x1bc, 0x7, 0x67, 0x2, 0x2, 0x1bc, 0x1bd, 0x7, 0x76, - 0x2, 0x2, 0x1bd, 0x40, 0x3, 0x2, 0x2, 0x2, 0x1be, 0x1bf, 0x7, 0x80, - 0x2, 0x2, 0x1bf, 0x42, 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x1c1, 0x7, 0x23, - 0x2, 0x2, 0x1c1, 0x44, 0x3, 0x2, 0x2, 0x2, 0x1c2, 0x1c3, 0x7, 0x40, - 0x2, 0x2, 0x1c3, 0x46, 0x3, 0x2, 0x2, 0x2, 0x1c4, 0x1c5, 0x7, 0x3e, - 0x2, 0x2, 0x1c5, 0x48, 0x3, 0x2, 0x2, 0x2, 0x1c6, 0x1c7, 0x7, 0x40, - 0x2, 0x2, 0x1c7, 0x1c8, 0x7, 0x3f, 0x2, 0x2, 0x1c8, 0x4a, 0x3, 0x2, - 0x2, 0x2, 0x1c9, 0x1ca, 0x7, 0x3e, 0x2, 0x2, 0x1ca, 0x1cb, 0x7, 0x3f, - 0x2, 0x2, 0x1cb, 0x4c, 0x3, 0x2, 0x2, 0x2, 0x1cc, 0x1cd, 0x7, 0x3f, - 0x2, 0x2, 0x1cd, 0x1ce, 0x7, 0x3f, 0x2, 0x2, 0x1ce, 0x4e, 0x3, 0x2, - 0x2, 0x2, 0x1cf, 0x1d0, 0x7, 0x23, 0x2, 0x2, 0x1d0, 0x1d1, 0x7, 0x3f, - 0x2, 0x2, 0x1d1, 0x50, 0x3, 0x2, 0x2, 0x2, 0x1d2, 0x1d3, 0x7, 0x28, - 0x2, 0x2, 0x1d3, 0x1d4, 0x7, 0x28, 0x2, 0x2, 0x1d4, 0x52, 0x3, 0x2, - 0x2, 0x2, 0x1d5, 0x1d6, 0x7, 0x7e, 0x2, 0x2, 0x1d6, 0x54, 0x3, 0x2, - 0x2, 0x2, 0x1d7, 0x1d8, 0x7, 0x60, 0x2, 0x2, 0x1d8, 0x56, 0x3, 0x2, - 0x2, 0x2, 0x1d9, 0x1da, 0x7, 0x28, 0x2, 0x2, 0x1da, 0x58, 0x3, 0x2, - 0x2, 0x2, 0x1db, 0x1dc, 0x7, 0x3e, 0x2, 0x2, 0x1dc, 0x1dd, 0x7, 0x3e, - 0x2, 0x2, 0x1dd, 0x5a, 0x3, 0x2, 0x2, 0x2, 0x1de, 0x1df, 0x7, 0x40, - 0x2, 0x2, 0x1df, 0x1e0, 0x7, 0x40, 0x2, 0x2, 0x1e0, 0x5c, 0x3, 0x2, - 0x2, 0x2, 0x1e1, 0x1e2, 0x7, 0x2d, 0x2, 0x2, 0x1e2, 0x5e, 0x3, 0x2, - 0x2, 0x2, 0x1e3, 0x1e4, 0x7, 0x2c, 0x2, 0x2, 0x1e4, 0x60, 0x3, 0x2, - 0x2, 0x2, 0x1e5, 0x1e6, 0x7, 0x31, 0x2, 0x2, 0x1e6, 0x62, 0x3, 0x2, - 0x2, 0x2, 0x1e7, 0x1e8, 0x7, 0x27, 0x2, 0x2, 0x1e8, 0x64, 0x3, 0x2, - 0x2, 0x2, 0x1e9, 0x1ea, 0x7, 0x2d, 0x2, 0x2, 0x1ea, 0x1eb, 0x7, 0x2d, - 0x2, 0x2, 0x1eb, 0x66, 0x3, 0x2, 0x2, 0x2, 0x1ec, 0x1ed, 0x7, 0x2f, - 0x2, 0x2, 0x1ed, 0x1ee, 0x7, 0x2f, 0x2, 0x2, 0x1ee, 0x68, 0x3, 0x2, - 0x2, 0x2, 0x1ef, 0x1f0, 0x7, 0x75, 0x2, 0x2, 0x1f0, 0x1f1, 0x7, 0x6b, - 0x2, 0x2, 0x1f1, 0x1f2, 0x7, 0x70, 0x2, 0x2, 0x1f2, 0x6a, 0x3, 0x2, - 0x2, 0x2, 0x1f3, 0x1f4, 0x7, 0x65, 0x2, 0x2, 0x1f4, 0x1f5, 0x7, 0x71, - 0x2, 0x2, 0x1f5, 0x1f6, 0x7, 0x75, 0x2, 0x2, 0x1f6, 0x6c, 0x3, 0x2, - 0x2, 0x2, 0x1f7, 0x1f8, 0x7, 0x76, 0x2, 0x2, 0x1f8, 0x1f9, 0x7, 0x63, - 0x2, 0x2, 0x1f9, 0x1fa, 0x7, 0x70, 0x2, 0x2, 0x1fa, 0x6e, 0x3, 0x2, - 0x2, 0x2, 0x1fb, 0x1fc, 0x7, 0x63, 0x2, 0x2, 0x1fc, 0x1fd, 0x7, 0x74, - 0x2, 0x2, 0x1fd, 0x1fe, 0x7, 0x65, 0x2, 0x2, 0x1fe, 0x1ff, 0x7, 0x76, - 0x2, 0x2, 0x1ff, 0x200, 0x7, 0x63, 0x2, 0x2, 0x200, 0x201, 0x7, 0x70, - 0x2, 0x2, 0x201, 0x70, 0x3, 0x2, 0x2, 0x2, 0x202, 0x203, 0x7, 0x63, - 0x2, 0x2, 0x203, 0x204, 0x7, 0x74, 0x2, 0x2, 0x204, 0x205, 0x7, 0x65, - 0x2, 0x2, 0x205, 0x206, 0x7, 0x65, 0x2, 0x2, 0x206, 0x207, 0x7, 0x71, - 0x2, 0x2, 0x207, 0x208, 0x7, 0x75, 0x2, 0x2, 0x208, 0x72, 0x3, 0x2, - 0x2, 0x2, 0x209, 0x20a, 0x7, 0x63, 0x2, 0x2, 0x20a, 0x20b, 0x7, 0x74, - 0x2, 0x2, 0x20b, 0x20c, 0x7, 0x65, 0x2, 0x2, 0x20c, 0x20d, 0x7, 0x75, - 0x2, 0x2, 0x20d, 0x20e, 0x7, 0x6b, 0x2, 0x2, 0x20e, 0x20f, 0x7, 0x70, - 0x2, 0x2, 0x20f, 0x74, 0x3, 0x2, 0x2, 0x2, 0x210, 0x211, 0x7, 0x67, - 0x2, 0x2, 0x211, 0x212, 0x7, 0x7a, 0x2, 0x2, 0x212, 0x213, 0x7, 0x72, - 0x2, 0x2, 0x213, 0x76, 0x3, 0x2, 0x2, 0x2, 0x214, 0x215, 0x7, 0x6e, - 0x2, 0x2, 0x215, 0x216, 0x7, 0x70, 0x2, 0x2, 0x216, 0x78, 0x3, 0x2, - 0x2, 0x2, 0x217, 0x218, 0x7, 0x75, 0x2, 0x2, 0x218, 0x219, 0x7, 0x73, - 0x2, 0x2, 0x219, 0x21a, 0x7, 0x74, 0x2, 0x2, 0x21a, 0x21b, 0x7, 0x76, - 0x2, 0x2, 0x21b, 0x7a, 0x3, 0x2, 0x2, 0x2, 0x21c, 0x21d, 0x7, 0x74, - 0x2, 0x2, 0x21d, 0x21e, 0x7, 0x71, 0x2, 0x2, 0x21e, 0x21f, 0x7, 0x76, - 0x2, 0x2, 0x21f, 0x220, 0x7, 0x6e, 0x2, 0x2, 0x220, 0x7c, 0x3, 0x2, - 0x2, 0x2, 0x221, 0x222, 0x7, 0x74, 0x2, 0x2, 0x222, 0x223, 0x7, 0x71, - 0x2, 0x2, 0x223, 0x224, 0x7, 0x76, 0x2, 0x2, 0x224, 0x225, 0x7, 0x74, - 0x2, 0x2, 0x225, 0x7e, 0x3, 0x2, 0x2, 0x2, 0x226, 0x227, 0x7, 0x72, - 0x2, 0x2, 0x227, 0x228, 0x7, 0x71, 0x2, 0x2, 0x228, 0x229, 0x7, 0x72, - 0x2, 0x2, 0x229, 0x22a, 0x7, 0x65, 0x2, 0x2, 0x22a, 0x22b, 0x7, 0x71, - 0x2, 0x2, 0x22b, 0x22c, 0x7, 0x77, 0x2, 0x2, 0x22c, 0x22d, 0x7, 0x70, - 0x2, 0x2, 0x22d, 0x22e, 0x7, 0x76, 0x2, 0x2, 0x22e, 0x80, 0x3, 0x2, - 0x2, 0x2, 0x22f, 0x230, 0x7, 0x6e, 0x2, 0x2, 0x230, 0x231, 0x7, 0x67, - 0x2, 0x2, 0x231, 0x232, 0x7, 0x70, 0x2, 0x2, 0x232, 0x233, 0x7, 0x69, - 0x2, 0x2, 0x233, 0x234, 0x7, 0x76, 0x2, 0x2, 0x234, 0x235, 0x7, 0x6a, - 0x2, 0x2, 0x235, 0x236, 0x7, 0x71, 0x2, 0x2, 0x236, 0x237, 0x7, 0x68, - 0x2, 0x2, 0x237, 0x82, 0x3, 0x2, 0x2, 0x2, 0x238, 0x239, 0x7, 0x2d, - 0x2, 0x2, 0x239, 0x23a, 0x7, 0x3f, 0x2, 0x2, 0x23a, 0x84, 0x3, 0x2, - 0x2, 0x2, 0x23b, 0x23c, 0x7, 0x2f, 0x2, 0x2, 0x23c, 0x23d, 0x7, 0x3f, - 0x2, 0x2, 0x23d, 0x86, 0x3, 0x2, 0x2, 0x2, 0x23e, 0x23f, 0x7, 0x2c, - 0x2, 0x2, 0x23f, 0x240, 0x7, 0x3f, 0x2, 0x2, 0x240, 0x88, 0x3, 0x2, - 0x2, 0x2, 0x241, 0x242, 0x7, 0x31, 0x2, 0x2, 0x242, 0x243, 0x7, 0x3f, - 0x2, 0x2, 0x243, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x244, 0x245, 0x7, 0x28, - 0x2, 0x2, 0x245, 0x246, 0x7, 0x3f, 0x2, 0x2, 0x246, 0x8c, 0x3, 0x2, - 0x2, 0x2, 0x247, 0x248, 0x7, 0x7e, 0x2, 0x2, 0x248, 0x249, 0x7, 0x3f, - 0x2, 0x2, 0x249, 0x8e, 0x3, 0x2, 0x2, 0x2, 0x24a, 0x24b, 0x7, 0x80, - 0x2, 0x2, 0x24b, 0x24c, 0x7, 0x3f, 0x2, 0x2, 0x24c, 0x90, 0x3, 0x2, - 0x2, 0x2, 0x24d, 0x24e, 0x7, 0x60, 0x2, 0x2, 0x24e, 0x24f, 0x7, 0x3f, - 0x2, 0x2, 0x24f, 0x92, 0x3, 0x2, 0x2, 0x2, 0x250, 0x251, 0x7, 0x3e, - 0x2, 0x2, 0x251, 0x252, 0x7, 0x3e, 0x2, 0x2, 0x252, 0x253, 0x7, 0x3f, - 0x2, 0x2, 0x253, 0x94, 0x3, 0x2, 0x2, 0x2, 0x254, 0x255, 0x7, 0x40, - 0x2, 0x2, 0x255, 0x256, 0x7, 0x40, 0x2, 0x2, 0x256, 0x257, 0x7, 0x3f, - 0x2, 0x2, 0x257, 0x96, 0x3, 0x2, 0x2, 0x2, 0x258, 0x259, 0x7, 0x6b, - 0x2, 0x2, 0x259, 0x25a, 0x7, 0x70, 0x2, 0x2, 0x25a, 0x98, 0x3, 0x2, - 0x2, 0x2, 0x25b, 0x25c, 0x7, 0x6b, 0x2, 0x2, 0x25c, 0x25d, 0x7, 0x68, - 0x2, 0x2, 0x25d, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x25e, 0x25f, 0x7, 0x67, - 0x2, 0x2, 0x25f, 0x260, 0x7, 0x6e, 0x2, 0x2, 0x260, 0x261, 0x7, 0x75, - 0x2, 0x2, 0x261, 0x262, 0x7, 0x67, 0x2, 0x2, 0x262, 0x9c, 0x3, 0x2, - 0x2, 0x2, 0x263, 0x264, 0x7, 0x68, 0x2, 0x2, 0x264, 0x265, 0x7, 0x71, - 0x2, 0x2, 0x265, 0x266, 0x7, 0x74, 0x2, 0x2, 0x266, 0x9e, 0x3, 0x2, - 0x2, 0x2, 0x267, 0x268, 0x7, 0x79, 0x2, 0x2, 0x268, 0x269, 0x7, 0x6a, - 0x2, 0x2, 0x269, 0x26a, 0x7, 0x6b, 0x2, 0x2, 0x26a, 0x26b, 0x7, 0x6e, - 0x2, 0x2, 0x26b, 0x26c, 0x7, 0x67, 0x2, 0x2, 0x26c, 0xa0, 0x3, 0x2, - 0x2, 0x2, 0x26d, 0x26e, 0x7, 0x74, 0x2, 0x2, 0x26e, 0x26f, 0x7, 0x63, - 0x2, 0x2, 0x26f, 0x270, 0x7, 0x70, 0x2, 0x2, 0x270, 0x271, 0x7, 0x69, - 0x2, 0x2, 0x271, 0x272, 0x7, 0x67, 0x2, 0x2, 0x272, 0xa2, 0x3, 0x2, - 0x2, 0x2, 0x273, 0x274, 0x7, 0x64, 0x2, 0x2, 0x274, 0x275, 0x7, 0x74, - 0x2, 0x2, 0x275, 0x276, 0x7, 0x67, 0x2, 0x2, 0x276, 0x277, 0x7, 0x63, - 0x2, 0x2, 0x277, 0x278, 0x7, 0x6d, 0x2, 0x2, 0x278, 0xa4, 0x3, 0x2, - 0x2, 0x2, 0x279, 0x27a, 0x7, 0x65, 0x2, 0x2, 0x27a, 0x27b, 0x7, 0x71, - 0x2, 0x2, 0x27b, 0x27c, 0x7, 0x70, 0x2, 0x2, 0x27c, 0x27d, 0x7, 0x76, - 0x2, 0x2, 0x27d, 0x27e, 0x7, 0x6b, 0x2, 0x2, 0x27e, 0x27f, 0x7, 0x70, - 0x2, 0x2, 0x27f, 0x280, 0x7, 0x77, 0x2, 0x2, 0x280, 0x281, 0x7, 0x67, - 0x2, 0x2, 0x281, 0xa6, 0x3, 0x2, 0x2, 0x2, 0x282, 0x283, 0x7, 0x67, - 0x2, 0x2, 0x283, 0x284, 0x7, 0x70, 0x2, 0x2, 0x284, 0x285, 0x7, 0x66, - 0x2, 0x2, 0x285, 0xa8, 0x3, 0x2, 0x2, 0x2, 0x286, 0x287, 0x7, 0x6d, - 0x2, 0x2, 0x287, 0x288, 0x7, 0x67, 0x2, 0x2, 0x288, 0x289, 0x7, 0x74, - 0x2, 0x2, 0x289, 0x28a, 0x7, 0x70, 0x2, 0x2, 0x28a, 0x28b, 0x7, 0x67, - 0x2, 0x2, 0x28b, 0x28c, 0x7, 0x6e, 0x2, 0x2, 0x28c, 0xaa, 0x3, 0x2, - 0x2, 0x2, 0x28d, 0x28e, 0x7, 0x66, 0x2, 0x2, 0x28e, 0x28f, 0x7, 0x67, - 0x2, 0x2, 0x28f, 0x290, 0x7, 0x68, 0x2, 0x2, 0x290, 0xac, 0x3, 0x2, - 0x2, 0x2, 0x291, 0x292, 0x7, 0x74, 0x2, 0x2, 0x292, 0x293, 0x7, 0x67, - 0x2, 0x2, 0x293, 0x294, 0x7, 0x76, 0x2, 0x2, 0x294, 0x295, 0x7, 0x77, - 0x2, 0x2, 0x295, 0x296, 0x7, 0x74, 0x2, 0x2, 0x296, 0x297, 0x7, 0x70, - 0x2, 0x2, 0x297, 0xae, 0x3, 0x2, 0x2, 0x2, 0x298, 0x299, 0x7, 0x25, - 0x2, 0x2, 0x299, 0x29a, 0x7, 0x72, 0x2, 0x2, 0x29a, 0x29b, 0x7, 0x74, - 0x2, 0x2, 0x29b, 0x29c, 0x7, 0x63, 0x2, 0x2, 0x29c, 0x29d, 0x7, 0x69, - 0x2, 0x2, 0x29d, 0x29e, 0x7, 0x6f, 0x2, 0x2, 0x29e, 0x29f, 0x7, 0x63, - 0x2, 0x2, 0x29f, 0xb0, 0x3, 0x2, 0x2, 0x2, 0x2a0, 0x2a1, 0x7, 0x6e, - 0x2, 0x2, 0x2a1, 0x2a2, 0x7, 0x67, 0x2, 0x2, 0x2a2, 0x2a3, 0x7, 0x70, - 0x2, 0x2, 0x2a3, 0x2a4, 0x7, 0x69, 0x2, 0x2, 0x2a4, 0x2a5, 0x7, 0x76, - 0x2, 0x2, 0x2a5, 0x2a6, 0x7, 0x6a, 0x2, 0x2, 0x2a6, 0xb2, 0x3, 0x2, - 0x2, 0x2, 0x2a7, 0x2a8, 0x7, 0x75, 0x2, 0x2, 0x2a8, 0x2a9, 0x7, 0x76, - 0x2, 0x2, 0x2a9, 0x2aa, 0x7, 0x74, 0x2, 0x2, 0x2aa, 0x2ab, 0x7, 0x67, - 0x2, 0x2, 0x2ab, 0x2ac, 0x7, 0x76, 0x2, 0x2, 0x2ac, 0x2ad, 0x7, 0x65, - 0x2, 0x2, 0x2ad, 0x2ae, 0x7, 0x6a, 0x2, 0x2, 0x2ae, 0xb4, 0x3, 0x2, - 0x2, 0x2, 0x2af, 0x2b0, 0x7, 0x64, 0x2, 0x2, 0x2b0, 0x2b1, 0x7, 0x71, - 0x2, 0x2, 0x2b1, 0x2b2, 0x7, 0x7a, 0x2, 0x2, 0x2b2, 0x2b3, 0x7, 0x63, - 0x2, 0x2, 0x2b3, 0x2b4, 0x7, 0x75, 0x2, 0x2, 0x2b4, 0xb6, 0x3, 0x2, - 0x2, 0x2, 0x2b5, 0x2b6, 0x7, 0x64, 0x2, 0x2, 0x2b6, 0x2b7, 0x7, 0x71, - 0x2, 0x2, 0x2b7, 0x2b8, 0x7, 0x7a, 0x2, 0x2, 0x2b8, 0x2b9, 0x7, 0x76, - 0x2, 0x2, 0x2b9, 0x2ba, 0x7, 0x71, 0x2, 0x2, 0x2ba, 0xb8, 0x3, 0x2, - 0x2, 0x2, 0x2bb, 0x2bc, 0x7, 0x75, 0x2, 0x2, 0x2bc, 0x2bd, 0x7, 0x76, - 0x2, 0x2, 0x2bd, 0x2be, 0x7, 0x74, 0x2, 0x2, 0x2be, 0x2bf, 0x7, 0x67, - 0x2, 0x2, 0x2bf, 0x2c0, 0x7, 0x76, 0x2, 0x2, 0x2c0, 0x2c1, 0x7, 0x65, - 0x2, 0x2, 0x2c1, 0x2c2, 0x7, 0x6a, 0x2, 0x2, 0x2c2, 0x2c3, 0x7, 0x6b, - 0x2, 0x2, 0x2c3, 0x2c4, 0x7, 0x70, 0x2, 0x2, 0x2c4, 0x2c5, 0x7, 0x68, - 0x2, 0x2, 0x2c5, 0xba, 0x3, 0x2, 0x2, 0x2, 0x2c6, 0x2c7, 0x7, 0x66, - 0x2, 0x2, 0x2c7, 0x2c8, 0x7, 0x67, 0x2, 0x2, 0x2c8, 0x2c9, 0x7, 0x6e, - 0x2, 0x2, 0x2c9, 0x2ca, 0x7, 0x63, 0x2, 0x2, 0x2ca, 0x2cb, 0x7, 0x7b, - 0x2, 0x2, 0x2cb, 0xbc, 0x3, 0x2, 0x2, 0x2, 0x2cc, 0x2cd, 0x7, 0x74, - 0x2, 0x2, 0x2cd, 0x2ce, 0x7, 0x71, 0x2, 0x2, 0x2ce, 0x2cf, 0x7, 0x76, - 0x2, 0x2, 0x2cf, 0x2d0, 0x7, 0x63, 0x2, 0x2, 0x2d0, 0x2d1, 0x7, 0x74, - 0x2, 0x2, 0x2d1, 0x2d2, 0x7, 0x7b, 0x2, 0x2, 0x2d2, 0xbe, 0x3, 0x2, - 0x2, 0x2, 0x2d3, 0x2d4, 0x7, 0x66, 0x2, 0x2, 0x2d4, 0x2d5, 0x7, 0x67, - 0x2, 0x2, 0x2d5, 0x2d6, 0x7, 0x68, 0x2, 0x2, 0x2d6, 0x2d7, 0x7, 0x65, - 0x2, 0x2, 0x2d7, 0x2d8, 0x7, 0x63, 0x2, 0x2, 0x2d8, 0x2d9, 0x7, 0x6e, - 0x2, 0x2, 0x2d9, 0x2da, 0x7, 0x69, 0x2, 0x2, 0x2da, 0x2db, 0x7, 0x74, - 0x2, 0x2, 0x2db, 0x2dc, 0x7, 0x63, 0x2, 0x2, 0x2dc, 0x2dd, 0x7, 0x6f, - 0x2, 0x2, 0x2dd, 0x2de, 0x7, 0x6f, 0x2, 0x2, 0x2de, 0x2df, 0x7, 0x63, - 0x2, 0x2, 0x2df, 0x2e0, 0x7, 0x74, 0x2, 0x2, 0x2e0, 0xc0, 0x3, 0x2, - 0x2, 0x2, 0x2e1, 0x2e2, 0x7, 0x66, 0x2, 0x2, 0x2e2, 0x2e3, 0x7, 0x67, - 0x2, 0x2, 0x2e3, 0x2e4, 0x7, 0x68, 0x2, 0x2, 0x2e4, 0x2e5, 0x7, 0x65, - 0x2, 0x2, 0x2e5, 0x2e6, 0x7, 0x63, 0x2, 0x2, 0x2e6, 0x2e7, 0x7, 0x6e, - 0x2, 0x2, 0x2e7, 0xc2, 0x3, 0x2, 0x2, 0x2, 0x2e8, 0x2e9, 0x7, 0x24, - 0x2, 0x2, 0x2e9, 0x2ea, 0x7, 0x71, 0x2, 0x2, 0x2ea, 0x2eb, 0x7, 0x72, - 0x2, 0x2, 0x2eb, 0x2ec, 0x7, 0x67, 0x2, 0x2, 0x2ec, 0x2ed, 0x7, 0x70, - 0x2, 0x2, 0x2ed, 0x2ee, 0x7, 0x72, 0x2, 0x2, 0x2ee, 0x2ef, 0x7, 0x77, - 0x2, 0x2, 0x2ef, 0x2f0, 0x7, 0x6e, 0x2, 0x2, 0x2f0, 0x2f1, 0x7, 0x75, - 0x2, 0x2, 0x2f1, 0x2f2, 0x7, 0x67, 0x2, 0x2, 0x2f2, 0x2f3, 0x7, 0x24, - 0x2, 0x2, 0x2f3, 0xc4, 0x3, 0x2, 0x2, 0x2, 0x2f4, 0x2f5, 0x7, 0x5d, - 0x2, 0x2, 0x2f5, 0xc6, 0x3, 0x2, 0x2, 0x2, 0x2f6, 0x2f7, 0x7, 0x5f, - 0x2, 0x2, 0x2f7, 0xc8, 0x3, 0x2, 0x2, 0x2, 0x2f8, 0x2f9, 0x7, 0x7d, - 0x2, 0x2, 0x2f9, 0xca, 0x3, 0x2, 0x2, 0x2, 0x2fa, 0x2fb, 0x7, 0x7f, - 0x2, 0x2, 0x2fb, 0xcc, 0x3, 0x2, 0x2, 0x2, 0x2fc, 0x2fd, 0x7, 0x2a, - 0x2, 0x2, 0x2fd, 0xce, 0x3, 0x2, 0x2, 0x2, 0x2fe, 0x2ff, 0x7, 0x2b, - 0x2, 0x2, 0x2ff, 0xd0, 0x3, 0x2, 0x2, 0x2, 0x300, 0x301, 0x7, 0x3c, - 0x2, 0x2, 0x301, 0xd2, 0x3, 0x2, 0x2, 0x2, 0x302, 0x303, 0x7, 0x3d, - 0x2, 0x2, 0x303, 0xd4, 0x3, 0x2, 0x2, 0x2, 0x304, 0x305, 0x7, 0x30, - 0x2, 0x2, 0x305, 0xd6, 0x3, 0x2, 0x2, 0x2, 0x306, 0x307, 0x7, 0x2e, - 0x2, 0x2, 0x307, 0xd8, 0x3, 0x2, 0x2, 0x2, 0x308, 0x309, 0x7, 0x3f, - 0x2, 0x2, 0x309, 0xda, 0x3, 0x2, 0x2, 0x2, 0x30a, 0x30b, 0x7, 0x2f, - 0x2, 0x2, 0x30b, 0x30c, 0x7, 0x40, 0x2, 0x2, 0x30c, 0xdc, 0x3, 0x2, - 0x2, 0x2, 0x30d, 0x30e, 0x7, 0x2f, 0x2, 0x2, 0x30e, 0xde, 0x3, 0x2, - 0x2, 0x2, 0x30f, 0x310, 0x7, 0x67, 0x2, 0x2, 0x310, 0x311, 0x7, 0x7a, - 0x2, 0x2, 0x311, 0x312, 0x7, 0x76, 0x2, 0x2, 0x312, 0x313, 0x7, 0x67, - 0x2, 0x2, 0x313, 0x314, 0x7, 0x74, 0x2, 0x2, 0x314, 0x315, 0x7, 0x70, - 0x2, 0x2, 0x315, 0xe0, 0x3, 0x2, 0x2, 0x2, 0x316, 0x317, 0x7, 0x72, - 0x2, 0x2, 0x317, 0x324, 0x7, 0x6b, 0x2, 0x2, 0x318, 0x324, 0x7, 0x3c2, - 0x2, 0x2, 0x319, 0x31a, 0x7, 0x76, 0x2, 0x2, 0x31a, 0x31b, 0x7, 0x63, - 0x2, 0x2, 0x31b, 0x324, 0x7, 0x77, 0x2, 0x2, 0x31c, 0x324, 0x9, 0xb, - 0x2, 0x2, 0x31d, 0x31e, 0x7, 0x67, 0x2, 0x2, 0x31e, 0x31f, 0x7, 0x77, - 0x2, 0x2, 0x31f, 0x320, 0x7, 0x6e, 0x2, 0x2, 0x320, 0x321, 0x7, 0x67, - 0x2, 0x2, 0x321, 0x324, 0x7, 0x74, 0x2, 0x2, 0x322, 0x324, 0x7, 0x2109, - 0x2, 0x2, 0x323, 0x316, 0x3, 0x2, 0x2, 0x2, 0x323, 0x318, 0x3, 0x2, - 0x2, 0x2, 0x323, 0x319, 0x3, 0x2, 0x2, 0x2, 0x323, 0x31c, 0x3, 0x2, - 0x2, 0x2, 0x323, 0x31d, 0x3, 0x2, 0x2, 0x2, 0x323, 0x322, 0x3, 0x2, - 0x2, 0x2, 0x324, 0xe2, 0x3, 0x2, 0x2, 0x2, 0x325, 0x327, 0x9, 0x2, - 0x2, 0x2, 0x326, 0x325, 0x3, 0x2, 0x2, 0x2, 0x327, 0x328, 0x3, 0x2, - 0x2, 0x2, 0x328, 0x326, 0x3, 0x2, 0x2, 0x2, 0x328, 0x329, 0x3, 0x2, - 0x2, 0x2, 0x329, 0x32a, 0x3, 0x2, 0x2, 0x2, 0x32a, 0x32b, 0x8, 0x72, - 0x2, 0x2, 0x32b, 0xe4, 0x3, 0x2, 0x2, 0x2, 0x32c, 0x32e, 0x9, 0x3, - 0x2, 0x2, 0x32d, 0x32c, 0x3, 0x2, 0x2, 0x2, 0x32e, 0x32f, 0x3, 0x2, - 0x2, 0x2, 0x32f, 0x32d, 0x3, 0x2, 0x2, 0x2, 0x32f, 0x330, 0x3, 0x2, - 0x2, 0x2, 0x330, 0x331, 0x3, 0x2, 0x2, 0x2, 0x331, 0x332, 0x8, 0x73, - 0x2, 0x2, 0x332, 0xe6, 0x3, 0x2, 0x2, 0x2, 0x333, 0x334, 0x9, 0x4, - 0x2, 0x2, 0x334, 0xe8, 0x3, 0x2, 0x2, 0x2, 0x335, 0x337, 0x5, 0xe7, - 0x74, 0x2, 0x336, 0x335, 0x3, 0x2, 0x2, 0x2, 0x337, 0x338, 0x3, 0x2, - 0x2, 0x2, 0x338, 0x336, 0x3, 0x2, 0x2, 0x2, 0x338, 0x339, 0x3, 0x2, - 0x2, 0x2, 0x339, 0xea, 0x3, 0x2, 0x2, 0x2, 0x33a, 0x33b, 0x9, 0xc, - 0x2, 0x2, 0x33b, 0xec, 0x3, 0x2, 0x2, 0x2, 0x33c, 0x33d, 0x9, 0x5, - 0x2, 0x2, 0x33d, 0xee, 0x3, 0x2, 0x2, 0x2, 0x33e, 0x342, 0x9, 0x6, - 0x2, 0x2, 0x33f, 0x342, 0x5, 0xeb, 0x76, 0x2, 0x340, 0x342, 0x5, - 0xed, 0x77, 0x2, 0x341, 0x33e, 0x3, 0x2, 0x2, 0x2, 0x341, 0x33f, - 0x3, 0x2, 0x2, 0x2, 0x341, 0x340, 0x3, 0x2, 0x2, 0x2, 0x342, 0xf0, - 0x3, 0x2, 0x2, 0x2, 0x343, 0x346, 0x5, 0xef, 0x78, 0x2, 0x344, 0x346, - 0x5, 0xe9, 0x75, 0x2, 0x345, 0x343, 0x3, 0x2, 0x2, 0x2, 0x345, 0x344, - 0x3, 0x2, 0x2, 0x2, 0x346, 0xf2, 0x3, 0x2, 0x2, 0x2, 0x347, 0x34b, - 0x5, 0xef, 0x78, 0x2, 0x348, 0x34a, 0x5, 0xf1, 0x79, 0x2, 0x349, - 0x348, 0x3, 0x2, 0x2, 0x2, 0x34a, 0x34d, 0x3, 0x2, 0x2, 0x2, 0x34b, - 0x349, 0x3, 0x2, 0x2, 0x2, 0x34b, 0x34c, 0x3, 0x2, 0x2, 0x2, 0x34c, - 0xf4, 0x3, 0x2, 0x2, 0x2, 0x34d, 0x34b, 0x3, 0x2, 0x2, 0x2, 0x34e, - 0x34f, 0x9, 0x7, 0x2, 0x2, 0x34f, 0xf6, 0x3, 0x2, 0x2, 0x2, 0x350, - 0x351, 0x9, 0x8, 0x2, 0x2, 0x351, 0xf8, 0x3, 0x2, 0x2, 0x2, 0x352, - 0x354, 0x5, 0xe7, 0x74, 0x2, 0x353, 0x352, 0x3, 0x2, 0x2, 0x2, 0x354, - 0x355, 0x3, 0x2, 0x2, 0x2, 0x355, 0x353, 0x3, 0x2, 0x2, 0x2, 0x355, - 0x356, 0x3, 0x2, 0x2, 0x2, 0x356, 0x357, 0x3, 0x2, 0x2, 0x2, 0x357, - 0x35b, 0x5, 0xd5, 0x6b, 0x2, 0x358, 0x35a, 0x5, 0xe7, 0x74, 0x2, - 0x359, 0x358, 0x3, 0x2, 0x2, 0x2, 0x35a, 0x35d, 0x3, 0x2, 0x2, 0x2, - 0x35b, 0x359, 0x3, 0x2, 0x2, 0x2, 0x35b, 0x35c, 0x3, 0x2, 0x2, 0x2, - 0x35c, 0x366, 0x3, 0x2, 0x2, 0x2, 0x35d, 0x35b, 0x3, 0x2, 0x2, 0x2, - 0x35e, 0x362, 0x5, 0xd5, 0x6b, 0x2, 0x35f, 0x361, 0x5, 0xe7, 0x74, - 0x2, 0x360, 0x35f, 0x3, 0x2, 0x2, 0x2, 0x361, 0x364, 0x3, 0x2, 0x2, - 0x2, 0x362, 0x360, 0x3, 0x2, 0x2, 0x2, 0x362, 0x363, 0x3, 0x2, 0x2, - 0x2, 0x363, 0x366, 0x3, 0x2, 0x2, 0x2, 0x364, 0x362, 0x3, 0x2, 0x2, - 0x2, 0x365, 0x353, 0x3, 0x2, 0x2, 0x2, 0x365, 0x35e, 0x3, 0x2, 0x2, - 0x2, 0x366, 0xfa, 0x3, 0x2, 0x2, 0x2, 0x367, 0x36e, 0x5, 0xf9, 0x7d, - 0x2, 0x368, 0x36a, 0x5, 0xf5, 0x7b, 0x2, 0x369, 0x36b, 0x5, 0xf7, - 0x7c, 0x2, 0x36a, 0x369, 0x3, 0x2, 0x2, 0x2, 0x36a, 0x36b, 0x3, 0x2, - 0x2, 0x2, 0x36b, 0x36c, 0x3, 0x2, 0x2, 0x2, 0x36c, 0x36d, 0x5, 0xe9, - 0x75, 0x2, 0x36d, 0x36f, 0x3, 0x2, 0x2, 0x2, 0x36e, 0x368, 0x3, 0x2, - 0x2, 0x2, 0x36e, 0x36f, 0x3, 0x2, 0x2, 0x2, 0x36f, 0xfc, 0x3, 0x2, - 0x2, 0x2, 0x370, 0x371, 0x7, 0x66, 0x2, 0x2, 0x371, 0x37c, 0x7, 0x76, - 0x2, 0x2, 0x372, 0x373, 0x7, 0x70, 0x2, 0x2, 0x373, 0x37c, 0x7, 0x75, - 0x2, 0x2, 0x374, 0x375, 0x7, 0x77, 0x2, 0x2, 0x375, 0x37c, 0x7, 0x75, - 0x2, 0x2, 0x376, 0x377, 0x7, 0xb7, 0x2, 0x2, 0x377, 0x37c, 0x7, 0x75, - 0x2, 0x2, 0x378, 0x379, 0x7, 0x6f, 0x2, 0x2, 0x379, 0x37c, 0x7, 0x75, - 0x2, 0x2, 0x37a, 0x37c, 0x7, 0x75, 0x2, 0x2, 0x37b, 0x370, 0x3, 0x2, - 0x2, 0x2, 0x37b, 0x372, 0x3, 0x2, 0x2, 0x2, 0x37b, 0x374, 0x3, 0x2, - 0x2, 0x2, 0x37b, 0x376, 0x3, 0x2, 0x2, 0x2, 0x37b, 0x378, 0x3, 0x2, - 0x2, 0x2, 0x37b, 0x37a, 0x3, 0x2, 0x2, 0x2, 0x37c, 0xfe, 0x3, 0x2, - 0x2, 0x2, 0x37d, 0x380, 0x5, 0xe9, 0x75, 0x2, 0x37e, 0x380, 0x5, - 0xfb, 0x7e, 0x2, 0x37f, 0x37d, 0x3, 0x2, 0x2, 0x2, 0x37f, 0x37e, - 0x3, 0x2, 0x2, 0x2, 0x380, 0x381, 0x3, 0x2, 0x2, 0x2, 0x381, 0x382, - 0x5, 0xfd, 0x7f, 0x2, 0x382, 0x100, 0x3, 0x2, 0x2, 0x2, 0x383, 0x385, - 0x7, 0x24, 0x2, 0x2, 0x384, 0x386, 0xa, 0x9, 0x2, 0x2, 0x385, 0x384, - 0x3, 0x2, 0x2, 0x2, 0x386, 0x387, 0x3, 0x2, 0x2, 0x2, 0x387, 0x388, - 0x3, 0x2, 0x2, 0x2, 0x387, 0x385, 0x3, 0x2, 0x2, 0x2, 0x388, 0x389, - 0x3, 0x2, 0x2, 0x2, 0x389, 0x392, 0x7, 0x24, 0x2, 0x2, 0x38a, 0x38c, - 0x7, 0x29, 0x2, 0x2, 0x38b, 0x38d, 0xa, 0xa, 0x2, 0x2, 0x38c, 0x38b, - 0x3, 0x2, 0x2, 0x2, 0x38d, 0x38e, 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38f, - 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38c, 0x3, 0x2, 0x2, 0x2, 0x38f, 0x390, - 0x3, 0x2, 0x2, 0x2, 0x390, 0x392, 0x7, 0x29, 0x2, 0x2, 0x391, 0x383, - 0x3, 0x2, 0x2, 0x2, 0x391, 0x38a, 0x3, 0x2, 0x2, 0x2, 0x392, 0x102, - 0x3, 0x2, 0x2, 0x2, 0x393, 0x394, 0x7, 0x31, 0x2, 0x2, 0x394, 0x395, - 0x7, 0x31, 0x2, 0x2, 0x395, 0x399, 0x3, 0x2, 0x2, 0x2, 0x396, 0x398, - 0xa, 0x3, 0x2, 0x2, 0x397, 0x396, 0x3, 0x2, 0x2, 0x2, 0x398, 0x39b, - 0x3, 0x2, 0x2, 0x2, 0x399, 0x397, 0x3, 0x2, 0x2, 0x2, 0x399, 0x39a, - 0x3, 0x2, 0x2, 0x2, 0x39a, 0x39c, 0x3, 0x2, 0x2, 0x2, 0x39b, 0x399, - 0x3, 0x2, 0x2, 0x2, 0x39c, 0x39d, 0x8, 0x82, 0x2, 0x2, 0x39d, 0x104, - 0x3, 0x2, 0x2, 0x2, 0x39e, 0x39f, 0x7, 0x31, 0x2, 0x2, 0x39f, 0x3a0, - 0x7, 0x2c, 0x2, 0x2, 0x3a0, 0x3a4, 0x3, 0x2, 0x2, 0x2, 0x3a1, 0x3a3, - 0xb, 0x2, 0x2, 0x2, 0x3a2, 0x3a1, 0x3, 0x2, 0x2, 0x2, 0x3a3, 0x3a6, - 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x3a5, 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x3a2, - 0x3, 0x2, 0x2, 0x2, 0x3a5, 0x3a7, 0x3, 0x2, 0x2, 0x2, 0x3a6, 0x3a4, - 0x3, 0x2, 0x2, 0x2, 0x3a7, 0x3a8, 0x7, 0x2c, 0x2, 0x2, 0x3a8, 0x3a9, - 0x7, 0x31, 0x2, 0x2, 0x3a9, 0x3aa, 0x3, 0x2, 0x2, 0x2, 0x3aa, 0x3ab, - 0x8, 0x83, 0x2, 0x2, 0x3ab, 0x106, 0x3, 0x2, 0x2, 0x2, 0x17, 0x2, - 0x323, 0x328, 0x32f, 0x338, 0x341, 0x345, 0x34b, 0x355, 0x35b, 0x362, - 0x365, 0x36a, 0x36e, 0x37b, 0x37f, 0x387, 0x38e, 0x391, 0x399, 0x3a4, - 0x3, 0x8, 0x2, 0x2, - }; - - _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, - serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); - - - atn::ATNDeserializer deserializer; - _atn = deserializer.deserialize(_serializedATN); - - size_t count = _atn.getNumberOfDecisions(); - _decisionToDFA.reserve(count); - for (size_t i = 0; i < count; i++) { - _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); - } -} - -qasm3Lexer::Initializer qasm3Lexer::_init; + +// Generated from qasm3.g4 by ANTLR 4.9.2 + + +#include "qasm3Lexer.h" + + +using namespace antlr4; + +using namespace qasm3; + +qasm3Lexer::qasm3Lexer(CharStream *input) : Lexer(input) { + _interpreter = new atn::LexerATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); +} + +qasm3Lexer::~qasm3Lexer() { + delete _interpreter; +} + +std::string qasm3Lexer::getGrammarFileName() const { + return "qasm3.g4"; +} + +const std::vector& qasm3Lexer::getRuleNames() const { + return _ruleNames; +} + +const std::vector& qasm3Lexer::getChannelNames() const { + return _channelNames; +} + +const std::vector& qasm3Lexer::getModeNames() const { + return _modeNames; +} + +const std::vector& qasm3Lexer::getTokenNames() const { + return _tokenNames; +} + +dfa::Vocabulary& qasm3Lexer::getVocabulary() const { + return _vocabulary; +} + +const std::vector qasm3Lexer::getSerializedATN() const { + return _serializedATN; +} + +const atn::ATN& qasm3Lexer::getATN() const { + return _atn; +} + + + + +// Static vars and initialization. +std::vector qasm3Lexer::_decisionToDFA; +atn::PredictionContextCache qasm3Lexer::_sharedContextCache; + +// We own the ATN which in turn owns the ATN states. +atn::ATN qasm3Lexer::_atn; +std::vector qasm3Lexer::_serializedATN; + +std::vector qasm3Lexer::_ruleNames = { + "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", + "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", + "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", + "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", + "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", + "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48", + "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56", + "T__57", "T__58", "T__59", "T__60", "T__61", "T__62", "T__63", "T__64", + "T__65", "T__66", "T__67", "T__68", "T__69", "T__70", "T__71", "T__72", + "T__73", "T__74", "T__75", "T__76", "T__77", "T__78", "T__79", "T__80", + "T__81", "T__82", "T__83", "T__84", "T__85", "T__86", "T__87", "T__88", + "T__89", "T__90", "T__91", "T__92", "T__93", "T__94", "T__95", "T__96", + "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "LPAREN", "RPAREN", "COLON", + "SEMICOLON", "DOT", "COMMA", "EQUALS", "ARROW", "MINUS", "EXTERN", "Constant", + "Whitespace", "Newline", "Digit", "Integer", "ValidUnicode", "Letter", + "FirstIdCharacter", "GeneralIdCharacter", "Identifier", "SciNotation", + "PlusMinus", "Float", "RealNumber", "TimeUnit", "TimingLiteral", "StringLiteral", + "LineComment", "BlockComment" +}; + +std::vector qasm3Lexer::_channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" +}; + +std::vector qasm3Lexer::_modeNames = { + "DEFAULT_MODE" +}; + +std::vector qasm3Lexer::_literalNames = { + "", "'OPENQASM'", "'include'", "'compute'", "'action'", "'QCOR_EXPECT_TRUE'", + "'qubit'", "'qreg'", "'bit'", "'creg'", "'int'", "'uint'", "'float'", + "'angle'", "'fixed'", "'bool'", "'int64_t'", "'double'", "'const'", "'let'", + "'||'", "'gate'", "'CX'", "'U'", "'gphase'", "'measure'", "'barrier'", + "'inv'", "'pow'", "'ctrl'", "'@'", "'reset'", "'~'", "'!'", "'>'", "'<'", + "'>='", "'<='", "'=='", "'!='", "'&&'", "'|'", "'^'", "'&'", "'<<'", "'>>'", + "'+'", "'*'", "'/'", "'%'", "'++'", "'--'", "'sin'", "'cos'", "'tan'", + "'arctan'", "'arccos'", "'arcsin'", "'exp'", "'ln'", "'sqrt'", "'rotl'", + "'rotr'", "'popcount'", "'lengthof'", "'+='", "'-='", "'*='", "'/='", + "'&='", "'|='", "'~='", "'^='", "'<<='", "'>>='", "'in'", "'if'", "'else'", + "'for'", "'while'", "'range'", "'break'", "'continue'", "'end'", "'kernel'", + "'def'", "'return'", "'#pragma'", "'length'", "'stretch'", "'boxas'", + "'boxto'", "'stretchinf'", "'delay'", "'rotary'", "'defcalgrammar'", "'defcal'", + "'\"openpulse\"'", "'['", "']'", "'{'", "'}'", "'('", "')'", "':'", "';'", + "'.'", "','", "'='", "'->'", "'-'", "'extern'" +}; + +std::vector qasm3Lexer::_symbolicNames = { + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", + "LPAREN", "RPAREN", "COLON", "SEMICOLON", "DOT", "COMMA", "EQUALS", "ARROW", + "MINUS", "EXTERN", "Constant", "Whitespace", "Newline", "Integer", "Identifier", + "RealNumber", "TimingLiteral", "StringLiteral", "LineComment", "BlockComment" +}; + +dfa::Vocabulary qasm3Lexer::_vocabulary(_literalNames, _symbolicNames); + +std::vector qasm3Lexer::_tokenNames; + +qasm3Lexer::Initializer::Initializer() { + // This code could be in a static initializer lambda, but VS doesn't allow access to private class members from there. + for (size_t i = 0; i < _symbolicNames.size(); ++i) { + std::string name = _vocabulary.getLiteralName(i); + if (name.empty()) { + name = _vocabulary.getSymbolicName(i); + } + + if (name.empty()) { + _tokenNames.push_back(""); + } else { + _tokenNames.push_back(name); + } + } + + static const uint16_t serializedATNSegment0[] = { + 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, + 0x2, 0x7b, 0x3b3, 0x8, 0x1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, + 0x4, 0x4, 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, + 0x7, 0x9, 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, + 0x9, 0xa, 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, + 0xd, 0x4, 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, + 0x4, 0x11, 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, + 0x4, 0x14, 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, + 0x4, 0x17, 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, + 0x4, 0x1a, 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, + 0x4, 0x1d, 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, + 0x4, 0x20, 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, + 0x4, 0x23, 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, + 0x4, 0x26, 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, + 0x4, 0x29, 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, + 0x4, 0x2c, 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, + 0x4, 0x2f, 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, + 0x4, 0x32, 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, + 0x4, 0x35, 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, + 0x4, 0x38, 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, + 0x4, 0x3b, 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, + 0x4, 0x3e, 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, + 0x4, 0x41, 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, + 0x4, 0x44, 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, + 0x4, 0x47, 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, + 0x4, 0x4a, 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, + 0x4, 0x4d, 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, + 0x4, 0x50, 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, + 0x4, 0x53, 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, + 0x4, 0x56, 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, + 0x4, 0x59, 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, + 0x4, 0x5c, 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, + 0x4, 0x5f, 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, + 0x4, 0x62, 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, + 0x4, 0x65, 0x9, 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67, 0x9, 0x67, + 0x4, 0x68, 0x9, 0x68, 0x4, 0x69, 0x9, 0x69, 0x4, 0x6a, 0x9, 0x6a, + 0x4, 0x6b, 0x9, 0x6b, 0x4, 0x6c, 0x9, 0x6c, 0x4, 0x6d, 0x9, 0x6d, + 0x4, 0x6e, 0x9, 0x6e, 0x4, 0x6f, 0x9, 0x6f, 0x4, 0x70, 0x9, 0x70, + 0x4, 0x71, 0x9, 0x71, 0x4, 0x72, 0x9, 0x72, 0x4, 0x73, 0x9, 0x73, + 0x4, 0x74, 0x9, 0x74, 0x4, 0x75, 0x9, 0x75, 0x4, 0x76, 0x9, 0x76, + 0x4, 0x77, 0x9, 0x77, 0x4, 0x78, 0x9, 0x78, 0x4, 0x79, 0x9, 0x79, + 0x4, 0x7a, 0x9, 0x7a, 0x4, 0x7b, 0x9, 0x7b, 0x4, 0x7c, 0x9, 0x7c, + 0x4, 0x7d, 0x9, 0x7d, 0x4, 0x7e, 0x9, 0x7e, 0x4, 0x7f, 0x9, 0x7f, + 0x4, 0x80, 0x9, 0x80, 0x4, 0x81, 0x9, 0x81, 0x4, 0x82, 0x9, 0x82, + 0x4, 0x83, 0x9, 0x83, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, + 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0x3, + 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, + 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, + 0x3, 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, + 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, + 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, + 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x7, + 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x8, 0x3, + 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, + 0x3, 0x9, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, 0xa, 0x3, + 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, + 0x3, 0xc, 0x3, 0xc, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x3, + 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, + 0x3, 0xe, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, 0xf, 0x3, + 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, + 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, + 0x11, 0x3, 0x11, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, + 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, + 0x13, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, 0x14, 0x3, 0x14, 0x3, + 0x14, 0x3, 0x15, 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, + 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x17, 0x3, + 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x19, 0x3, 0x19, 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, + 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1b, 0x3, + 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, + 0x1b, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, + 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, + 0x1e, 0x3, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, + 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, + 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, + 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, + 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, + 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, + 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, + 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x30, 0x3, + 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, + 0x33, 0x3, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x35, 0x3, + 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, + 0x36, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x38, 0x3, + 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, 0x38, 0x3, + 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, 0x39, 0x3, + 0x39, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3a, 0x3, + 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, + 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, + 0x3d, 0x3, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, + 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, + 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, + 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, + 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, + 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, + 0x44, 0x3, 0x44, 0x3, 0x44, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, + 0x46, 0x3, 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, 0x3, 0x47, 0x3, + 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, + 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, + 0x4b, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4d, 0x3, + 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, + 0x4e, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x50, 0x3, + 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x51, 0x3, + 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x52, 0x3, + 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x53, 0x3, + 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, + 0x53, 0x3, 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, + 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, + 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, + 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, + 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, + 0x58, 0x3, 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, + 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, + 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, 0x3, + 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5c, 0x3, + 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, + 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, + 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, + 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, + 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x60, 0x3, + 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, + 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, 0x60, 0x3, + 0x60, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, + 0x61, 0x3, 0x61, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, + 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, 0x62, 0x3, + 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, 0x64, 0x3, + 0x65, 0x3, 0x65, 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, + 0x68, 0x3, 0x68, 0x3, 0x69, 0x3, 0x69, 0x3, 0x6a, 0x3, 0x6a, 0x3, + 0x6b, 0x3, 0x6b, 0x3, 0x6c, 0x3, 0x6c, 0x3, 0x6d, 0x3, 0x6d, 0x3, + 0x6e, 0x3, 0x6e, 0x3, 0x6e, 0x3, 0x6f, 0x3, 0x6f, 0x3, 0x70, 0x3, + 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, + 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, + 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, + 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, 0x71, 0x3, + 0x71, 0x5, 0x71, 0x32a, 0xa, 0x71, 0x3, 0x72, 0x6, 0x72, 0x32d, 0xa, + 0x72, 0xd, 0x72, 0xe, 0x72, 0x32e, 0x3, 0x72, 0x3, 0x72, 0x3, 0x73, + 0x6, 0x73, 0x334, 0xa, 0x73, 0xd, 0x73, 0xe, 0x73, 0x335, 0x3, 0x73, + 0x3, 0x73, 0x3, 0x74, 0x3, 0x74, 0x3, 0x75, 0x6, 0x75, 0x33d, 0xa, + 0x75, 0xd, 0x75, 0xe, 0x75, 0x33e, 0x3, 0x76, 0x3, 0x76, 0x3, 0x77, + 0x3, 0x77, 0x3, 0x78, 0x3, 0x78, 0x3, 0x78, 0x5, 0x78, 0x348, 0xa, + 0x78, 0x3, 0x79, 0x3, 0x79, 0x5, 0x79, 0x34c, 0xa, 0x79, 0x3, 0x7a, + 0x3, 0x7a, 0x7, 0x7a, 0x350, 0xa, 0x7a, 0xc, 0x7a, 0xe, 0x7a, 0x353, + 0xb, 0x7a, 0x3, 0x7b, 0x3, 0x7b, 0x3, 0x7c, 0x3, 0x7c, 0x3, 0x7d, + 0x6, 0x7d, 0x35a, 0xa, 0x7d, 0xd, 0x7d, 0xe, 0x7d, 0x35b, 0x3, 0x7d, + 0x3, 0x7d, 0x7, 0x7d, 0x360, 0xa, 0x7d, 0xc, 0x7d, 0xe, 0x7d, 0x363, + 0xb, 0x7d, 0x3, 0x7d, 0x3, 0x7d, 0x7, 0x7d, 0x367, 0xa, 0x7d, 0xc, + 0x7d, 0xe, 0x7d, 0x36a, 0xb, 0x7d, 0x5, 0x7d, 0x36c, 0xa, 0x7d, 0x3, + 0x7e, 0x3, 0x7e, 0x3, 0x7e, 0x5, 0x7e, 0x371, 0xa, 0x7e, 0x3, 0x7e, + 0x3, 0x7e, 0x5, 0x7e, 0x375, 0xa, 0x7e, 0x3, 0x7f, 0x3, 0x7f, 0x3, + 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, + 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x3, 0x7f, 0x5, 0x7f, 0x383, 0xa, 0x7f, + 0x3, 0x80, 0x3, 0x80, 0x5, 0x80, 0x387, 0xa, 0x80, 0x3, 0x80, 0x3, + 0x80, 0x3, 0x81, 0x3, 0x81, 0x6, 0x81, 0x38d, 0xa, 0x81, 0xd, 0x81, + 0xe, 0x81, 0x38e, 0x3, 0x81, 0x3, 0x81, 0x3, 0x81, 0x6, 0x81, 0x394, + 0xa, 0x81, 0xd, 0x81, 0xe, 0x81, 0x395, 0x3, 0x81, 0x5, 0x81, 0x399, + 0xa, 0x81, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x3, 0x82, 0x7, 0x82, + 0x39f, 0xa, 0x82, 0xc, 0x82, 0xe, 0x82, 0x3a2, 0xb, 0x82, 0x3, 0x82, + 0x3, 0x82, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x7, 0x83, + 0x3aa, 0xa, 0x83, 0xc, 0x83, 0xe, 0x83, 0x3ad, 0xb, 0x83, 0x3, 0x83, + 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x3, 0x83, 0x5, 0x38e, 0x395, 0x3ab, + 0x2, 0x84, 0x3, 0x3, 0x5, 0x4, 0x7, 0x5, 0x9, 0x6, 0xb, 0x7, 0xd, + 0x8, 0xf, 0x9, 0x11, 0xa, 0x13, 0xb, 0x15, 0xc, 0x17, 0xd, 0x19, + 0xe, 0x1b, 0xf, 0x1d, 0x10, 0x1f, 0x11, 0x21, 0x12, 0x23, 0x13, 0x25, + 0x14, 0x27, 0x15, 0x29, 0x16, 0x2b, 0x17, 0x2d, 0x18, 0x2f, 0x19, + 0x31, 0x1a, 0x33, 0x1b, 0x35, 0x1c, 0x37, 0x1d, 0x39, 0x1e, 0x3b, + 0x1f, 0x3d, 0x20, 0x3f, 0x21, 0x41, 0x22, 0x43, 0x23, 0x45, 0x24, + 0x47, 0x25, 0x49, 0x26, 0x4b, 0x27, 0x4d, 0x28, 0x4f, 0x29, 0x51, + 0x2a, 0x53, 0x2b, 0x55, 0x2c, 0x57, 0x2d, 0x59, 0x2e, 0x5b, 0x2f, + 0x5d, 0x30, 0x5f, 0x31, 0x61, 0x32, 0x63, 0x33, 0x65, 0x34, 0x67, + 0x35, 0x69, 0x36, 0x6b, 0x37, 0x6d, 0x38, 0x6f, 0x39, 0x71, 0x3a, + 0x73, 0x3b, 0x75, 0x3c, 0x77, 0x3d, 0x79, 0x3e, 0x7b, 0x3f, 0x7d, + 0x40, 0x7f, 0x41, 0x81, 0x42, 0x83, 0x43, 0x85, 0x44, 0x87, 0x45, + 0x89, 0x46, 0x8b, 0x47, 0x8d, 0x48, 0x8f, 0x49, 0x91, 0x4a, 0x93, + 0x4b, 0x95, 0x4c, 0x97, 0x4d, 0x99, 0x4e, 0x9b, 0x4f, 0x9d, 0x50, + 0x9f, 0x51, 0xa1, 0x52, 0xa3, 0x53, 0xa5, 0x54, 0xa7, 0x55, 0xa9, + 0x56, 0xab, 0x57, 0xad, 0x58, 0xaf, 0x59, 0xb1, 0x5a, 0xb3, 0x5b, + 0xb5, 0x5c, 0xb7, 0x5d, 0xb9, 0x5e, 0xbb, 0x5f, 0xbd, 0x60, 0xbf, + 0x61, 0xc1, 0x62, 0xc3, 0x63, 0xc5, 0x64, 0xc7, 0x65, 0xc9, 0x66, + 0xcb, 0x67, 0xcd, 0x68, 0xcf, 0x69, 0xd1, 0x6a, 0xd3, 0x6b, 0xd5, + 0x6c, 0xd7, 0x6d, 0xd9, 0x6e, 0xdb, 0x6f, 0xdd, 0x70, 0xdf, 0x71, + 0xe1, 0x72, 0xe3, 0x73, 0xe5, 0x74, 0xe7, 0x2, 0xe9, 0x75, 0xeb, + 0x2, 0xed, 0x2, 0xef, 0x2, 0xf1, 0x2, 0xf3, 0x76, 0xf5, 0x2, 0xf7, + 0x2, 0xf9, 0x2, 0xfb, 0x77, 0xfd, 0x2, 0xff, 0x78, 0x101, 0x79, 0x103, + 0x7a, 0x105, 0x7b, 0x3, 0x2, 0xb, 0x4, 0x2, 0xb, 0xb, 0x22, 0x22, + 0x4, 0x2, 0xc, 0xc, 0xf, 0xf, 0x3, 0x2, 0x32, 0x3b, 0x4, 0x2, 0x43, + 0x5c, 0x63, 0x7c, 0x4, 0x2, 0x26, 0x26, 0x61, 0x61, 0x4, 0x2, 0x47, + 0x47, 0x67, 0x67, 0x4, 0x2, 0x2d, 0x2d, 0x2f, 0x2f, 0x5, 0x2, 0xb, + 0xc, 0xf, 0xf, 0x24, 0x24, 0x5, 0x2, 0xb, 0xc, 0xf, 0xf, 0x29, 0x29, + 0x3, 0x24e, 0x2, 0x43, 0x2, 0x5c, 0x2, 0x63, 0x2, 0x7c, 0x2, 0xac, + 0x2, 0xac, 0x2, 0xb7, 0x2, 0xb7, 0x2, 0xbc, 0x2, 0xbc, 0x2, 0xc2, + 0x2, 0xd8, 0x2, 0xda, 0x2, 0xf8, 0x2, 0xfa, 0x2, 0x2c3, 0x2, 0x2c8, + 0x2, 0x2d3, 0x2, 0x2e2, 0x2, 0x2e6, 0x2, 0x2ee, 0x2, 0x2ee, 0x2, + 0x2f0, 0x2, 0x2f0, 0x2, 0x372, 0x2, 0x376, 0x2, 0x378, 0x2, 0x379, + 0x2, 0x37c, 0x2, 0x37f, 0x2, 0x381, 0x2, 0x381, 0x2, 0x388, 0x2, + 0x388, 0x2, 0x38a, 0x2, 0x38c, 0x2, 0x38e, 0x2, 0x38e, 0x2, 0x390, + 0x2, 0x3a3, 0x2, 0x3a5, 0x2, 0x3f7, 0x2, 0x3f9, 0x2, 0x483, 0x2, + 0x48c, 0x2, 0x531, 0x2, 0x533, 0x2, 0x558, 0x2, 0x55b, 0x2, 0x55b, + 0x2, 0x563, 0x2, 0x589, 0x2, 0x5d2, 0x2, 0x5ec, 0x2, 0x5f2, 0x2, + 0x5f4, 0x2, 0x622, 0x2, 0x64c, 0x2, 0x670, 0x2, 0x671, 0x2, 0x673, + 0x2, 0x6d5, 0x2, 0x6d7, 0x2, 0x6d7, 0x2, 0x6e7, 0x2, 0x6e8, 0x2, + 0x6f0, 0x2, 0x6f1, 0x2, 0x6fc, 0x2, 0x6fe, 0x2, 0x701, 0x2, 0x701, + 0x2, 0x712, 0x2, 0x712, 0x2, 0x714, 0x2, 0x731, 0x2, 0x74f, 0x2, + 0x7a7, 0x2, 0x7b3, 0x2, 0x7b3, 0x2, 0x7cc, 0x2, 0x7ec, 0x2, 0x7f6, + 0x2, 0x7f7, 0x2, 0x7fc, 0x2, 0x7fc, 0x2, 0x802, 0x2, 0x817, 0x2, + 0x81c, 0x2, 0x81c, 0x2, 0x826, 0x2, 0x826, 0x2, 0x82a, 0x2, 0x82a, + 0x2, 0x842, 0x2, 0x85a, 0x2, 0x862, 0x2, 0x86c, 0x2, 0x8a2, 0x2, + 0x8b6, 0x2, 0x8b8, 0x2, 0x8bf, 0x2, 0x906, 0x2, 0x93b, 0x2, 0x93f, + 0x2, 0x93f, 0x2, 0x952, 0x2, 0x952, 0x2, 0x95a, 0x2, 0x963, 0x2, + 0x973, 0x2, 0x982, 0x2, 0x987, 0x2, 0x98e, 0x2, 0x991, 0x2, 0x992, + 0x2, 0x995, 0x2, 0x9aa, 0x2, 0x9ac, 0x2, 0x9b2, 0x2, 0x9b4, 0x2, + 0x9b4, 0x2, 0x9b8, 0x2, 0x9bb, 0x2, 0x9bf, 0x2, 0x9bf, 0x2, 0x9d0, + 0x2, 0x9d0, 0x2, 0x9de, 0x2, 0x9df, 0x2, 0x9e1, 0x2, 0x9e3, 0x2, + 0x9f2, 0x2, 0x9f3, 0x2, 0x9fe, 0x2, 0x9fe, 0x2, 0xa07, 0x2, 0xa0c, + 0x2, 0xa11, 0x2, 0xa12, 0x2, 0xa15, 0x2, 0xa2a, 0x2, 0xa2c, 0x2, + 0xa32, 0x2, 0xa34, 0x2, 0xa35, 0x2, 0xa37, 0x2, 0xa38, 0x2, 0xa3a, + 0x2, 0xa3b, 0x2, 0xa5b, 0x2, 0xa5e, 0x2, 0xa60, 0x2, 0xa60, 0x2, + 0xa74, 0x2, 0xa76, 0x2, 0xa87, 0x2, 0xa8f, 0x2, 0xa91, 0x2, 0xa93, + 0x2, 0xa95, 0x2, 0xaaa, 0x2, 0xaac, 0x2, 0xab2, 0x2, 0xab4, 0x2, + 0xab5, 0x2, 0xab7, 0x2, 0xabb, 0x2, 0xabf, 0x2, 0xabf, 0x2, 0xad2, + 0x2, 0xad2, 0x2, 0xae2, 0x2, 0xae3, 0x2, 0xafb, 0x2, 0xafb, 0x2, + 0xb07, 0x2, 0xb0e, 0x2, 0xb11, 0x2, 0xb12, 0x2, 0xb15, 0x2, 0xb2a, + 0x2, 0xb2c, 0x2, 0xb32, 0x2, 0xb34, 0x2, 0xb35, 0x2, 0xb37, 0x2, + 0xb3b, 0x2, 0xb3f, 0x2, 0xb3f, 0x2, 0xb5e, 0x2, 0xb5f, 0x2, 0xb61, + 0x2, 0xb63, 0x2, 0xb73, 0x2, 0xb73, 0x2, 0xb85, 0x2, 0xb85, 0x2, + 0xb87, 0x2, 0xb8c, 0x2, 0xb90, 0x2, 0xb92, 0x2, 0xb94, 0x2, 0xb97, + 0x2, 0xb9b, 0x2, 0xb9c, 0x2, 0xb9e, 0x2, 0xb9e, 0x2, 0xba0, 0x2, + 0xba1, 0x2, 0xba5, 0x2, 0xba6, 0x2, 0xbaa, 0x2, 0xbac, 0x2, 0xbb0, + 0x2, 0xbbb, 0x2, 0xbd2, 0x2, 0xbd2, 0x2, 0xc07, 0x2, 0xc0e, 0x2, + 0xc10, 0x2, 0xc12, 0x2, 0xc14, 0x2, 0xc2a, 0x2, 0xc2c, 0x2, 0xc3b, + 0x2, 0xc3f, 0x2, 0xc3f, 0x2, 0xc5a, 0x2, 0xc5c, 0x2, 0xc62, 0x2, + 0xc63, 0x2, 0xc82, 0x2, 0xc82, 0x2, 0xc87, 0x2, 0xc8e, 0x2, 0xc90, + 0x2, 0xc92, 0x2, 0xc94, 0x2, 0xcaa, 0x2, 0xcac, 0x2, 0xcb5, 0x2, + 0xcb7, 0x2, 0xcbb, 0x2, 0xcbf, 0x2, 0xcbf, 0x2, 0xce0, 0x2, 0xce0, + 0x2, 0xce2, 0x2, 0xce3, 0x2, 0xcf3, 0x2, 0xcf4, 0x2, 0xd07, 0x2, + 0xd0e, 0x2, 0xd10, 0x2, 0xd12, 0x2, 0xd14, 0x2, 0xd3c, 0x2, 0xd3f, + 0x2, 0xd3f, 0x2, 0xd50, 0x2, 0xd50, 0x2, 0xd56, 0x2, 0xd58, 0x2, + 0xd61, 0x2, 0xd63, 0x2, 0xd7c, 0x2, 0xd81, 0x2, 0xd87, 0x2, 0xd98, + 0x2, 0xd9c, 0x2, 0xdb3, 0x2, 0xdb5, 0x2, 0xdbd, 0x2, 0xdbf, 0x2, + 0xdbf, 0x2, 0xdc2, 0x2, 0xdc8, 0x2, 0xe03, 0x2, 0xe32, 0x2, 0xe34, + 0x2, 0xe35, 0x2, 0xe42, 0x2, 0xe48, 0x2, 0xe83, 0x2, 0xe84, 0x2, + 0xe86, 0x2, 0xe86, 0x2, 0xe89, 0x2, 0xe8a, 0x2, 0xe8c, 0x2, 0xe8c, + 0x2, 0xe8f, 0x2, 0xe8f, 0x2, 0xe96, 0x2, 0xe99, 0x2, 0xe9b, 0x2, + 0xea1, 0x2, 0xea3, 0x2, 0xea5, 0x2, 0xea7, 0x2, 0xea7, 0x2, 0xea9, + 0x2, 0xea9, 0x2, 0xeac, 0x2, 0xead, 0x2, 0xeaf, 0x2, 0xeb2, 0x2, + 0xeb4, 0x2, 0xeb5, 0x2, 0xebf, 0x2, 0xebf, 0x2, 0xec2, 0x2, 0xec6, + 0x2, 0xec8, 0x2, 0xec8, 0x2, 0xede, 0x2, 0xee1, 0x2, 0xf02, 0x2, + 0xf02, 0x2, 0xf42, 0x2, 0xf49, 0x2, 0xf4b, 0x2, 0xf6e, 0x2, 0xf8a, + 0x2, 0xf8e, 0x2, 0x1002, 0x2, 0x102c, 0x2, 0x1041, 0x2, 0x1041, 0x2, + 0x1052, 0x2, 0x1057, 0x2, 0x105c, 0x2, 0x105f, 0x2, 0x1063, 0x2, + 0x1063, 0x2, 0x1067, 0x2, 0x1068, 0x2, 0x1070, 0x2, 0x1072, 0x2, + 0x1077, 0x2, 0x1083, 0x2, 0x1090, 0x2, 0x1090, 0x2, 0x10a2, 0x2, + 0x10c7, 0x2, 0x10c9, 0x2, 0x10c9, 0x2, 0x10cf, 0x2, 0x10cf, 0x2, + 0x10d2, 0x2, 0x10fc, 0x2, 0x10fe, 0x2, 0x124a, 0x2, 0x124c, 0x2, + 0x124f, 0x2, 0x1252, 0x2, 0x1258, 0x2, 0x125a, 0x2, 0x125a, 0x2, + 0x125c, 0x2, 0x125f, 0x2, 0x1262, 0x2, 0x128a, 0x2, 0x128c, 0x2, + 0x128f, 0x2, 0x1292, 0x2, 0x12b2, 0x2, 0x12b4, 0x2, 0x12b7, 0x2, + 0x12ba, 0x2, 0x12c0, 0x2, 0x12c2, 0x2, 0x12c2, 0x2, 0x12c4, 0x2, + 0x12c7, 0x2, 0x12ca, 0x2, 0x12d8, 0x2, 0x12da, 0x2, 0x1312, 0x2, + 0x1314, 0x2, 0x1317, 0x2, 0x131a, 0x2, 0x135c, 0x2, 0x1382, 0x2, + 0x1391, 0x2, 0x13a2, 0x2, 0x13f7, 0x2, 0x13fa, 0x2, 0x13ff, 0x2, + 0x1403, 0x2, 0x166e, 0x2, 0x1671, 0x2, 0x1681, 0x2, 0x1683, 0x2, + 0x169c, 0x2, 0x16a2, 0x2, 0x16ec, 0x2, 0x16f0, 0x2, 0x16fa, 0x2, + 0x1702, 0x2, 0x170e, 0x2, 0x1710, 0x2, 0x1713, 0x2, 0x1722, 0x2, + 0x1733, 0x2, 0x1742, 0x2, 0x1753, 0x2, 0x1762, 0x2, 0x176e, 0x2, + 0x1770, 0x2, 0x1772, 0x2, 0x1782, 0x2, 0x17b5, 0x2, 0x17d9, 0x2, + 0x17d9, 0x2, 0x17de, 0x2, 0x17de, 0x2, 0x1822, 0x2, 0x1879, 0x2, + 0x1882, 0x2, 0x1886, 0x2, 0x1889, 0x2, 0x18aa, 0x2, 0x18ac, 0x2, + 0x18ac, 0x2, 0x18b2, 0x2, 0x18f7, 0x2, 0x1902, 0x2, 0x1920, 0x2, + 0x1952, 0x2, 0x196f, 0x2, 0x1972, 0x2, 0x1976, 0x2, 0x1982, 0x2, + 0x19ad, 0x2, 0x19b2, 0x2, 0x19cb, 0x2, 0x1a02, 0x2, 0x1a18, 0x2, + 0x1a22, 0x2, 0x1a56, 0x2, 0x1aa9, 0x2, 0x1aa9, 0x2, 0x1b07, 0x2, + 0x1b35, 0x2, 0x1b47, 0x2, 0x1b4d, 0x2, 0x1b85, 0x2, 0x1ba2, 0x2, + 0x1bb0, 0x2, 0x1bb1, 0x2, 0x1bbc, 0x2, 0x1be7, 0x2, 0x1c02, 0x2, + 0x1c25, 0x2, 0x1c4f, 0x2, 0x1c51, 0x2, 0x1c5c, 0x2, 0x1c7f, 0x2, + 0x1c82, 0x2, 0x1c8a, 0x2, 0x1ceb, 0x2, 0x1cee, 0x2, 0x1cf0, 0x2, + 0x1cf3, 0x2, 0x1cf7, 0x2, 0x1cf8, 0x2, 0x1d02, 0x2, 0x1dc1, 0x2, + 0x1e02, 0x2, 0x1f17, 0x2, 0x1f1a, 0x2, 0x1f1f, 0x2, 0x1f22, 0x2, + 0x1f47, 0x2, 0x1f4a, 0x2, 0x1f4f, 0x2, 0x1f52, 0x2, 0x1f59, 0x2, + 0x1f5b, 0x2, 0x1f5b, 0x2, 0x1f5d, 0x2, 0x1f5d, 0x2, 0x1f5f, 0x2, + 0x1f5f, 0x2, 0x1f61, 0x2, 0x1f7f, 0x2, 0x1f82, 0x2, 0x1fb6, 0x2, + 0x1fb8, 0x2, 0x1fbe, 0x2, 0x1fc0, 0x2, 0x1fc0, 0x2, 0x1fc4, 0x2, + 0x1fc6, 0x2, 0x1fc8, 0x2, 0x1fce, 0x2, 0x1fd2, 0x2, 0x1fd5, 0x2, + 0x1fd8, 0x2, 0x1fdd, 0x2, 0x1fe2, 0x2, 0x1fee, 0x2, 0x1ff4, 0x2, + 0x1ff6, 0x2, 0x1ff8, 0x2, 0x1ffe, 0x2, 0x2073, 0x2, 0x2073, 0x2, + 0x2081, 0x2, 0x2081, 0x2, 0x2092, 0x2, 0x209e, 0x2, 0x2104, 0x2, + 0x2104, 0x2, 0x2109, 0x2, 0x2109, 0x2, 0x210c, 0x2, 0x2115, 0x2, + 0x2117, 0x2, 0x2117, 0x2, 0x211b, 0x2, 0x211f, 0x2, 0x2126, 0x2, + 0x2126, 0x2, 0x2128, 0x2, 0x2128, 0x2, 0x212a, 0x2, 0x212a, 0x2, + 0x212c, 0x2, 0x212f, 0x2, 0x2131, 0x2, 0x213b, 0x2, 0x213e, 0x2, + 0x2141, 0x2, 0x2147, 0x2, 0x214b, 0x2, 0x2150, 0x2, 0x2150, 0x2, + 0x2162, 0x2, 0x218a, 0x2, 0x2c02, 0x2, 0x2c30, 0x2, 0x2c32, 0x2, + 0x2c60, 0x2, 0x2c62, 0x2, 0x2ce6, 0x2, 0x2ced, 0x2, 0x2cf0, 0x2, + 0x2cf4, 0x2, 0x2cf5, 0x2, 0x2d02, 0x2, 0x2d27, 0x2, 0x2d29, 0x2, + 0x2d29, 0x2, 0x2d2f, 0x2, 0x2d2f, 0x2, 0x2d32, 0x2, 0x2d69, 0x2, + 0x2d71, 0x2, 0x2d71, 0x2, 0x2d82, 0x2, 0x2d98, 0x2, 0x2da2, 0x2, + 0x2da8, 0x2, 0x2daa, 0x2, 0x2db0, 0x2, 0x2db2, 0x2, 0x2db8, 0x2, + 0x2dba, 0x2, 0x2dc0, 0x2, 0x2dc2, 0x2, 0x2dc8, 0x2, 0x2dca, 0x2, + 0x2dd0, 0x2, 0x2dd2, 0x2, 0x2dd8, 0x2, 0x2dda, 0x2, 0x2de0, 0x2, + 0x2e31, 0x2, 0x2e31, 0x2, 0x3007, 0x2, 0x3009, 0x2, 0x3023, 0x2, + 0x302b, 0x2, 0x3033, 0x2, 0x3037, 0x2, 0x303a, 0x2, 0x303e, 0x2, + 0x3043, 0x2, 0x3098, 0x2, 0x309f, 0x2, 0x30a1, 0x2, 0x30a3, 0x2, + 0x30fc, 0x2, 0x30fe, 0x2, 0x3101, 0x2, 0x3107, 0x2, 0x3130, 0x2, + 0x3133, 0x2, 0x3190, 0x2, 0x31a2, 0x2, 0x31bc, 0x2, 0x31f2, 0x2, + 0x3201, 0x2, 0x3402, 0x2, 0x4db7, 0x2, 0x4e02, 0x2, 0x9fec, 0x2, + 0xa002, 0x2, 0xa48e, 0x2, 0xa4d2, 0x2, 0xa4ff, 0x2, 0xa502, 0x2, + 0xa60e, 0x2, 0xa612, 0x2, 0xa621, 0x2, 0xa62c, 0x2, 0xa62d, 0x2, + 0xa642, 0x2, 0xa670, 0x2, 0xa681, 0x2, 0xa69f, 0x2, 0xa6a2, 0x2, + 0xa6f1, 0x2, 0xa719, 0x2, 0xa721, 0x2, 0xa724, 0x2, 0xa78a, 0x2, + 0xa78d, 0x2, 0xa7b0, 0x2, 0xa7b2, 0x2, 0xa7b9, 0x2, 0xa7f9, 0x2, + 0xa803, 0x2, 0xa805, 0x2, 0xa807, 0x2, 0xa809, 0x2, 0xa80c, 0x2, + 0xa80e, 0x2, 0xa824, 0x2, 0xa842, 0x2, 0xa875, 0x2, 0xa884, 0x2, + 0xa8b5, 0x2, 0xa8f4, 0x2, 0xa8f9, 0x2, 0xa8fd, 0x2, 0xa8fd, 0x2, + 0xa8ff, 0x2, 0xa8ff, 0x2, 0xa90c, 0x2, 0xa927, 0x2, 0xa932, 0x2, + 0xa948, 0x2, 0xa962, 0x2, 0xa97e, 0x2, 0xa986, 0x2, 0xa9b4, 0x2, + 0xa9d1, 0x2, 0xa9d1, 0x2, 0xa9e2, 0x2, 0xa9e6, 0x2, 0xa9e8, 0x2, + 0xa9f1, 0x2, 0xa9fc, 0x2, 0xaa00, 0x2, 0xaa02, 0x2, 0xaa2a, 0x2, + 0xaa42, 0x2, 0xaa44, 0x2, 0xaa46, 0x2, 0xaa4d, 0x2, 0xaa62, 0x2, + 0xaa78, 0x2, 0xaa7c, 0x2, 0xaa7c, 0x2, 0xaa80, 0x2, 0xaab1, 0x2, + 0xaab3, 0x2, 0xaab3, 0x2, 0xaab7, 0x2, 0xaab8, 0x2, 0xaabb, 0x2, + 0xaabf, 0x2, 0xaac2, 0x2, 0xaac2, 0x2, 0xaac4, 0x2, 0xaac4, 0x2, + 0xaadd, 0x2, 0xaadf, 0x2, 0xaae2, 0x2, 0xaaec, 0x2, 0xaaf4, 0x2, + 0xaaf6, 0x2, 0xab03, 0x2, 0xab08, 0x2, 0xab0b, 0x2, 0xab10, 0x2, + 0xab13, 0x2, 0xab18, 0x2, 0xab22, 0x2, 0xab28, 0x2, 0xab2a, 0x2, + 0xab30, 0x2, 0xab32, 0x2, 0xab5c, 0x2, 0xab5e, 0x2, 0xab67, 0x2, + 0xab72, 0x2, 0xabe4, 0x2, 0xac02, 0x2, 0xd7a5, 0x2, 0xd7b2, 0x2, + 0xd7c8, 0x2, 0xd7cd, 0x2, 0xd7fd, 0x2, 0xf902, 0x2, 0xfa6f, 0x2, + 0xfa72, 0x2, 0xfadb, 0x2, 0xfb02, 0x2, 0xfb08, 0x2, 0xfb15, 0x2, + 0xfb19, 0x2, 0xfb1f, 0x2, 0xfb1f, 0x2, 0xfb21, 0x2, 0xfb2a, 0x2, + 0xfb2c, 0x2, 0xfb38, 0x2, 0xfb3a, 0x2, 0xfb3e, 0x2, 0xfb40, 0x2, + 0xfb40, 0x2, 0xfb42, 0x2, 0xfb43, 0x2, 0xfb45, 0x2, 0xfb46, 0x2, + 0xfb48, 0x2, 0xfbb3, 0x2, 0xfbd5, 0x2, 0xfd3f, 0x2, 0xfd52, 0x2, + 0xfd91, 0x2, 0xfd94, 0x2, 0xfdc9, 0x2, 0xfdf2, 0x2, 0xfdfd, 0x2, + 0xfe72, 0x2, 0xfe76, 0x2, 0xfe78, 0x2, 0xfefe, 0x2, 0xff23, 0x2, + 0xff3c, 0x2, 0xff43, 0x2, 0xff5c, 0x2, 0xff68, 0x2, 0xffc0, 0x2, + 0xffc4, 0x2, 0xffc9, 0x2, 0xffcc, 0x2, 0xffd1, 0x2, 0xffd4, 0x2, + 0xffd9, 0x2, 0xffdc, 0x2, 0xffde, 0x2, 0x2, 0x3, 0xd, 0x3, 0xf, 0x3, + 0x28, 0x3, 0x2a, 0x3, 0x3c, 0x3, 0x3e, 0x3, 0x3f, 0x3, 0x41, 0x3, + 0x4f, 0x3, 0x52, 0x3, 0x5f, 0x3, 0x82, 0x3, 0xfc, 0x3, 0x142, 0x3, + 0x176, 0x3, 0x282, 0x3, 0x29e, 0x3, 0x2a2, 0x3, 0x2d2, 0x3, 0x302, + 0x3, 0x321, 0x3, 0x32f, 0x3, 0x34c, 0x3, 0x352, 0x3, 0x377, 0x3, + 0x382, 0x3, 0x39f, 0x3, 0x3a2, 0x3, 0x3c5, 0x3, 0x3ca, 0x3, 0x3d1, + 0x3, 0x3d3, 0x3, 0x3d7, 0x3, 0x402, 0x3, 0x49f, 0x3, 0x4b2, 0x3, + 0x4d5, 0x3, 0x4da, 0x3, 0x4fd, 0x3, 0x502, 0x3, 0x529, 0x3, 0x532, + 0x3, 0x565, 0x3, 0x602, 0x3, 0x738, 0x3, 0x742, 0x3, 0x757, 0x3, + 0x762, 0x3, 0x769, 0x3, 0x802, 0x3, 0x807, 0x3, 0x80a, 0x3, 0x80a, + 0x3, 0x80c, 0x3, 0x837, 0x3, 0x839, 0x3, 0x83a, 0x3, 0x83e, 0x3, + 0x83e, 0x3, 0x841, 0x3, 0x857, 0x3, 0x862, 0x3, 0x878, 0x3, 0x882, + 0x3, 0x8a0, 0x3, 0x8e2, 0x3, 0x8f4, 0x3, 0x8f6, 0x3, 0x8f7, 0x3, + 0x902, 0x3, 0x917, 0x3, 0x922, 0x3, 0x93b, 0x3, 0x982, 0x3, 0x9b9, + 0x3, 0x9c0, 0x3, 0x9c1, 0x3, 0xa02, 0x3, 0xa02, 0x3, 0xa12, 0x3, + 0xa15, 0x3, 0xa17, 0x3, 0xa19, 0x3, 0xa1b, 0x3, 0xa35, 0x3, 0xa62, + 0x3, 0xa7e, 0x3, 0xa82, 0x3, 0xa9e, 0x3, 0xac2, 0x3, 0xac9, 0x3, + 0xacb, 0x3, 0xae6, 0x3, 0xb02, 0x3, 0xb37, 0x3, 0xb42, 0x3, 0xb57, + 0x3, 0xb62, 0x3, 0xb74, 0x3, 0xb82, 0x3, 0xb93, 0x3, 0xc02, 0x3, + 0xc4a, 0x3, 0xc82, 0x3, 0xcb4, 0x3, 0xcc2, 0x3, 0xcf4, 0x3, 0x1005, + 0x3, 0x1039, 0x3, 0x1085, 0x3, 0x10b1, 0x3, 0x10d2, 0x3, 0x10ea, + 0x3, 0x1105, 0x3, 0x1128, 0x3, 0x1152, 0x3, 0x1174, 0x3, 0x1178, + 0x3, 0x1178, 0x3, 0x1185, 0x3, 0x11b4, 0x3, 0x11c3, 0x3, 0x11c6, + 0x3, 0x11dc, 0x3, 0x11dc, 0x3, 0x11de, 0x3, 0x11de, 0x3, 0x1202, + 0x3, 0x1213, 0x3, 0x1215, 0x3, 0x122d, 0x3, 0x1282, 0x3, 0x1288, + 0x3, 0x128a, 0x3, 0x128a, 0x3, 0x128c, 0x3, 0x128f, 0x3, 0x1291, + 0x3, 0x129f, 0x3, 0x12a1, 0x3, 0x12aa, 0x3, 0x12b2, 0x3, 0x12e0, + 0x3, 0x1307, 0x3, 0x130e, 0x3, 0x1311, 0x3, 0x1312, 0x3, 0x1315, + 0x3, 0x132a, 0x3, 0x132c, 0x3, 0x1332, 0x3, 0x1334, 0x3, 0x1335, + 0x3, 0x1337, 0x3, 0x133b, 0x3, 0x133f, 0x3, 0x133f, 0x3, 0x1352, + 0x3, 0x1352, 0x3, 0x135f, 0x3, 0x1363, 0x3, 0x1402, 0x3, 0x1436, + 0x3, 0x1449, 0x3, 0x144c, 0x3, 0x1482, 0x3, 0x14b1, 0x3, 0x14c6, + 0x3, 0x14c7, 0x3, 0x14c9, 0x3, 0x14c9, 0x3, 0x1582, 0x3, 0x15b0, + 0x3, 0x15da, 0x3, 0x15dd, 0x3, 0x1602, 0x3, 0x1631, 0x3, 0x1646, + 0x3, 0x1646, 0x3, 0x1682, 0x3, 0x16ac, 0x3, 0x1702, 0x3, 0x171b, + 0x3, 0x18a2, 0x3, 0x18e1, 0x3, 0x1901, 0x3, 0x1901, 0x3, 0x1a02, + 0x3, 0x1a02, 0x3, 0x1a0d, 0x3, 0x1a34, 0x3, 0x1a3c, 0x3, 0x1a3c, + 0x3, 0x1a52, 0x3, 0x1a52, 0x3, 0x1a5e, 0x3, 0x1a85, 0x3, 0x1a88, + 0x3, 0x1a8b, 0x3, 0x1ac2, 0x3, 0x1afa, 0x3, 0x1c02, 0x3, 0x1c0a, + 0x3, 0x1c0c, 0x3, 0x1c30, 0x3, 0x1c42, 0x3, 0x1c42, 0x3, 0x1c74, + 0x3, 0x1c91, 0x3, 0x1d02, 0x3, 0x1d08, 0x3, 0x1d0a, 0x3, 0x1d0b, + 0x3, 0x1d0d, 0x3, 0x1d32, 0x3, 0x1d48, 0x3, 0x1d48, 0x3, 0x2002, + 0x3, 0x239b, 0x3, 0x2402, 0x3, 0x2470, 0x3, 0x2482, 0x3, 0x2545, + 0x3, 0x3002, 0x3, 0x3430, 0x3, 0x4402, 0x3, 0x4648, 0x3, 0x6802, + 0x3, 0x6a3a, 0x3, 0x6a42, 0x3, 0x6a60, 0x3, 0x6ad2, 0x3, 0x6aef, + 0x3, 0x6b02, 0x3, 0x6b31, 0x3, 0x6b42, 0x3, 0x6b45, 0x3, 0x6b65, + 0x3, 0x6b79, 0x3, 0x6b7f, 0x3, 0x6b91, 0x3, 0x6f02, 0x3, 0x6f46, + 0x3, 0x6f52, 0x3, 0x6f52, 0x3, 0x6f95, 0x3, 0x6fa1, 0x3, 0x6fe2, + 0x3, 0x6fe3, 0x3, 0x7002, 0x3, 0x87ee, 0x3, 0x8802, 0x3, 0x8af4, + 0x3, 0xb002, 0x3, 0xb120, 0x3, 0xb172, 0x3, 0xb2fd, 0x3, 0xbc02, + 0x3, 0xbc6c, 0x3, 0xbc72, 0x3, 0xbc7e, 0x3, 0xbc82, 0x3, 0xbc8a, + 0x3, 0xbc92, 0x3, 0xbc9b, 0x3, 0xd402, 0x3, 0xd456, 0x3, 0xd458, + 0x3, 0xd49e, 0x3, 0xd4a0, 0x3, 0xd4a1, 0x3, 0xd4a4, 0x3, 0xd4a4, + 0x3, 0xd4a7, 0x3, 0xd4a8, 0x3, 0xd4ab, 0x3, 0xd4ae, 0x3, 0xd4b0, + 0x3, 0xd4bb, 0x3, 0xd4bd, 0x3, 0xd4bd, 0x3, 0xd4bf, 0x3, 0xd4c5, + 0x3, 0xd4c7, 0x3, 0xd507, 0x3, 0xd509, 0x3, 0xd50c, 0x3, 0xd50f, + 0x3, 0xd516, 0x3, 0xd518, 0x3, 0xd51e, 0x3, 0xd520, 0x3, 0xd53b, + 0x3, 0xd53d, 0x3, 0xd540, 0x3, 0xd542, 0x3, 0xd546, 0x3, 0xd548, + 0x3, 0xd548, 0x3, 0xd54c, 0x3, 0xd552, 0x3, 0xd554, 0x3, 0xd6a7, + 0x3, 0xd6aa, 0x3, 0xd6c2, 0x3, 0xd6c4, 0x3, 0xd6dc, 0x3, 0xd6de, + 0x3, 0xd6fc, 0x3, 0xd6fe, 0x3, 0xd716, 0x3, 0xd718, 0x3, 0xd736, + 0x3, 0xd738, 0x3, 0xd750, 0x3, 0xd752, 0x3, 0xd770, 0x3, 0xd772, + 0x3, 0xd78a, 0x3, 0xd78c, 0x3, 0xd7aa, 0x3, 0xd7ac, 0x3, 0xd7c4, + 0x3, 0xd7c6, 0x3, 0xd7cd, 0x3, 0xe802, 0x3, 0xe8c6, 0x3, 0xe902, + 0x3, 0xe945, 0x3, 0xee02, 0x3, 0xee05, 0x3, 0xee07, 0x3, 0xee21, + 0x3, 0xee23, 0x3, 0xee24, 0x3, 0xee26, 0x3, 0xee26, 0x3, 0xee29, + 0x3, 0xee29, 0x3, 0xee2b, 0x3, 0xee34, 0x3, 0xee36, 0x3, 0xee39, + 0x3, 0xee3b, 0x3, 0xee3b, 0x3, 0xee3d, 0x3, 0xee3d, 0x3, 0xee44, + 0x3, 0xee44, 0x3, 0xee49, 0x3, 0xee49, 0x3, 0xee4b, 0x3, 0xee4b, + 0x3, 0xee4d, 0x3, 0xee4d, 0x3, 0xee4f, 0x3, 0xee51, 0x3, 0xee53, + 0x3, 0xee54, 0x3, 0xee56, 0x3, 0xee56, 0x3, 0xee59, 0x3, 0xee59, + 0x3, 0xee5b, 0x3, 0xee5b, 0x3, 0xee5d, 0x3, 0xee5d, 0x3, 0xee5f, + 0x3, 0xee5f, 0x3, 0xee61, 0x3, 0xee61, 0x3, 0xee63, 0x3, 0xee64, + 0x3, 0xee66, 0x3, 0xee66, 0x3, 0xee69, 0x3, 0xee6c, 0x3, 0xee6e, + 0x3, 0xee74, 0x3, 0xee76, 0x3, 0xee79, 0x3, 0xee7b, 0x3, 0xee7e, + 0x3, 0xee80, 0x3, 0xee80, 0x3, 0xee82, 0x3, 0xee8b, 0x3, 0xee8d, + 0x3, 0xee9d, 0x3, 0xeea3, 0x3, 0xeea5, 0x3, 0xeea7, 0x3, 0xeeab, + 0x3, 0xeead, 0x3, 0xeebd, 0x3, 0x2, 0x4, 0xa6d8, 0x4, 0xa702, 0x4, + 0xb736, 0x4, 0xb742, 0x4, 0xb81f, 0x4, 0xb822, 0x4, 0xcea3, 0x4, + 0xceb2, 0x4, 0xebe2, 0x4, 0xf802, 0x4, 0xfa1f, 0x4, 0x3c6, 0x2, 0x3, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xf, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x11, 0x3, 0x2, 0x2, 0x2, 0x2, 0x13, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x15, 0x3, 0x2, 0x2, 0x2, 0x2, 0x17, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x19, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1d, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x21, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x23, 0x3, 0x2, 0x2, 0x2, 0x2, 0x25, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x27, 0x3, 0x2, 0x2, 0x2, 0x2, 0x29, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2d, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x31, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x33, 0x3, 0x2, 0x2, 0x2, 0x2, 0x35, 0x3, 0x2, 0x2, 0x2, 0x2, 0x37, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x39, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3b, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x3f, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x41, 0x3, 0x2, 0x2, 0x2, 0x2, 0x43, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x45, 0x3, 0x2, 0x2, 0x2, 0x2, 0x47, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x49, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x4d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x51, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x53, 0x3, 0x2, 0x2, 0x2, 0x2, 0x55, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x57, 0x3, 0x2, 0x2, 0x2, 0x2, 0x59, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x5b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5d, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x61, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x63, 0x3, 0x2, 0x2, 0x2, 0x2, 0x65, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x67, 0x3, 0x2, 0x2, 0x2, 0x2, 0x69, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6b, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x6f, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x71, 0x3, 0x2, 0x2, 0x2, 0x2, 0x73, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x75, 0x3, 0x2, 0x2, 0x2, 0x2, 0x77, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x79, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7b, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x7d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7f, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x81, 0x3, 0x2, 0x2, 0x2, 0x2, 0x83, 0x3, 0x2, 0x2, 0x2, 0x2, 0x85, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x87, 0x3, 0x2, 0x2, 0x2, 0x2, 0x89, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x8d, 0x3, 0x2, + 0x2, 0x2, 0x2, 0x8f, 0x3, 0x2, 0x2, 0x2, 0x2, 0x91, 0x3, 0x2, 0x2, + 0x2, 0x2, 0x93, 0x3, 0x2, 0x2, 0x2, 0x2, 0x95, 0x3, 0x2, 0x2, 0x2, + 0x2, 0x97, 0x3, 0x2, 0x2, 0x2, 0x2, 0x99, 0x3, 0x2, 0x2, 0x2, 0x2, + 0x9b, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9d, 0x3, 0x2, 0x2, 0x2, 0x2, 0x9f, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xa1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa3, 0x3, + 0x2, 0x2, 0x2, 0x2, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xa7, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xab, 0x3, 0x2, 0x2, + 0x2, 0x2, 0xad, 0x3, 0x2, 0x2, 0x2, 0x2, 0xaf, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xb1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb3, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xb5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xb9, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xbb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xbd, 0x3, + 0x2, 0x2, 0x2, 0x2, 0xbf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc1, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xc3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc5, 0x3, 0x2, 0x2, + 0x2, 0x2, 0xc7, 0x3, 0x2, 0x2, 0x2, 0x2, 0xc9, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xcd, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xcf, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd3, + 0x3, 0x2, 0x2, 0x2, 0x2, 0xd5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xd7, 0x3, + 0x2, 0x2, 0x2, 0x2, 0xd9, 0x3, 0x2, 0x2, 0x2, 0x2, 0xdb, 0x3, 0x2, + 0x2, 0x2, 0x2, 0xdd, 0x3, 0x2, 0x2, 0x2, 0x2, 0xdf, 0x3, 0x2, 0x2, + 0x2, 0x2, 0xe1, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe3, 0x3, 0x2, 0x2, 0x2, + 0x2, 0xe5, 0x3, 0x2, 0x2, 0x2, 0x2, 0xe9, 0x3, 0x2, 0x2, 0x2, 0x2, + 0xf3, 0x3, 0x2, 0x2, 0x2, 0x2, 0xfb, 0x3, 0x2, 0x2, 0x2, 0x2, 0xff, + 0x3, 0x2, 0x2, 0x2, 0x2, 0x101, 0x3, 0x2, 0x2, 0x2, 0x2, 0x103, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x105, 0x3, 0x2, 0x2, 0x2, 0x3, 0x107, 0x3, 0x2, + 0x2, 0x2, 0x5, 0x110, 0x3, 0x2, 0x2, 0x2, 0x7, 0x118, 0x3, 0x2, 0x2, + 0x2, 0x9, 0x120, 0x3, 0x2, 0x2, 0x2, 0xb, 0x127, 0x3, 0x2, 0x2, 0x2, + 0xd, 0x138, 0x3, 0x2, 0x2, 0x2, 0xf, 0x13e, 0x3, 0x2, 0x2, 0x2, 0x11, + 0x143, 0x3, 0x2, 0x2, 0x2, 0x13, 0x147, 0x3, 0x2, 0x2, 0x2, 0x15, + 0x14c, 0x3, 0x2, 0x2, 0x2, 0x17, 0x150, 0x3, 0x2, 0x2, 0x2, 0x19, + 0x155, 0x3, 0x2, 0x2, 0x2, 0x1b, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x1d, + 0x161, 0x3, 0x2, 0x2, 0x2, 0x1f, 0x167, 0x3, 0x2, 0x2, 0x2, 0x21, + 0x16c, 0x3, 0x2, 0x2, 0x2, 0x23, 0x174, 0x3, 0x2, 0x2, 0x2, 0x25, + 0x17b, 0x3, 0x2, 0x2, 0x2, 0x27, 0x181, 0x3, 0x2, 0x2, 0x2, 0x29, + 0x185, 0x3, 0x2, 0x2, 0x2, 0x2b, 0x188, 0x3, 0x2, 0x2, 0x2, 0x2d, + 0x18d, 0x3, 0x2, 0x2, 0x2, 0x2f, 0x190, 0x3, 0x2, 0x2, 0x2, 0x31, + 0x192, 0x3, 0x2, 0x2, 0x2, 0x33, 0x199, 0x3, 0x2, 0x2, 0x2, 0x35, + 0x1a1, 0x3, 0x2, 0x2, 0x2, 0x37, 0x1a9, 0x3, 0x2, 0x2, 0x2, 0x39, + 0x1ad, 0x3, 0x2, 0x2, 0x2, 0x3b, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x3d, + 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x3f, 0x1b8, 0x3, 0x2, 0x2, 0x2, 0x41, + 0x1be, 0x3, 0x2, 0x2, 0x2, 0x43, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0x45, + 0x1c2, 0x3, 0x2, 0x2, 0x2, 0x47, 0x1c4, 0x3, 0x2, 0x2, 0x2, 0x49, + 0x1c6, 0x3, 0x2, 0x2, 0x2, 0x4b, 0x1c9, 0x3, 0x2, 0x2, 0x2, 0x4d, + 0x1cc, 0x3, 0x2, 0x2, 0x2, 0x4f, 0x1cf, 0x3, 0x2, 0x2, 0x2, 0x51, + 0x1d2, 0x3, 0x2, 0x2, 0x2, 0x53, 0x1d5, 0x3, 0x2, 0x2, 0x2, 0x55, + 0x1d7, 0x3, 0x2, 0x2, 0x2, 0x57, 0x1d9, 0x3, 0x2, 0x2, 0x2, 0x59, + 0x1db, 0x3, 0x2, 0x2, 0x2, 0x5b, 0x1de, 0x3, 0x2, 0x2, 0x2, 0x5d, + 0x1e1, 0x3, 0x2, 0x2, 0x2, 0x5f, 0x1e3, 0x3, 0x2, 0x2, 0x2, 0x61, + 0x1e5, 0x3, 0x2, 0x2, 0x2, 0x63, 0x1e7, 0x3, 0x2, 0x2, 0x2, 0x65, + 0x1e9, 0x3, 0x2, 0x2, 0x2, 0x67, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x69, + 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x6b, 0x1f3, 0x3, 0x2, 0x2, 0x2, 0x6d, + 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x6f, 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x71, + 0x202, 0x3, 0x2, 0x2, 0x2, 0x73, 0x209, 0x3, 0x2, 0x2, 0x2, 0x75, + 0x210, 0x3, 0x2, 0x2, 0x2, 0x77, 0x214, 0x3, 0x2, 0x2, 0x2, 0x79, + 0x217, 0x3, 0x2, 0x2, 0x2, 0x7b, 0x21c, 0x3, 0x2, 0x2, 0x2, 0x7d, + 0x221, 0x3, 0x2, 0x2, 0x2, 0x7f, 0x226, 0x3, 0x2, 0x2, 0x2, 0x81, + 0x22f, 0x3, 0x2, 0x2, 0x2, 0x83, 0x238, 0x3, 0x2, 0x2, 0x2, 0x85, + 0x23b, 0x3, 0x2, 0x2, 0x2, 0x87, 0x23e, 0x3, 0x2, 0x2, 0x2, 0x89, + 0x241, 0x3, 0x2, 0x2, 0x2, 0x8b, 0x244, 0x3, 0x2, 0x2, 0x2, 0x8d, + 0x247, 0x3, 0x2, 0x2, 0x2, 0x8f, 0x24a, 0x3, 0x2, 0x2, 0x2, 0x91, + 0x24d, 0x3, 0x2, 0x2, 0x2, 0x93, 0x250, 0x3, 0x2, 0x2, 0x2, 0x95, + 0x254, 0x3, 0x2, 0x2, 0x2, 0x97, 0x258, 0x3, 0x2, 0x2, 0x2, 0x99, + 0x25b, 0x3, 0x2, 0x2, 0x2, 0x9b, 0x25e, 0x3, 0x2, 0x2, 0x2, 0x9d, + 0x263, 0x3, 0x2, 0x2, 0x2, 0x9f, 0x267, 0x3, 0x2, 0x2, 0x2, 0xa1, + 0x26d, 0x3, 0x2, 0x2, 0x2, 0xa3, 0x273, 0x3, 0x2, 0x2, 0x2, 0xa5, + 0x279, 0x3, 0x2, 0x2, 0x2, 0xa7, 0x282, 0x3, 0x2, 0x2, 0x2, 0xa9, + 0x286, 0x3, 0x2, 0x2, 0x2, 0xab, 0x28d, 0x3, 0x2, 0x2, 0x2, 0xad, + 0x291, 0x3, 0x2, 0x2, 0x2, 0xaf, 0x298, 0x3, 0x2, 0x2, 0x2, 0xb1, + 0x2a0, 0x3, 0x2, 0x2, 0x2, 0xb3, 0x2a7, 0x3, 0x2, 0x2, 0x2, 0xb5, + 0x2af, 0x3, 0x2, 0x2, 0x2, 0xb7, 0x2b5, 0x3, 0x2, 0x2, 0x2, 0xb9, + 0x2bb, 0x3, 0x2, 0x2, 0x2, 0xbb, 0x2c6, 0x3, 0x2, 0x2, 0x2, 0xbd, + 0x2cc, 0x3, 0x2, 0x2, 0x2, 0xbf, 0x2d3, 0x3, 0x2, 0x2, 0x2, 0xc1, + 0x2e1, 0x3, 0x2, 0x2, 0x2, 0xc3, 0x2e8, 0x3, 0x2, 0x2, 0x2, 0xc5, + 0x2f4, 0x3, 0x2, 0x2, 0x2, 0xc7, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0xc9, + 0x2f8, 0x3, 0x2, 0x2, 0x2, 0xcb, 0x2fa, 0x3, 0x2, 0x2, 0x2, 0xcd, + 0x2fc, 0x3, 0x2, 0x2, 0x2, 0xcf, 0x2fe, 0x3, 0x2, 0x2, 0x2, 0xd1, + 0x300, 0x3, 0x2, 0x2, 0x2, 0xd3, 0x302, 0x3, 0x2, 0x2, 0x2, 0xd5, + 0x304, 0x3, 0x2, 0x2, 0x2, 0xd7, 0x306, 0x3, 0x2, 0x2, 0x2, 0xd9, + 0x308, 0x3, 0x2, 0x2, 0x2, 0xdb, 0x30a, 0x3, 0x2, 0x2, 0x2, 0xdd, + 0x30d, 0x3, 0x2, 0x2, 0x2, 0xdf, 0x30f, 0x3, 0x2, 0x2, 0x2, 0xe1, + 0x329, 0x3, 0x2, 0x2, 0x2, 0xe3, 0x32c, 0x3, 0x2, 0x2, 0x2, 0xe5, + 0x333, 0x3, 0x2, 0x2, 0x2, 0xe7, 0x339, 0x3, 0x2, 0x2, 0x2, 0xe9, + 0x33c, 0x3, 0x2, 0x2, 0x2, 0xeb, 0x340, 0x3, 0x2, 0x2, 0x2, 0xed, + 0x342, 0x3, 0x2, 0x2, 0x2, 0xef, 0x347, 0x3, 0x2, 0x2, 0x2, 0xf1, + 0x34b, 0x3, 0x2, 0x2, 0x2, 0xf3, 0x34d, 0x3, 0x2, 0x2, 0x2, 0xf5, + 0x354, 0x3, 0x2, 0x2, 0x2, 0xf7, 0x356, 0x3, 0x2, 0x2, 0x2, 0xf9, + 0x36b, 0x3, 0x2, 0x2, 0x2, 0xfb, 0x36d, 0x3, 0x2, 0x2, 0x2, 0xfd, + 0x382, 0x3, 0x2, 0x2, 0x2, 0xff, 0x386, 0x3, 0x2, 0x2, 0x2, 0x101, + 0x398, 0x3, 0x2, 0x2, 0x2, 0x103, 0x39a, 0x3, 0x2, 0x2, 0x2, 0x105, + 0x3a5, 0x3, 0x2, 0x2, 0x2, 0x107, 0x108, 0x7, 0x51, 0x2, 0x2, 0x108, + 0x109, 0x7, 0x52, 0x2, 0x2, 0x109, 0x10a, 0x7, 0x47, 0x2, 0x2, 0x10a, + 0x10b, 0x7, 0x50, 0x2, 0x2, 0x10b, 0x10c, 0x7, 0x53, 0x2, 0x2, 0x10c, + 0x10d, 0x7, 0x43, 0x2, 0x2, 0x10d, 0x10e, 0x7, 0x55, 0x2, 0x2, 0x10e, + 0x10f, 0x7, 0x4f, 0x2, 0x2, 0x10f, 0x4, 0x3, 0x2, 0x2, 0x2, 0x110, + 0x111, 0x7, 0x6b, 0x2, 0x2, 0x111, 0x112, 0x7, 0x70, 0x2, 0x2, 0x112, + 0x113, 0x7, 0x65, 0x2, 0x2, 0x113, 0x114, 0x7, 0x6e, 0x2, 0x2, 0x114, + 0x115, 0x7, 0x77, 0x2, 0x2, 0x115, 0x116, 0x7, 0x66, 0x2, 0x2, 0x116, + 0x117, 0x7, 0x67, 0x2, 0x2, 0x117, 0x6, 0x3, 0x2, 0x2, 0x2, 0x118, + 0x119, 0x7, 0x65, 0x2, 0x2, 0x119, 0x11a, 0x7, 0x71, 0x2, 0x2, 0x11a, + 0x11b, 0x7, 0x6f, 0x2, 0x2, 0x11b, 0x11c, 0x7, 0x72, 0x2, 0x2, 0x11c, + 0x11d, 0x7, 0x77, 0x2, 0x2, 0x11d, 0x11e, 0x7, 0x76, 0x2, 0x2, 0x11e, + 0x11f, 0x7, 0x67, 0x2, 0x2, 0x11f, 0x8, 0x3, 0x2, 0x2, 0x2, 0x120, + 0x121, 0x7, 0x63, 0x2, 0x2, 0x121, 0x122, 0x7, 0x65, 0x2, 0x2, 0x122, + 0x123, 0x7, 0x76, 0x2, 0x2, 0x123, 0x124, 0x7, 0x6b, 0x2, 0x2, 0x124, + 0x125, 0x7, 0x71, 0x2, 0x2, 0x125, 0x126, 0x7, 0x70, 0x2, 0x2, 0x126, + 0xa, 0x3, 0x2, 0x2, 0x2, 0x127, 0x128, 0x7, 0x53, 0x2, 0x2, 0x128, + 0x129, 0x7, 0x45, 0x2, 0x2, 0x129, 0x12a, 0x7, 0x51, 0x2, 0x2, 0x12a, + 0x12b, 0x7, 0x54, 0x2, 0x2, 0x12b, 0x12c, 0x7, 0x61, 0x2, 0x2, 0x12c, + 0x12d, 0x7, 0x47, 0x2, 0x2, 0x12d, 0x12e, 0x7, 0x5a, 0x2, 0x2, 0x12e, + 0x12f, 0x7, 0x52, 0x2, 0x2, 0x12f, 0x130, 0x7, 0x47, 0x2, 0x2, 0x130, + 0x131, 0x7, 0x45, 0x2, 0x2, 0x131, 0x132, 0x7, 0x56, 0x2, 0x2, 0x132, + 0x133, 0x7, 0x61, 0x2, 0x2, 0x133, 0x134, 0x7, 0x56, 0x2, 0x2, 0x134, + 0x135, 0x7, 0x54, 0x2, 0x2, 0x135, 0x136, 0x7, 0x57, 0x2, 0x2, 0x136, + 0x137, 0x7, 0x47, 0x2, 0x2, 0x137, 0xc, 0x3, 0x2, 0x2, 0x2, 0x138, + 0x139, 0x7, 0x73, 0x2, 0x2, 0x139, 0x13a, 0x7, 0x77, 0x2, 0x2, 0x13a, + 0x13b, 0x7, 0x64, 0x2, 0x2, 0x13b, 0x13c, 0x7, 0x6b, 0x2, 0x2, 0x13c, + 0x13d, 0x7, 0x76, 0x2, 0x2, 0x13d, 0xe, 0x3, 0x2, 0x2, 0x2, 0x13e, + 0x13f, 0x7, 0x73, 0x2, 0x2, 0x13f, 0x140, 0x7, 0x74, 0x2, 0x2, 0x140, + 0x141, 0x7, 0x67, 0x2, 0x2, 0x141, 0x142, 0x7, 0x69, 0x2, 0x2, 0x142, + 0x10, 0x3, 0x2, 0x2, 0x2, 0x143, 0x144, 0x7, 0x64, 0x2, 0x2, 0x144, + 0x145, 0x7, 0x6b, 0x2, 0x2, 0x145, 0x146, 0x7, 0x76, 0x2, 0x2, 0x146, + 0x12, 0x3, 0x2, 0x2, 0x2, 0x147, 0x148, 0x7, 0x65, 0x2, 0x2, 0x148, + 0x149, 0x7, 0x74, 0x2, 0x2, 0x149, 0x14a, 0x7, 0x67, 0x2, 0x2, 0x14a, + 0x14b, 0x7, 0x69, 0x2, 0x2, 0x14b, 0x14, 0x3, 0x2, 0x2, 0x2, 0x14c, + 0x14d, 0x7, 0x6b, 0x2, 0x2, 0x14d, 0x14e, 0x7, 0x70, 0x2, 0x2, 0x14e, + 0x14f, 0x7, 0x76, 0x2, 0x2, 0x14f, 0x16, 0x3, 0x2, 0x2, 0x2, 0x150, + 0x151, 0x7, 0x77, 0x2, 0x2, 0x151, 0x152, 0x7, 0x6b, 0x2, 0x2, 0x152, + 0x153, 0x7, 0x70, 0x2, 0x2, 0x153, 0x154, 0x7, 0x76, 0x2, 0x2, 0x154, + 0x18, 0x3, 0x2, 0x2, 0x2, 0x155, 0x156, 0x7, 0x68, 0x2, 0x2, 0x156, + 0x157, 0x7, 0x6e, 0x2, 0x2, 0x157, 0x158, 0x7, 0x71, 0x2, 0x2, 0x158, + 0x159, 0x7, 0x63, 0x2, 0x2, 0x159, 0x15a, 0x7, 0x76, 0x2, 0x2, 0x15a, + 0x1a, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x15c, 0x7, 0x63, 0x2, 0x2, 0x15c, + 0x15d, 0x7, 0x70, 0x2, 0x2, 0x15d, 0x15e, 0x7, 0x69, 0x2, 0x2, 0x15e, + 0x15f, 0x7, 0x6e, 0x2, 0x2, 0x15f, 0x160, 0x7, 0x67, 0x2, 0x2, 0x160, + 0x1c, 0x3, 0x2, 0x2, 0x2, 0x161, 0x162, 0x7, 0x68, 0x2, 0x2, 0x162, + 0x163, 0x7, 0x6b, 0x2, 0x2, 0x163, 0x164, 0x7, 0x7a, 0x2, 0x2, 0x164, + 0x165, 0x7, 0x67, 0x2, 0x2, 0x165, 0x166, 0x7, 0x66, 0x2, 0x2, 0x166, + 0x1e, 0x3, 0x2, 0x2, 0x2, 0x167, 0x168, 0x7, 0x64, 0x2, 0x2, 0x168, + 0x169, 0x7, 0x71, 0x2, 0x2, 0x169, 0x16a, 0x7, 0x71, 0x2, 0x2, 0x16a, + 0x16b, 0x7, 0x6e, 0x2, 0x2, 0x16b, 0x20, 0x3, 0x2, 0x2, 0x2, 0x16c, + 0x16d, 0x7, 0x6b, 0x2, 0x2, 0x16d, 0x16e, 0x7, 0x70, 0x2, 0x2, 0x16e, + 0x16f, 0x7, 0x76, 0x2, 0x2, 0x16f, 0x170, 0x7, 0x38, 0x2, 0x2, 0x170, + 0x171, 0x7, 0x36, 0x2, 0x2, 0x171, 0x172, 0x7, 0x61, 0x2, 0x2, 0x172, + 0x173, 0x7, 0x76, 0x2, 0x2, 0x173, 0x22, 0x3, 0x2, 0x2, 0x2, 0x174, + 0x175, 0x7, 0x66, 0x2, 0x2, 0x175, 0x176, 0x7, 0x71, 0x2, 0x2, 0x176, + 0x177, 0x7, 0x77, 0x2, 0x2, 0x177, 0x178, 0x7, 0x64, 0x2, 0x2, 0x178, + 0x179, 0x7, 0x6e, 0x2, 0x2, 0x179, 0x17a, 0x7, 0x67, 0x2, 0x2, 0x17a, + 0x24, 0x3, 0x2, 0x2, 0x2, 0x17b, 0x17c, 0x7, 0x65, 0x2, 0x2, 0x17c, + 0x17d, 0x7, 0x71, 0x2, 0x2, 0x17d, 0x17e, 0x7, 0x70, 0x2, 0x2, 0x17e, + 0x17f, 0x7, 0x75, 0x2, 0x2, 0x17f, 0x180, 0x7, 0x76, 0x2, 0x2, 0x180, + 0x26, 0x3, 0x2, 0x2, 0x2, 0x181, 0x182, 0x7, 0x6e, 0x2, 0x2, 0x182, + 0x183, 0x7, 0x67, 0x2, 0x2, 0x183, 0x184, 0x7, 0x76, 0x2, 0x2, 0x184, + 0x28, 0x3, 0x2, 0x2, 0x2, 0x185, 0x186, 0x7, 0x7e, 0x2, 0x2, 0x186, + 0x187, 0x7, 0x7e, 0x2, 0x2, 0x187, 0x2a, 0x3, 0x2, 0x2, 0x2, 0x188, + 0x189, 0x7, 0x69, 0x2, 0x2, 0x189, 0x18a, 0x7, 0x63, 0x2, 0x2, 0x18a, + 0x18b, 0x7, 0x76, 0x2, 0x2, 0x18b, 0x18c, 0x7, 0x67, 0x2, 0x2, 0x18c, + 0x2c, 0x3, 0x2, 0x2, 0x2, 0x18d, 0x18e, 0x7, 0x45, 0x2, 0x2, 0x18e, + 0x18f, 0x7, 0x5a, 0x2, 0x2, 0x18f, 0x2e, 0x3, 0x2, 0x2, 0x2, 0x190, + 0x191, 0x7, 0x57, 0x2, 0x2, 0x191, 0x30, 0x3, 0x2, 0x2, 0x2, 0x192, + 0x193, 0x7, 0x69, 0x2, 0x2, 0x193, 0x194, 0x7, 0x72, 0x2, 0x2, 0x194, + 0x195, 0x7, 0x6a, 0x2, 0x2, 0x195, 0x196, 0x7, 0x63, 0x2, 0x2, 0x196, + 0x197, 0x7, 0x75, 0x2, 0x2, 0x197, 0x198, 0x7, 0x67, 0x2, 0x2, 0x198, + 0x32, 0x3, 0x2, 0x2, 0x2, 0x199, 0x19a, 0x7, 0x6f, 0x2, 0x2, 0x19a, + 0x19b, 0x7, 0x67, 0x2, 0x2, 0x19b, 0x19c, 0x7, 0x63, 0x2, 0x2, 0x19c, + 0x19d, 0x7, 0x75, 0x2, 0x2, 0x19d, 0x19e, 0x7, 0x77, 0x2, 0x2, 0x19e, + 0x19f, 0x7, 0x74, 0x2, 0x2, 0x19f, 0x1a0, 0x7, 0x67, 0x2, 0x2, 0x1a0, + 0x34, 0x3, 0x2, 0x2, 0x2, 0x1a1, 0x1a2, 0x7, 0x64, 0x2, 0x2, 0x1a2, + 0x1a3, 0x7, 0x63, 0x2, 0x2, 0x1a3, 0x1a4, 0x7, 0x74, 0x2, 0x2, 0x1a4, + 0x1a5, 0x7, 0x74, 0x2, 0x2, 0x1a5, 0x1a6, 0x7, 0x6b, 0x2, 0x2, 0x1a6, + 0x1a7, 0x7, 0x67, 0x2, 0x2, 0x1a7, 0x1a8, 0x7, 0x74, 0x2, 0x2, 0x1a8, + 0x36, 0x3, 0x2, 0x2, 0x2, 0x1a9, 0x1aa, 0x7, 0x6b, 0x2, 0x2, 0x1aa, + 0x1ab, 0x7, 0x70, 0x2, 0x2, 0x1ab, 0x1ac, 0x7, 0x78, 0x2, 0x2, 0x1ac, + 0x38, 0x3, 0x2, 0x2, 0x2, 0x1ad, 0x1ae, 0x7, 0x72, 0x2, 0x2, 0x1ae, + 0x1af, 0x7, 0x71, 0x2, 0x2, 0x1af, 0x1b0, 0x7, 0x79, 0x2, 0x2, 0x1b0, + 0x3a, 0x3, 0x2, 0x2, 0x2, 0x1b1, 0x1b2, 0x7, 0x65, 0x2, 0x2, 0x1b2, + 0x1b3, 0x7, 0x76, 0x2, 0x2, 0x1b3, 0x1b4, 0x7, 0x74, 0x2, 0x2, 0x1b4, + 0x1b5, 0x7, 0x6e, 0x2, 0x2, 0x1b5, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x1b6, + 0x1b7, 0x7, 0x42, 0x2, 0x2, 0x1b7, 0x3e, 0x3, 0x2, 0x2, 0x2, 0x1b8, + 0x1b9, 0x7, 0x74, 0x2, 0x2, 0x1b9, 0x1ba, 0x7, 0x67, 0x2, 0x2, 0x1ba, + 0x1bb, 0x7, 0x75, 0x2, 0x2, 0x1bb, 0x1bc, 0x7, 0x67, 0x2, 0x2, 0x1bc, + 0x1bd, 0x7, 0x76, 0x2, 0x2, 0x1bd, 0x40, 0x3, 0x2, 0x2, 0x2, 0x1be, + 0x1bf, 0x7, 0x80, 0x2, 0x2, 0x1bf, 0x42, 0x3, 0x2, 0x2, 0x2, 0x1c0, + 0x1c1, 0x7, 0x23, 0x2, 0x2, 0x1c1, 0x44, 0x3, 0x2, 0x2, 0x2, 0x1c2, + 0x1c3, 0x7, 0x40, 0x2, 0x2, 0x1c3, 0x46, 0x3, 0x2, 0x2, 0x2, 0x1c4, + 0x1c5, 0x7, 0x3e, 0x2, 0x2, 0x1c5, 0x48, 0x3, 0x2, 0x2, 0x2, 0x1c6, + 0x1c7, 0x7, 0x40, 0x2, 0x2, 0x1c7, 0x1c8, 0x7, 0x3f, 0x2, 0x2, 0x1c8, + 0x4a, 0x3, 0x2, 0x2, 0x2, 0x1c9, 0x1ca, 0x7, 0x3e, 0x2, 0x2, 0x1ca, + 0x1cb, 0x7, 0x3f, 0x2, 0x2, 0x1cb, 0x4c, 0x3, 0x2, 0x2, 0x2, 0x1cc, + 0x1cd, 0x7, 0x3f, 0x2, 0x2, 0x1cd, 0x1ce, 0x7, 0x3f, 0x2, 0x2, 0x1ce, + 0x4e, 0x3, 0x2, 0x2, 0x2, 0x1cf, 0x1d0, 0x7, 0x23, 0x2, 0x2, 0x1d0, + 0x1d1, 0x7, 0x3f, 0x2, 0x2, 0x1d1, 0x50, 0x3, 0x2, 0x2, 0x2, 0x1d2, + 0x1d3, 0x7, 0x28, 0x2, 0x2, 0x1d3, 0x1d4, 0x7, 0x28, 0x2, 0x2, 0x1d4, + 0x52, 0x3, 0x2, 0x2, 0x2, 0x1d5, 0x1d6, 0x7, 0x7e, 0x2, 0x2, 0x1d6, + 0x54, 0x3, 0x2, 0x2, 0x2, 0x1d7, 0x1d8, 0x7, 0x60, 0x2, 0x2, 0x1d8, + 0x56, 0x3, 0x2, 0x2, 0x2, 0x1d9, 0x1da, 0x7, 0x28, 0x2, 0x2, 0x1da, + 0x58, 0x3, 0x2, 0x2, 0x2, 0x1db, 0x1dc, 0x7, 0x3e, 0x2, 0x2, 0x1dc, + 0x1dd, 0x7, 0x3e, 0x2, 0x2, 0x1dd, 0x5a, 0x3, 0x2, 0x2, 0x2, 0x1de, + 0x1df, 0x7, 0x40, 0x2, 0x2, 0x1df, 0x1e0, 0x7, 0x40, 0x2, 0x2, 0x1e0, + 0x5c, 0x3, 0x2, 0x2, 0x2, 0x1e1, 0x1e2, 0x7, 0x2d, 0x2, 0x2, 0x1e2, + 0x5e, 0x3, 0x2, 0x2, 0x2, 0x1e3, 0x1e4, 0x7, 0x2c, 0x2, 0x2, 0x1e4, + 0x60, 0x3, 0x2, 0x2, 0x2, 0x1e5, 0x1e6, 0x7, 0x31, 0x2, 0x2, 0x1e6, + 0x62, 0x3, 0x2, 0x2, 0x2, 0x1e7, 0x1e8, 0x7, 0x27, 0x2, 0x2, 0x1e8, + 0x64, 0x3, 0x2, 0x2, 0x2, 0x1e9, 0x1ea, 0x7, 0x2d, 0x2, 0x2, 0x1ea, + 0x1eb, 0x7, 0x2d, 0x2, 0x2, 0x1eb, 0x66, 0x3, 0x2, 0x2, 0x2, 0x1ec, + 0x1ed, 0x7, 0x2f, 0x2, 0x2, 0x1ed, 0x1ee, 0x7, 0x2f, 0x2, 0x2, 0x1ee, + 0x68, 0x3, 0x2, 0x2, 0x2, 0x1ef, 0x1f0, 0x7, 0x75, 0x2, 0x2, 0x1f0, + 0x1f1, 0x7, 0x6b, 0x2, 0x2, 0x1f1, 0x1f2, 0x7, 0x70, 0x2, 0x2, 0x1f2, + 0x6a, 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f4, 0x7, 0x65, 0x2, 0x2, 0x1f4, + 0x1f5, 0x7, 0x71, 0x2, 0x2, 0x1f5, 0x1f6, 0x7, 0x75, 0x2, 0x2, 0x1f6, + 0x6c, 0x3, 0x2, 0x2, 0x2, 0x1f7, 0x1f8, 0x7, 0x76, 0x2, 0x2, 0x1f8, + 0x1f9, 0x7, 0x63, 0x2, 0x2, 0x1f9, 0x1fa, 0x7, 0x70, 0x2, 0x2, 0x1fa, + 0x6e, 0x3, 0x2, 0x2, 0x2, 0x1fb, 0x1fc, 0x7, 0x63, 0x2, 0x2, 0x1fc, + 0x1fd, 0x7, 0x74, 0x2, 0x2, 0x1fd, 0x1fe, 0x7, 0x65, 0x2, 0x2, 0x1fe, + 0x1ff, 0x7, 0x76, 0x2, 0x2, 0x1ff, 0x200, 0x7, 0x63, 0x2, 0x2, 0x200, + 0x201, 0x7, 0x70, 0x2, 0x2, 0x201, 0x70, 0x3, 0x2, 0x2, 0x2, 0x202, + 0x203, 0x7, 0x63, 0x2, 0x2, 0x203, 0x204, 0x7, 0x74, 0x2, 0x2, 0x204, + 0x205, 0x7, 0x65, 0x2, 0x2, 0x205, 0x206, 0x7, 0x65, 0x2, 0x2, 0x206, + 0x207, 0x7, 0x71, 0x2, 0x2, 0x207, 0x208, 0x7, 0x75, 0x2, 0x2, 0x208, + 0x72, 0x3, 0x2, 0x2, 0x2, 0x209, 0x20a, 0x7, 0x63, 0x2, 0x2, 0x20a, + 0x20b, 0x7, 0x74, 0x2, 0x2, 0x20b, 0x20c, 0x7, 0x65, 0x2, 0x2, 0x20c, + 0x20d, 0x7, 0x75, 0x2, 0x2, 0x20d, 0x20e, 0x7, 0x6b, 0x2, 0x2, 0x20e, + 0x20f, 0x7, 0x70, 0x2, 0x2, 0x20f, 0x74, 0x3, 0x2, 0x2, 0x2, 0x210, + 0x211, 0x7, 0x67, 0x2, 0x2, 0x211, 0x212, 0x7, 0x7a, 0x2, 0x2, 0x212, + 0x213, 0x7, 0x72, 0x2, 0x2, 0x213, 0x76, 0x3, 0x2, 0x2, 0x2, 0x214, + 0x215, 0x7, 0x6e, 0x2, 0x2, 0x215, 0x216, 0x7, 0x70, 0x2, 0x2, 0x216, + 0x78, 0x3, 0x2, 0x2, 0x2, 0x217, 0x218, 0x7, 0x75, 0x2, 0x2, 0x218, + 0x219, 0x7, 0x73, 0x2, 0x2, 0x219, 0x21a, 0x7, 0x74, 0x2, 0x2, 0x21a, + 0x21b, 0x7, 0x76, 0x2, 0x2, 0x21b, 0x7a, 0x3, 0x2, 0x2, 0x2, 0x21c, + 0x21d, 0x7, 0x74, 0x2, 0x2, 0x21d, 0x21e, 0x7, 0x71, 0x2, 0x2, 0x21e, + 0x21f, 0x7, 0x76, 0x2, 0x2, 0x21f, 0x220, 0x7, 0x6e, 0x2, 0x2, 0x220, + 0x7c, 0x3, 0x2, 0x2, 0x2, 0x221, 0x222, 0x7, 0x74, 0x2, 0x2, 0x222, + 0x223, 0x7, 0x71, 0x2, 0x2, 0x223, 0x224, 0x7, 0x76, 0x2, 0x2, 0x224, + 0x225, 0x7, 0x74, 0x2, 0x2, 0x225, 0x7e, 0x3, 0x2, 0x2, 0x2, 0x226, + 0x227, 0x7, 0x72, 0x2, 0x2, 0x227, 0x228, 0x7, 0x71, 0x2, 0x2, 0x228, + 0x229, 0x7, 0x72, 0x2, 0x2, 0x229, 0x22a, 0x7, 0x65, 0x2, 0x2, 0x22a, + 0x22b, 0x7, 0x71, 0x2, 0x2, 0x22b, 0x22c, 0x7, 0x77, 0x2, 0x2, 0x22c, + 0x22d, 0x7, 0x70, 0x2, 0x2, 0x22d, 0x22e, 0x7, 0x76, 0x2, 0x2, 0x22e, + 0x80, 0x3, 0x2, 0x2, 0x2, 0x22f, 0x230, 0x7, 0x6e, 0x2, 0x2, 0x230, + 0x231, 0x7, 0x67, 0x2, 0x2, 0x231, 0x232, 0x7, 0x70, 0x2, 0x2, 0x232, + 0x233, 0x7, 0x69, 0x2, 0x2, 0x233, 0x234, 0x7, 0x76, 0x2, 0x2, 0x234, + 0x235, 0x7, 0x6a, 0x2, 0x2, 0x235, 0x236, 0x7, 0x71, 0x2, 0x2, 0x236, + 0x237, 0x7, 0x68, 0x2, 0x2, 0x237, 0x82, 0x3, 0x2, 0x2, 0x2, 0x238, + 0x239, 0x7, 0x2d, 0x2, 0x2, 0x239, 0x23a, 0x7, 0x3f, 0x2, 0x2, 0x23a, + 0x84, 0x3, 0x2, 0x2, 0x2, 0x23b, 0x23c, 0x7, 0x2f, 0x2, 0x2, 0x23c, + 0x23d, 0x7, 0x3f, 0x2, 0x2, 0x23d, 0x86, 0x3, 0x2, 0x2, 0x2, 0x23e, + 0x23f, 0x7, 0x2c, 0x2, 0x2, 0x23f, 0x240, 0x7, 0x3f, 0x2, 0x2, 0x240, + 0x88, 0x3, 0x2, 0x2, 0x2, 0x241, 0x242, 0x7, 0x31, 0x2, 0x2, 0x242, + 0x243, 0x7, 0x3f, 0x2, 0x2, 0x243, 0x8a, 0x3, 0x2, 0x2, 0x2, 0x244, + 0x245, 0x7, 0x28, 0x2, 0x2, 0x245, 0x246, 0x7, 0x3f, 0x2, 0x2, 0x246, + 0x8c, 0x3, 0x2, 0x2, 0x2, 0x247, 0x248, 0x7, 0x7e, 0x2, 0x2, 0x248, + 0x249, 0x7, 0x3f, 0x2, 0x2, 0x249, 0x8e, 0x3, 0x2, 0x2, 0x2, 0x24a, + 0x24b, 0x7, 0x80, 0x2, 0x2, 0x24b, 0x24c, 0x7, 0x3f, 0x2, 0x2, 0x24c, + 0x90, 0x3, 0x2, 0x2, 0x2, 0x24d, 0x24e, 0x7, 0x60, 0x2, 0x2, 0x24e, + 0x24f, 0x7, 0x3f, 0x2, 0x2, 0x24f, 0x92, 0x3, 0x2, 0x2, 0x2, 0x250, + 0x251, 0x7, 0x3e, 0x2, 0x2, 0x251, 0x252, 0x7, 0x3e, 0x2, 0x2, 0x252, + 0x253, 0x7, 0x3f, 0x2, 0x2, 0x253, 0x94, 0x3, 0x2, 0x2, 0x2, 0x254, + 0x255, 0x7, 0x40, 0x2, 0x2, 0x255, 0x256, 0x7, 0x40, 0x2, 0x2, 0x256, + 0x257, 0x7, 0x3f, 0x2, 0x2, 0x257, 0x96, 0x3, 0x2, 0x2, 0x2, 0x258, + 0x259, 0x7, 0x6b, 0x2, 0x2, 0x259, 0x25a, 0x7, 0x70, 0x2, 0x2, 0x25a, + 0x98, 0x3, 0x2, 0x2, 0x2, 0x25b, 0x25c, 0x7, 0x6b, 0x2, 0x2, 0x25c, + 0x25d, 0x7, 0x68, 0x2, 0x2, 0x25d, 0x9a, 0x3, 0x2, 0x2, 0x2, 0x25e, + 0x25f, 0x7, 0x67, 0x2, 0x2, 0x25f, 0x260, 0x7, 0x6e, 0x2, 0x2, 0x260, + 0x261, 0x7, 0x75, 0x2, 0x2, 0x261, 0x262, 0x7, 0x67, 0x2, 0x2, 0x262, + 0x9c, 0x3, 0x2, 0x2, 0x2, 0x263, 0x264, 0x7, 0x68, 0x2, 0x2, 0x264, + 0x265, 0x7, 0x71, 0x2, 0x2, 0x265, 0x266, 0x7, 0x74, 0x2, 0x2, 0x266, + 0x9e, 0x3, 0x2, 0x2, 0x2, 0x267, 0x268, 0x7, 0x79, 0x2, 0x2, 0x268, + 0x269, 0x7, 0x6a, 0x2, 0x2, 0x269, 0x26a, 0x7, 0x6b, 0x2, 0x2, 0x26a, + 0x26b, 0x7, 0x6e, 0x2, 0x2, 0x26b, 0x26c, 0x7, 0x67, 0x2, 0x2, 0x26c, + 0xa0, 0x3, 0x2, 0x2, 0x2, 0x26d, 0x26e, 0x7, 0x74, 0x2, 0x2, 0x26e, + 0x26f, 0x7, 0x63, 0x2, 0x2, 0x26f, 0x270, 0x7, 0x70, 0x2, 0x2, 0x270, + 0x271, 0x7, 0x69, 0x2, 0x2, 0x271, 0x272, 0x7, 0x67, 0x2, 0x2, 0x272, + 0xa2, 0x3, 0x2, 0x2, 0x2, 0x273, 0x274, 0x7, 0x64, 0x2, 0x2, 0x274, + 0x275, 0x7, 0x74, 0x2, 0x2, 0x275, 0x276, 0x7, 0x67, 0x2, 0x2, 0x276, + 0x277, 0x7, 0x63, 0x2, 0x2, 0x277, 0x278, 0x7, 0x6d, 0x2, 0x2, 0x278, + 0xa4, 0x3, 0x2, 0x2, 0x2, 0x279, 0x27a, 0x7, 0x65, 0x2, 0x2, 0x27a, + 0x27b, 0x7, 0x71, 0x2, 0x2, 0x27b, 0x27c, 0x7, 0x70, 0x2, 0x2, 0x27c, + 0x27d, 0x7, 0x76, 0x2, 0x2, 0x27d, 0x27e, 0x7, 0x6b, 0x2, 0x2, 0x27e, + 0x27f, 0x7, 0x70, 0x2, 0x2, 0x27f, 0x280, 0x7, 0x77, 0x2, 0x2, 0x280, + 0x281, 0x7, 0x67, 0x2, 0x2, 0x281, 0xa6, 0x3, 0x2, 0x2, 0x2, 0x282, + 0x283, 0x7, 0x67, 0x2, 0x2, 0x283, 0x284, 0x7, 0x70, 0x2, 0x2, 0x284, + 0x285, 0x7, 0x66, 0x2, 0x2, 0x285, 0xa8, 0x3, 0x2, 0x2, 0x2, 0x286, + 0x287, 0x7, 0x6d, 0x2, 0x2, 0x287, 0x288, 0x7, 0x67, 0x2, 0x2, 0x288, + 0x289, 0x7, 0x74, 0x2, 0x2, 0x289, 0x28a, 0x7, 0x70, 0x2, 0x2, 0x28a, + 0x28b, 0x7, 0x67, 0x2, 0x2, 0x28b, 0x28c, 0x7, 0x6e, 0x2, 0x2, 0x28c, + 0xaa, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28e, 0x7, 0x66, 0x2, 0x2, 0x28e, + 0x28f, 0x7, 0x67, 0x2, 0x2, 0x28f, 0x290, 0x7, 0x68, 0x2, 0x2, 0x290, + 0xac, 0x3, 0x2, 0x2, 0x2, 0x291, 0x292, 0x7, 0x74, 0x2, 0x2, 0x292, + 0x293, 0x7, 0x67, 0x2, 0x2, 0x293, 0x294, 0x7, 0x76, 0x2, 0x2, 0x294, + 0x295, 0x7, 0x77, 0x2, 0x2, 0x295, 0x296, 0x7, 0x74, 0x2, 0x2, 0x296, + 0x297, 0x7, 0x70, 0x2, 0x2, 0x297, 0xae, 0x3, 0x2, 0x2, 0x2, 0x298, + 0x299, 0x7, 0x25, 0x2, 0x2, 0x299, 0x29a, 0x7, 0x72, 0x2, 0x2, 0x29a, + 0x29b, 0x7, 0x74, 0x2, 0x2, 0x29b, 0x29c, 0x7, 0x63, 0x2, 0x2, 0x29c, + 0x29d, 0x7, 0x69, 0x2, 0x2, 0x29d, 0x29e, 0x7, 0x6f, 0x2, 0x2, 0x29e, + 0x29f, 0x7, 0x63, 0x2, 0x2, 0x29f, 0xb0, 0x3, 0x2, 0x2, 0x2, 0x2a0, + 0x2a1, 0x7, 0x6e, 0x2, 0x2, 0x2a1, 0x2a2, 0x7, 0x67, 0x2, 0x2, 0x2a2, + 0x2a3, 0x7, 0x70, 0x2, 0x2, 0x2a3, 0x2a4, 0x7, 0x69, 0x2, 0x2, 0x2a4, + 0x2a5, 0x7, 0x76, 0x2, 0x2, 0x2a5, 0x2a6, 0x7, 0x6a, 0x2, 0x2, 0x2a6, + 0xb2, 0x3, 0x2, 0x2, 0x2, 0x2a7, 0x2a8, 0x7, 0x75, 0x2, 0x2, 0x2a8, + 0x2a9, 0x7, 0x76, 0x2, 0x2, 0x2a9, 0x2aa, 0x7, 0x74, 0x2, 0x2, 0x2aa, + 0x2ab, 0x7, 0x67, 0x2, 0x2, 0x2ab, 0x2ac, 0x7, 0x76, 0x2, 0x2, 0x2ac, + 0x2ad, 0x7, 0x65, 0x2, 0x2, 0x2ad, 0x2ae, 0x7, 0x6a, 0x2, 0x2, 0x2ae, + 0xb4, 0x3, 0x2, 0x2, 0x2, 0x2af, 0x2b0, 0x7, 0x64, 0x2, 0x2, 0x2b0, + 0x2b1, 0x7, 0x71, 0x2, 0x2, 0x2b1, 0x2b2, 0x7, 0x7a, 0x2, 0x2, 0x2b2, + 0x2b3, 0x7, 0x63, 0x2, 0x2, 0x2b3, 0x2b4, 0x7, 0x75, 0x2, 0x2, 0x2b4, + 0xb6, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x2b6, 0x7, 0x64, 0x2, 0x2, 0x2b6, + 0x2b7, 0x7, 0x71, 0x2, 0x2, 0x2b7, 0x2b8, 0x7, 0x7a, 0x2, 0x2, 0x2b8, + 0x2b9, 0x7, 0x76, 0x2, 0x2, 0x2b9, 0x2ba, 0x7, 0x71, 0x2, 0x2, 0x2ba, + 0xb8, 0x3, 0x2, 0x2, 0x2, 0x2bb, 0x2bc, 0x7, 0x75, 0x2, 0x2, 0x2bc, + 0x2bd, 0x7, 0x76, 0x2, 0x2, 0x2bd, 0x2be, 0x7, 0x74, 0x2, 0x2, 0x2be, + 0x2bf, 0x7, 0x67, 0x2, 0x2, 0x2bf, 0x2c0, 0x7, 0x76, 0x2, 0x2, 0x2c0, + 0x2c1, 0x7, 0x65, 0x2, 0x2, 0x2c1, 0x2c2, 0x7, 0x6a, 0x2, 0x2, 0x2c2, + 0x2c3, 0x7, 0x6b, 0x2, 0x2, 0x2c3, 0x2c4, 0x7, 0x70, 0x2, 0x2, 0x2c4, + 0x2c5, 0x7, 0x68, 0x2, 0x2, 0x2c5, 0xba, 0x3, 0x2, 0x2, 0x2, 0x2c6, + 0x2c7, 0x7, 0x66, 0x2, 0x2, 0x2c7, 0x2c8, 0x7, 0x67, 0x2, 0x2, 0x2c8, + 0x2c9, 0x7, 0x6e, 0x2, 0x2, 0x2c9, 0x2ca, 0x7, 0x63, 0x2, 0x2, 0x2ca, + 0x2cb, 0x7, 0x7b, 0x2, 0x2, 0x2cb, 0xbc, 0x3, 0x2, 0x2, 0x2, 0x2cc, + 0x2cd, 0x7, 0x74, 0x2, 0x2, 0x2cd, 0x2ce, 0x7, 0x71, 0x2, 0x2, 0x2ce, + 0x2cf, 0x7, 0x76, 0x2, 0x2, 0x2cf, 0x2d0, 0x7, 0x63, 0x2, 0x2, 0x2d0, + 0x2d1, 0x7, 0x74, 0x2, 0x2, 0x2d1, 0x2d2, 0x7, 0x7b, 0x2, 0x2, 0x2d2, + 0xbe, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d4, 0x7, 0x66, 0x2, 0x2, 0x2d4, + 0x2d5, 0x7, 0x67, 0x2, 0x2, 0x2d5, 0x2d6, 0x7, 0x68, 0x2, 0x2, 0x2d6, + 0x2d7, 0x7, 0x65, 0x2, 0x2, 0x2d7, 0x2d8, 0x7, 0x63, 0x2, 0x2, 0x2d8, + 0x2d9, 0x7, 0x6e, 0x2, 0x2, 0x2d9, 0x2da, 0x7, 0x69, 0x2, 0x2, 0x2da, + 0x2db, 0x7, 0x74, 0x2, 0x2, 0x2db, 0x2dc, 0x7, 0x63, 0x2, 0x2, 0x2dc, + 0x2dd, 0x7, 0x6f, 0x2, 0x2, 0x2dd, 0x2de, 0x7, 0x6f, 0x2, 0x2, 0x2de, + 0x2df, 0x7, 0x63, 0x2, 0x2, 0x2df, 0x2e0, 0x7, 0x74, 0x2, 0x2, 0x2e0, + 0xc0, 0x3, 0x2, 0x2, 0x2, 0x2e1, 0x2e2, 0x7, 0x66, 0x2, 0x2, 0x2e2, + 0x2e3, 0x7, 0x67, 0x2, 0x2, 0x2e3, 0x2e4, 0x7, 0x68, 0x2, 0x2, 0x2e4, + 0x2e5, 0x7, 0x65, 0x2, 0x2, 0x2e5, 0x2e6, 0x7, 0x63, 0x2, 0x2, 0x2e6, + 0x2e7, 0x7, 0x6e, 0x2, 0x2, 0x2e7, 0xc2, 0x3, 0x2, 0x2, 0x2, 0x2e8, + 0x2e9, 0x7, 0x24, 0x2, 0x2, 0x2e9, 0x2ea, 0x7, 0x71, 0x2, 0x2, 0x2ea, + 0x2eb, 0x7, 0x72, 0x2, 0x2, 0x2eb, 0x2ec, 0x7, 0x67, 0x2, 0x2, 0x2ec, + 0x2ed, 0x7, 0x70, 0x2, 0x2, 0x2ed, 0x2ee, 0x7, 0x72, 0x2, 0x2, 0x2ee, + 0x2ef, 0x7, 0x77, 0x2, 0x2, 0x2ef, 0x2f0, 0x7, 0x6e, 0x2, 0x2, 0x2f0, + 0x2f1, 0x7, 0x75, 0x2, 0x2, 0x2f1, 0x2f2, 0x7, 0x67, 0x2, 0x2, 0x2f2, + 0x2f3, 0x7, 0x24, 0x2, 0x2, 0x2f3, 0xc4, 0x3, 0x2, 0x2, 0x2, 0x2f4, + 0x2f5, 0x7, 0x5d, 0x2, 0x2, 0x2f5, 0xc6, 0x3, 0x2, 0x2, 0x2, 0x2f6, + 0x2f7, 0x7, 0x5f, 0x2, 0x2, 0x2f7, 0xc8, 0x3, 0x2, 0x2, 0x2, 0x2f8, + 0x2f9, 0x7, 0x7d, 0x2, 0x2, 0x2f9, 0xca, 0x3, 0x2, 0x2, 0x2, 0x2fa, + 0x2fb, 0x7, 0x7f, 0x2, 0x2, 0x2fb, 0xcc, 0x3, 0x2, 0x2, 0x2, 0x2fc, + 0x2fd, 0x7, 0x2a, 0x2, 0x2, 0x2fd, 0xce, 0x3, 0x2, 0x2, 0x2, 0x2fe, + 0x2ff, 0x7, 0x2b, 0x2, 0x2, 0x2ff, 0xd0, 0x3, 0x2, 0x2, 0x2, 0x300, + 0x301, 0x7, 0x3c, 0x2, 0x2, 0x301, 0xd2, 0x3, 0x2, 0x2, 0x2, 0x302, + 0x303, 0x7, 0x3d, 0x2, 0x2, 0x303, 0xd4, 0x3, 0x2, 0x2, 0x2, 0x304, + 0x305, 0x7, 0x30, 0x2, 0x2, 0x305, 0xd6, 0x3, 0x2, 0x2, 0x2, 0x306, + 0x307, 0x7, 0x2e, 0x2, 0x2, 0x307, 0xd8, 0x3, 0x2, 0x2, 0x2, 0x308, + 0x309, 0x7, 0x3f, 0x2, 0x2, 0x309, 0xda, 0x3, 0x2, 0x2, 0x2, 0x30a, + 0x30b, 0x7, 0x2f, 0x2, 0x2, 0x30b, 0x30c, 0x7, 0x40, 0x2, 0x2, 0x30c, + 0xdc, 0x3, 0x2, 0x2, 0x2, 0x30d, 0x30e, 0x7, 0x2f, 0x2, 0x2, 0x30e, + 0xde, 0x3, 0x2, 0x2, 0x2, 0x30f, 0x310, 0x7, 0x67, 0x2, 0x2, 0x310, + 0x311, 0x7, 0x7a, 0x2, 0x2, 0x311, 0x312, 0x7, 0x76, 0x2, 0x2, 0x312, + 0x313, 0x7, 0x67, 0x2, 0x2, 0x313, 0x314, 0x7, 0x74, 0x2, 0x2, 0x314, + 0x315, 0x7, 0x70, 0x2, 0x2, 0x315, 0xe0, 0x3, 0x2, 0x2, 0x2, 0x316, + 0x317, 0x7, 0x72, 0x2, 0x2, 0x317, 0x32a, 0x7, 0x6b, 0x2, 0x2, 0x318, + 0x319, 0x7, 0xd1, 0x2, 0x2, 0x319, 0x32a, 0x7, 0x20ae, 0x2, 0x2, + 0x31a, 0x31b, 0x7, 0x76, 0x2, 0x2, 0x31b, 0x31c, 0x7, 0x63, 0x2, + 0x2, 0x31c, 0x32a, 0x7, 0x77, 0x2, 0x2, 0x31d, 0x31e, 0x7, 0xf2, + 0x2, 0x2, 0x31e, 0x31f, 0x7, 0xffff, 0x2, 0x2, 0x31f, 0x320, 0x7, + 0x155, 0x2, 0x2, 0x320, 0x32a, 0x7, 0xffff, 0x2, 0x2, 0x321, 0x322, + 0x7, 0x67, 0x2, 0x2, 0x322, 0x323, 0x7, 0x77, 0x2, 0x2, 0x323, 0x324, + 0x7, 0x6e, 0x2, 0x2, 0x324, 0x325, 0x7, 0x67, 0x2, 0x2, 0x325, 0x32a, + 0x7, 0x74, 0x2, 0x2, 0x326, 0x327, 0x7, 0xe4, 0x2, 0x2, 0x327, 0x328, + 0x7, 0x2020, 0x2, 0x2, 0x328, 0x32a, 0x7, 0x2023, 0x2, 0x2, 0x329, + 0x316, 0x3, 0x2, 0x2, 0x2, 0x329, 0x318, 0x3, 0x2, 0x2, 0x2, 0x329, + 0x31a, 0x3, 0x2, 0x2, 0x2, 0x329, 0x31d, 0x3, 0x2, 0x2, 0x2, 0x329, + 0x321, 0x3, 0x2, 0x2, 0x2, 0x329, 0x326, 0x3, 0x2, 0x2, 0x2, 0x32a, + 0xe2, 0x3, 0x2, 0x2, 0x2, 0x32b, 0x32d, 0x9, 0x2, 0x2, 0x2, 0x32c, + 0x32b, 0x3, 0x2, 0x2, 0x2, 0x32d, 0x32e, 0x3, 0x2, 0x2, 0x2, 0x32e, + 0x32c, 0x3, 0x2, 0x2, 0x2, 0x32e, 0x32f, 0x3, 0x2, 0x2, 0x2, 0x32f, + 0x330, 0x3, 0x2, 0x2, 0x2, 0x330, 0x331, 0x8, 0x72, 0x2, 0x2, 0x331, + 0xe4, 0x3, 0x2, 0x2, 0x2, 0x332, 0x334, 0x9, 0x3, 0x2, 0x2, 0x333, + 0x332, 0x3, 0x2, 0x2, 0x2, 0x334, 0x335, 0x3, 0x2, 0x2, 0x2, 0x335, + 0x333, 0x3, 0x2, 0x2, 0x2, 0x335, 0x336, 0x3, 0x2, 0x2, 0x2, 0x336, + 0x337, 0x3, 0x2, 0x2, 0x2, 0x337, 0x338, 0x8, 0x73, 0x2, 0x2, 0x338, + 0xe6, 0x3, 0x2, 0x2, 0x2, 0x339, 0x33a, 0x9, 0x4, 0x2, 0x2, 0x33a, + 0xe8, 0x3, 0x2, 0x2, 0x2, 0x33b, 0x33d, 0x5, 0xe7, 0x74, 0x2, 0x33c, + 0x33b, 0x3, 0x2, 0x2, 0x2, 0x33d, 0x33e, 0x3, 0x2, 0x2, 0x2, 0x33e, + 0x33c, 0x3, 0x2, 0x2, 0x2, 0x33e, 0x33f, 0x3, 0x2, 0x2, 0x2, 0x33f, + 0xea, 0x3, 0x2, 0x2, 0x2, 0x340, 0x341, 0x9, 0xb, 0x2, 0x2, 0x341, + 0xec, 0x3, 0x2, 0x2, 0x2, 0x342, 0x343, 0x9, 0x5, 0x2, 0x2, 0x343, + 0xee, 0x3, 0x2, 0x2, 0x2, 0x344, 0x348, 0x9, 0x6, 0x2, 0x2, 0x345, + 0x348, 0x5, 0xeb, 0x76, 0x2, 0x346, 0x348, 0x5, 0xed, 0x77, 0x2, + 0x347, 0x344, 0x3, 0x2, 0x2, 0x2, 0x347, 0x345, 0x3, 0x2, 0x2, 0x2, + 0x347, 0x346, 0x3, 0x2, 0x2, 0x2, 0x348, 0xf0, 0x3, 0x2, 0x2, 0x2, + 0x349, 0x34c, 0x5, 0xef, 0x78, 0x2, 0x34a, 0x34c, 0x5, 0xe9, 0x75, + 0x2, 0x34b, 0x349, 0x3, 0x2, 0x2, 0x2, 0x34b, 0x34a, 0x3, 0x2, 0x2, + 0x2, 0x34c, 0xf2, 0x3, 0x2, 0x2, 0x2, 0x34d, 0x351, 0x5, 0xef, 0x78, + 0x2, 0x34e, 0x350, 0x5, 0xf1, 0x79, 0x2, 0x34f, 0x34e, 0x3, 0x2, + 0x2, 0x2, 0x350, 0x353, 0x3, 0x2, 0x2, 0x2, 0x351, 0x34f, 0x3, 0x2, + 0x2, 0x2, 0x351, 0x352, 0x3, 0x2, 0x2, 0x2, 0x352, 0xf4, 0x3, 0x2, + 0x2, 0x2, 0x353, 0x351, 0x3, 0x2, 0x2, 0x2, 0x354, 0x355, 0x9, 0x7, + 0x2, 0x2, 0x355, 0xf6, 0x3, 0x2, 0x2, 0x2, 0x356, 0x357, 0x9, 0x8, + 0x2, 0x2, 0x357, 0xf8, 0x3, 0x2, 0x2, 0x2, 0x358, 0x35a, 0x5, 0xe7, + 0x74, 0x2, 0x359, 0x358, 0x3, 0x2, 0x2, 0x2, 0x35a, 0x35b, 0x3, 0x2, + 0x2, 0x2, 0x35b, 0x359, 0x3, 0x2, 0x2, 0x2, 0x35b, 0x35c, 0x3, 0x2, + 0x2, 0x2, 0x35c, 0x35d, 0x3, 0x2, 0x2, 0x2, 0x35d, 0x361, 0x5, 0xd5, + 0x6b, 0x2, 0x35e, 0x360, 0x5, 0xe7, 0x74, 0x2, 0x35f, 0x35e, 0x3, + 0x2, 0x2, 0x2, 0x360, 0x363, 0x3, 0x2, 0x2, 0x2, 0x361, 0x35f, 0x3, + 0x2, 0x2, 0x2, 0x361, 0x362, 0x3, 0x2, 0x2, 0x2, 0x362, 0x36c, 0x3, + 0x2, 0x2, 0x2, 0x363, 0x361, 0x3, 0x2, 0x2, 0x2, 0x364, 0x368, 0x5, + 0xd5, 0x6b, 0x2, 0x365, 0x367, 0x5, 0xe7, 0x74, 0x2, 0x366, 0x365, + 0x3, 0x2, 0x2, 0x2, 0x367, 0x36a, 0x3, 0x2, 0x2, 0x2, 0x368, 0x366, + 0x3, 0x2, 0x2, 0x2, 0x368, 0x369, 0x3, 0x2, 0x2, 0x2, 0x369, 0x36c, + 0x3, 0x2, 0x2, 0x2, 0x36a, 0x368, 0x3, 0x2, 0x2, 0x2, 0x36b, 0x359, + 0x3, 0x2, 0x2, 0x2, 0x36b, 0x364, 0x3, 0x2, 0x2, 0x2, 0x36c, 0xfa, + 0x3, 0x2, 0x2, 0x2, 0x36d, 0x374, 0x5, 0xf9, 0x7d, 0x2, 0x36e, 0x370, + 0x5, 0xf5, 0x7b, 0x2, 0x36f, 0x371, 0x5, 0xf7, 0x7c, 0x2, 0x370, + 0x36f, 0x3, 0x2, 0x2, 0x2, 0x370, 0x371, 0x3, 0x2, 0x2, 0x2, 0x371, + 0x372, 0x3, 0x2, 0x2, 0x2, 0x372, 0x373, 0x5, 0xe9, 0x75, 0x2, 0x373, + 0x375, 0x3, 0x2, 0x2, 0x2, 0x374, 0x36e, 0x3, 0x2, 0x2, 0x2, 0x374, + 0x375, 0x3, 0x2, 0x2, 0x2, 0x375, 0xfc, 0x3, 0x2, 0x2, 0x2, 0x376, + 0x377, 0x7, 0x66, 0x2, 0x2, 0x377, 0x383, 0x7, 0x76, 0x2, 0x2, 0x378, + 0x379, 0x7, 0x70, 0x2, 0x2, 0x379, 0x383, 0x7, 0x75, 0x2, 0x2, 0x37a, + 0x37b, 0x7, 0x77, 0x2, 0x2, 0x37b, 0x383, 0x7, 0x75, 0x2, 0x2, 0x37c, + 0x37d, 0x7, 0xc4, 0x2, 0x2, 0x37d, 0x37e, 0x7, 0xb7, 0x2, 0x2, 0x37e, + 0x383, 0x7, 0x75, 0x2, 0x2, 0x37f, 0x380, 0x7, 0x6f, 0x2, 0x2, 0x380, + 0x383, 0x7, 0x75, 0x2, 0x2, 0x381, 0x383, 0x7, 0x75, 0x2, 0x2, 0x382, + 0x376, 0x3, 0x2, 0x2, 0x2, 0x382, 0x378, 0x3, 0x2, 0x2, 0x2, 0x382, + 0x37a, 0x3, 0x2, 0x2, 0x2, 0x382, 0x37c, 0x3, 0x2, 0x2, 0x2, 0x382, + 0x37f, 0x3, 0x2, 0x2, 0x2, 0x382, 0x381, 0x3, 0x2, 0x2, 0x2, 0x383, + 0xfe, 0x3, 0x2, 0x2, 0x2, 0x384, 0x387, 0x5, 0xe9, 0x75, 0x2, 0x385, + 0x387, 0x5, 0xfb, 0x7e, 0x2, 0x386, 0x384, 0x3, 0x2, 0x2, 0x2, 0x386, + 0x385, 0x3, 0x2, 0x2, 0x2, 0x387, 0x388, 0x3, 0x2, 0x2, 0x2, 0x388, + 0x389, 0x5, 0xfd, 0x7f, 0x2, 0x389, 0x100, 0x3, 0x2, 0x2, 0x2, 0x38a, + 0x38c, 0x7, 0x24, 0x2, 0x2, 0x38b, 0x38d, 0xa, 0x9, 0x2, 0x2, 0x38c, + 0x38b, 0x3, 0x2, 0x2, 0x2, 0x38d, 0x38e, 0x3, 0x2, 0x2, 0x2, 0x38e, + 0x38f, 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38c, 0x3, 0x2, 0x2, 0x2, 0x38f, + 0x390, 0x3, 0x2, 0x2, 0x2, 0x390, 0x399, 0x7, 0x24, 0x2, 0x2, 0x391, + 0x393, 0x7, 0x29, 0x2, 0x2, 0x392, 0x394, 0xa, 0xa, 0x2, 0x2, 0x393, + 0x392, 0x3, 0x2, 0x2, 0x2, 0x394, 0x395, 0x3, 0x2, 0x2, 0x2, 0x395, + 0x396, 0x3, 0x2, 0x2, 0x2, 0x395, 0x393, 0x3, 0x2, 0x2, 0x2, 0x396, + 0x397, 0x3, 0x2, 0x2, 0x2, 0x397, 0x399, 0x7, 0x29, 0x2, 0x2, 0x398, + 0x38a, 0x3, 0x2, 0x2, 0x2, 0x398, 0x391, 0x3, 0x2, 0x2, 0x2, 0x399, + 0x102, 0x3, 0x2, 0x2, 0x2, 0x39a, 0x39b, 0x7, 0x31, 0x2, 0x2, 0x39b, + 0x39c, 0x7, 0x31, 0x2, 0x2, 0x39c, 0x3a0, 0x3, 0x2, 0x2, 0x2, 0x39d, + 0x39f, 0xa, 0x3, 0x2, 0x2, 0x39e, 0x39d, 0x3, 0x2, 0x2, 0x2, 0x39f, + 0x3a2, 0x3, 0x2, 0x2, 0x2, 0x3a0, 0x39e, 0x3, 0x2, 0x2, 0x2, 0x3a0, + 0x3a1, 0x3, 0x2, 0x2, 0x2, 0x3a1, 0x3a3, 0x3, 0x2, 0x2, 0x2, 0x3a2, + 0x3a0, 0x3, 0x2, 0x2, 0x2, 0x3a3, 0x3a4, 0x8, 0x82, 0x2, 0x2, 0x3a4, + 0x104, 0x3, 0x2, 0x2, 0x2, 0x3a5, 0x3a6, 0x7, 0x31, 0x2, 0x2, 0x3a6, + 0x3a7, 0x7, 0x2c, 0x2, 0x2, 0x3a7, 0x3ab, 0x3, 0x2, 0x2, 0x2, 0x3a8, + 0x3aa, 0xb, 0x2, 0x2, 0x2, 0x3a9, 0x3a8, 0x3, 0x2, 0x2, 0x2, 0x3aa, + 0x3ad, 0x3, 0x2, 0x2, 0x2, 0x3ab, 0x3ac, 0x3, 0x2, 0x2, 0x2, 0x3ab, + 0x3a9, 0x3, 0x2, 0x2, 0x2, 0x3ac, 0x3ae, 0x3, 0x2, 0x2, 0x2, 0x3ad, + 0x3ab, 0x3, 0x2, 0x2, 0x2, 0x3ae, 0x3af, 0x7, 0x2c, 0x2, 0x2, 0x3af, + 0x3b0, 0x7, 0x31, 0x2, 0x2, 0x3b0, 0x3b1, 0x3, 0x2, 0x2, 0x2, 0x3b1, + 0x3b2, 0x8, 0x83, 0x2, 0x2, 0x3b2, 0x106, 0x3, 0x2, 0x2, 0x2, 0x17, + 0x2, 0x329, 0x32e, 0x335, 0x33e, 0x347, 0x34b, 0x351, 0x35b, 0x361, + 0x368, 0x36b, 0x370, 0x374, 0x382, 0x386, 0x38e, 0x395, 0x398, 0x3a0, + 0x3ab, 0x3, 0x8, 0x2, 0x2, + }; + + _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, + serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); + + + atn::ATNDeserializer deserializer; + _atn = deserializer.deserialize(_serializedATN); + + size_t count = _atn.getNumberOfDecisions(); + _decisionToDFA.reserve(count); + for (size_t i = 0; i < count; i++) { + _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); + } +} + +qasm3Lexer::Initializer qasm3Lexer::_init; diff --git a/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.interp b/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.interp index 10f5d55b..08b71a6d 100644 --- a/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.interp +++ b/mlir/parsers/qasm3/antlr/generated/qasm3Lexer.interp @@ -1,389 +1,389 @@ -token literal names: -null -'OPENQASM' -'include' -'compute' -'action' -'QCOR_EXPECT_TRUE' -'qubit' -'qreg' -'bit' -'creg' -'int' -'uint' -'float' -'angle' -'fixed' -'bool' -'int64_t' -'double' -'const' -'let' -'||' -'gate' -'CX' -'U' -'gphase' -'measure' -'barrier' -'inv' -'pow' -'ctrl' -'@' -'reset' -'~' -'!' -'>' -'<' -'>=' -'<=' -'==' -'!=' -'&&' -'|' -'^' -'&' -'<<' -'>>' -'+' -'*' -'/' -'%' -'++' -'--' -'sin' -'cos' -'tan' -'arctan' -'arccos' -'arcsin' -'exp' -'ln' -'sqrt' -'rotl' -'rotr' -'popcount' -'lengthof' -'+=' -'-=' -'*=' -'/=' -'&=' -'|=' -'~=' -'^=' -'<<=' -'>>=' -'in' -'if' -'else' -'for' -'while' -'range' -'break' -'continue' -'end' -'kernel' -'def' -'return' -'#pragma' -'length' -'stretch' -'boxas' -'boxto' -'stretchinf' -'delay' -'rotary' -'defcalgrammar' -'defcal' -'"openpulse"' -'[' -']' -'{' -'}' -'(' -')' -':' -';' -'.' -',' -'=' -'->' -'-' -'extern' -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -LBRACKET -RBRACKET -LBRACE -RBRACE -LPAREN -RPAREN -COLON -SEMICOLON -DOT -COMMA -EQUALS -ARROW -MINUS -EXTERN -Constant -Whitespace -Newline -Integer -Identifier -RealNumber -TimingLiteral -StringLiteral -LineComment -BlockComment - -rule names: -T__0 -T__1 -T__2 -T__3 -T__4 -T__5 -T__6 -T__7 -T__8 -T__9 -T__10 -T__11 -T__12 -T__13 -T__14 -T__15 -T__16 -T__17 -T__18 -T__19 -T__20 -T__21 -T__22 -T__23 -T__24 -T__25 -T__26 -T__27 -T__28 -T__29 -T__30 -T__31 -T__32 -T__33 -T__34 -T__35 -T__36 -T__37 -T__38 -T__39 -T__40 -T__41 -T__42 -T__43 -T__44 -T__45 -T__46 -T__47 -T__48 -T__49 -T__50 -T__51 -T__52 -T__53 -T__54 -T__55 -T__56 -T__57 -T__58 -T__59 -T__60 -T__61 -T__62 -T__63 -T__64 -T__65 -T__66 -T__67 -T__68 -T__69 -T__70 -T__71 -T__72 -T__73 -T__74 -T__75 -T__76 -T__77 -T__78 -T__79 -T__80 -T__81 -T__82 -T__83 -T__84 -T__85 -T__86 -T__87 -T__88 -T__89 -T__90 -T__91 -T__92 -T__93 -T__94 -T__95 -T__96 -LBRACKET -RBRACKET -LBRACE -RBRACE -LPAREN -RPAREN -COLON -SEMICOLON -DOT -COMMA -EQUALS -ARROW -MINUS -EXTERN -Constant -Whitespace -Newline -Digit -Integer -ValidUnicode -Letter -FirstIdCharacter -GeneralIdCharacter -Identifier -SciNotation -PlusMinus -Float -RealNumber -TimeUnit -TimingLiteral -StringLiteral -LineComment -BlockComment - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 123, 940, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 3, 101, 3, 102, 3, 102, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 3, 106, 3, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 804, 10, 113, 3, 114, 6, 114, 807, 10, 114, 13, 114, 14, 114, 808, 3, 114, 3, 114, 3, 115, 6, 115, 814, 10, 115, 13, 115, 14, 115, 815, 3, 115, 3, 115, 3, 116, 3, 116, 3, 117, 6, 117, 823, 10, 117, 13, 117, 14, 117, 824, 3, 118, 3, 118, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 5, 120, 834, 10, 120, 3, 121, 3, 121, 5, 121, 838, 10, 121, 3, 122, 3, 122, 7, 122, 842, 10, 122, 12, 122, 14, 122, 845, 11, 122, 3, 123, 3, 123, 3, 124, 3, 124, 3, 125, 6, 125, 852, 10, 125, 13, 125, 14, 125, 853, 3, 125, 3, 125, 7, 125, 858, 10, 125, 12, 125, 14, 125, 861, 11, 125, 3, 125, 3, 125, 7, 125, 865, 10, 125, 12, 125, 14, 125, 868, 11, 125, 5, 125, 870, 10, 125, 3, 126, 3, 126, 3, 126, 5, 126, 875, 10, 126, 3, 126, 3, 126, 5, 126, 879, 10, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 5, 127, 892, 10, 127, 3, 128, 3, 128, 5, 128, 896, 10, 128, 3, 128, 3, 128, 3, 129, 3, 129, 6, 129, 902, 10, 129, 13, 129, 14, 129, 903, 3, 129, 3, 129, 3, 129, 6, 129, 909, 10, 129, 13, 129, 14, 129, 910, 3, 129, 5, 129, 914, 10, 129, 3, 130, 3, 130, 3, 130, 3, 130, 7, 130, 920, 10, 130, 12, 130, 14, 130, 923, 11, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 7, 131, 931, 10, 131, 12, 131, 14, 131, 934, 11, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 5, 903, 910, 932, 2, 132, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, 229, 116, 231, 2, 233, 117, 235, 2, 237, 2, 239, 2, 241, 2, 243, 118, 245, 2, 247, 2, 249, 2, 251, 119, 253, 2, 255, 120, 257, 121, 259, 122, 261, 123, 3, 2, 11, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 15, 15, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 4, 2, 38, 38, 97, 97, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 5, 2, 11, 12, 15, 15, 36, 36, 5, 2, 11, 12, 15, 15, 41, 41, 4, 3, 2, 55057, 3, 55057, 3, 590, 2, 67, 2, 92, 2, 99, 2, 124, 2, 172, 2, 172, 2, 183, 2, 183, 2, 188, 2, 188, 2, 194, 2, 216, 2, 218, 2, 248, 2, 250, 2, 707, 2, 712, 2, 723, 2, 738, 2, 742, 2, 750, 2, 750, 2, 752, 2, 752, 2, 882, 2, 886, 2, 888, 2, 889, 2, 892, 2, 895, 2, 897, 2, 897, 2, 904, 2, 904, 2, 906, 2, 908, 2, 910, 2, 910, 2, 912, 2, 931, 2, 933, 2, 1015, 2, 1017, 2, 1155, 2, 1164, 2, 1329, 2, 1331, 2, 1368, 2, 1371, 2, 1371, 2, 1379, 2, 1417, 2, 1490, 2, 1516, 2, 1522, 2, 1524, 2, 1570, 2, 1612, 2, 1648, 2, 1649, 2, 1651, 2, 1749, 2, 1751, 2, 1751, 2, 1767, 2, 1768, 2, 1776, 2, 1777, 2, 1788, 2, 1790, 2, 1793, 2, 1793, 2, 1810, 2, 1810, 2, 1812, 2, 1841, 2, 1871, 2, 1959, 2, 1971, 2, 1971, 2, 1996, 2, 2028, 2, 2038, 2, 2039, 2, 2044, 2, 2044, 2, 2050, 2, 2071, 2, 2076, 2, 2076, 2, 2086, 2, 2086, 2, 2090, 2, 2090, 2, 2114, 2, 2138, 2, 2146, 2, 2156, 2, 2210, 2, 2230, 2, 2232, 2, 2239, 2, 2310, 2, 2363, 2, 2367, 2, 2367, 2, 2386, 2, 2386, 2, 2394, 2, 2403, 2, 2419, 2, 2434, 2, 2439, 2, 2446, 2, 2449, 2, 2450, 2, 2453, 2, 2474, 2, 2476, 2, 2482, 2, 2484, 2, 2484, 2, 2488, 2, 2491, 2, 2495, 2, 2495, 2, 2512, 2, 2512, 2, 2526, 2, 2527, 2, 2529, 2, 2531, 2, 2546, 2, 2547, 2, 2558, 2, 2558, 2, 2567, 2, 2572, 2, 2577, 2, 2578, 2, 2581, 2, 2602, 2, 2604, 2, 2610, 2, 2612, 2, 2613, 2, 2615, 2, 2616, 2, 2618, 2, 2619, 2, 2651, 2, 2654, 2, 2656, 2, 2656, 2, 2676, 2, 2678, 2, 2695, 2, 2703, 2, 2705, 2, 2707, 2, 2709, 2, 2730, 2, 2732, 2, 2738, 2, 2740, 2, 2741, 2, 2743, 2, 2747, 2, 2751, 2, 2751, 2, 2770, 2, 2770, 2, 2786, 2, 2787, 2, 2811, 2, 2811, 2, 2823, 2, 2830, 2, 2833, 2, 2834, 2, 2837, 2, 2858, 2, 2860, 2, 2866, 2, 2868, 2, 2869, 2, 2871, 2, 2875, 2, 2879, 2, 2879, 2, 2910, 2, 2911, 2, 2913, 2, 2915, 2, 2931, 2, 2931, 2, 2949, 2, 2949, 2, 2951, 2, 2956, 2, 2960, 2, 2962, 2, 2964, 2, 2967, 2, 2971, 2, 2972, 2, 2974, 2, 2974, 2, 2976, 2, 2977, 2, 2981, 2, 2982, 2, 2986, 2, 2988, 2, 2992, 2, 3003, 2, 3026, 2, 3026, 2, 3079, 2, 3086, 2, 3088, 2, 3090, 2, 3092, 2, 3114, 2, 3116, 2, 3131, 2, 3135, 2, 3135, 2, 3162, 2, 3164, 2, 3170, 2, 3171, 2, 3202, 2, 3202, 2, 3207, 2, 3214, 2, 3216, 2, 3218, 2, 3220, 2, 3242, 2, 3244, 2, 3253, 2, 3255, 2, 3259, 2, 3263, 2, 3263, 2, 3296, 2, 3296, 2, 3298, 2, 3299, 2, 3315, 2, 3316, 2, 3335, 2, 3342, 2, 3344, 2, 3346, 2, 3348, 2, 3388, 2, 3391, 2, 3391, 2, 3408, 2, 3408, 2, 3414, 2, 3416, 2, 3425, 2, 3427, 2, 3452, 2, 3457, 2, 3463, 2, 3480, 2, 3484, 2, 3507, 2, 3509, 2, 3517, 2, 3519, 2, 3519, 2, 3522, 2, 3528, 2, 3587, 2, 3634, 2, 3636, 2, 3637, 2, 3650, 2, 3656, 2, 3715, 2, 3716, 2, 3718, 2, 3718, 2, 3721, 2, 3722, 2, 3724, 2, 3724, 2, 3727, 2, 3727, 2, 3734, 2, 3737, 2, 3739, 2, 3745, 2, 3747, 2, 3749, 2, 3751, 2, 3751, 2, 3753, 2, 3753, 2, 3756, 2, 3757, 2, 3759, 2, 3762, 2, 3764, 2, 3765, 2, 3775, 2, 3775, 2, 3778, 2, 3782, 2, 3784, 2, 3784, 2, 3806, 2, 3809, 2, 3842, 2, 3842, 2, 3906, 2, 3913, 2, 3915, 2, 3950, 2, 3978, 2, 3982, 2, 4098, 2, 4140, 2, 4161, 2, 4161, 2, 4178, 2, 4183, 2, 4188, 2, 4191, 2, 4195, 2, 4195, 2, 4199, 2, 4200, 2, 4208, 2, 4210, 2, 4215, 2, 4227, 2, 4240, 2, 4240, 2, 4258, 2, 4295, 2, 4297, 2, 4297, 2, 4303, 2, 4303, 2, 4306, 2, 4348, 2, 4350, 2, 4682, 2, 4684, 2, 4687, 2, 4690, 2, 4696, 2, 4698, 2, 4698, 2, 4700, 2, 4703, 2, 4706, 2, 4746, 2, 4748, 2, 4751, 2, 4754, 2, 4786, 2, 4788, 2, 4791, 2, 4794, 2, 4800, 2, 4802, 2, 4802, 2, 4804, 2, 4807, 2, 4810, 2, 4824, 2, 4826, 2, 4882, 2, 4884, 2, 4887, 2, 4890, 2, 4956, 2, 4994, 2, 5009, 2, 5026, 2, 5111, 2, 5114, 2, 5119, 2, 5123, 2, 5742, 2, 5745, 2, 5761, 2, 5763, 2, 5788, 2, 5794, 2, 5868, 2, 5872, 2, 5882, 2, 5890, 2, 5902, 2, 5904, 2, 5907, 2, 5922, 2, 5939, 2, 5954, 2, 5971, 2, 5986, 2, 5998, 2, 6000, 2, 6002, 2, 6018, 2, 6069, 2, 6105, 2, 6105, 2, 6110, 2, 6110, 2, 6178, 2, 6265, 2, 6274, 2, 6278, 2, 6281, 2, 6314, 2, 6316, 2, 6316, 2, 6322, 2, 6391, 2, 6402, 2, 6432, 2, 6482, 2, 6511, 2, 6514, 2, 6518, 2, 6530, 2, 6573, 2, 6578, 2, 6603, 2, 6658, 2, 6680, 2, 6690, 2, 6742, 2, 6825, 2, 6825, 2, 6919, 2, 6965, 2, 6983, 2, 6989, 2, 7045, 2, 7074, 2, 7088, 2, 7089, 2, 7100, 2, 7143, 2, 7170, 2, 7205, 2, 7247, 2, 7249, 2, 7260, 2, 7295, 2, 7298, 2, 7306, 2, 7403, 2, 7406, 2, 7408, 2, 7411, 2, 7415, 2, 7416, 2, 7426, 2, 7617, 2, 7682, 2, 7959, 2, 7962, 2, 7967, 2, 7970, 2, 8007, 2, 8010, 2, 8015, 2, 8018, 2, 8025, 2, 8027, 2, 8027, 2, 8029, 2, 8029, 2, 8031, 2, 8031, 2, 8033, 2, 8063, 2, 8066, 2, 8118, 2, 8120, 2, 8126, 2, 8128, 2, 8128, 2, 8132, 2, 8134, 2, 8136, 2, 8142, 2, 8146, 2, 8149, 2, 8152, 2, 8157, 2, 8162, 2, 8174, 2, 8180, 2, 8182, 2, 8184, 2, 8190, 2, 8307, 2, 8307, 2, 8321, 2, 8321, 2, 8338, 2, 8350, 2, 8452, 2, 8452, 2, 8457, 2, 8457, 2, 8460, 2, 8469, 2, 8471, 2, 8471, 2, 8475, 2, 8479, 2, 8486, 2, 8486, 2, 8488, 2, 8488, 2, 8490, 2, 8490, 2, 8492, 2, 8495, 2, 8497, 2, 8507, 2, 8510, 2, 8513, 2, 8519, 2, 8523, 2, 8528, 2, 8528, 2, 8546, 2, 8586, 2, 11266, 2, 11312, 2, 11314, 2, 11360, 2, 11362, 2, 11494, 2, 11501, 2, 11504, 2, 11508, 2, 11509, 2, 11522, 2, 11559, 2, 11561, 2, 11561, 2, 11567, 2, 11567, 2, 11570, 2, 11625, 2, 11633, 2, 11633, 2, 11650, 2, 11672, 2, 11682, 2, 11688, 2, 11690, 2, 11696, 2, 11698, 2, 11704, 2, 11706, 2, 11712, 2, 11714, 2, 11720, 2, 11722, 2, 11728, 2, 11730, 2, 11736, 2, 11738, 2, 11744, 2, 11825, 2, 11825, 2, 12295, 2, 12297, 2, 12323, 2, 12331, 2, 12339, 2, 12343, 2, 12346, 2, 12350, 2, 12355, 2, 12440, 2, 12447, 2, 12449, 2, 12451, 2, 12540, 2, 12542, 2, 12545, 2, 12551, 2, 12592, 2, 12595, 2, 12688, 2, 12706, 2, 12732, 2, 12786, 2, 12801, 2, 13314, 2, 19895, 2, 19970, 2, 40940, 2, 40962, 2, 42126, 2, 42194, 2, 42239, 2, 42242, 2, 42510, 2, 42514, 2, 42529, 2, 42540, 2, 42541, 2, 42562, 2, 42608, 2, 42625, 2, 42655, 2, 42658, 2, 42737, 2, 42777, 2, 42785, 2, 42788, 2, 42890, 2, 42893, 2, 42928, 2, 42930, 2, 42937, 2, 43001, 2, 43011, 2, 43013, 2, 43015, 2, 43017, 2, 43020, 2, 43022, 2, 43044, 2, 43074, 2, 43125, 2, 43140, 2, 43189, 2, 43252, 2, 43257, 2, 43261, 2, 43261, 2, 43263, 2, 43263, 2, 43276, 2, 43303, 2, 43314, 2, 43336, 2, 43362, 2, 43390, 2, 43398, 2, 43444, 2, 43473, 2, 43473, 2, 43490, 2, 43494, 2, 43496, 2, 43505, 2, 43516, 2, 43520, 2, 43522, 2, 43562, 2, 43586, 2, 43588, 2, 43590, 2, 43597, 2, 43618, 2, 43640, 2, 43644, 2, 43644, 2, 43648, 2, 43697, 2, 43699, 2, 43699, 2, 43703, 2, 43704, 2, 43707, 2, 43711, 2, 43714, 2, 43714, 2, 43716, 2, 43716, 2, 43741, 2, 43743, 2, 43746, 2, 43756, 2, 43764, 2, 43766, 2, 43779, 2, 43784, 2, 43787, 2, 43792, 2, 43795, 2, 43800, 2, 43810, 2, 43816, 2, 43818, 2, 43824, 2, 43826, 2, 43868, 2, 43870, 2, 43879, 2, 43890, 2, 44004, 2, 44034, 2, 55205, 2, 55218, 2, 55240, 2, 55245, 2, 55293, 2, 63746, 2, 64111, 2, 64114, 2, 64219, 2, 64258, 2, 64264, 2, 64277, 2, 64281, 2, 64287, 2, 64287, 2, 64289, 2, 64298, 2, 64300, 2, 64312, 2, 64314, 2, 64318, 2, 64320, 2, 64320, 2, 64322, 2, 64323, 2, 64325, 2, 64326, 2, 64328, 2, 64435, 2, 64469, 2, 64831, 2, 64850, 2, 64913, 2, 64916, 2, 64969, 2, 65010, 2, 65021, 2, 65138, 2, 65142, 2, 65144, 2, 65278, 2, 65315, 2, 65340, 2, 65347, 2, 65372, 2, 65384, 2, 65472, 2, 65476, 2, 65481, 2, 65484, 2, 65489, 2, 65492, 2, 65497, 2, 65500, 2, 65502, 2, 2, 3, 13, 3, 15, 3, 40, 3, 42, 3, 60, 3, 62, 3, 63, 3, 65, 3, 79, 3, 82, 3, 95, 3, 130, 3, 252, 3, 322, 3, 374, 3, 642, 3, 670, 3, 674, 3, 722, 3, 770, 3, 801, 3, 815, 3, 844, 3, 850, 3, 887, 3, 898, 3, 927, 3, 930, 3, 965, 3, 970, 3, 977, 3, 979, 3, 983, 3, 1026, 3, 1183, 3, 1202, 3, 1237, 3, 1242, 3, 1277, 3, 1282, 3, 1321, 3, 1330, 3, 1381, 3, 1538, 3, 1848, 3, 1858, 3, 1879, 3, 1890, 3, 1897, 3, 2050, 3, 2055, 3, 2058, 3, 2058, 3, 2060, 3, 2103, 3, 2105, 3, 2106, 3, 2110, 3, 2110, 3, 2113, 3, 2135, 3, 2146, 3, 2168, 3, 2178, 3, 2208, 3, 2274, 3, 2292, 3, 2294, 3, 2295, 3, 2306, 3, 2327, 3, 2338, 3, 2363, 3, 2434, 3, 2489, 3, 2496, 3, 2497, 3, 2562, 3, 2562, 3, 2578, 3, 2581, 3, 2583, 3, 2585, 3, 2587, 3, 2613, 3, 2658, 3, 2686, 3, 2690, 3, 2718, 3, 2754, 3, 2761, 3, 2763, 3, 2790, 3, 2818, 3, 2871, 3, 2882, 3, 2903, 3, 2914, 3, 2932, 3, 2946, 3, 2963, 3, 3074, 3, 3146, 3, 3202, 3, 3252, 3, 3266, 3, 3316, 3, 4101, 3, 4153, 3, 4229, 3, 4273, 3, 4306, 3, 4330, 3, 4357, 3, 4392, 3, 4434, 3, 4468, 3, 4472, 3, 4472, 3, 4485, 3, 4532, 3, 4547, 3, 4550, 3, 4572, 3, 4572, 3, 4574, 3, 4574, 3, 4610, 3, 4627, 3, 4629, 3, 4653, 3, 4738, 3, 4744, 3, 4746, 3, 4746, 3, 4748, 3, 4751, 3, 4753, 3, 4767, 3, 4769, 3, 4778, 3, 4786, 3, 4832, 3, 4871, 3, 4878, 3, 4881, 3, 4882, 3, 4885, 3, 4906, 3, 4908, 3, 4914, 3, 4916, 3, 4917, 3, 4919, 3, 4923, 3, 4927, 3, 4927, 3, 4946, 3, 4946, 3, 4959, 3, 4963, 3, 5122, 3, 5174, 3, 5193, 3, 5196, 3, 5250, 3, 5297, 3, 5318, 3, 5319, 3, 5321, 3, 5321, 3, 5506, 3, 5552, 3, 5594, 3, 5597, 3, 5634, 3, 5681, 3, 5702, 3, 5702, 3, 5762, 3, 5804, 3, 5890, 3, 5915, 3, 6306, 3, 6369, 3, 6401, 3, 6401, 3, 6658, 3, 6658, 3, 6669, 3, 6708, 3, 6716, 3, 6716, 3, 6738, 3, 6738, 3, 6750, 3, 6789, 3, 6792, 3, 6795, 3, 6850, 3, 6906, 3, 7170, 3, 7178, 3, 7180, 3, 7216, 3, 7234, 3, 7234, 3, 7284, 3, 7313, 3, 7426, 3, 7432, 3, 7434, 3, 7435, 3, 7437, 3, 7474, 3, 7496, 3, 7496, 3, 8194, 3, 9115, 3, 9218, 3, 9328, 3, 9346, 3, 9541, 3, 12290, 3, 13360, 3, 17410, 3, 17992, 3, 26626, 3, 27194, 3, 27202, 3, 27232, 3, 27346, 3, 27375, 3, 27394, 3, 27441, 3, 27458, 3, 27461, 3, 27493, 3, 27513, 3, 27519, 3, 27537, 3, 28418, 3, 28486, 3, 28498, 3, 28498, 3, 28565, 3, 28577, 3, 28642, 3, 28643, 3, 28674, 3, 34798, 3, 34818, 3, 35572, 3, 45058, 3, 45344, 3, 45426, 3, 45821, 3, 48130, 3, 48236, 3, 48242, 3, 48254, 3, 48258, 3, 48266, 3, 48274, 3, 48283, 3, 54274, 3, 54358, 3, 54360, 3, 54430, 3, 54432, 3, 54433, 3, 54436, 3, 54436, 3, 54439, 3, 54440, 3, 54443, 3, 54446, 3, 54448, 3, 54459, 3, 54461, 3, 54461, 3, 54463, 3, 54469, 3, 54471, 3, 54535, 3, 54537, 3, 54540, 3, 54543, 3, 54550, 3, 54552, 3, 54558, 3, 54560, 3, 54587, 3, 54589, 3, 54592, 3, 54594, 3, 54598, 3, 54600, 3, 54600, 3, 54604, 3, 54610, 3, 54612, 3, 54951, 3, 54954, 3, 54978, 3, 54980, 3, 55004, 3, 55006, 3, 55036, 3, 55038, 3, 55062, 3, 55064, 3, 55094, 3, 55096, 3, 55120, 3, 55122, 3, 55152, 3, 55154, 3, 55178, 3, 55180, 3, 55210, 3, 55212, 3, 55236, 3, 55238, 3, 55245, 3, 59394, 3, 59590, 3, 59650, 3, 59717, 3, 60930, 3, 60933, 3, 60935, 3, 60961, 3, 60963, 3, 60964, 3, 60966, 3, 60966, 3, 60969, 3, 60969, 3, 60971, 3, 60980, 3, 60982, 3, 60985, 3, 60987, 3, 60987, 3, 60989, 3, 60989, 3, 60996, 3, 60996, 3, 61001, 3, 61001, 3, 61003, 3, 61003, 3, 61005, 3, 61005, 3, 61007, 3, 61009, 3, 61011, 3, 61012, 3, 61014, 3, 61014, 3, 61017, 3, 61017, 3, 61019, 3, 61019, 3, 61021, 3, 61021, 3, 61023, 3, 61023, 3, 61025, 3, 61025, 3, 61027, 3, 61028, 3, 61030, 3, 61030, 3, 61033, 3, 61036, 3, 61038, 3, 61044, 3, 61046, 3, 61049, 3, 61051, 3, 61054, 3, 61056, 3, 61056, 3, 61058, 3, 61067, 3, 61069, 3, 61085, 3, 61091, 3, 61093, 3, 61095, 3, 61099, 3, 61101, 3, 61117, 3, 2, 4, 42712, 4, 42754, 4, 46902, 4, 46914, 4, 47135, 4, 47138, 4, 52899, 4, 52914, 4, 60386, 4, 63490, 4, 64031, 4, 959, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 3, 263, 3, 2, 2, 2, 5, 272, 3, 2, 2, 2, 7, 280, 3, 2, 2, 2, 9, 288, 3, 2, 2, 2, 11, 295, 3, 2, 2, 2, 13, 312, 3, 2, 2, 2, 15, 318, 3, 2, 2, 2, 17, 323, 3, 2, 2, 2, 19, 327, 3, 2, 2, 2, 21, 332, 3, 2, 2, 2, 23, 336, 3, 2, 2, 2, 25, 341, 3, 2, 2, 2, 27, 347, 3, 2, 2, 2, 29, 353, 3, 2, 2, 2, 31, 359, 3, 2, 2, 2, 33, 364, 3, 2, 2, 2, 35, 372, 3, 2, 2, 2, 37, 379, 3, 2, 2, 2, 39, 385, 3, 2, 2, 2, 41, 389, 3, 2, 2, 2, 43, 392, 3, 2, 2, 2, 45, 397, 3, 2, 2, 2, 47, 400, 3, 2, 2, 2, 49, 402, 3, 2, 2, 2, 51, 409, 3, 2, 2, 2, 53, 417, 3, 2, 2, 2, 55, 425, 3, 2, 2, 2, 57, 429, 3, 2, 2, 2, 59, 433, 3, 2, 2, 2, 61, 438, 3, 2, 2, 2, 63, 440, 3, 2, 2, 2, 65, 446, 3, 2, 2, 2, 67, 448, 3, 2, 2, 2, 69, 450, 3, 2, 2, 2, 71, 452, 3, 2, 2, 2, 73, 454, 3, 2, 2, 2, 75, 457, 3, 2, 2, 2, 77, 460, 3, 2, 2, 2, 79, 463, 3, 2, 2, 2, 81, 466, 3, 2, 2, 2, 83, 469, 3, 2, 2, 2, 85, 471, 3, 2, 2, 2, 87, 473, 3, 2, 2, 2, 89, 475, 3, 2, 2, 2, 91, 478, 3, 2, 2, 2, 93, 481, 3, 2, 2, 2, 95, 483, 3, 2, 2, 2, 97, 485, 3, 2, 2, 2, 99, 487, 3, 2, 2, 2, 101, 489, 3, 2, 2, 2, 103, 492, 3, 2, 2, 2, 105, 495, 3, 2, 2, 2, 107, 499, 3, 2, 2, 2, 109, 503, 3, 2, 2, 2, 111, 507, 3, 2, 2, 2, 113, 514, 3, 2, 2, 2, 115, 521, 3, 2, 2, 2, 117, 528, 3, 2, 2, 2, 119, 532, 3, 2, 2, 2, 121, 535, 3, 2, 2, 2, 123, 540, 3, 2, 2, 2, 125, 545, 3, 2, 2, 2, 127, 550, 3, 2, 2, 2, 129, 559, 3, 2, 2, 2, 131, 568, 3, 2, 2, 2, 133, 571, 3, 2, 2, 2, 135, 574, 3, 2, 2, 2, 137, 577, 3, 2, 2, 2, 139, 580, 3, 2, 2, 2, 141, 583, 3, 2, 2, 2, 143, 586, 3, 2, 2, 2, 145, 589, 3, 2, 2, 2, 147, 592, 3, 2, 2, 2, 149, 596, 3, 2, 2, 2, 151, 600, 3, 2, 2, 2, 153, 603, 3, 2, 2, 2, 155, 606, 3, 2, 2, 2, 157, 611, 3, 2, 2, 2, 159, 615, 3, 2, 2, 2, 161, 621, 3, 2, 2, 2, 163, 627, 3, 2, 2, 2, 165, 633, 3, 2, 2, 2, 167, 642, 3, 2, 2, 2, 169, 646, 3, 2, 2, 2, 171, 653, 3, 2, 2, 2, 173, 657, 3, 2, 2, 2, 175, 664, 3, 2, 2, 2, 177, 672, 3, 2, 2, 2, 179, 679, 3, 2, 2, 2, 181, 687, 3, 2, 2, 2, 183, 693, 3, 2, 2, 2, 185, 699, 3, 2, 2, 2, 187, 710, 3, 2, 2, 2, 189, 716, 3, 2, 2, 2, 191, 723, 3, 2, 2, 2, 193, 737, 3, 2, 2, 2, 195, 744, 3, 2, 2, 2, 197, 756, 3, 2, 2, 2, 199, 758, 3, 2, 2, 2, 201, 760, 3, 2, 2, 2, 203, 762, 3, 2, 2, 2, 205, 764, 3, 2, 2, 2, 207, 766, 3, 2, 2, 2, 209, 768, 3, 2, 2, 2, 211, 770, 3, 2, 2, 2, 213, 772, 3, 2, 2, 2, 215, 774, 3, 2, 2, 2, 217, 776, 3, 2, 2, 2, 219, 778, 3, 2, 2, 2, 221, 781, 3, 2, 2, 2, 223, 783, 3, 2, 2, 2, 225, 803, 3, 2, 2, 2, 227, 806, 3, 2, 2, 2, 229, 813, 3, 2, 2, 2, 231, 819, 3, 2, 2, 2, 233, 822, 3, 2, 2, 2, 235, 826, 3, 2, 2, 2, 237, 828, 3, 2, 2, 2, 239, 833, 3, 2, 2, 2, 241, 837, 3, 2, 2, 2, 243, 839, 3, 2, 2, 2, 245, 846, 3, 2, 2, 2, 247, 848, 3, 2, 2, 2, 249, 869, 3, 2, 2, 2, 251, 871, 3, 2, 2, 2, 253, 891, 3, 2, 2, 2, 255, 895, 3, 2, 2, 2, 257, 913, 3, 2, 2, 2, 259, 915, 3, 2, 2, 2, 261, 926, 3, 2, 2, 2, 263, 264, 7, 81, 2, 2, 264, 265, 7, 82, 2, 2, 265, 266, 7, 71, 2, 2, 266, 267, 7, 80, 2, 2, 267, 268, 7, 83, 2, 2, 268, 269, 7, 67, 2, 2, 269, 270, 7, 85, 2, 2, 270, 271, 7, 79, 2, 2, 271, 4, 3, 2, 2, 2, 272, 273, 7, 107, 2, 2, 273, 274, 7, 112, 2, 2, 274, 275, 7, 101, 2, 2, 275, 276, 7, 110, 2, 2, 276, 277, 7, 119, 2, 2, 277, 278, 7, 102, 2, 2, 278, 279, 7, 103, 2, 2, 279, 6, 3, 2, 2, 2, 280, 281, 7, 101, 2, 2, 281, 282, 7, 113, 2, 2, 282, 283, 7, 111, 2, 2, 283, 284, 7, 114, 2, 2, 284, 285, 7, 119, 2, 2, 285, 286, 7, 118, 2, 2, 286, 287, 7, 103, 2, 2, 287, 8, 3, 2, 2, 2, 288, 289, 7, 99, 2, 2, 289, 290, 7, 101, 2, 2, 290, 291, 7, 118, 2, 2, 291, 292, 7, 107, 2, 2, 292, 293, 7, 113, 2, 2, 293, 294, 7, 112, 2, 2, 294, 10, 3, 2, 2, 2, 295, 296, 7, 83, 2, 2, 296, 297, 7, 69, 2, 2, 297, 298, 7, 81, 2, 2, 298, 299, 7, 84, 2, 2, 299, 300, 7, 97, 2, 2, 300, 301, 7, 71, 2, 2, 301, 302, 7, 90, 2, 2, 302, 303, 7, 82, 2, 2, 303, 304, 7, 71, 2, 2, 304, 305, 7, 69, 2, 2, 305, 306, 7, 86, 2, 2, 306, 307, 7, 97, 2, 2, 307, 308, 7, 86, 2, 2, 308, 309, 7, 84, 2, 2, 309, 310, 7, 87, 2, 2, 310, 311, 7, 71, 2, 2, 311, 12, 3, 2, 2, 2, 312, 313, 7, 115, 2, 2, 313, 314, 7, 119, 2, 2, 314, 315, 7, 100, 2, 2, 315, 316, 7, 107, 2, 2, 316, 317, 7, 118, 2, 2, 317, 14, 3, 2, 2, 2, 318, 319, 7, 115, 2, 2, 319, 320, 7, 116, 2, 2, 320, 321, 7, 103, 2, 2, 321, 322, 7, 105, 2, 2, 322, 16, 3, 2, 2, 2, 323, 324, 7, 100, 2, 2, 324, 325, 7, 107, 2, 2, 325, 326, 7, 118, 2, 2, 326, 18, 3, 2, 2, 2, 327, 328, 7, 101, 2, 2, 328, 329, 7, 116, 2, 2, 329, 330, 7, 103, 2, 2, 330, 331, 7, 105, 2, 2, 331, 20, 3, 2, 2, 2, 332, 333, 7, 107, 2, 2, 333, 334, 7, 112, 2, 2, 334, 335, 7, 118, 2, 2, 335, 22, 3, 2, 2, 2, 336, 337, 7, 119, 2, 2, 337, 338, 7, 107, 2, 2, 338, 339, 7, 112, 2, 2, 339, 340, 7, 118, 2, 2, 340, 24, 3, 2, 2, 2, 341, 342, 7, 104, 2, 2, 342, 343, 7, 110, 2, 2, 343, 344, 7, 113, 2, 2, 344, 345, 7, 99, 2, 2, 345, 346, 7, 118, 2, 2, 346, 26, 3, 2, 2, 2, 347, 348, 7, 99, 2, 2, 348, 349, 7, 112, 2, 2, 349, 350, 7, 105, 2, 2, 350, 351, 7, 110, 2, 2, 351, 352, 7, 103, 2, 2, 352, 28, 3, 2, 2, 2, 353, 354, 7, 104, 2, 2, 354, 355, 7, 107, 2, 2, 355, 356, 7, 122, 2, 2, 356, 357, 7, 103, 2, 2, 357, 358, 7, 102, 2, 2, 358, 30, 3, 2, 2, 2, 359, 360, 7, 100, 2, 2, 360, 361, 7, 113, 2, 2, 361, 362, 7, 113, 2, 2, 362, 363, 7, 110, 2, 2, 363, 32, 3, 2, 2, 2, 364, 365, 7, 107, 2, 2, 365, 366, 7, 112, 2, 2, 366, 367, 7, 118, 2, 2, 367, 368, 7, 56, 2, 2, 368, 369, 7, 54, 2, 2, 369, 370, 7, 97, 2, 2, 370, 371, 7, 118, 2, 2, 371, 34, 3, 2, 2, 2, 372, 373, 7, 102, 2, 2, 373, 374, 7, 113, 2, 2, 374, 375, 7, 119, 2, 2, 375, 376, 7, 100, 2, 2, 376, 377, 7, 110, 2, 2, 377, 378, 7, 103, 2, 2, 378, 36, 3, 2, 2, 2, 379, 380, 7, 101, 2, 2, 380, 381, 7, 113, 2, 2, 381, 382, 7, 112, 2, 2, 382, 383, 7, 117, 2, 2, 383, 384, 7, 118, 2, 2, 384, 38, 3, 2, 2, 2, 385, 386, 7, 110, 2, 2, 386, 387, 7, 103, 2, 2, 387, 388, 7, 118, 2, 2, 388, 40, 3, 2, 2, 2, 389, 390, 7, 126, 2, 2, 390, 391, 7, 126, 2, 2, 391, 42, 3, 2, 2, 2, 392, 393, 7, 105, 2, 2, 393, 394, 7, 99, 2, 2, 394, 395, 7, 118, 2, 2, 395, 396, 7, 103, 2, 2, 396, 44, 3, 2, 2, 2, 397, 398, 7, 69, 2, 2, 398, 399, 7, 90, 2, 2, 399, 46, 3, 2, 2, 2, 400, 401, 7, 87, 2, 2, 401, 48, 3, 2, 2, 2, 402, 403, 7, 105, 2, 2, 403, 404, 7, 114, 2, 2, 404, 405, 7, 106, 2, 2, 405, 406, 7, 99, 2, 2, 406, 407, 7, 117, 2, 2, 407, 408, 7, 103, 2, 2, 408, 50, 3, 2, 2, 2, 409, 410, 7, 111, 2, 2, 410, 411, 7, 103, 2, 2, 411, 412, 7, 99, 2, 2, 412, 413, 7, 117, 2, 2, 413, 414, 7, 119, 2, 2, 414, 415, 7, 116, 2, 2, 415, 416, 7, 103, 2, 2, 416, 52, 3, 2, 2, 2, 417, 418, 7, 100, 2, 2, 418, 419, 7, 99, 2, 2, 419, 420, 7, 116, 2, 2, 420, 421, 7, 116, 2, 2, 421, 422, 7, 107, 2, 2, 422, 423, 7, 103, 2, 2, 423, 424, 7, 116, 2, 2, 424, 54, 3, 2, 2, 2, 425, 426, 7, 107, 2, 2, 426, 427, 7, 112, 2, 2, 427, 428, 7, 120, 2, 2, 428, 56, 3, 2, 2, 2, 429, 430, 7, 114, 2, 2, 430, 431, 7, 113, 2, 2, 431, 432, 7, 121, 2, 2, 432, 58, 3, 2, 2, 2, 433, 434, 7, 101, 2, 2, 434, 435, 7, 118, 2, 2, 435, 436, 7, 116, 2, 2, 436, 437, 7, 110, 2, 2, 437, 60, 3, 2, 2, 2, 438, 439, 7, 66, 2, 2, 439, 62, 3, 2, 2, 2, 440, 441, 7, 116, 2, 2, 441, 442, 7, 103, 2, 2, 442, 443, 7, 117, 2, 2, 443, 444, 7, 103, 2, 2, 444, 445, 7, 118, 2, 2, 445, 64, 3, 2, 2, 2, 446, 447, 7, 128, 2, 2, 447, 66, 3, 2, 2, 2, 448, 449, 7, 35, 2, 2, 449, 68, 3, 2, 2, 2, 450, 451, 7, 64, 2, 2, 451, 70, 3, 2, 2, 2, 452, 453, 7, 62, 2, 2, 453, 72, 3, 2, 2, 2, 454, 455, 7, 64, 2, 2, 455, 456, 7, 63, 2, 2, 456, 74, 3, 2, 2, 2, 457, 458, 7, 62, 2, 2, 458, 459, 7, 63, 2, 2, 459, 76, 3, 2, 2, 2, 460, 461, 7, 63, 2, 2, 461, 462, 7, 63, 2, 2, 462, 78, 3, 2, 2, 2, 463, 464, 7, 35, 2, 2, 464, 465, 7, 63, 2, 2, 465, 80, 3, 2, 2, 2, 466, 467, 7, 40, 2, 2, 467, 468, 7, 40, 2, 2, 468, 82, 3, 2, 2, 2, 469, 470, 7, 126, 2, 2, 470, 84, 3, 2, 2, 2, 471, 472, 7, 96, 2, 2, 472, 86, 3, 2, 2, 2, 473, 474, 7, 40, 2, 2, 474, 88, 3, 2, 2, 2, 475, 476, 7, 62, 2, 2, 476, 477, 7, 62, 2, 2, 477, 90, 3, 2, 2, 2, 478, 479, 7, 64, 2, 2, 479, 480, 7, 64, 2, 2, 480, 92, 3, 2, 2, 2, 481, 482, 7, 45, 2, 2, 482, 94, 3, 2, 2, 2, 483, 484, 7, 44, 2, 2, 484, 96, 3, 2, 2, 2, 485, 486, 7, 49, 2, 2, 486, 98, 3, 2, 2, 2, 487, 488, 7, 39, 2, 2, 488, 100, 3, 2, 2, 2, 489, 490, 7, 45, 2, 2, 490, 491, 7, 45, 2, 2, 491, 102, 3, 2, 2, 2, 492, 493, 7, 47, 2, 2, 493, 494, 7, 47, 2, 2, 494, 104, 3, 2, 2, 2, 495, 496, 7, 117, 2, 2, 496, 497, 7, 107, 2, 2, 497, 498, 7, 112, 2, 2, 498, 106, 3, 2, 2, 2, 499, 500, 7, 101, 2, 2, 500, 501, 7, 113, 2, 2, 501, 502, 7, 117, 2, 2, 502, 108, 3, 2, 2, 2, 503, 504, 7, 118, 2, 2, 504, 505, 7, 99, 2, 2, 505, 506, 7, 112, 2, 2, 506, 110, 3, 2, 2, 2, 507, 508, 7, 99, 2, 2, 508, 509, 7, 116, 2, 2, 509, 510, 7, 101, 2, 2, 510, 511, 7, 118, 2, 2, 511, 512, 7, 99, 2, 2, 512, 513, 7, 112, 2, 2, 513, 112, 3, 2, 2, 2, 514, 515, 7, 99, 2, 2, 515, 516, 7, 116, 2, 2, 516, 517, 7, 101, 2, 2, 517, 518, 7, 101, 2, 2, 518, 519, 7, 113, 2, 2, 519, 520, 7, 117, 2, 2, 520, 114, 3, 2, 2, 2, 521, 522, 7, 99, 2, 2, 522, 523, 7, 116, 2, 2, 523, 524, 7, 101, 2, 2, 524, 525, 7, 117, 2, 2, 525, 526, 7, 107, 2, 2, 526, 527, 7, 112, 2, 2, 527, 116, 3, 2, 2, 2, 528, 529, 7, 103, 2, 2, 529, 530, 7, 122, 2, 2, 530, 531, 7, 114, 2, 2, 531, 118, 3, 2, 2, 2, 532, 533, 7, 110, 2, 2, 533, 534, 7, 112, 2, 2, 534, 120, 3, 2, 2, 2, 535, 536, 7, 117, 2, 2, 536, 537, 7, 115, 2, 2, 537, 538, 7, 116, 2, 2, 538, 539, 7, 118, 2, 2, 539, 122, 3, 2, 2, 2, 540, 541, 7, 116, 2, 2, 541, 542, 7, 113, 2, 2, 542, 543, 7, 118, 2, 2, 543, 544, 7, 110, 2, 2, 544, 124, 3, 2, 2, 2, 545, 546, 7, 116, 2, 2, 546, 547, 7, 113, 2, 2, 547, 548, 7, 118, 2, 2, 548, 549, 7, 116, 2, 2, 549, 126, 3, 2, 2, 2, 550, 551, 7, 114, 2, 2, 551, 552, 7, 113, 2, 2, 552, 553, 7, 114, 2, 2, 553, 554, 7, 101, 2, 2, 554, 555, 7, 113, 2, 2, 555, 556, 7, 119, 2, 2, 556, 557, 7, 112, 2, 2, 557, 558, 7, 118, 2, 2, 558, 128, 3, 2, 2, 2, 559, 560, 7, 110, 2, 2, 560, 561, 7, 103, 2, 2, 561, 562, 7, 112, 2, 2, 562, 563, 7, 105, 2, 2, 563, 564, 7, 118, 2, 2, 564, 565, 7, 106, 2, 2, 565, 566, 7, 113, 2, 2, 566, 567, 7, 104, 2, 2, 567, 130, 3, 2, 2, 2, 568, 569, 7, 45, 2, 2, 569, 570, 7, 63, 2, 2, 570, 132, 3, 2, 2, 2, 571, 572, 7, 47, 2, 2, 572, 573, 7, 63, 2, 2, 573, 134, 3, 2, 2, 2, 574, 575, 7, 44, 2, 2, 575, 576, 7, 63, 2, 2, 576, 136, 3, 2, 2, 2, 577, 578, 7, 49, 2, 2, 578, 579, 7, 63, 2, 2, 579, 138, 3, 2, 2, 2, 580, 581, 7, 40, 2, 2, 581, 582, 7, 63, 2, 2, 582, 140, 3, 2, 2, 2, 583, 584, 7, 126, 2, 2, 584, 585, 7, 63, 2, 2, 585, 142, 3, 2, 2, 2, 586, 587, 7, 128, 2, 2, 587, 588, 7, 63, 2, 2, 588, 144, 3, 2, 2, 2, 589, 590, 7, 96, 2, 2, 590, 591, 7, 63, 2, 2, 591, 146, 3, 2, 2, 2, 592, 593, 7, 62, 2, 2, 593, 594, 7, 62, 2, 2, 594, 595, 7, 63, 2, 2, 595, 148, 3, 2, 2, 2, 596, 597, 7, 64, 2, 2, 597, 598, 7, 64, 2, 2, 598, 599, 7, 63, 2, 2, 599, 150, 3, 2, 2, 2, 600, 601, 7, 107, 2, 2, 601, 602, 7, 112, 2, 2, 602, 152, 3, 2, 2, 2, 603, 604, 7, 107, 2, 2, 604, 605, 7, 104, 2, 2, 605, 154, 3, 2, 2, 2, 606, 607, 7, 103, 2, 2, 607, 608, 7, 110, 2, 2, 608, 609, 7, 117, 2, 2, 609, 610, 7, 103, 2, 2, 610, 156, 3, 2, 2, 2, 611, 612, 7, 104, 2, 2, 612, 613, 7, 113, 2, 2, 613, 614, 7, 116, 2, 2, 614, 158, 3, 2, 2, 2, 615, 616, 7, 121, 2, 2, 616, 617, 7, 106, 2, 2, 617, 618, 7, 107, 2, 2, 618, 619, 7, 110, 2, 2, 619, 620, 7, 103, 2, 2, 620, 160, 3, 2, 2, 2, 621, 622, 7, 116, 2, 2, 622, 623, 7, 99, 2, 2, 623, 624, 7, 112, 2, 2, 624, 625, 7, 105, 2, 2, 625, 626, 7, 103, 2, 2, 626, 162, 3, 2, 2, 2, 627, 628, 7, 100, 2, 2, 628, 629, 7, 116, 2, 2, 629, 630, 7, 103, 2, 2, 630, 631, 7, 99, 2, 2, 631, 632, 7, 109, 2, 2, 632, 164, 3, 2, 2, 2, 633, 634, 7, 101, 2, 2, 634, 635, 7, 113, 2, 2, 635, 636, 7, 112, 2, 2, 636, 637, 7, 118, 2, 2, 637, 638, 7, 107, 2, 2, 638, 639, 7, 112, 2, 2, 639, 640, 7, 119, 2, 2, 640, 641, 7, 103, 2, 2, 641, 166, 3, 2, 2, 2, 642, 643, 7, 103, 2, 2, 643, 644, 7, 112, 2, 2, 644, 645, 7, 102, 2, 2, 645, 168, 3, 2, 2, 2, 646, 647, 7, 109, 2, 2, 647, 648, 7, 103, 2, 2, 648, 649, 7, 116, 2, 2, 649, 650, 7, 112, 2, 2, 650, 651, 7, 103, 2, 2, 651, 652, 7, 110, 2, 2, 652, 170, 3, 2, 2, 2, 653, 654, 7, 102, 2, 2, 654, 655, 7, 103, 2, 2, 655, 656, 7, 104, 2, 2, 656, 172, 3, 2, 2, 2, 657, 658, 7, 116, 2, 2, 658, 659, 7, 103, 2, 2, 659, 660, 7, 118, 2, 2, 660, 661, 7, 119, 2, 2, 661, 662, 7, 116, 2, 2, 662, 663, 7, 112, 2, 2, 663, 174, 3, 2, 2, 2, 664, 665, 7, 37, 2, 2, 665, 666, 7, 114, 2, 2, 666, 667, 7, 116, 2, 2, 667, 668, 7, 99, 2, 2, 668, 669, 7, 105, 2, 2, 669, 670, 7, 111, 2, 2, 670, 671, 7, 99, 2, 2, 671, 176, 3, 2, 2, 2, 672, 673, 7, 110, 2, 2, 673, 674, 7, 103, 2, 2, 674, 675, 7, 112, 2, 2, 675, 676, 7, 105, 2, 2, 676, 677, 7, 118, 2, 2, 677, 678, 7, 106, 2, 2, 678, 178, 3, 2, 2, 2, 679, 680, 7, 117, 2, 2, 680, 681, 7, 118, 2, 2, 681, 682, 7, 116, 2, 2, 682, 683, 7, 103, 2, 2, 683, 684, 7, 118, 2, 2, 684, 685, 7, 101, 2, 2, 685, 686, 7, 106, 2, 2, 686, 180, 3, 2, 2, 2, 687, 688, 7, 100, 2, 2, 688, 689, 7, 113, 2, 2, 689, 690, 7, 122, 2, 2, 690, 691, 7, 99, 2, 2, 691, 692, 7, 117, 2, 2, 692, 182, 3, 2, 2, 2, 693, 694, 7, 100, 2, 2, 694, 695, 7, 113, 2, 2, 695, 696, 7, 122, 2, 2, 696, 697, 7, 118, 2, 2, 697, 698, 7, 113, 2, 2, 698, 184, 3, 2, 2, 2, 699, 700, 7, 117, 2, 2, 700, 701, 7, 118, 2, 2, 701, 702, 7, 116, 2, 2, 702, 703, 7, 103, 2, 2, 703, 704, 7, 118, 2, 2, 704, 705, 7, 101, 2, 2, 705, 706, 7, 106, 2, 2, 706, 707, 7, 107, 2, 2, 707, 708, 7, 112, 2, 2, 708, 709, 7, 104, 2, 2, 709, 186, 3, 2, 2, 2, 710, 711, 7, 102, 2, 2, 711, 712, 7, 103, 2, 2, 712, 713, 7, 110, 2, 2, 713, 714, 7, 99, 2, 2, 714, 715, 7, 123, 2, 2, 715, 188, 3, 2, 2, 2, 716, 717, 7, 116, 2, 2, 717, 718, 7, 113, 2, 2, 718, 719, 7, 118, 2, 2, 719, 720, 7, 99, 2, 2, 720, 721, 7, 116, 2, 2, 721, 722, 7, 123, 2, 2, 722, 190, 3, 2, 2, 2, 723, 724, 7, 102, 2, 2, 724, 725, 7, 103, 2, 2, 725, 726, 7, 104, 2, 2, 726, 727, 7, 101, 2, 2, 727, 728, 7, 99, 2, 2, 728, 729, 7, 110, 2, 2, 729, 730, 7, 105, 2, 2, 730, 731, 7, 116, 2, 2, 731, 732, 7, 99, 2, 2, 732, 733, 7, 111, 2, 2, 733, 734, 7, 111, 2, 2, 734, 735, 7, 99, 2, 2, 735, 736, 7, 116, 2, 2, 736, 192, 3, 2, 2, 2, 737, 738, 7, 102, 2, 2, 738, 739, 7, 103, 2, 2, 739, 740, 7, 104, 2, 2, 740, 741, 7, 101, 2, 2, 741, 742, 7, 99, 2, 2, 742, 743, 7, 110, 2, 2, 743, 194, 3, 2, 2, 2, 744, 745, 7, 36, 2, 2, 745, 746, 7, 113, 2, 2, 746, 747, 7, 114, 2, 2, 747, 748, 7, 103, 2, 2, 748, 749, 7, 112, 2, 2, 749, 750, 7, 114, 2, 2, 750, 751, 7, 119, 2, 2, 751, 752, 7, 110, 2, 2, 752, 753, 7, 117, 2, 2, 753, 754, 7, 103, 2, 2, 754, 755, 7, 36, 2, 2, 755, 196, 3, 2, 2, 2, 756, 757, 7, 93, 2, 2, 757, 198, 3, 2, 2, 2, 758, 759, 7, 95, 2, 2, 759, 200, 3, 2, 2, 2, 760, 761, 7, 125, 2, 2, 761, 202, 3, 2, 2, 2, 762, 763, 7, 127, 2, 2, 763, 204, 3, 2, 2, 2, 764, 765, 7, 42, 2, 2, 765, 206, 3, 2, 2, 2, 766, 767, 7, 43, 2, 2, 767, 208, 3, 2, 2, 2, 768, 769, 7, 60, 2, 2, 769, 210, 3, 2, 2, 2, 770, 771, 7, 61, 2, 2, 771, 212, 3, 2, 2, 2, 772, 773, 7, 48, 2, 2, 773, 214, 3, 2, 2, 2, 774, 775, 7, 46, 2, 2, 775, 216, 3, 2, 2, 2, 776, 777, 7, 63, 2, 2, 777, 218, 3, 2, 2, 2, 778, 779, 7, 47, 2, 2, 779, 780, 7, 64, 2, 2, 780, 220, 3, 2, 2, 2, 781, 782, 7, 47, 2, 2, 782, 222, 3, 2, 2, 2, 783, 784, 7, 103, 2, 2, 784, 785, 7, 122, 2, 2, 785, 786, 7, 118, 2, 2, 786, 787, 7, 103, 2, 2, 787, 788, 7, 116, 2, 2, 788, 789, 7, 112, 2, 2, 789, 224, 3, 2, 2, 2, 790, 791, 7, 114, 2, 2, 791, 804, 7, 107, 2, 2, 792, 804, 7, 962, 2, 2, 793, 794, 7, 118, 2, 2, 794, 795, 7, 99, 2, 2, 795, 804, 7, 119, 2, 2, 796, 804, 9, 11, 2, 2, 797, 798, 7, 103, 2, 2, 798, 799, 7, 119, 2, 2, 799, 800, 7, 110, 2, 2, 800, 801, 7, 103, 2, 2, 801, 804, 7, 116, 2, 2, 802, 804, 7, 8457, 2, 2, 803, 790, 3, 2, 2, 2, 803, 792, 3, 2, 2, 2, 803, 793, 3, 2, 2, 2, 803, 796, 3, 2, 2, 2, 803, 797, 3, 2, 2, 2, 803, 802, 3, 2, 2, 2, 804, 226, 3, 2, 2, 2, 805, 807, 9, 2, 2, 2, 806, 805, 3, 2, 2, 2, 807, 808, 3, 2, 2, 2, 808, 806, 3, 2, 2, 2, 808, 809, 3, 2, 2, 2, 809, 810, 3, 2, 2, 2, 810, 811, 8, 114, 2, 2, 811, 228, 3, 2, 2, 2, 812, 814, 9, 3, 2, 2, 813, 812, 3, 2, 2, 2, 814, 815, 3, 2, 2, 2, 815, 813, 3, 2, 2, 2, 815, 816, 3, 2, 2, 2, 816, 817, 3, 2, 2, 2, 817, 818, 8, 115, 2, 2, 818, 230, 3, 2, 2, 2, 819, 820, 9, 4, 2, 2, 820, 232, 3, 2, 2, 2, 821, 823, 5, 231, 116, 2, 822, 821, 3, 2, 2, 2, 823, 824, 3, 2, 2, 2, 824, 822, 3, 2, 2, 2, 824, 825, 3, 2, 2, 2, 825, 234, 3, 2, 2, 2, 826, 827, 9, 12, 2, 2, 827, 236, 3, 2, 2, 2, 828, 829, 9, 5, 2, 2, 829, 238, 3, 2, 2, 2, 830, 834, 9, 6, 2, 2, 831, 834, 5, 235, 118, 2, 832, 834, 5, 237, 119, 2, 833, 830, 3, 2, 2, 2, 833, 831, 3, 2, 2, 2, 833, 832, 3, 2, 2, 2, 834, 240, 3, 2, 2, 2, 835, 838, 5, 239, 120, 2, 836, 838, 5, 233, 117, 2, 837, 835, 3, 2, 2, 2, 837, 836, 3, 2, 2, 2, 838, 242, 3, 2, 2, 2, 839, 843, 5, 239, 120, 2, 840, 842, 5, 241, 121, 2, 841, 840, 3, 2, 2, 2, 842, 845, 3, 2, 2, 2, 843, 841, 3, 2, 2, 2, 843, 844, 3, 2, 2, 2, 844, 244, 3, 2, 2, 2, 845, 843, 3, 2, 2, 2, 846, 847, 9, 7, 2, 2, 847, 246, 3, 2, 2, 2, 848, 849, 9, 8, 2, 2, 849, 248, 3, 2, 2, 2, 850, 852, 5, 231, 116, 2, 851, 850, 3, 2, 2, 2, 852, 853, 3, 2, 2, 2, 853, 851, 3, 2, 2, 2, 853, 854, 3, 2, 2, 2, 854, 855, 3, 2, 2, 2, 855, 859, 5, 213, 107, 2, 856, 858, 5, 231, 116, 2, 857, 856, 3, 2, 2, 2, 858, 861, 3, 2, 2, 2, 859, 857, 3, 2, 2, 2, 859, 860, 3, 2, 2, 2, 860, 870, 3, 2, 2, 2, 861, 859, 3, 2, 2, 2, 862, 866, 5, 213, 107, 2, 863, 865, 5, 231, 116, 2, 864, 863, 3, 2, 2, 2, 865, 868, 3, 2, 2, 2, 866, 864, 3, 2, 2, 2, 866, 867, 3, 2, 2, 2, 867, 870, 3, 2, 2, 2, 868, 866, 3, 2, 2, 2, 869, 851, 3, 2, 2, 2, 869, 862, 3, 2, 2, 2, 870, 250, 3, 2, 2, 2, 871, 878, 5, 249, 125, 2, 872, 874, 5, 245, 123, 2, 873, 875, 5, 247, 124, 2, 874, 873, 3, 2, 2, 2, 874, 875, 3, 2, 2, 2, 875, 876, 3, 2, 2, 2, 876, 877, 5, 233, 117, 2, 877, 879, 3, 2, 2, 2, 878, 872, 3, 2, 2, 2, 878, 879, 3, 2, 2, 2, 879, 252, 3, 2, 2, 2, 880, 881, 7, 102, 2, 2, 881, 892, 7, 118, 2, 2, 882, 883, 7, 112, 2, 2, 883, 892, 7, 117, 2, 2, 884, 885, 7, 119, 2, 2, 885, 892, 7, 117, 2, 2, 886, 887, 7, 183, 2, 2, 887, 892, 7, 117, 2, 2, 888, 889, 7, 111, 2, 2, 889, 892, 7, 117, 2, 2, 890, 892, 7, 117, 2, 2, 891, 880, 3, 2, 2, 2, 891, 882, 3, 2, 2, 2, 891, 884, 3, 2, 2, 2, 891, 886, 3, 2, 2, 2, 891, 888, 3, 2, 2, 2, 891, 890, 3, 2, 2, 2, 892, 254, 3, 2, 2, 2, 893, 896, 5, 233, 117, 2, 894, 896, 5, 251, 126, 2, 895, 893, 3, 2, 2, 2, 895, 894, 3, 2, 2, 2, 896, 897, 3, 2, 2, 2, 897, 898, 5, 253, 127, 2, 898, 256, 3, 2, 2, 2, 899, 901, 7, 36, 2, 2, 900, 902, 10, 9, 2, 2, 901, 900, 3, 2, 2, 2, 902, 903, 3, 2, 2, 2, 903, 904, 3, 2, 2, 2, 903, 901, 3, 2, 2, 2, 904, 905, 3, 2, 2, 2, 905, 914, 7, 36, 2, 2, 906, 908, 7, 41, 2, 2, 907, 909, 10, 10, 2, 2, 908, 907, 3, 2, 2, 2, 909, 910, 3, 2, 2, 2, 910, 911, 3, 2, 2, 2, 910, 908, 3, 2, 2, 2, 911, 912, 3, 2, 2, 2, 912, 914, 7, 41, 2, 2, 913, 899, 3, 2, 2, 2, 913, 906, 3, 2, 2, 2, 914, 258, 3, 2, 2, 2, 915, 916, 7, 49, 2, 2, 916, 917, 7, 49, 2, 2, 917, 921, 3, 2, 2, 2, 918, 920, 10, 3, 2, 2, 919, 918, 3, 2, 2, 2, 920, 923, 3, 2, 2, 2, 921, 919, 3, 2, 2, 2, 921, 922, 3, 2, 2, 2, 922, 924, 3, 2, 2, 2, 923, 921, 3, 2, 2, 2, 924, 925, 8, 130, 2, 2, 925, 260, 3, 2, 2, 2, 926, 927, 7, 49, 2, 2, 927, 928, 7, 44, 2, 2, 928, 932, 3, 2, 2, 2, 929, 931, 11, 2, 2, 2, 930, 929, 3, 2, 2, 2, 931, 934, 3, 2, 2, 2, 932, 933, 3, 2, 2, 2, 932, 930, 3, 2, 2, 2, 933, 935, 3, 2, 2, 2, 934, 932, 3, 2, 2, 2, 935, 936, 7, 44, 2, 2, 936, 937, 7, 49, 2, 2, 937, 938, 3, 2, 2, 2, 938, 939, 8, 131, 2, 2, 939, 262, 3, 2, 2, 2, 23, 2, 803, 808, 815, 824, 833, 837, 843, 853, 859, 866, 869, 874, 878, 891, 895, 903, 910, 913, 921, 932, 3, 8, 2, 2] \ No newline at end of file +token literal names: +null +'OPENQASM' +'include' +'compute' +'action' +'QCOR_EXPECT_TRUE' +'qubit' +'qreg' +'bit' +'creg' +'int' +'uint' +'float' +'angle' +'fixed' +'bool' +'int64_t' +'double' +'const' +'let' +'||' +'gate' +'CX' +'U' +'gphase' +'measure' +'barrier' +'inv' +'pow' +'ctrl' +'@' +'reset' +'~' +'!' +'>' +'<' +'>=' +'<=' +'==' +'!=' +'&&' +'|' +'^' +'&' +'<<' +'>>' +'+' +'*' +'/' +'%' +'++' +'--' +'sin' +'cos' +'tan' +'arctan' +'arccos' +'arcsin' +'exp' +'ln' +'sqrt' +'rotl' +'rotr' +'popcount' +'lengthof' +'+=' +'-=' +'*=' +'/=' +'&=' +'|=' +'~=' +'^=' +'<<=' +'>>=' +'in' +'if' +'else' +'for' +'while' +'range' +'break' +'continue' +'end' +'kernel' +'def' +'return' +'#pragma' +'length' +'stretch' +'boxas' +'boxto' +'stretchinf' +'delay' +'rotary' +'defcalgrammar' +'defcal' +'"openpulse"' +'[' +']' +'{' +'}' +'(' +')' +':' +';' +'.' +',' +'=' +'->' +'-' +'extern' +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +LBRACKET +RBRACKET +LBRACE +RBRACE +LPAREN +RPAREN +COLON +SEMICOLON +DOT +COMMA +EQUALS +ARROW +MINUS +EXTERN +Constant +Whitespace +Newline +Integer +Identifier +RealNumber +TimingLiteral +StringLiteral +LineComment +BlockComment + +rule names: +T__0 +T__1 +T__2 +T__3 +T__4 +T__5 +T__6 +T__7 +T__8 +T__9 +T__10 +T__11 +T__12 +T__13 +T__14 +T__15 +T__16 +T__17 +T__18 +T__19 +T__20 +T__21 +T__22 +T__23 +T__24 +T__25 +T__26 +T__27 +T__28 +T__29 +T__30 +T__31 +T__32 +T__33 +T__34 +T__35 +T__36 +T__37 +T__38 +T__39 +T__40 +T__41 +T__42 +T__43 +T__44 +T__45 +T__46 +T__47 +T__48 +T__49 +T__50 +T__51 +T__52 +T__53 +T__54 +T__55 +T__56 +T__57 +T__58 +T__59 +T__60 +T__61 +T__62 +T__63 +T__64 +T__65 +T__66 +T__67 +T__68 +T__69 +T__70 +T__71 +T__72 +T__73 +T__74 +T__75 +T__76 +T__77 +T__78 +T__79 +T__80 +T__81 +T__82 +T__83 +T__84 +T__85 +T__86 +T__87 +T__88 +T__89 +T__90 +T__91 +T__92 +T__93 +T__94 +T__95 +T__96 +LBRACKET +RBRACKET +LBRACE +RBRACE +LPAREN +RPAREN +COLON +SEMICOLON +DOT +COMMA +EQUALS +ARROW +MINUS +EXTERN +Constant +Whitespace +Newline +Digit +Integer +ValidUnicode +Letter +FirstIdCharacter +GeneralIdCharacter +Identifier +SciNotation +PlusMinus +Float +RealNumber +TimeUnit +TimingLiteral +StringLiteral +LineComment +BlockComment + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 123, 947, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 100, 3, 100, 3, 101, 3, 101, 3, 102, 3, 102, 3, 103, 3, 103, 3, 104, 3, 104, 3, 105, 3, 105, 3, 106, 3, 106, 3, 107, 3, 107, 3, 108, 3, 108, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 810, 10, 113, 3, 114, 6, 114, 813, 10, 114, 13, 114, 14, 114, 814, 3, 114, 3, 114, 3, 115, 6, 115, 820, 10, 115, 13, 115, 14, 115, 821, 3, 115, 3, 115, 3, 116, 3, 116, 3, 117, 6, 117, 829, 10, 117, 13, 117, 14, 117, 830, 3, 118, 3, 118, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 5, 120, 840, 10, 120, 3, 121, 3, 121, 5, 121, 844, 10, 121, 3, 122, 3, 122, 7, 122, 848, 10, 122, 12, 122, 14, 122, 851, 11, 122, 3, 123, 3, 123, 3, 124, 3, 124, 3, 125, 6, 125, 858, 10, 125, 13, 125, 14, 125, 859, 3, 125, 3, 125, 7, 125, 864, 10, 125, 12, 125, 14, 125, 867, 11, 125, 3, 125, 3, 125, 7, 125, 871, 10, 125, 12, 125, 14, 125, 874, 11, 125, 5, 125, 876, 10, 125, 3, 126, 3, 126, 3, 126, 5, 126, 881, 10, 126, 3, 126, 3, 126, 5, 126, 885, 10, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 5, 127, 899, 10, 127, 3, 128, 3, 128, 5, 128, 903, 10, 128, 3, 128, 3, 128, 3, 129, 3, 129, 6, 129, 909, 10, 129, 13, 129, 14, 129, 910, 3, 129, 3, 129, 3, 129, 6, 129, 916, 10, 129, 13, 129, 14, 129, 917, 3, 129, 5, 129, 921, 10, 129, 3, 130, 3, 130, 3, 130, 3, 130, 7, 130, 927, 10, 130, 12, 130, 14, 130, 930, 11, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 7, 131, 938, 10, 131, 12, 131, 14, 131, 941, 11, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 5, 910, 917, 939, 2, 132, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, 229, 116, 231, 2, 233, 117, 235, 2, 237, 2, 239, 2, 241, 2, 243, 118, 245, 2, 247, 2, 249, 2, 251, 119, 253, 2, 255, 120, 257, 121, 259, 122, 261, 123, 3, 2, 11, 4, 2, 11, 11, 34, 34, 4, 2, 12, 12, 15, 15, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 4, 2, 38, 38, 97, 97, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 5, 2, 11, 12, 15, 15, 36, 36, 5, 2, 11, 12, 15, 15, 41, 41, 3, 590, 2, 67, 2, 92, 2, 99, 2, 124, 2, 172, 2, 172, 2, 183, 2, 183, 2, 188, 2, 188, 2, 194, 2, 216, 2, 218, 2, 248, 2, 250, 2, 707, 2, 712, 2, 723, 2, 738, 2, 742, 2, 750, 2, 750, 2, 752, 2, 752, 2, 882, 2, 886, 2, 888, 2, 889, 2, 892, 2, 895, 2, 897, 2, 897, 2, 904, 2, 904, 2, 906, 2, 908, 2, 910, 2, 910, 2, 912, 2, 931, 2, 933, 2, 1015, 2, 1017, 2, 1155, 2, 1164, 2, 1329, 2, 1331, 2, 1368, 2, 1371, 2, 1371, 2, 1379, 2, 1417, 2, 1490, 2, 1516, 2, 1522, 2, 1524, 2, 1570, 2, 1612, 2, 1648, 2, 1649, 2, 1651, 2, 1749, 2, 1751, 2, 1751, 2, 1767, 2, 1768, 2, 1776, 2, 1777, 2, 1788, 2, 1790, 2, 1793, 2, 1793, 2, 1810, 2, 1810, 2, 1812, 2, 1841, 2, 1871, 2, 1959, 2, 1971, 2, 1971, 2, 1996, 2, 2028, 2, 2038, 2, 2039, 2, 2044, 2, 2044, 2, 2050, 2, 2071, 2, 2076, 2, 2076, 2, 2086, 2, 2086, 2, 2090, 2, 2090, 2, 2114, 2, 2138, 2, 2146, 2, 2156, 2, 2210, 2, 2230, 2, 2232, 2, 2239, 2, 2310, 2, 2363, 2, 2367, 2, 2367, 2, 2386, 2, 2386, 2, 2394, 2, 2403, 2, 2419, 2, 2434, 2, 2439, 2, 2446, 2, 2449, 2, 2450, 2, 2453, 2, 2474, 2, 2476, 2, 2482, 2, 2484, 2, 2484, 2, 2488, 2, 2491, 2, 2495, 2, 2495, 2, 2512, 2, 2512, 2, 2526, 2, 2527, 2, 2529, 2, 2531, 2, 2546, 2, 2547, 2, 2558, 2, 2558, 2, 2567, 2, 2572, 2, 2577, 2, 2578, 2, 2581, 2, 2602, 2, 2604, 2, 2610, 2, 2612, 2, 2613, 2, 2615, 2, 2616, 2, 2618, 2, 2619, 2, 2651, 2, 2654, 2, 2656, 2, 2656, 2, 2676, 2, 2678, 2, 2695, 2, 2703, 2, 2705, 2, 2707, 2, 2709, 2, 2730, 2, 2732, 2, 2738, 2, 2740, 2, 2741, 2, 2743, 2, 2747, 2, 2751, 2, 2751, 2, 2770, 2, 2770, 2, 2786, 2, 2787, 2, 2811, 2, 2811, 2, 2823, 2, 2830, 2, 2833, 2, 2834, 2, 2837, 2, 2858, 2, 2860, 2, 2866, 2, 2868, 2, 2869, 2, 2871, 2, 2875, 2, 2879, 2, 2879, 2, 2910, 2, 2911, 2, 2913, 2, 2915, 2, 2931, 2, 2931, 2, 2949, 2, 2949, 2, 2951, 2, 2956, 2, 2960, 2, 2962, 2, 2964, 2, 2967, 2, 2971, 2, 2972, 2, 2974, 2, 2974, 2, 2976, 2, 2977, 2, 2981, 2, 2982, 2, 2986, 2, 2988, 2, 2992, 2, 3003, 2, 3026, 2, 3026, 2, 3079, 2, 3086, 2, 3088, 2, 3090, 2, 3092, 2, 3114, 2, 3116, 2, 3131, 2, 3135, 2, 3135, 2, 3162, 2, 3164, 2, 3170, 2, 3171, 2, 3202, 2, 3202, 2, 3207, 2, 3214, 2, 3216, 2, 3218, 2, 3220, 2, 3242, 2, 3244, 2, 3253, 2, 3255, 2, 3259, 2, 3263, 2, 3263, 2, 3296, 2, 3296, 2, 3298, 2, 3299, 2, 3315, 2, 3316, 2, 3335, 2, 3342, 2, 3344, 2, 3346, 2, 3348, 2, 3388, 2, 3391, 2, 3391, 2, 3408, 2, 3408, 2, 3414, 2, 3416, 2, 3425, 2, 3427, 2, 3452, 2, 3457, 2, 3463, 2, 3480, 2, 3484, 2, 3507, 2, 3509, 2, 3517, 2, 3519, 2, 3519, 2, 3522, 2, 3528, 2, 3587, 2, 3634, 2, 3636, 2, 3637, 2, 3650, 2, 3656, 2, 3715, 2, 3716, 2, 3718, 2, 3718, 2, 3721, 2, 3722, 2, 3724, 2, 3724, 2, 3727, 2, 3727, 2, 3734, 2, 3737, 2, 3739, 2, 3745, 2, 3747, 2, 3749, 2, 3751, 2, 3751, 2, 3753, 2, 3753, 2, 3756, 2, 3757, 2, 3759, 2, 3762, 2, 3764, 2, 3765, 2, 3775, 2, 3775, 2, 3778, 2, 3782, 2, 3784, 2, 3784, 2, 3806, 2, 3809, 2, 3842, 2, 3842, 2, 3906, 2, 3913, 2, 3915, 2, 3950, 2, 3978, 2, 3982, 2, 4098, 2, 4140, 2, 4161, 2, 4161, 2, 4178, 2, 4183, 2, 4188, 2, 4191, 2, 4195, 2, 4195, 2, 4199, 2, 4200, 2, 4208, 2, 4210, 2, 4215, 2, 4227, 2, 4240, 2, 4240, 2, 4258, 2, 4295, 2, 4297, 2, 4297, 2, 4303, 2, 4303, 2, 4306, 2, 4348, 2, 4350, 2, 4682, 2, 4684, 2, 4687, 2, 4690, 2, 4696, 2, 4698, 2, 4698, 2, 4700, 2, 4703, 2, 4706, 2, 4746, 2, 4748, 2, 4751, 2, 4754, 2, 4786, 2, 4788, 2, 4791, 2, 4794, 2, 4800, 2, 4802, 2, 4802, 2, 4804, 2, 4807, 2, 4810, 2, 4824, 2, 4826, 2, 4882, 2, 4884, 2, 4887, 2, 4890, 2, 4956, 2, 4994, 2, 5009, 2, 5026, 2, 5111, 2, 5114, 2, 5119, 2, 5123, 2, 5742, 2, 5745, 2, 5761, 2, 5763, 2, 5788, 2, 5794, 2, 5868, 2, 5872, 2, 5882, 2, 5890, 2, 5902, 2, 5904, 2, 5907, 2, 5922, 2, 5939, 2, 5954, 2, 5971, 2, 5986, 2, 5998, 2, 6000, 2, 6002, 2, 6018, 2, 6069, 2, 6105, 2, 6105, 2, 6110, 2, 6110, 2, 6178, 2, 6265, 2, 6274, 2, 6278, 2, 6281, 2, 6314, 2, 6316, 2, 6316, 2, 6322, 2, 6391, 2, 6402, 2, 6432, 2, 6482, 2, 6511, 2, 6514, 2, 6518, 2, 6530, 2, 6573, 2, 6578, 2, 6603, 2, 6658, 2, 6680, 2, 6690, 2, 6742, 2, 6825, 2, 6825, 2, 6919, 2, 6965, 2, 6983, 2, 6989, 2, 7045, 2, 7074, 2, 7088, 2, 7089, 2, 7100, 2, 7143, 2, 7170, 2, 7205, 2, 7247, 2, 7249, 2, 7260, 2, 7295, 2, 7298, 2, 7306, 2, 7403, 2, 7406, 2, 7408, 2, 7411, 2, 7415, 2, 7416, 2, 7426, 2, 7617, 2, 7682, 2, 7959, 2, 7962, 2, 7967, 2, 7970, 2, 8007, 2, 8010, 2, 8015, 2, 8018, 2, 8025, 2, 8027, 2, 8027, 2, 8029, 2, 8029, 2, 8031, 2, 8031, 2, 8033, 2, 8063, 2, 8066, 2, 8118, 2, 8120, 2, 8126, 2, 8128, 2, 8128, 2, 8132, 2, 8134, 2, 8136, 2, 8142, 2, 8146, 2, 8149, 2, 8152, 2, 8157, 2, 8162, 2, 8174, 2, 8180, 2, 8182, 2, 8184, 2, 8190, 2, 8307, 2, 8307, 2, 8321, 2, 8321, 2, 8338, 2, 8350, 2, 8452, 2, 8452, 2, 8457, 2, 8457, 2, 8460, 2, 8469, 2, 8471, 2, 8471, 2, 8475, 2, 8479, 2, 8486, 2, 8486, 2, 8488, 2, 8488, 2, 8490, 2, 8490, 2, 8492, 2, 8495, 2, 8497, 2, 8507, 2, 8510, 2, 8513, 2, 8519, 2, 8523, 2, 8528, 2, 8528, 2, 8546, 2, 8586, 2, 11266, 2, 11312, 2, 11314, 2, 11360, 2, 11362, 2, 11494, 2, 11501, 2, 11504, 2, 11508, 2, 11509, 2, 11522, 2, 11559, 2, 11561, 2, 11561, 2, 11567, 2, 11567, 2, 11570, 2, 11625, 2, 11633, 2, 11633, 2, 11650, 2, 11672, 2, 11682, 2, 11688, 2, 11690, 2, 11696, 2, 11698, 2, 11704, 2, 11706, 2, 11712, 2, 11714, 2, 11720, 2, 11722, 2, 11728, 2, 11730, 2, 11736, 2, 11738, 2, 11744, 2, 11825, 2, 11825, 2, 12295, 2, 12297, 2, 12323, 2, 12331, 2, 12339, 2, 12343, 2, 12346, 2, 12350, 2, 12355, 2, 12440, 2, 12447, 2, 12449, 2, 12451, 2, 12540, 2, 12542, 2, 12545, 2, 12551, 2, 12592, 2, 12595, 2, 12688, 2, 12706, 2, 12732, 2, 12786, 2, 12801, 2, 13314, 2, 19895, 2, 19970, 2, 40940, 2, 40962, 2, 42126, 2, 42194, 2, 42239, 2, 42242, 2, 42510, 2, 42514, 2, 42529, 2, 42540, 2, 42541, 2, 42562, 2, 42608, 2, 42625, 2, 42655, 2, 42658, 2, 42737, 2, 42777, 2, 42785, 2, 42788, 2, 42890, 2, 42893, 2, 42928, 2, 42930, 2, 42937, 2, 43001, 2, 43011, 2, 43013, 2, 43015, 2, 43017, 2, 43020, 2, 43022, 2, 43044, 2, 43074, 2, 43125, 2, 43140, 2, 43189, 2, 43252, 2, 43257, 2, 43261, 2, 43261, 2, 43263, 2, 43263, 2, 43276, 2, 43303, 2, 43314, 2, 43336, 2, 43362, 2, 43390, 2, 43398, 2, 43444, 2, 43473, 2, 43473, 2, 43490, 2, 43494, 2, 43496, 2, 43505, 2, 43516, 2, 43520, 2, 43522, 2, 43562, 2, 43586, 2, 43588, 2, 43590, 2, 43597, 2, 43618, 2, 43640, 2, 43644, 2, 43644, 2, 43648, 2, 43697, 2, 43699, 2, 43699, 2, 43703, 2, 43704, 2, 43707, 2, 43711, 2, 43714, 2, 43714, 2, 43716, 2, 43716, 2, 43741, 2, 43743, 2, 43746, 2, 43756, 2, 43764, 2, 43766, 2, 43779, 2, 43784, 2, 43787, 2, 43792, 2, 43795, 2, 43800, 2, 43810, 2, 43816, 2, 43818, 2, 43824, 2, 43826, 2, 43868, 2, 43870, 2, 43879, 2, 43890, 2, 44004, 2, 44034, 2, 55205, 2, 55218, 2, 55240, 2, 55245, 2, 55293, 2, 63746, 2, 64111, 2, 64114, 2, 64219, 2, 64258, 2, 64264, 2, 64277, 2, 64281, 2, 64287, 2, 64287, 2, 64289, 2, 64298, 2, 64300, 2, 64312, 2, 64314, 2, 64318, 2, 64320, 2, 64320, 2, 64322, 2, 64323, 2, 64325, 2, 64326, 2, 64328, 2, 64435, 2, 64469, 2, 64831, 2, 64850, 2, 64913, 2, 64916, 2, 64969, 2, 65010, 2, 65021, 2, 65138, 2, 65142, 2, 65144, 2, 65278, 2, 65315, 2, 65340, 2, 65347, 2, 65372, 2, 65384, 2, 65472, 2, 65476, 2, 65481, 2, 65484, 2, 65489, 2, 65492, 2, 65497, 2, 65500, 2, 65502, 2, 2, 3, 13, 3, 15, 3, 40, 3, 42, 3, 60, 3, 62, 3, 63, 3, 65, 3, 79, 3, 82, 3, 95, 3, 130, 3, 252, 3, 322, 3, 374, 3, 642, 3, 670, 3, 674, 3, 722, 3, 770, 3, 801, 3, 815, 3, 844, 3, 850, 3, 887, 3, 898, 3, 927, 3, 930, 3, 965, 3, 970, 3, 977, 3, 979, 3, 983, 3, 1026, 3, 1183, 3, 1202, 3, 1237, 3, 1242, 3, 1277, 3, 1282, 3, 1321, 3, 1330, 3, 1381, 3, 1538, 3, 1848, 3, 1858, 3, 1879, 3, 1890, 3, 1897, 3, 2050, 3, 2055, 3, 2058, 3, 2058, 3, 2060, 3, 2103, 3, 2105, 3, 2106, 3, 2110, 3, 2110, 3, 2113, 3, 2135, 3, 2146, 3, 2168, 3, 2178, 3, 2208, 3, 2274, 3, 2292, 3, 2294, 3, 2295, 3, 2306, 3, 2327, 3, 2338, 3, 2363, 3, 2434, 3, 2489, 3, 2496, 3, 2497, 3, 2562, 3, 2562, 3, 2578, 3, 2581, 3, 2583, 3, 2585, 3, 2587, 3, 2613, 3, 2658, 3, 2686, 3, 2690, 3, 2718, 3, 2754, 3, 2761, 3, 2763, 3, 2790, 3, 2818, 3, 2871, 3, 2882, 3, 2903, 3, 2914, 3, 2932, 3, 2946, 3, 2963, 3, 3074, 3, 3146, 3, 3202, 3, 3252, 3, 3266, 3, 3316, 3, 4101, 3, 4153, 3, 4229, 3, 4273, 3, 4306, 3, 4330, 3, 4357, 3, 4392, 3, 4434, 3, 4468, 3, 4472, 3, 4472, 3, 4485, 3, 4532, 3, 4547, 3, 4550, 3, 4572, 3, 4572, 3, 4574, 3, 4574, 3, 4610, 3, 4627, 3, 4629, 3, 4653, 3, 4738, 3, 4744, 3, 4746, 3, 4746, 3, 4748, 3, 4751, 3, 4753, 3, 4767, 3, 4769, 3, 4778, 3, 4786, 3, 4832, 3, 4871, 3, 4878, 3, 4881, 3, 4882, 3, 4885, 3, 4906, 3, 4908, 3, 4914, 3, 4916, 3, 4917, 3, 4919, 3, 4923, 3, 4927, 3, 4927, 3, 4946, 3, 4946, 3, 4959, 3, 4963, 3, 5122, 3, 5174, 3, 5193, 3, 5196, 3, 5250, 3, 5297, 3, 5318, 3, 5319, 3, 5321, 3, 5321, 3, 5506, 3, 5552, 3, 5594, 3, 5597, 3, 5634, 3, 5681, 3, 5702, 3, 5702, 3, 5762, 3, 5804, 3, 5890, 3, 5915, 3, 6306, 3, 6369, 3, 6401, 3, 6401, 3, 6658, 3, 6658, 3, 6669, 3, 6708, 3, 6716, 3, 6716, 3, 6738, 3, 6738, 3, 6750, 3, 6789, 3, 6792, 3, 6795, 3, 6850, 3, 6906, 3, 7170, 3, 7178, 3, 7180, 3, 7216, 3, 7234, 3, 7234, 3, 7284, 3, 7313, 3, 7426, 3, 7432, 3, 7434, 3, 7435, 3, 7437, 3, 7474, 3, 7496, 3, 7496, 3, 8194, 3, 9115, 3, 9218, 3, 9328, 3, 9346, 3, 9541, 3, 12290, 3, 13360, 3, 17410, 3, 17992, 3, 26626, 3, 27194, 3, 27202, 3, 27232, 3, 27346, 3, 27375, 3, 27394, 3, 27441, 3, 27458, 3, 27461, 3, 27493, 3, 27513, 3, 27519, 3, 27537, 3, 28418, 3, 28486, 3, 28498, 3, 28498, 3, 28565, 3, 28577, 3, 28642, 3, 28643, 3, 28674, 3, 34798, 3, 34818, 3, 35572, 3, 45058, 3, 45344, 3, 45426, 3, 45821, 3, 48130, 3, 48236, 3, 48242, 3, 48254, 3, 48258, 3, 48266, 3, 48274, 3, 48283, 3, 54274, 3, 54358, 3, 54360, 3, 54430, 3, 54432, 3, 54433, 3, 54436, 3, 54436, 3, 54439, 3, 54440, 3, 54443, 3, 54446, 3, 54448, 3, 54459, 3, 54461, 3, 54461, 3, 54463, 3, 54469, 3, 54471, 3, 54535, 3, 54537, 3, 54540, 3, 54543, 3, 54550, 3, 54552, 3, 54558, 3, 54560, 3, 54587, 3, 54589, 3, 54592, 3, 54594, 3, 54598, 3, 54600, 3, 54600, 3, 54604, 3, 54610, 3, 54612, 3, 54951, 3, 54954, 3, 54978, 3, 54980, 3, 55004, 3, 55006, 3, 55036, 3, 55038, 3, 55062, 3, 55064, 3, 55094, 3, 55096, 3, 55120, 3, 55122, 3, 55152, 3, 55154, 3, 55178, 3, 55180, 3, 55210, 3, 55212, 3, 55236, 3, 55238, 3, 55245, 3, 59394, 3, 59590, 3, 59650, 3, 59717, 3, 60930, 3, 60933, 3, 60935, 3, 60961, 3, 60963, 3, 60964, 3, 60966, 3, 60966, 3, 60969, 3, 60969, 3, 60971, 3, 60980, 3, 60982, 3, 60985, 3, 60987, 3, 60987, 3, 60989, 3, 60989, 3, 60996, 3, 60996, 3, 61001, 3, 61001, 3, 61003, 3, 61003, 3, 61005, 3, 61005, 3, 61007, 3, 61009, 3, 61011, 3, 61012, 3, 61014, 3, 61014, 3, 61017, 3, 61017, 3, 61019, 3, 61019, 3, 61021, 3, 61021, 3, 61023, 3, 61023, 3, 61025, 3, 61025, 3, 61027, 3, 61028, 3, 61030, 3, 61030, 3, 61033, 3, 61036, 3, 61038, 3, 61044, 3, 61046, 3, 61049, 3, 61051, 3, 61054, 3, 61056, 3, 61056, 3, 61058, 3, 61067, 3, 61069, 3, 61085, 3, 61091, 3, 61093, 3, 61095, 3, 61099, 3, 61101, 3, 61117, 3, 2, 4, 42712, 4, 42754, 4, 46902, 4, 46914, 4, 47135, 4, 47138, 4, 52899, 4, 52914, 4, 60386, 4, 63490, 4, 64031, 4, 966, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 3, 263, 3, 2, 2, 2, 5, 272, 3, 2, 2, 2, 7, 280, 3, 2, 2, 2, 9, 288, 3, 2, 2, 2, 11, 295, 3, 2, 2, 2, 13, 312, 3, 2, 2, 2, 15, 318, 3, 2, 2, 2, 17, 323, 3, 2, 2, 2, 19, 327, 3, 2, 2, 2, 21, 332, 3, 2, 2, 2, 23, 336, 3, 2, 2, 2, 25, 341, 3, 2, 2, 2, 27, 347, 3, 2, 2, 2, 29, 353, 3, 2, 2, 2, 31, 359, 3, 2, 2, 2, 33, 364, 3, 2, 2, 2, 35, 372, 3, 2, 2, 2, 37, 379, 3, 2, 2, 2, 39, 385, 3, 2, 2, 2, 41, 389, 3, 2, 2, 2, 43, 392, 3, 2, 2, 2, 45, 397, 3, 2, 2, 2, 47, 400, 3, 2, 2, 2, 49, 402, 3, 2, 2, 2, 51, 409, 3, 2, 2, 2, 53, 417, 3, 2, 2, 2, 55, 425, 3, 2, 2, 2, 57, 429, 3, 2, 2, 2, 59, 433, 3, 2, 2, 2, 61, 438, 3, 2, 2, 2, 63, 440, 3, 2, 2, 2, 65, 446, 3, 2, 2, 2, 67, 448, 3, 2, 2, 2, 69, 450, 3, 2, 2, 2, 71, 452, 3, 2, 2, 2, 73, 454, 3, 2, 2, 2, 75, 457, 3, 2, 2, 2, 77, 460, 3, 2, 2, 2, 79, 463, 3, 2, 2, 2, 81, 466, 3, 2, 2, 2, 83, 469, 3, 2, 2, 2, 85, 471, 3, 2, 2, 2, 87, 473, 3, 2, 2, 2, 89, 475, 3, 2, 2, 2, 91, 478, 3, 2, 2, 2, 93, 481, 3, 2, 2, 2, 95, 483, 3, 2, 2, 2, 97, 485, 3, 2, 2, 2, 99, 487, 3, 2, 2, 2, 101, 489, 3, 2, 2, 2, 103, 492, 3, 2, 2, 2, 105, 495, 3, 2, 2, 2, 107, 499, 3, 2, 2, 2, 109, 503, 3, 2, 2, 2, 111, 507, 3, 2, 2, 2, 113, 514, 3, 2, 2, 2, 115, 521, 3, 2, 2, 2, 117, 528, 3, 2, 2, 2, 119, 532, 3, 2, 2, 2, 121, 535, 3, 2, 2, 2, 123, 540, 3, 2, 2, 2, 125, 545, 3, 2, 2, 2, 127, 550, 3, 2, 2, 2, 129, 559, 3, 2, 2, 2, 131, 568, 3, 2, 2, 2, 133, 571, 3, 2, 2, 2, 135, 574, 3, 2, 2, 2, 137, 577, 3, 2, 2, 2, 139, 580, 3, 2, 2, 2, 141, 583, 3, 2, 2, 2, 143, 586, 3, 2, 2, 2, 145, 589, 3, 2, 2, 2, 147, 592, 3, 2, 2, 2, 149, 596, 3, 2, 2, 2, 151, 600, 3, 2, 2, 2, 153, 603, 3, 2, 2, 2, 155, 606, 3, 2, 2, 2, 157, 611, 3, 2, 2, 2, 159, 615, 3, 2, 2, 2, 161, 621, 3, 2, 2, 2, 163, 627, 3, 2, 2, 2, 165, 633, 3, 2, 2, 2, 167, 642, 3, 2, 2, 2, 169, 646, 3, 2, 2, 2, 171, 653, 3, 2, 2, 2, 173, 657, 3, 2, 2, 2, 175, 664, 3, 2, 2, 2, 177, 672, 3, 2, 2, 2, 179, 679, 3, 2, 2, 2, 181, 687, 3, 2, 2, 2, 183, 693, 3, 2, 2, 2, 185, 699, 3, 2, 2, 2, 187, 710, 3, 2, 2, 2, 189, 716, 3, 2, 2, 2, 191, 723, 3, 2, 2, 2, 193, 737, 3, 2, 2, 2, 195, 744, 3, 2, 2, 2, 197, 756, 3, 2, 2, 2, 199, 758, 3, 2, 2, 2, 201, 760, 3, 2, 2, 2, 203, 762, 3, 2, 2, 2, 205, 764, 3, 2, 2, 2, 207, 766, 3, 2, 2, 2, 209, 768, 3, 2, 2, 2, 211, 770, 3, 2, 2, 2, 213, 772, 3, 2, 2, 2, 215, 774, 3, 2, 2, 2, 217, 776, 3, 2, 2, 2, 219, 778, 3, 2, 2, 2, 221, 781, 3, 2, 2, 2, 223, 783, 3, 2, 2, 2, 225, 809, 3, 2, 2, 2, 227, 812, 3, 2, 2, 2, 229, 819, 3, 2, 2, 2, 231, 825, 3, 2, 2, 2, 233, 828, 3, 2, 2, 2, 235, 832, 3, 2, 2, 2, 237, 834, 3, 2, 2, 2, 239, 839, 3, 2, 2, 2, 241, 843, 3, 2, 2, 2, 243, 845, 3, 2, 2, 2, 245, 852, 3, 2, 2, 2, 247, 854, 3, 2, 2, 2, 249, 875, 3, 2, 2, 2, 251, 877, 3, 2, 2, 2, 253, 898, 3, 2, 2, 2, 255, 902, 3, 2, 2, 2, 257, 920, 3, 2, 2, 2, 259, 922, 3, 2, 2, 2, 261, 933, 3, 2, 2, 2, 263, 264, 7, 81, 2, 2, 264, 265, 7, 82, 2, 2, 265, 266, 7, 71, 2, 2, 266, 267, 7, 80, 2, 2, 267, 268, 7, 83, 2, 2, 268, 269, 7, 67, 2, 2, 269, 270, 7, 85, 2, 2, 270, 271, 7, 79, 2, 2, 271, 4, 3, 2, 2, 2, 272, 273, 7, 107, 2, 2, 273, 274, 7, 112, 2, 2, 274, 275, 7, 101, 2, 2, 275, 276, 7, 110, 2, 2, 276, 277, 7, 119, 2, 2, 277, 278, 7, 102, 2, 2, 278, 279, 7, 103, 2, 2, 279, 6, 3, 2, 2, 2, 280, 281, 7, 101, 2, 2, 281, 282, 7, 113, 2, 2, 282, 283, 7, 111, 2, 2, 283, 284, 7, 114, 2, 2, 284, 285, 7, 119, 2, 2, 285, 286, 7, 118, 2, 2, 286, 287, 7, 103, 2, 2, 287, 8, 3, 2, 2, 2, 288, 289, 7, 99, 2, 2, 289, 290, 7, 101, 2, 2, 290, 291, 7, 118, 2, 2, 291, 292, 7, 107, 2, 2, 292, 293, 7, 113, 2, 2, 293, 294, 7, 112, 2, 2, 294, 10, 3, 2, 2, 2, 295, 296, 7, 83, 2, 2, 296, 297, 7, 69, 2, 2, 297, 298, 7, 81, 2, 2, 298, 299, 7, 84, 2, 2, 299, 300, 7, 97, 2, 2, 300, 301, 7, 71, 2, 2, 301, 302, 7, 90, 2, 2, 302, 303, 7, 82, 2, 2, 303, 304, 7, 71, 2, 2, 304, 305, 7, 69, 2, 2, 305, 306, 7, 86, 2, 2, 306, 307, 7, 97, 2, 2, 307, 308, 7, 86, 2, 2, 308, 309, 7, 84, 2, 2, 309, 310, 7, 87, 2, 2, 310, 311, 7, 71, 2, 2, 311, 12, 3, 2, 2, 2, 312, 313, 7, 115, 2, 2, 313, 314, 7, 119, 2, 2, 314, 315, 7, 100, 2, 2, 315, 316, 7, 107, 2, 2, 316, 317, 7, 118, 2, 2, 317, 14, 3, 2, 2, 2, 318, 319, 7, 115, 2, 2, 319, 320, 7, 116, 2, 2, 320, 321, 7, 103, 2, 2, 321, 322, 7, 105, 2, 2, 322, 16, 3, 2, 2, 2, 323, 324, 7, 100, 2, 2, 324, 325, 7, 107, 2, 2, 325, 326, 7, 118, 2, 2, 326, 18, 3, 2, 2, 2, 327, 328, 7, 101, 2, 2, 328, 329, 7, 116, 2, 2, 329, 330, 7, 103, 2, 2, 330, 331, 7, 105, 2, 2, 331, 20, 3, 2, 2, 2, 332, 333, 7, 107, 2, 2, 333, 334, 7, 112, 2, 2, 334, 335, 7, 118, 2, 2, 335, 22, 3, 2, 2, 2, 336, 337, 7, 119, 2, 2, 337, 338, 7, 107, 2, 2, 338, 339, 7, 112, 2, 2, 339, 340, 7, 118, 2, 2, 340, 24, 3, 2, 2, 2, 341, 342, 7, 104, 2, 2, 342, 343, 7, 110, 2, 2, 343, 344, 7, 113, 2, 2, 344, 345, 7, 99, 2, 2, 345, 346, 7, 118, 2, 2, 346, 26, 3, 2, 2, 2, 347, 348, 7, 99, 2, 2, 348, 349, 7, 112, 2, 2, 349, 350, 7, 105, 2, 2, 350, 351, 7, 110, 2, 2, 351, 352, 7, 103, 2, 2, 352, 28, 3, 2, 2, 2, 353, 354, 7, 104, 2, 2, 354, 355, 7, 107, 2, 2, 355, 356, 7, 122, 2, 2, 356, 357, 7, 103, 2, 2, 357, 358, 7, 102, 2, 2, 358, 30, 3, 2, 2, 2, 359, 360, 7, 100, 2, 2, 360, 361, 7, 113, 2, 2, 361, 362, 7, 113, 2, 2, 362, 363, 7, 110, 2, 2, 363, 32, 3, 2, 2, 2, 364, 365, 7, 107, 2, 2, 365, 366, 7, 112, 2, 2, 366, 367, 7, 118, 2, 2, 367, 368, 7, 56, 2, 2, 368, 369, 7, 54, 2, 2, 369, 370, 7, 97, 2, 2, 370, 371, 7, 118, 2, 2, 371, 34, 3, 2, 2, 2, 372, 373, 7, 102, 2, 2, 373, 374, 7, 113, 2, 2, 374, 375, 7, 119, 2, 2, 375, 376, 7, 100, 2, 2, 376, 377, 7, 110, 2, 2, 377, 378, 7, 103, 2, 2, 378, 36, 3, 2, 2, 2, 379, 380, 7, 101, 2, 2, 380, 381, 7, 113, 2, 2, 381, 382, 7, 112, 2, 2, 382, 383, 7, 117, 2, 2, 383, 384, 7, 118, 2, 2, 384, 38, 3, 2, 2, 2, 385, 386, 7, 110, 2, 2, 386, 387, 7, 103, 2, 2, 387, 388, 7, 118, 2, 2, 388, 40, 3, 2, 2, 2, 389, 390, 7, 126, 2, 2, 390, 391, 7, 126, 2, 2, 391, 42, 3, 2, 2, 2, 392, 393, 7, 105, 2, 2, 393, 394, 7, 99, 2, 2, 394, 395, 7, 118, 2, 2, 395, 396, 7, 103, 2, 2, 396, 44, 3, 2, 2, 2, 397, 398, 7, 69, 2, 2, 398, 399, 7, 90, 2, 2, 399, 46, 3, 2, 2, 2, 400, 401, 7, 87, 2, 2, 401, 48, 3, 2, 2, 2, 402, 403, 7, 105, 2, 2, 403, 404, 7, 114, 2, 2, 404, 405, 7, 106, 2, 2, 405, 406, 7, 99, 2, 2, 406, 407, 7, 117, 2, 2, 407, 408, 7, 103, 2, 2, 408, 50, 3, 2, 2, 2, 409, 410, 7, 111, 2, 2, 410, 411, 7, 103, 2, 2, 411, 412, 7, 99, 2, 2, 412, 413, 7, 117, 2, 2, 413, 414, 7, 119, 2, 2, 414, 415, 7, 116, 2, 2, 415, 416, 7, 103, 2, 2, 416, 52, 3, 2, 2, 2, 417, 418, 7, 100, 2, 2, 418, 419, 7, 99, 2, 2, 419, 420, 7, 116, 2, 2, 420, 421, 7, 116, 2, 2, 421, 422, 7, 107, 2, 2, 422, 423, 7, 103, 2, 2, 423, 424, 7, 116, 2, 2, 424, 54, 3, 2, 2, 2, 425, 426, 7, 107, 2, 2, 426, 427, 7, 112, 2, 2, 427, 428, 7, 120, 2, 2, 428, 56, 3, 2, 2, 2, 429, 430, 7, 114, 2, 2, 430, 431, 7, 113, 2, 2, 431, 432, 7, 121, 2, 2, 432, 58, 3, 2, 2, 2, 433, 434, 7, 101, 2, 2, 434, 435, 7, 118, 2, 2, 435, 436, 7, 116, 2, 2, 436, 437, 7, 110, 2, 2, 437, 60, 3, 2, 2, 2, 438, 439, 7, 66, 2, 2, 439, 62, 3, 2, 2, 2, 440, 441, 7, 116, 2, 2, 441, 442, 7, 103, 2, 2, 442, 443, 7, 117, 2, 2, 443, 444, 7, 103, 2, 2, 444, 445, 7, 118, 2, 2, 445, 64, 3, 2, 2, 2, 446, 447, 7, 128, 2, 2, 447, 66, 3, 2, 2, 2, 448, 449, 7, 35, 2, 2, 449, 68, 3, 2, 2, 2, 450, 451, 7, 64, 2, 2, 451, 70, 3, 2, 2, 2, 452, 453, 7, 62, 2, 2, 453, 72, 3, 2, 2, 2, 454, 455, 7, 64, 2, 2, 455, 456, 7, 63, 2, 2, 456, 74, 3, 2, 2, 2, 457, 458, 7, 62, 2, 2, 458, 459, 7, 63, 2, 2, 459, 76, 3, 2, 2, 2, 460, 461, 7, 63, 2, 2, 461, 462, 7, 63, 2, 2, 462, 78, 3, 2, 2, 2, 463, 464, 7, 35, 2, 2, 464, 465, 7, 63, 2, 2, 465, 80, 3, 2, 2, 2, 466, 467, 7, 40, 2, 2, 467, 468, 7, 40, 2, 2, 468, 82, 3, 2, 2, 2, 469, 470, 7, 126, 2, 2, 470, 84, 3, 2, 2, 2, 471, 472, 7, 96, 2, 2, 472, 86, 3, 2, 2, 2, 473, 474, 7, 40, 2, 2, 474, 88, 3, 2, 2, 2, 475, 476, 7, 62, 2, 2, 476, 477, 7, 62, 2, 2, 477, 90, 3, 2, 2, 2, 478, 479, 7, 64, 2, 2, 479, 480, 7, 64, 2, 2, 480, 92, 3, 2, 2, 2, 481, 482, 7, 45, 2, 2, 482, 94, 3, 2, 2, 2, 483, 484, 7, 44, 2, 2, 484, 96, 3, 2, 2, 2, 485, 486, 7, 49, 2, 2, 486, 98, 3, 2, 2, 2, 487, 488, 7, 39, 2, 2, 488, 100, 3, 2, 2, 2, 489, 490, 7, 45, 2, 2, 490, 491, 7, 45, 2, 2, 491, 102, 3, 2, 2, 2, 492, 493, 7, 47, 2, 2, 493, 494, 7, 47, 2, 2, 494, 104, 3, 2, 2, 2, 495, 496, 7, 117, 2, 2, 496, 497, 7, 107, 2, 2, 497, 498, 7, 112, 2, 2, 498, 106, 3, 2, 2, 2, 499, 500, 7, 101, 2, 2, 500, 501, 7, 113, 2, 2, 501, 502, 7, 117, 2, 2, 502, 108, 3, 2, 2, 2, 503, 504, 7, 118, 2, 2, 504, 505, 7, 99, 2, 2, 505, 506, 7, 112, 2, 2, 506, 110, 3, 2, 2, 2, 507, 508, 7, 99, 2, 2, 508, 509, 7, 116, 2, 2, 509, 510, 7, 101, 2, 2, 510, 511, 7, 118, 2, 2, 511, 512, 7, 99, 2, 2, 512, 513, 7, 112, 2, 2, 513, 112, 3, 2, 2, 2, 514, 515, 7, 99, 2, 2, 515, 516, 7, 116, 2, 2, 516, 517, 7, 101, 2, 2, 517, 518, 7, 101, 2, 2, 518, 519, 7, 113, 2, 2, 519, 520, 7, 117, 2, 2, 520, 114, 3, 2, 2, 2, 521, 522, 7, 99, 2, 2, 522, 523, 7, 116, 2, 2, 523, 524, 7, 101, 2, 2, 524, 525, 7, 117, 2, 2, 525, 526, 7, 107, 2, 2, 526, 527, 7, 112, 2, 2, 527, 116, 3, 2, 2, 2, 528, 529, 7, 103, 2, 2, 529, 530, 7, 122, 2, 2, 530, 531, 7, 114, 2, 2, 531, 118, 3, 2, 2, 2, 532, 533, 7, 110, 2, 2, 533, 534, 7, 112, 2, 2, 534, 120, 3, 2, 2, 2, 535, 536, 7, 117, 2, 2, 536, 537, 7, 115, 2, 2, 537, 538, 7, 116, 2, 2, 538, 539, 7, 118, 2, 2, 539, 122, 3, 2, 2, 2, 540, 541, 7, 116, 2, 2, 541, 542, 7, 113, 2, 2, 542, 543, 7, 118, 2, 2, 543, 544, 7, 110, 2, 2, 544, 124, 3, 2, 2, 2, 545, 546, 7, 116, 2, 2, 546, 547, 7, 113, 2, 2, 547, 548, 7, 118, 2, 2, 548, 549, 7, 116, 2, 2, 549, 126, 3, 2, 2, 2, 550, 551, 7, 114, 2, 2, 551, 552, 7, 113, 2, 2, 552, 553, 7, 114, 2, 2, 553, 554, 7, 101, 2, 2, 554, 555, 7, 113, 2, 2, 555, 556, 7, 119, 2, 2, 556, 557, 7, 112, 2, 2, 557, 558, 7, 118, 2, 2, 558, 128, 3, 2, 2, 2, 559, 560, 7, 110, 2, 2, 560, 561, 7, 103, 2, 2, 561, 562, 7, 112, 2, 2, 562, 563, 7, 105, 2, 2, 563, 564, 7, 118, 2, 2, 564, 565, 7, 106, 2, 2, 565, 566, 7, 113, 2, 2, 566, 567, 7, 104, 2, 2, 567, 130, 3, 2, 2, 2, 568, 569, 7, 45, 2, 2, 569, 570, 7, 63, 2, 2, 570, 132, 3, 2, 2, 2, 571, 572, 7, 47, 2, 2, 572, 573, 7, 63, 2, 2, 573, 134, 3, 2, 2, 2, 574, 575, 7, 44, 2, 2, 575, 576, 7, 63, 2, 2, 576, 136, 3, 2, 2, 2, 577, 578, 7, 49, 2, 2, 578, 579, 7, 63, 2, 2, 579, 138, 3, 2, 2, 2, 580, 581, 7, 40, 2, 2, 581, 582, 7, 63, 2, 2, 582, 140, 3, 2, 2, 2, 583, 584, 7, 126, 2, 2, 584, 585, 7, 63, 2, 2, 585, 142, 3, 2, 2, 2, 586, 587, 7, 128, 2, 2, 587, 588, 7, 63, 2, 2, 588, 144, 3, 2, 2, 2, 589, 590, 7, 96, 2, 2, 590, 591, 7, 63, 2, 2, 591, 146, 3, 2, 2, 2, 592, 593, 7, 62, 2, 2, 593, 594, 7, 62, 2, 2, 594, 595, 7, 63, 2, 2, 595, 148, 3, 2, 2, 2, 596, 597, 7, 64, 2, 2, 597, 598, 7, 64, 2, 2, 598, 599, 7, 63, 2, 2, 599, 150, 3, 2, 2, 2, 600, 601, 7, 107, 2, 2, 601, 602, 7, 112, 2, 2, 602, 152, 3, 2, 2, 2, 603, 604, 7, 107, 2, 2, 604, 605, 7, 104, 2, 2, 605, 154, 3, 2, 2, 2, 606, 607, 7, 103, 2, 2, 607, 608, 7, 110, 2, 2, 608, 609, 7, 117, 2, 2, 609, 610, 7, 103, 2, 2, 610, 156, 3, 2, 2, 2, 611, 612, 7, 104, 2, 2, 612, 613, 7, 113, 2, 2, 613, 614, 7, 116, 2, 2, 614, 158, 3, 2, 2, 2, 615, 616, 7, 121, 2, 2, 616, 617, 7, 106, 2, 2, 617, 618, 7, 107, 2, 2, 618, 619, 7, 110, 2, 2, 619, 620, 7, 103, 2, 2, 620, 160, 3, 2, 2, 2, 621, 622, 7, 116, 2, 2, 622, 623, 7, 99, 2, 2, 623, 624, 7, 112, 2, 2, 624, 625, 7, 105, 2, 2, 625, 626, 7, 103, 2, 2, 626, 162, 3, 2, 2, 2, 627, 628, 7, 100, 2, 2, 628, 629, 7, 116, 2, 2, 629, 630, 7, 103, 2, 2, 630, 631, 7, 99, 2, 2, 631, 632, 7, 109, 2, 2, 632, 164, 3, 2, 2, 2, 633, 634, 7, 101, 2, 2, 634, 635, 7, 113, 2, 2, 635, 636, 7, 112, 2, 2, 636, 637, 7, 118, 2, 2, 637, 638, 7, 107, 2, 2, 638, 639, 7, 112, 2, 2, 639, 640, 7, 119, 2, 2, 640, 641, 7, 103, 2, 2, 641, 166, 3, 2, 2, 2, 642, 643, 7, 103, 2, 2, 643, 644, 7, 112, 2, 2, 644, 645, 7, 102, 2, 2, 645, 168, 3, 2, 2, 2, 646, 647, 7, 109, 2, 2, 647, 648, 7, 103, 2, 2, 648, 649, 7, 116, 2, 2, 649, 650, 7, 112, 2, 2, 650, 651, 7, 103, 2, 2, 651, 652, 7, 110, 2, 2, 652, 170, 3, 2, 2, 2, 653, 654, 7, 102, 2, 2, 654, 655, 7, 103, 2, 2, 655, 656, 7, 104, 2, 2, 656, 172, 3, 2, 2, 2, 657, 658, 7, 116, 2, 2, 658, 659, 7, 103, 2, 2, 659, 660, 7, 118, 2, 2, 660, 661, 7, 119, 2, 2, 661, 662, 7, 116, 2, 2, 662, 663, 7, 112, 2, 2, 663, 174, 3, 2, 2, 2, 664, 665, 7, 37, 2, 2, 665, 666, 7, 114, 2, 2, 666, 667, 7, 116, 2, 2, 667, 668, 7, 99, 2, 2, 668, 669, 7, 105, 2, 2, 669, 670, 7, 111, 2, 2, 670, 671, 7, 99, 2, 2, 671, 176, 3, 2, 2, 2, 672, 673, 7, 110, 2, 2, 673, 674, 7, 103, 2, 2, 674, 675, 7, 112, 2, 2, 675, 676, 7, 105, 2, 2, 676, 677, 7, 118, 2, 2, 677, 678, 7, 106, 2, 2, 678, 178, 3, 2, 2, 2, 679, 680, 7, 117, 2, 2, 680, 681, 7, 118, 2, 2, 681, 682, 7, 116, 2, 2, 682, 683, 7, 103, 2, 2, 683, 684, 7, 118, 2, 2, 684, 685, 7, 101, 2, 2, 685, 686, 7, 106, 2, 2, 686, 180, 3, 2, 2, 2, 687, 688, 7, 100, 2, 2, 688, 689, 7, 113, 2, 2, 689, 690, 7, 122, 2, 2, 690, 691, 7, 99, 2, 2, 691, 692, 7, 117, 2, 2, 692, 182, 3, 2, 2, 2, 693, 694, 7, 100, 2, 2, 694, 695, 7, 113, 2, 2, 695, 696, 7, 122, 2, 2, 696, 697, 7, 118, 2, 2, 697, 698, 7, 113, 2, 2, 698, 184, 3, 2, 2, 2, 699, 700, 7, 117, 2, 2, 700, 701, 7, 118, 2, 2, 701, 702, 7, 116, 2, 2, 702, 703, 7, 103, 2, 2, 703, 704, 7, 118, 2, 2, 704, 705, 7, 101, 2, 2, 705, 706, 7, 106, 2, 2, 706, 707, 7, 107, 2, 2, 707, 708, 7, 112, 2, 2, 708, 709, 7, 104, 2, 2, 709, 186, 3, 2, 2, 2, 710, 711, 7, 102, 2, 2, 711, 712, 7, 103, 2, 2, 712, 713, 7, 110, 2, 2, 713, 714, 7, 99, 2, 2, 714, 715, 7, 123, 2, 2, 715, 188, 3, 2, 2, 2, 716, 717, 7, 116, 2, 2, 717, 718, 7, 113, 2, 2, 718, 719, 7, 118, 2, 2, 719, 720, 7, 99, 2, 2, 720, 721, 7, 116, 2, 2, 721, 722, 7, 123, 2, 2, 722, 190, 3, 2, 2, 2, 723, 724, 7, 102, 2, 2, 724, 725, 7, 103, 2, 2, 725, 726, 7, 104, 2, 2, 726, 727, 7, 101, 2, 2, 727, 728, 7, 99, 2, 2, 728, 729, 7, 110, 2, 2, 729, 730, 7, 105, 2, 2, 730, 731, 7, 116, 2, 2, 731, 732, 7, 99, 2, 2, 732, 733, 7, 111, 2, 2, 733, 734, 7, 111, 2, 2, 734, 735, 7, 99, 2, 2, 735, 736, 7, 116, 2, 2, 736, 192, 3, 2, 2, 2, 737, 738, 7, 102, 2, 2, 738, 739, 7, 103, 2, 2, 739, 740, 7, 104, 2, 2, 740, 741, 7, 101, 2, 2, 741, 742, 7, 99, 2, 2, 742, 743, 7, 110, 2, 2, 743, 194, 3, 2, 2, 2, 744, 745, 7, 36, 2, 2, 745, 746, 7, 113, 2, 2, 746, 747, 7, 114, 2, 2, 747, 748, 7, 103, 2, 2, 748, 749, 7, 112, 2, 2, 749, 750, 7, 114, 2, 2, 750, 751, 7, 119, 2, 2, 751, 752, 7, 110, 2, 2, 752, 753, 7, 117, 2, 2, 753, 754, 7, 103, 2, 2, 754, 755, 7, 36, 2, 2, 755, 196, 3, 2, 2, 2, 756, 757, 7, 93, 2, 2, 757, 198, 3, 2, 2, 2, 758, 759, 7, 95, 2, 2, 759, 200, 3, 2, 2, 2, 760, 761, 7, 125, 2, 2, 761, 202, 3, 2, 2, 2, 762, 763, 7, 127, 2, 2, 763, 204, 3, 2, 2, 2, 764, 765, 7, 42, 2, 2, 765, 206, 3, 2, 2, 2, 766, 767, 7, 43, 2, 2, 767, 208, 3, 2, 2, 2, 768, 769, 7, 60, 2, 2, 769, 210, 3, 2, 2, 2, 770, 771, 7, 61, 2, 2, 771, 212, 3, 2, 2, 2, 772, 773, 7, 48, 2, 2, 773, 214, 3, 2, 2, 2, 774, 775, 7, 46, 2, 2, 775, 216, 3, 2, 2, 2, 776, 777, 7, 63, 2, 2, 777, 218, 3, 2, 2, 2, 778, 779, 7, 47, 2, 2, 779, 780, 7, 64, 2, 2, 780, 220, 3, 2, 2, 2, 781, 782, 7, 47, 2, 2, 782, 222, 3, 2, 2, 2, 783, 784, 7, 103, 2, 2, 784, 785, 7, 122, 2, 2, 785, 786, 7, 118, 2, 2, 786, 787, 7, 103, 2, 2, 787, 788, 7, 116, 2, 2, 788, 789, 7, 112, 2, 2, 789, 224, 3, 2, 2, 2, 790, 791, 7, 114, 2, 2, 791, 810, 7, 107, 2, 2, 792, 793, 7, 209, 2, 2, 793, 810, 7, 8366, 2, 2, 794, 795, 7, 118, 2, 2, 795, 796, 7, 99, 2, 2, 796, 810, 7, 119, 2, 2, 797, 798, 7, 242, 2, 2, 798, 799, 7, 65535, 2, 2, 799, 800, 7, 341, 2, 2, 800, 810, 7, 65535, 2, 2, 801, 802, 7, 103, 2, 2, 802, 803, 7, 119, 2, 2, 803, 804, 7, 110, 2, 2, 804, 805, 7, 103, 2, 2, 805, 810, 7, 116, 2, 2, 806, 807, 7, 228, 2, 2, 807, 808, 7, 8224, 2, 2, 808, 810, 7, 8227, 2, 2, 809, 790, 3, 2, 2, 2, 809, 792, 3, 2, 2, 2, 809, 794, 3, 2, 2, 2, 809, 797, 3, 2, 2, 2, 809, 801, 3, 2, 2, 2, 809, 806, 3, 2, 2, 2, 810, 226, 3, 2, 2, 2, 811, 813, 9, 2, 2, 2, 812, 811, 3, 2, 2, 2, 813, 814, 3, 2, 2, 2, 814, 812, 3, 2, 2, 2, 814, 815, 3, 2, 2, 2, 815, 816, 3, 2, 2, 2, 816, 817, 8, 114, 2, 2, 817, 228, 3, 2, 2, 2, 818, 820, 9, 3, 2, 2, 819, 818, 3, 2, 2, 2, 820, 821, 3, 2, 2, 2, 821, 819, 3, 2, 2, 2, 821, 822, 3, 2, 2, 2, 822, 823, 3, 2, 2, 2, 823, 824, 8, 115, 2, 2, 824, 230, 3, 2, 2, 2, 825, 826, 9, 4, 2, 2, 826, 232, 3, 2, 2, 2, 827, 829, 5, 231, 116, 2, 828, 827, 3, 2, 2, 2, 829, 830, 3, 2, 2, 2, 830, 828, 3, 2, 2, 2, 830, 831, 3, 2, 2, 2, 831, 234, 3, 2, 2, 2, 832, 833, 9, 11, 2, 2, 833, 236, 3, 2, 2, 2, 834, 835, 9, 5, 2, 2, 835, 238, 3, 2, 2, 2, 836, 840, 9, 6, 2, 2, 837, 840, 5, 235, 118, 2, 838, 840, 5, 237, 119, 2, 839, 836, 3, 2, 2, 2, 839, 837, 3, 2, 2, 2, 839, 838, 3, 2, 2, 2, 840, 240, 3, 2, 2, 2, 841, 844, 5, 239, 120, 2, 842, 844, 5, 233, 117, 2, 843, 841, 3, 2, 2, 2, 843, 842, 3, 2, 2, 2, 844, 242, 3, 2, 2, 2, 845, 849, 5, 239, 120, 2, 846, 848, 5, 241, 121, 2, 847, 846, 3, 2, 2, 2, 848, 851, 3, 2, 2, 2, 849, 847, 3, 2, 2, 2, 849, 850, 3, 2, 2, 2, 850, 244, 3, 2, 2, 2, 851, 849, 3, 2, 2, 2, 852, 853, 9, 7, 2, 2, 853, 246, 3, 2, 2, 2, 854, 855, 9, 8, 2, 2, 855, 248, 3, 2, 2, 2, 856, 858, 5, 231, 116, 2, 857, 856, 3, 2, 2, 2, 858, 859, 3, 2, 2, 2, 859, 857, 3, 2, 2, 2, 859, 860, 3, 2, 2, 2, 860, 861, 3, 2, 2, 2, 861, 865, 5, 213, 107, 2, 862, 864, 5, 231, 116, 2, 863, 862, 3, 2, 2, 2, 864, 867, 3, 2, 2, 2, 865, 863, 3, 2, 2, 2, 865, 866, 3, 2, 2, 2, 866, 876, 3, 2, 2, 2, 867, 865, 3, 2, 2, 2, 868, 872, 5, 213, 107, 2, 869, 871, 5, 231, 116, 2, 870, 869, 3, 2, 2, 2, 871, 874, 3, 2, 2, 2, 872, 870, 3, 2, 2, 2, 872, 873, 3, 2, 2, 2, 873, 876, 3, 2, 2, 2, 874, 872, 3, 2, 2, 2, 875, 857, 3, 2, 2, 2, 875, 868, 3, 2, 2, 2, 876, 250, 3, 2, 2, 2, 877, 884, 5, 249, 125, 2, 878, 880, 5, 245, 123, 2, 879, 881, 5, 247, 124, 2, 880, 879, 3, 2, 2, 2, 880, 881, 3, 2, 2, 2, 881, 882, 3, 2, 2, 2, 882, 883, 5, 233, 117, 2, 883, 885, 3, 2, 2, 2, 884, 878, 3, 2, 2, 2, 884, 885, 3, 2, 2, 2, 885, 252, 3, 2, 2, 2, 886, 887, 7, 102, 2, 2, 887, 899, 7, 118, 2, 2, 888, 889, 7, 112, 2, 2, 889, 899, 7, 117, 2, 2, 890, 891, 7, 119, 2, 2, 891, 899, 7, 117, 2, 2, 892, 893, 7, 196, 2, 2, 893, 894, 7, 183, 2, 2, 894, 899, 7, 117, 2, 2, 895, 896, 7, 111, 2, 2, 896, 899, 7, 117, 2, 2, 897, 899, 7, 117, 2, 2, 898, 886, 3, 2, 2, 2, 898, 888, 3, 2, 2, 2, 898, 890, 3, 2, 2, 2, 898, 892, 3, 2, 2, 2, 898, 895, 3, 2, 2, 2, 898, 897, 3, 2, 2, 2, 899, 254, 3, 2, 2, 2, 900, 903, 5, 233, 117, 2, 901, 903, 5, 251, 126, 2, 902, 900, 3, 2, 2, 2, 902, 901, 3, 2, 2, 2, 903, 904, 3, 2, 2, 2, 904, 905, 5, 253, 127, 2, 905, 256, 3, 2, 2, 2, 906, 908, 7, 36, 2, 2, 907, 909, 10, 9, 2, 2, 908, 907, 3, 2, 2, 2, 909, 910, 3, 2, 2, 2, 910, 911, 3, 2, 2, 2, 910, 908, 3, 2, 2, 2, 911, 912, 3, 2, 2, 2, 912, 921, 7, 36, 2, 2, 913, 915, 7, 41, 2, 2, 914, 916, 10, 10, 2, 2, 915, 914, 3, 2, 2, 2, 916, 917, 3, 2, 2, 2, 917, 918, 3, 2, 2, 2, 917, 915, 3, 2, 2, 2, 918, 919, 3, 2, 2, 2, 919, 921, 7, 41, 2, 2, 920, 906, 3, 2, 2, 2, 920, 913, 3, 2, 2, 2, 921, 258, 3, 2, 2, 2, 922, 923, 7, 49, 2, 2, 923, 924, 7, 49, 2, 2, 924, 928, 3, 2, 2, 2, 925, 927, 10, 3, 2, 2, 926, 925, 3, 2, 2, 2, 927, 930, 3, 2, 2, 2, 928, 926, 3, 2, 2, 2, 928, 929, 3, 2, 2, 2, 929, 931, 3, 2, 2, 2, 930, 928, 3, 2, 2, 2, 931, 932, 8, 130, 2, 2, 932, 260, 3, 2, 2, 2, 933, 934, 7, 49, 2, 2, 934, 935, 7, 44, 2, 2, 935, 939, 3, 2, 2, 2, 936, 938, 11, 2, 2, 2, 937, 936, 3, 2, 2, 2, 938, 941, 3, 2, 2, 2, 939, 940, 3, 2, 2, 2, 939, 937, 3, 2, 2, 2, 940, 942, 3, 2, 2, 2, 941, 939, 3, 2, 2, 2, 942, 943, 7, 44, 2, 2, 943, 944, 7, 49, 2, 2, 944, 945, 3, 2, 2, 2, 945, 946, 8, 131, 2, 2, 946, 262, 3, 2, 2, 2, 23, 2, 809, 814, 821, 830, 839, 843, 849, 859, 865, 872, 875, 880, 884, 898, 902, 910, 917, 920, 928, 939, 3, 8, 2, 2] \ No newline at end of file diff --git a/mlir/parsers/qasm3/antlr/generated/qasm3Parser.cpp b/mlir/parsers/qasm3/antlr/generated/qasm3Parser.cpp index 2d701380..315b0776 100644 --- a/mlir/parsers/qasm3/antlr/generated/qasm3Parser.cpp +++ b/mlir/parsers/qasm3/antlr/generated/qasm3Parser.cpp @@ -1,11359 +1,11402 @@ - -// Generated from qasm3.g4 by ANTLR 4.9.2 - - -#include "qasm3Listener.h" -#include "qasm3Visitor.h" - -#include "qasm3Parser.h" - - -using namespace antlrcpp; -using namespace qasm3; -using namespace antlr4; - -qasm3Parser::qasm3Parser(TokenStream *input) : Parser(input) { - _interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); -} - -qasm3Parser::~qasm3Parser() { - delete _interpreter; -} - -std::string qasm3Parser::getGrammarFileName() const { - return "qasm3.g4"; -} - -const std::vector& qasm3Parser::getRuleNames() const { - return _ruleNames; -} - -dfa::Vocabulary& qasm3Parser::getVocabulary() const { - return _vocabulary; -} - - -//----------------- ProgramContext ------------------------------------------------------------------ - -qasm3Parser::ProgramContext::ProgramContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::HeaderContext* qasm3Parser::ProgramContext::header() { - return getRuleContext(0); -} - -std::vector qasm3Parser::ProgramContext::globalStatement() { - return getRuleContexts(); -} - -qasm3Parser::GlobalStatementContext* qasm3Parser::ProgramContext::globalStatement(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::ProgramContext::statement() { - return getRuleContexts(); -} - -qasm3Parser::StatementContext* qasm3Parser::ProgramContext::statement(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::ProgramContext::getRuleIndex() const { - return qasm3Parser::RuleProgram; -} - -void qasm3Parser::ProgramContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterProgram(this); -} - -void qasm3Parser::ProgramContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitProgram(this); -} - - -antlrcpp::Any qasm3Parser::ProgramContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitProgram(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ProgramContext* qasm3Parser::program() { - ProgramContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 0, qasm3Parser::RuleProgram); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(208); - header(); - setState(213); - _errHandler->sync(this); - _la = _input->LA(1); - while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) - | (1ULL << qasm3Parser::T__4) - | (1ULL << qasm3Parser::T__5) - | (1ULL << qasm3Parser::T__6) - | (1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__17) - | (1ULL << qasm3Parser::T__18) - | (1ULL << qasm3Parser::T__20) - | (1ULL << qasm3Parser::T__21) - | (1ULL << qasm3Parser::T__22) - | (1ULL << qasm3Parser::T__23) - | (1ULL << qasm3Parser::T__24) - | (1ULL << qasm3Parser::T__25) - | (1ULL << qasm3Parser::T__26) - | (1ULL << qasm3Parser::T__27) - | (1ULL << qasm3Parser::T__28) - | (1ULL << qasm3Parser::T__30) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__75 - 64)) - | (1ULL << (qasm3Parser::T__77 - 64)) - | (1ULL << (qasm3Parser::T__78 - 64)) - | (1ULL << (qasm3Parser::T__80 - 64)) - | (1ULL << (qasm3Parser::T__81 - 64)) - | (1ULL << (qasm3Parser::T__82 - 64)) - | (1ULL << (qasm3Parser::T__83 - 64)) - | (1ULL << (qasm3Parser::T__84 - 64)) - | (1ULL << (qasm3Parser::T__85 - 64)) - | (1ULL << (qasm3Parser::T__86 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__89 - 64)) - | (1ULL << (qasm3Parser::T__90 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::T__92 - 64)) - | (1ULL << (qasm3Parser::T__93 - 64)) - | (1ULL << (qasm3Parser::T__94 - 64)) - | (1ULL << (qasm3Parser::T__95 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(211); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__5: - case qasm3Parser::T__6: - case qasm3Parser::T__20: - case qasm3Parser::T__83: - case qasm3Parser::T__84: - case qasm3Parser::T__86: - case qasm3Parser::T__94: - case qasm3Parser::T__95: { - setState(209); - globalStatement(); - break; - } - - case qasm3Parser::T__2: - case qasm3Parser::T__4: - case qasm3Parser::T__7: - case qasm3Parser::T__8: - case qasm3Parser::T__9: - case qasm3Parser::T__10: - case qasm3Parser::T__11: - case qasm3Parser::T__12: - case qasm3Parser::T__13: - case qasm3Parser::T__14: - case qasm3Parser::T__15: - case qasm3Parser::T__16: - case qasm3Parser::T__17: - case qasm3Parser::T__18: - case qasm3Parser::T__21: - case qasm3Parser::T__22: - case qasm3Parser::T__23: - case qasm3Parser::T__24: - case qasm3Parser::T__25: - case qasm3Parser::T__26: - case qasm3Parser::T__27: - case qasm3Parser::T__28: - case qasm3Parser::T__30: - case qasm3Parser::T__31: - case qasm3Parser::T__32: - case qasm3Parser::T__51: - case qasm3Parser::T__52: - case qasm3Parser::T__53: - case qasm3Parser::T__54: - case qasm3Parser::T__55: - case qasm3Parser::T__56: - case qasm3Parser::T__57: - case qasm3Parser::T__58: - case qasm3Parser::T__59: - case qasm3Parser::T__60: - case qasm3Parser::T__61: - case qasm3Parser::T__62: - case qasm3Parser::T__63: - case qasm3Parser::T__75: - case qasm3Parser::T__77: - case qasm3Parser::T__78: - case qasm3Parser::T__80: - case qasm3Parser::T__81: - case qasm3Parser::T__82: - case qasm3Parser::T__85: - case qasm3Parser::T__87: - case qasm3Parser::T__88: - case qasm3Parser::T__89: - case qasm3Parser::T__90: - case qasm3Parser::T__91: - case qasm3Parser::T__92: - case qasm3Parser::T__93: - case qasm3Parser::LPAREN: - case qasm3Parser::MINUS: - case qasm3Parser::Constant: - case qasm3Parser::Integer: - case qasm3Parser::Identifier: - case qasm3Parser::RealNumber: - case qasm3Parser::TimingLiteral: - case qasm3Parser::StringLiteral: { - setState(210); - statement(); - break; - } - - default: - throw NoViableAltException(this); - } - setState(215); - _errHandler->sync(this); - _la = _input->LA(1); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- HeaderContext ------------------------------------------------------------------ - -qasm3Parser::HeaderContext::HeaderContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::VersionContext* qasm3Parser::HeaderContext::version() { - return getRuleContext(0); -} - -std::vector qasm3Parser::HeaderContext::include() { - return getRuleContexts(); -} - -qasm3Parser::IncludeContext* qasm3Parser::HeaderContext::include(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::HeaderContext::getRuleIndex() const { - return qasm3Parser::RuleHeader; -} - -void qasm3Parser::HeaderContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterHeader(this); -} - -void qasm3Parser::HeaderContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitHeader(this); -} - - -antlrcpp::Any qasm3Parser::HeaderContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitHeader(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::HeaderContext* qasm3Parser::header() { - HeaderContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 2, qasm3Parser::RuleHeader); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(217); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::T__0) { - setState(216); - version(); - } - setState(222); - _errHandler->sync(this); - _la = _input->LA(1); - while (_la == qasm3Parser::T__1) { - setState(219); - include(); - setState(224); - _errHandler->sync(this); - _la = _input->LA(1); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- VersionContext ------------------------------------------------------------------ - -qasm3Parser::VersionContext::VersionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::VersionContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - -tree::TerminalNode* qasm3Parser::VersionContext::Integer() { - return getToken(qasm3Parser::Integer, 0); -} - -tree::TerminalNode* qasm3Parser::VersionContext::RealNumber() { - return getToken(qasm3Parser::RealNumber, 0); -} - - -size_t qasm3Parser::VersionContext::getRuleIndex() const { - return qasm3Parser::RuleVersion; -} - -void qasm3Parser::VersionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterVersion(this); -} - -void qasm3Parser::VersionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitVersion(this); -} - - -antlrcpp::Any qasm3Parser::VersionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitVersion(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::VersionContext* qasm3Parser::version() { - VersionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 4, qasm3Parser::RuleVersion); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(225); - match(qasm3Parser::T__0); - setState(226); - _la = _input->LA(1); - if (!(_la == qasm3Parser::Integer - - || _la == qasm3Parser::RealNumber)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - setState(227); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- IncludeContext ------------------------------------------------------------------ - -qasm3Parser::IncludeContext::IncludeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::IncludeContext::StringLiteral() { - return getToken(qasm3Parser::StringLiteral, 0); -} - -tree::TerminalNode* qasm3Parser::IncludeContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::IncludeContext::getRuleIndex() const { - return qasm3Parser::RuleInclude; -} - -void qasm3Parser::IncludeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterInclude(this); -} - -void qasm3Parser::IncludeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitInclude(this); -} - - -antlrcpp::Any qasm3Parser::IncludeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitInclude(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::IncludeContext* qasm3Parser::include() { - IncludeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 6, qasm3Parser::RuleInclude); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(229); - match(qasm3Parser::T__1); - setState(230); - match(qasm3Parser::StringLiteral); - setState(231); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- GlobalStatementContext ------------------------------------------------------------------ - -qasm3Parser::GlobalStatementContext::GlobalStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::SubroutineDefinitionContext* qasm3Parser::GlobalStatementContext::subroutineDefinition() { - return getRuleContext(0); -} - -qasm3Parser::KernelDeclarationContext* qasm3Parser::GlobalStatementContext::kernelDeclaration() { - return getRuleContext(0); -} - -qasm3Parser::QuantumGateDefinitionContext* qasm3Parser::GlobalStatementContext::quantumGateDefinition() { - return getRuleContext(0); -} - -qasm3Parser::CalibrationContext* qasm3Parser::GlobalStatementContext::calibration() { - return getRuleContext(0); -} - -qasm3Parser::QuantumDeclarationStatementContext* qasm3Parser::GlobalStatementContext::quantumDeclarationStatement() { - return getRuleContext(0); -} - -qasm3Parser::PragmaContext* qasm3Parser::GlobalStatementContext::pragma() { - return getRuleContext(0); -} - - -size_t qasm3Parser::GlobalStatementContext::getRuleIndex() const { - return qasm3Parser::RuleGlobalStatement; -} - -void qasm3Parser::GlobalStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterGlobalStatement(this); -} - -void qasm3Parser::GlobalStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitGlobalStatement(this); -} - - -antlrcpp::Any qasm3Parser::GlobalStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitGlobalStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::GlobalStatementContext* qasm3Parser::globalStatement() { - GlobalStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 8, qasm3Parser::RuleGlobalStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(239); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__84: { - enterOuterAlt(_localctx, 1); - setState(233); - subroutineDefinition(); - break; - } - - case qasm3Parser::T__83: { - enterOuterAlt(_localctx, 2); - setState(234); - kernelDeclaration(); - break; - } - - case qasm3Parser::T__20: { - enterOuterAlt(_localctx, 3); - setState(235); - quantumGateDefinition(); - break; - } - - case qasm3Parser::T__94: - case qasm3Parser::T__95: { - enterOuterAlt(_localctx, 4); - setState(236); - calibration(); - break; - } - - case qasm3Parser::T__5: - case qasm3Parser::T__6: { - enterOuterAlt(_localctx, 5); - setState(237); - quantumDeclarationStatement(); - break; - } - - case qasm3Parser::T__86: { - enterOuterAlt(_localctx, 6); - setState(238); - pragma(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- StatementContext ------------------------------------------------------------------ - -qasm3Parser::StatementContext::StatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ExpressionStatementContext* qasm3Parser::StatementContext::expressionStatement() { - return getRuleContext(0); -} - -qasm3Parser::AssignmentStatementContext* qasm3Parser::StatementContext::assignmentStatement() { - return getRuleContext(0); -} - -qasm3Parser::ClassicalDeclarationStatementContext* qasm3Parser::StatementContext::classicalDeclarationStatement() { - return getRuleContext(0); -} - -qasm3Parser::BranchingStatementContext* qasm3Parser::StatementContext::branchingStatement() { - return getRuleContext(0); -} - -qasm3Parser::LoopStatementContext* qasm3Parser::StatementContext::loopStatement() { - return getRuleContext(0); -} - -qasm3Parser::ControlDirectiveStatementContext* qasm3Parser::StatementContext::controlDirectiveStatement() { - return getRuleContext(0); -} - -qasm3Parser::AliasStatementContext* qasm3Parser::StatementContext::aliasStatement() { - return getRuleContext(0); -} - -qasm3Parser::QuantumStatementContext* qasm3Parser::StatementContext::quantumStatement() { - return getRuleContext(0); -} - -qasm3Parser::ReturnStatementContext* qasm3Parser::StatementContext::returnStatement() { - return getRuleContext(0); -} - -qasm3Parser::Qcor_test_statementContext* qasm3Parser::StatementContext::qcor_test_statement() { - return getRuleContext(0); -} - -qasm3Parser::Compute_action_stmtContext* qasm3Parser::StatementContext::compute_action_stmt() { - return getRuleContext(0); -} - - -size_t qasm3Parser::StatementContext::getRuleIndex() const { - return qasm3Parser::RuleStatement; -} - -void qasm3Parser::StatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterStatement(this); -} - -void qasm3Parser::StatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitStatement(this); -} - - -antlrcpp::Any qasm3Parser::StatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::StatementContext* qasm3Parser::statement() { - StatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 10, qasm3Parser::RuleStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(252); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 5, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(241); - expressionStatement(); - break; - } - - case 2: { - enterOuterAlt(_localctx, 2); - setState(242); - assignmentStatement(); - break; - } - - case 3: { - enterOuterAlt(_localctx, 3); - setState(243); - classicalDeclarationStatement(); - break; - } - - case 4: { - enterOuterAlt(_localctx, 4); - setState(244); - branchingStatement(); - break; - } - - case 5: { - enterOuterAlt(_localctx, 5); - setState(245); - loopStatement(); - break; - } - - case 6: { - enterOuterAlt(_localctx, 6); - setState(246); - controlDirectiveStatement(); - break; - } - - case 7: { - enterOuterAlt(_localctx, 7); - setState(247); - aliasStatement(); - break; - } - - case 8: { - enterOuterAlt(_localctx, 8); - setState(248); - quantumStatement(); - break; - } - - case 9: { - enterOuterAlt(_localctx, 9); - setState(249); - returnStatement(); - break; - } - - case 10: { - enterOuterAlt(_localctx, 10); - setState(250); - qcor_test_statement(); - break; - } - - case 11: { - enterOuterAlt(_localctx, 11); - setState(251); - compute_action_stmt(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- Compute_action_stmtContext ------------------------------------------------------------------ - -qasm3Parser::Compute_action_stmtContext::Compute_action_stmtContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::Compute_action_stmtContext::programBlock() { - return getRuleContexts(); -} - -qasm3Parser::ProgramBlockContext* qasm3Parser::Compute_action_stmtContext::programBlock(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::Compute_action_stmtContext::getRuleIndex() const { - return qasm3Parser::RuleCompute_action_stmt; -} - -void qasm3Parser::Compute_action_stmtContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCompute_action_stmt(this); -} - -void qasm3Parser::Compute_action_stmtContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCompute_action_stmt(this); -} - - -antlrcpp::Any qasm3Parser::Compute_action_stmtContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCompute_action_stmt(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::Compute_action_stmtContext* qasm3Parser::compute_action_stmt() { - Compute_action_stmtContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 12, qasm3Parser::RuleCompute_action_stmt); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(254); - match(qasm3Parser::T__2); - setState(255); - dynamic_cast(_localctx)->compute_block = programBlock(); - setState(256); - match(qasm3Parser::T__3); - setState(257); - dynamic_cast(_localctx)->action_block = programBlock(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- Qcor_test_statementContext ------------------------------------------------------------------ - -qasm3Parser::Qcor_test_statementContext::Qcor_test_statementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::Qcor_test_statementContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -qasm3Parser::BooleanExpressionContext* qasm3Parser::Qcor_test_statementContext::booleanExpression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::Qcor_test_statementContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::Qcor_test_statementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::Qcor_test_statementContext::getRuleIndex() const { - return qasm3Parser::RuleQcor_test_statement; -} - -void qasm3Parser::Qcor_test_statementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQcor_test_statement(this); -} - -void qasm3Parser::Qcor_test_statementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQcor_test_statement(this); -} - - -antlrcpp::Any qasm3Parser::Qcor_test_statementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQcor_test_statement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::Qcor_test_statementContext* qasm3Parser::qcor_test_statement() { - Qcor_test_statementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 14, qasm3Parser::RuleQcor_test_statement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(259); - match(qasm3Parser::T__4); - setState(260); - match(qasm3Parser::LPAREN); - setState(261); - booleanExpression(0); - setState(262); - match(qasm3Parser::RPAREN); - setState(263); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumDeclarationStatementContext ------------------------------------------------------------------ - -qasm3Parser::QuantumDeclarationStatementContext::QuantumDeclarationStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumDeclarationContext* qasm3Parser::QuantumDeclarationStatementContext::quantumDeclaration() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::QuantumDeclarationStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::QuantumDeclarationStatementContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumDeclarationStatement; -} - -void qasm3Parser::QuantumDeclarationStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumDeclarationStatement(this); -} - -void qasm3Parser::QuantumDeclarationStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumDeclarationStatement(this); -} - - -antlrcpp::Any qasm3Parser::QuantumDeclarationStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumDeclarationStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumDeclarationStatementContext* qasm3Parser::quantumDeclarationStatement() { - QuantumDeclarationStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 16, qasm3Parser::RuleQuantumDeclarationStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(265); - quantumDeclaration(); - setState(266); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ClassicalDeclarationStatementContext ------------------------------------------------------------------ - -qasm3Parser::ClassicalDeclarationStatementContext::ClassicalDeclarationStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::ClassicalDeclarationStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - -qasm3Parser::ClassicalDeclarationContext* qasm3Parser::ClassicalDeclarationStatementContext::classicalDeclaration() { - return getRuleContext(0); -} - -qasm3Parser::ConstantDeclarationContext* qasm3Parser::ClassicalDeclarationStatementContext::constantDeclaration() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ClassicalDeclarationStatementContext::getRuleIndex() const { - return qasm3Parser::RuleClassicalDeclarationStatement; -} - -void qasm3Parser::ClassicalDeclarationStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterClassicalDeclarationStatement(this); -} - -void qasm3Parser::ClassicalDeclarationStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitClassicalDeclarationStatement(this); -} - - -antlrcpp::Any qasm3Parser::ClassicalDeclarationStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitClassicalDeclarationStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ClassicalDeclarationStatementContext* qasm3Parser::classicalDeclarationStatement() { - ClassicalDeclarationStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 18, qasm3Parser::RuleClassicalDeclarationStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(270); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__7: - case qasm3Parser::T__8: - case qasm3Parser::T__9: - case qasm3Parser::T__10: - case qasm3Parser::T__11: - case qasm3Parser::T__12: - case qasm3Parser::T__13: - case qasm3Parser::T__14: - case qasm3Parser::T__15: - case qasm3Parser::T__16: - case qasm3Parser::T__87: - case qasm3Parser::T__88: { - setState(268); - classicalDeclaration(); - break; - } - - case qasm3Parser::T__17: { - setState(269); - constantDeclaration(); - break; - } - - default: - throw NoViableAltException(this); - } - setState(272); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ClassicalAssignmentContext ------------------------------------------------------------------ - -qasm3Parser::ClassicalAssignmentContext::ClassicalAssignmentContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::ClassicalAssignmentContext::indexIdentifier() { - return getRuleContexts(); -} - -qasm3Parser::IndexIdentifierContext* qasm3Parser::ClassicalAssignmentContext::indexIdentifier(size_t i) { - return getRuleContext(i); -} - -qasm3Parser::AssignmentOperatorContext* qasm3Parser::ClassicalAssignmentContext::assignmentOperator() { - return getRuleContext(0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::ClassicalAssignmentContext::expression() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ClassicalAssignmentContext::getRuleIndex() const { - return qasm3Parser::RuleClassicalAssignment; -} - -void qasm3Parser::ClassicalAssignmentContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterClassicalAssignment(this); -} - -void qasm3Parser::ClassicalAssignmentContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitClassicalAssignment(this); -} - - -antlrcpp::Any qasm3Parser::ClassicalAssignmentContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitClassicalAssignment(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ClassicalAssignmentContext* qasm3Parser::classicalAssignment() { - ClassicalAssignmentContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 20, qasm3Parser::RuleClassicalAssignment); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(274); - indexIdentifier(0); - setState(275); - assignmentOperator(); - setState(278); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { - case 1: { - setState(276); - expression(0); - break; - } - - case 2: { - setState(277); - indexIdentifier(0); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- AssignmentStatementContext ------------------------------------------------------------------ - -qasm3Parser::AssignmentStatementContext::AssignmentStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::AssignmentStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - -qasm3Parser::ClassicalAssignmentContext* qasm3Parser::AssignmentStatementContext::classicalAssignment() { - return getRuleContext(0); -} - -qasm3Parser::QuantumMeasurementAssignmentContext* qasm3Parser::AssignmentStatementContext::quantumMeasurementAssignment() { - return getRuleContext(0); -} - - -size_t qasm3Parser::AssignmentStatementContext::getRuleIndex() const { - return qasm3Parser::RuleAssignmentStatement; -} - -void qasm3Parser::AssignmentStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterAssignmentStatement(this); -} - -void qasm3Parser::AssignmentStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitAssignmentStatement(this); -} - - -antlrcpp::Any qasm3Parser::AssignmentStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitAssignmentStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::AssignmentStatementContext* qasm3Parser::assignmentStatement() { - AssignmentStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 22, qasm3Parser::RuleAssignmentStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(282); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { - case 1: { - setState(280); - classicalAssignment(); - break; - } - - case 2: { - setState(281); - quantumMeasurementAssignment(); - break; - } - - default: - break; - } - setState(284); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ReturnSignatureContext ------------------------------------------------------------------ - -qasm3Parser::ReturnSignatureContext::ReturnSignatureContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::ReturnSignatureContext::ARROW() { - return getToken(qasm3Parser::ARROW, 0); -} - -qasm3Parser::ClassicalTypeContext* qasm3Parser::ReturnSignatureContext::classicalType() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ReturnSignatureContext::getRuleIndex() const { - return qasm3Parser::RuleReturnSignature; -} - -void qasm3Parser::ReturnSignatureContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterReturnSignature(this); -} - -void qasm3Parser::ReturnSignatureContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitReturnSignature(this); -} - - -antlrcpp::Any qasm3Parser::ReturnSignatureContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitReturnSignature(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ReturnSignatureContext* qasm3Parser::returnSignature() { - ReturnSignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 24, qasm3Parser::RuleReturnSignature); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(286); - match(qasm3Parser::ARROW); - setState(287); - classicalType(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- DesignatorContext ------------------------------------------------------------------ - -qasm3Parser::DesignatorContext::DesignatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::DesignatorContext::LBRACKET() { - return getToken(qasm3Parser::LBRACKET, 0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::DesignatorContext::expression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::DesignatorContext::RBRACKET() { - return getToken(qasm3Parser::RBRACKET, 0); -} - - -size_t qasm3Parser::DesignatorContext::getRuleIndex() const { - return qasm3Parser::RuleDesignator; -} - -void qasm3Parser::DesignatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterDesignator(this); -} - -void qasm3Parser::DesignatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitDesignator(this); -} - - -antlrcpp::Any qasm3Parser::DesignatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitDesignator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::DesignatorContext* qasm3Parser::designator() { - DesignatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 26, qasm3Parser::RuleDesignator); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(289); - match(qasm3Parser::LBRACKET); - setState(290); - expression(0); - setState(291); - match(qasm3Parser::RBRACKET); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- DoubleDesignatorContext ------------------------------------------------------------------ - -qasm3Parser::DoubleDesignatorContext::DoubleDesignatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::DoubleDesignatorContext::LBRACKET() { - return getToken(qasm3Parser::LBRACKET, 0); -} - -std::vector qasm3Parser::DoubleDesignatorContext::expression() { - return getRuleContexts(); -} - -qasm3Parser::ExpressionContext* qasm3Parser::DoubleDesignatorContext::expression(size_t i) { - return getRuleContext(i); -} - -tree::TerminalNode* qasm3Parser::DoubleDesignatorContext::COMMA() { - return getToken(qasm3Parser::COMMA, 0); -} - -tree::TerminalNode* qasm3Parser::DoubleDesignatorContext::RBRACKET() { - return getToken(qasm3Parser::RBRACKET, 0); -} - - -size_t qasm3Parser::DoubleDesignatorContext::getRuleIndex() const { - return qasm3Parser::RuleDoubleDesignator; -} - -void qasm3Parser::DoubleDesignatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterDoubleDesignator(this); -} - -void qasm3Parser::DoubleDesignatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitDoubleDesignator(this); -} - - -antlrcpp::Any qasm3Parser::DoubleDesignatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitDoubleDesignator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::DoubleDesignatorContext* qasm3Parser::doubleDesignator() { - DoubleDesignatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 28, qasm3Parser::RuleDoubleDesignator); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(293); - match(qasm3Parser::LBRACKET); - setState(294); - expression(0); - setState(295); - match(qasm3Parser::COMMA); - setState(296); - expression(0); - setState(297); - match(qasm3Parser::RBRACKET); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- IdentifierListContext ------------------------------------------------------------------ - -qasm3Parser::IdentifierListContext::IdentifierListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::IdentifierListContext::Identifier() { - return getTokens(qasm3Parser::Identifier); -} - -tree::TerminalNode* qasm3Parser::IdentifierListContext::Identifier(size_t i) { - return getToken(qasm3Parser::Identifier, i); -} - -std::vector qasm3Parser::IdentifierListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::IdentifierListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::IdentifierListContext::getRuleIndex() const { - return qasm3Parser::RuleIdentifierList; -} - -void qasm3Parser::IdentifierListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterIdentifierList(this); -} - -void qasm3Parser::IdentifierListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitIdentifierList(this); -} - - -antlrcpp::Any qasm3Parser::IdentifierListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitIdentifierList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::IdentifierListContext* qasm3Parser::identifierList() { - IdentifierListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 30, qasm3Parser::RuleIdentifierList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(303); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 9, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(299); - match(qasm3Parser::Identifier); - setState(300); - match(qasm3Parser::COMMA); - } - setState(305); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 9, _ctx); - } - setState(306); - match(qasm3Parser::Identifier); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- AssociationContext ------------------------------------------------------------------ - -qasm3Parser::AssociationContext::AssociationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::AssociationContext::COLON() { - return getToken(qasm3Parser::COLON, 0); -} - -tree::TerminalNode* qasm3Parser::AssociationContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - - -size_t qasm3Parser::AssociationContext::getRuleIndex() const { - return qasm3Parser::RuleAssociation; -} - -void qasm3Parser::AssociationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterAssociation(this); -} - -void qasm3Parser::AssociationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitAssociation(this); -} - - -antlrcpp::Any qasm3Parser::AssociationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitAssociation(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::AssociationContext* qasm3Parser::association() { - AssociationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 32, qasm3Parser::RuleAssociation); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(308); - match(qasm3Parser::COLON); - setState(309); - match(qasm3Parser::Identifier); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumTypeContext ------------------------------------------------------------------ - -qasm3Parser::QuantumTypeContext::QuantumTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::QuantumTypeContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumType; -} - -void qasm3Parser::QuantumTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumType(this); -} - -void qasm3Parser::QuantumTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumType(this); -} - - -antlrcpp::Any qasm3Parser::QuantumTypeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumType(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumTypeContext* qasm3Parser::quantumType() { - QuantumTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 34, qasm3Parser::RuleQuantumType); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(311); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__5 - - || _la == qasm3Parser::T__6)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::QuantumDeclarationContext::QuantumDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumTypeContext* qasm3Parser::QuantumDeclarationContext::quantumType() { - return getRuleContext(0); -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumDeclarationContext::indexIdentifierList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumDeclaration; -} - -void qasm3Parser::QuantumDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumDeclaration(this); -} - -void qasm3Parser::QuantumDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::QuantumDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumDeclarationContext* qasm3Parser::quantumDeclaration() { - QuantumDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 36, qasm3Parser::RuleQuantumDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(313); - quantumType(); - setState(314); - indexIdentifierList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumArgumentContext ------------------------------------------------------------------ - -qasm3Parser::QuantumArgumentContext::QuantumArgumentContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumTypeContext* qasm3Parser::QuantumArgumentContext::quantumType() { - return getRuleContext(0); -} - -qasm3Parser::AssociationContext* qasm3Parser::QuantumArgumentContext::association() { - return getRuleContext(0); -} - -qasm3Parser::DesignatorContext* qasm3Parser::QuantumArgumentContext::designator() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumArgumentContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumArgument; -} - -void qasm3Parser::QuantumArgumentContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumArgument(this); -} - -void qasm3Parser::QuantumArgumentContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumArgument(this); -} - - -antlrcpp::Any qasm3Parser::QuantumArgumentContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumArgument(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumArgumentContext* qasm3Parser::quantumArgument() { - QuantumArgumentContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 38, qasm3Parser::RuleQuantumArgument); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(316); - quantumType(); - setState(318); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LBRACKET) { - setState(317); - designator(); - } - setState(320); - association(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumArgumentListContext ------------------------------------------------------------------ - -qasm3Parser::QuantumArgumentListContext::QuantumArgumentListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::QuantumArgumentListContext::quantumArgument() { - return getRuleContexts(); -} - -qasm3Parser::QuantumArgumentContext* qasm3Parser::QuantumArgumentListContext::quantumArgument(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::QuantumArgumentListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::QuantumArgumentListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::QuantumArgumentListContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumArgumentList; -} - -void qasm3Parser::QuantumArgumentListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumArgumentList(this); -} - -void qasm3Parser::QuantumArgumentListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumArgumentList(this); -} - - -antlrcpp::Any qasm3Parser::QuantumArgumentListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumArgumentList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumArgumentListContext* qasm3Parser::quantumArgumentList() { - QuantumArgumentListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 40, qasm3Parser::RuleQuantumArgumentList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(327); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 11, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(322); - quantumArgument(); - setState(323); - match(qasm3Parser::COMMA); - } - setState(329); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 11, _ctx); - } - setState(330); - quantumArgument(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- BitTypeContext ------------------------------------------------------------------ - -qasm3Parser::BitTypeContext::BitTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::BitTypeContext::getRuleIndex() const { - return qasm3Parser::RuleBitType; -} - -void qasm3Parser::BitTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBitType(this); -} - -void qasm3Parser::BitTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBitType(this); -} - - -antlrcpp::Any qasm3Parser::BitTypeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBitType(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::BitTypeContext* qasm3Parser::bitType() { - BitTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 42, qasm3Parser::RuleBitType); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(332); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__7 - - || _la == qasm3Parser::T__8)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- SingleDesignatorTypeContext ------------------------------------------------------------------ - -qasm3Parser::SingleDesignatorTypeContext::SingleDesignatorTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::SingleDesignatorTypeContext::getRuleIndex() const { - return qasm3Parser::RuleSingleDesignatorType; -} - -void qasm3Parser::SingleDesignatorTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterSingleDesignatorType(this); -} - -void qasm3Parser::SingleDesignatorTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitSingleDesignatorType(this); -} - - -antlrcpp::Any qasm3Parser::SingleDesignatorTypeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitSingleDesignatorType(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::SingleDesignatorTypeContext* qasm3Parser::singleDesignatorType() { - SingleDesignatorTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 44, qasm3Parser::RuleSingleDesignatorType); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(334); - _la = _input->LA(1); - if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12))) != 0))) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- DoubleDesignatorTypeContext ------------------------------------------------------------------ - -qasm3Parser::DoubleDesignatorTypeContext::DoubleDesignatorTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::DoubleDesignatorTypeContext::getRuleIndex() const { - return qasm3Parser::RuleDoubleDesignatorType; -} - -void qasm3Parser::DoubleDesignatorTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterDoubleDesignatorType(this); -} - -void qasm3Parser::DoubleDesignatorTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitDoubleDesignatorType(this); -} - - -antlrcpp::Any qasm3Parser::DoubleDesignatorTypeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitDoubleDesignatorType(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::DoubleDesignatorTypeContext* qasm3Parser::doubleDesignatorType() { - DoubleDesignatorTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 46, qasm3Parser::RuleDoubleDesignatorType); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(336); - match(qasm3Parser::T__13); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- NoDesignatorTypeContext ------------------------------------------------------------------ - -qasm3Parser::NoDesignatorTypeContext::NoDesignatorTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::TimingTypeContext* qasm3Parser::NoDesignatorTypeContext::timingType() { - return getRuleContext(0); -} - - -size_t qasm3Parser::NoDesignatorTypeContext::getRuleIndex() const { - return qasm3Parser::RuleNoDesignatorType; -} - -void qasm3Parser::NoDesignatorTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterNoDesignatorType(this); -} - -void qasm3Parser::NoDesignatorTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitNoDesignatorType(this); -} - - -antlrcpp::Any qasm3Parser::NoDesignatorTypeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitNoDesignatorType(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::NoDesignatorTypeContext* qasm3Parser::noDesignatorType() { - NoDesignatorTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 48, qasm3Parser::RuleNoDesignatorType); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(344); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__14: { - enterOuterAlt(_localctx, 1); - setState(338); - match(qasm3Parser::T__14); - break; - } - - case qasm3Parser::T__87: - case qasm3Parser::T__88: { - enterOuterAlt(_localctx, 2); - setState(339); - timingType(); - break; - } - - case qasm3Parser::T__9: { - enterOuterAlt(_localctx, 3); - setState(340); - match(qasm3Parser::T__9); - break; - } - - case qasm3Parser::T__15: { - enterOuterAlt(_localctx, 4); - setState(341); - match(qasm3Parser::T__15); - break; - } - - case qasm3Parser::T__11: { - enterOuterAlt(_localctx, 5); - setState(342); - match(qasm3Parser::T__11); - break; - } - - case qasm3Parser::T__16: { - enterOuterAlt(_localctx, 6); - setState(343); - match(qasm3Parser::T__16); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ClassicalTypeContext ------------------------------------------------------------------ - -qasm3Parser::ClassicalTypeContext::ClassicalTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::SingleDesignatorTypeContext* qasm3Parser::ClassicalTypeContext::singleDesignatorType() { - return getRuleContext(0); -} - -qasm3Parser::DesignatorContext* qasm3Parser::ClassicalTypeContext::designator() { - return getRuleContext(0); -} - -qasm3Parser::DoubleDesignatorTypeContext* qasm3Parser::ClassicalTypeContext::doubleDesignatorType() { - return getRuleContext(0); -} - -qasm3Parser::DoubleDesignatorContext* qasm3Parser::ClassicalTypeContext::doubleDesignator() { - return getRuleContext(0); -} - -qasm3Parser::NoDesignatorTypeContext* qasm3Parser::ClassicalTypeContext::noDesignatorType() { - return getRuleContext(0); -} - -qasm3Parser::BitTypeContext* qasm3Parser::ClassicalTypeContext::bitType() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ClassicalTypeContext::getRuleIndex() const { - return qasm3Parser::RuleClassicalType; -} - -void qasm3Parser::ClassicalTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterClassicalType(this); -} - -void qasm3Parser::ClassicalTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitClassicalType(this); -} - - -antlrcpp::Any qasm3Parser::ClassicalTypeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitClassicalType(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ClassicalTypeContext* qasm3Parser::classicalType() { - ClassicalTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 50, qasm3Parser::RuleClassicalType); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(357); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 14, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(346); - singleDesignatorType(); - setState(347); - designator(); - break; - } - - case 2: { - enterOuterAlt(_localctx, 2); - setState(349); - doubleDesignatorType(); - setState(350); - doubleDesignator(); - break; - } - - case 3: { - enterOuterAlt(_localctx, 3); - setState(352); - noDesignatorType(); - break; - } - - case 4: { - enterOuterAlt(_localctx, 4); - setState(353); - bitType(); - setState(355); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LBRACKET) { - setState(354); - designator(); - } - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ConstantDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::ConstantDeclarationContext::ConstantDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::EqualsAssignmentListContext* qasm3Parser::ConstantDeclarationContext::equalsAssignmentList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ConstantDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleConstantDeclaration; -} - -void qasm3Parser::ConstantDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterConstantDeclaration(this); -} - -void qasm3Parser::ConstantDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitConstantDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::ConstantDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitConstantDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ConstantDeclarationContext* qasm3Parser::constantDeclaration() { - ConstantDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 52, qasm3Parser::RuleConstantDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(359); - match(qasm3Parser::T__17); - setState(360); - equalsAssignmentList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- SingleDesignatorDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::SingleDesignatorDeclarationContext::SingleDesignatorDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::SingleDesignatorTypeContext* qasm3Parser::SingleDesignatorDeclarationContext::singleDesignatorType() { - return getRuleContext(0); -} - -qasm3Parser::DesignatorContext* qasm3Parser::SingleDesignatorDeclarationContext::designator() { - return getRuleContext(0); -} - -qasm3Parser::IdentifierListContext* qasm3Parser::SingleDesignatorDeclarationContext::identifierList() { - return getRuleContext(0); -} - -qasm3Parser::EqualsAssignmentListContext* qasm3Parser::SingleDesignatorDeclarationContext::equalsAssignmentList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::SingleDesignatorDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleSingleDesignatorDeclaration; -} - -void qasm3Parser::SingleDesignatorDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterSingleDesignatorDeclaration(this); -} - -void qasm3Parser::SingleDesignatorDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitSingleDesignatorDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::SingleDesignatorDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitSingleDesignatorDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::SingleDesignatorDeclarationContext* qasm3Parser::singleDesignatorDeclaration() { - SingleDesignatorDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 54, qasm3Parser::RuleSingleDesignatorDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(362); - singleDesignatorType(); - setState(363); - designator(); - setState(366); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 15, _ctx)) { - case 1: { - setState(364); - identifierList(); - break; - } - - case 2: { - setState(365); - equalsAssignmentList(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- DoubleDesignatorDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::DoubleDesignatorDeclarationContext::DoubleDesignatorDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::DoubleDesignatorTypeContext* qasm3Parser::DoubleDesignatorDeclarationContext::doubleDesignatorType() { - return getRuleContext(0); -} - -qasm3Parser::DoubleDesignatorContext* qasm3Parser::DoubleDesignatorDeclarationContext::doubleDesignator() { - return getRuleContext(0); -} - -qasm3Parser::IdentifierListContext* qasm3Parser::DoubleDesignatorDeclarationContext::identifierList() { - return getRuleContext(0); -} - -qasm3Parser::EqualsAssignmentListContext* qasm3Parser::DoubleDesignatorDeclarationContext::equalsAssignmentList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::DoubleDesignatorDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleDoubleDesignatorDeclaration; -} - -void qasm3Parser::DoubleDesignatorDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterDoubleDesignatorDeclaration(this); -} - -void qasm3Parser::DoubleDesignatorDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitDoubleDesignatorDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::DoubleDesignatorDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitDoubleDesignatorDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::DoubleDesignatorDeclarationContext* qasm3Parser::doubleDesignatorDeclaration() { - DoubleDesignatorDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 56, qasm3Parser::RuleDoubleDesignatorDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(368); - doubleDesignatorType(); - setState(369); - doubleDesignator(); - setState(372); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 16, _ctx)) { - case 1: { - setState(370); - identifierList(); - break; - } - - case 2: { - setState(371); - equalsAssignmentList(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- NoDesignatorDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::NoDesignatorDeclarationContext::NoDesignatorDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::NoDesignatorTypeContext* qasm3Parser::NoDesignatorDeclarationContext::noDesignatorType() { - return getRuleContext(0); -} - -qasm3Parser::IdentifierListContext* qasm3Parser::NoDesignatorDeclarationContext::identifierList() { - return getRuleContext(0); -} - -qasm3Parser::EqualsAssignmentListContext* qasm3Parser::NoDesignatorDeclarationContext::equalsAssignmentList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::NoDesignatorDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleNoDesignatorDeclaration; -} - -void qasm3Parser::NoDesignatorDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterNoDesignatorDeclaration(this); -} - -void qasm3Parser::NoDesignatorDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitNoDesignatorDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::NoDesignatorDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitNoDesignatorDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::NoDesignatorDeclarationContext* qasm3Parser::noDesignatorDeclaration() { - NoDesignatorDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 58, qasm3Parser::RuleNoDesignatorDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(374); - noDesignatorType(); - setState(377); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 17, _ctx)) { - case 1: { - setState(375); - identifierList(); - break; - } - - case 2: { - setState(376); - equalsAssignmentList(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- BitDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::BitDeclarationContext::BitDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::BitTypeContext* qasm3Parser::BitDeclarationContext::bitType() { - return getRuleContext(0); -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::BitDeclarationContext::indexIdentifierList() { - return getRuleContext(0); -} - -qasm3Parser::IndexEqualsAssignmentListContext* qasm3Parser::BitDeclarationContext::indexEqualsAssignmentList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::BitDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleBitDeclaration; -} - -void qasm3Parser::BitDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBitDeclaration(this); -} - -void qasm3Parser::BitDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBitDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::BitDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBitDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::BitDeclarationContext* qasm3Parser::bitDeclaration() { - BitDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 60, qasm3Parser::RuleBitDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(379); - bitType(); - setState(382); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 18, _ctx)) { - case 1: { - setState(380); - indexIdentifierList(); - break; - } - - case 2: { - setState(381); - indexEqualsAssignmentList(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ClassicalDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::ClassicalDeclarationContext::ClassicalDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::SingleDesignatorDeclarationContext* qasm3Parser::ClassicalDeclarationContext::singleDesignatorDeclaration() { - return getRuleContext(0); -} - -qasm3Parser::DoubleDesignatorDeclarationContext* qasm3Parser::ClassicalDeclarationContext::doubleDesignatorDeclaration() { - return getRuleContext(0); -} - -qasm3Parser::NoDesignatorDeclarationContext* qasm3Parser::ClassicalDeclarationContext::noDesignatorDeclaration() { - return getRuleContext(0); -} - -qasm3Parser::BitDeclarationContext* qasm3Parser::ClassicalDeclarationContext::bitDeclaration() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ClassicalDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleClassicalDeclaration; -} - -void qasm3Parser::ClassicalDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterClassicalDeclaration(this); -} - -void qasm3Parser::ClassicalDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitClassicalDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::ClassicalDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitClassicalDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ClassicalDeclarationContext* qasm3Parser::classicalDeclaration() { - ClassicalDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 62, qasm3Parser::RuleClassicalDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(388); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 19, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(384); - singleDesignatorDeclaration(); - break; - } - - case 2: { - enterOuterAlt(_localctx, 2); - setState(385); - doubleDesignatorDeclaration(); - break; - } - - case 3: { - enterOuterAlt(_localctx, 3); - setState(386); - noDesignatorDeclaration(); - break; - } - - case 4: { - enterOuterAlt(_localctx, 4); - setState(387); - bitDeclaration(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ClassicalTypeListContext ------------------------------------------------------------------ - -qasm3Parser::ClassicalTypeListContext::ClassicalTypeListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::ClassicalTypeListContext::classicalType() { - return getRuleContexts(); -} - -qasm3Parser::ClassicalTypeContext* qasm3Parser::ClassicalTypeListContext::classicalType(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::ClassicalTypeListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::ClassicalTypeListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::ClassicalTypeListContext::getRuleIndex() const { - return qasm3Parser::RuleClassicalTypeList; -} - -void qasm3Parser::ClassicalTypeListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterClassicalTypeList(this); -} - -void qasm3Parser::ClassicalTypeListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitClassicalTypeList(this); -} - - -antlrcpp::Any qasm3Parser::ClassicalTypeListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitClassicalTypeList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ClassicalTypeListContext* qasm3Parser::classicalTypeList() { - ClassicalTypeListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 64, qasm3Parser::RuleClassicalTypeList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(395); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 20, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(390); - classicalType(); - setState(391); - match(qasm3Parser::COMMA); - } - setState(397); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 20, _ctx); - } - setState(398); - classicalType(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ClassicalArgumentContext ------------------------------------------------------------------ - -qasm3Parser::ClassicalArgumentContext::ClassicalArgumentContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ClassicalTypeContext* qasm3Parser::ClassicalArgumentContext::classicalType() { - return getRuleContext(0); -} - -qasm3Parser::AssociationContext* qasm3Parser::ClassicalArgumentContext::association() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ClassicalArgumentContext::getRuleIndex() const { - return qasm3Parser::RuleClassicalArgument; -} - -void qasm3Parser::ClassicalArgumentContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterClassicalArgument(this); -} - -void qasm3Parser::ClassicalArgumentContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitClassicalArgument(this); -} - - -antlrcpp::Any qasm3Parser::ClassicalArgumentContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitClassicalArgument(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ClassicalArgumentContext* qasm3Parser::classicalArgument() { - ClassicalArgumentContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 66, qasm3Parser::RuleClassicalArgument); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(400); - classicalType(); - setState(401); - association(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ClassicalArgumentListContext ------------------------------------------------------------------ - -qasm3Parser::ClassicalArgumentListContext::ClassicalArgumentListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::ClassicalArgumentListContext::classicalArgument() { - return getRuleContexts(); -} - -qasm3Parser::ClassicalArgumentContext* qasm3Parser::ClassicalArgumentListContext::classicalArgument(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::ClassicalArgumentListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::ClassicalArgumentListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::ClassicalArgumentListContext::getRuleIndex() const { - return qasm3Parser::RuleClassicalArgumentList; -} - -void qasm3Parser::ClassicalArgumentListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterClassicalArgumentList(this); -} - -void qasm3Parser::ClassicalArgumentListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitClassicalArgumentList(this); -} - - -antlrcpp::Any qasm3Parser::ClassicalArgumentListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitClassicalArgumentList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ClassicalArgumentListContext* qasm3Parser::classicalArgumentList() { - ClassicalArgumentListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 68, qasm3Parser::RuleClassicalArgumentList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(408); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 21, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(403); - classicalArgument(); - setState(404); - match(qasm3Parser::COMMA); - } - setState(410); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 21, _ctx); - } - setState(411); - classicalArgument(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- AliasStatementContext ------------------------------------------------------------------ - -qasm3Parser::AliasStatementContext::AliasStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::AliasStatementContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -tree::TerminalNode* qasm3Parser::AliasStatementContext::EQUALS() { - return getToken(qasm3Parser::EQUALS, 0); -} - -qasm3Parser::IndexIdentifierContext* qasm3Parser::AliasStatementContext::indexIdentifier() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::AliasStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::AliasStatementContext::getRuleIndex() const { - return qasm3Parser::RuleAliasStatement; -} - -void qasm3Parser::AliasStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterAliasStatement(this); -} - -void qasm3Parser::AliasStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitAliasStatement(this); -} - - -antlrcpp::Any qasm3Parser::AliasStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitAliasStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::AliasStatementContext* qasm3Parser::aliasStatement() { - AliasStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 70, qasm3Parser::RuleAliasStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(413); - match(qasm3Parser::T__18); - setState(414); - match(qasm3Parser::Identifier); - setState(415); - match(qasm3Parser::EQUALS); - setState(416); - indexIdentifier(0); - setState(417); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- IndexIdentifierContext ------------------------------------------------------------------ - -qasm3Parser::IndexIdentifierContext::IndexIdentifierContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::IndexIdentifierContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::RangeDefinitionContext* qasm3Parser::IndexIdentifierContext::rangeDefinition() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::IndexIdentifierContext::LBRACKET() { - return getToken(qasm3Parser::LBRACKET, 0); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::IndexIdentifierContext::expressionList() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::IndexIdentifierContext::RBRACKET() { - return getToken(qasm3Parser::RBRACKET, 0); -} - -std::vector qasm3Parser::IndexIdentifierContext::indexIdentifier() { - return getRuleContexts(); -} - -qasm3Parser::IndexIdentifierContext* qasm3Parser::IndexIdentifierContext::indexIdentifier(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::IndexIdentifierContext::getRuleIndex() const { - return qasm3Parser::RuleIndexIdentifier; -} - -void qasm3Parser::IndexIdentifierContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterIndexIdentifier(this); -} - -void qasm3Parser::IndexIdentifierContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitIndexIdentifier(this); -} - - -antlrcpp::Any qasm3Parser::IndexIdentifierContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitIndexIdentifier(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::IndexIdentifierContext* qasm3Parser::indexIdentifier() { - return indexIdentifier(0); -} - -qasm3Parser::IndexIdentifierContext* qasm3Parser::indexIdentifier(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::IndexIdentifierContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::IndexIdentifierContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 72; - enterRecursionRule(_localctx, 72, qasm3Parser::RuleIndexIdentifier, precedence); - - - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(429); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 23, _ctx)) { - case 1: { - setState(420); - match(qasm3Parser::Identifier); - setState(421); - rangeDefinition(); - break; - } - - case 2: { - setState(422); - match(qasm3Parser::Identifier); - setState(427); - _errHandler->sync(this); - - switch (getInterpreter()->adaptivePredict(_input, 22, _ctx)) { - case 1: { - setState(423); - match(qasm3Parser::LBRACKET); - setState(424); - expressionList(); - setState(425); - match(qasm3Parser::RBRACKET); - break; - } - - default: - break; - } - break; - } - - default: - break; - } - _ctx->stop = _input->LT(-1); - setState(436); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 24, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleIndexIdentifier); - setState(431); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(432); - match(qasm3Parser::T__19); - setState(433); - indexIdentifier(2); - } - setState(438); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 24, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- IndexIdentifierListContext ------------------------------------------------------------------ - -qasm3Parser::IndexIdentifierListContext::IndexIdentifierListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::IndexIdentifierListContext::indexIdentifier() { - return getRuleContexts(); -} - -qasm3Parser::IndexIdentifierContext* qasm3Parser::IndexIdentifierListContext::indexIdentifier(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::IndexIdentifierListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::IndexIdentifierListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::IndexIdentifierListContext::getRuleIndex() const { - return qasm3Parser::RuleIndexIdentifierList; -} - -void qasm3Parser::IndexIdentifierListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterIndexIdentifierList(this); -} - -void qasm3Parser::IndexIdentifierListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitIndexIdentifierList(this); -} - - -antlrcpp::Any qasm3Parser::IndexIdentifierListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitIndexIdentifierList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::indexIdentifierList() { - IndexIdentifierListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 74, qasm3Parser::RuleIndexIdentifierList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(444); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(439); - indexIdentifier(0); - setState(440); - match(qasm3Parser::COMMA); - } - setState(446); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 25, _ctx); - } - setState(447); - indexIdentifier(0); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- IndexEqualsAssignmentListContext ------------------------------------------------------------------ - -qasm3Parser::IndexEqualsAssignmentListContext::IndexEqualsAssignmentListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::IndexEqualsAssignmentListContext::indexIdentifier() { - return getRuleContexts(); -} - -qasm3Parser::IndexIdentifierContext* qasm3Parser::IndexEqualsAssignmentListContext::indexIdentifier(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::IndexEqualsAssignmentListContext::equalsExpression() { - return getRuleContexts(); -} - -qasm3Parser::EqualsExpressionContext* qasm3Parser::IndexEqualsAssignmentListContext::equalsExpression(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::IndexEqualsAssignmentListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::IndexEqualsAssignmentListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::IndexEqualsAssignmentListContext::getRuleIndex() const { - return qasm3Parser::RuleIndexEqualsAssignmentList; -} - -void qasm3Parser::IndexEqualsAssignmentListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterIndexEqualsAssignmentList(this); -} - -void qasm3Parser::IndexEqualsAssignmentListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitIndexEqualsAssignmentList(this); -} - - -antlrcpp::Any qasm3Parser::IndexEqualsAssignmentListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitIndexEqualsAssignmentList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::IndexEqualsAssignmentListContext* qasm3Parser::indexEqualsAssignmentList() { - IndexEqualsAssignmentListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 76, qasm3Parser::RuleIndexEqualsAssignmentList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(455); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 26, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(449); - indexIdentifier(0); - setState(450); - equalsExpression(); - setState(451); - match(qasm3Parser::COMMA); - } - setState(457); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 26, _ctx); - } - setState(458); - indexIdentifier(0); - setState(459); - equalsExpression(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- RangeDefinitionContext ------------------------------------------------------------------ - -qasm3Parser::RangeDefinitionContext::RangeDefinitionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::RangeDefinitionContext::LBRACKET() { - return getToken(qasm3Parser::LBRACKET, 0); -} - -std::vector qasm3Parser::RangeDefinitionContext::COLON() { - return getTokens(qasm3Parser::COLON); -} - -tree::TerminalNode* qasm3Parser::RangeDefinitionContext::COLON(size_t i) { - return getToken(qasm3Parser::COLON, i); -} - -tree::TerminalNode* qasm3Parser::RangeDefinitionContext::RBRACKET() { - return getToken(qasm3Parser::RBRACKET, 0); -} - -std::vector qasm3Parser::RangeDefinitionContext::expression() { - return getRuleContexts(); -} - -qasm3Parser::ExpressionContext* qasm3Parser::RangeDefinitionContext::expression(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::RangeDefinitionContext::getRuleIndex() const { - return qasm3Parser::RuleRangeDefinition; -} - -void qasm3Parser::RangeDefinitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterRangeDefinition(this); -} - -void qasm3Parser::RangeDefinitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitRangeDefinition(this); -} - - -antlrcpp::Any qasm3Parser::RangeDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitRangeDefinition(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::RangeDefinitionContext* qasm3Parser::rangeDefinition() { - RangeDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 78, qasm3Parser::RuleRangeDefinition); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(461); - match(qasm3Parser::LBRACKET); - setState(463); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(462); - expression(0); - } - setState(465); - match(qasm3Parser::COLON); - setState(467); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(466); - expression(0); - } - setState(471); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::COLON) { - setState(469); - match(qasm3Parser::COLON); - setState(470); - expression(0); - } - setState(473); - match(qasm3Parser::RBRACKET); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumGateDefinitionContext ------------------------------------------------------------------ - -qasm3Parser::QuantumGateDefinitionContext::QuantumGateDefinitionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumGateSignatureContext* qasm3Parser::QuantumGateDefinitionContext::quantumGateSignature() { - return getRuleContext(0); -} - -qasm3Parser::QuantumBlockContext* qasm3Parser::QuantumGateDefinitionContext::quantumBlock() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumGateDefinitionContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumGateDefinition; -} - -void qasm3Parser::QuantumGateDefinitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumGateDefinition(this); -} - -void qasm3Parser::QuantumGateDefinitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumGateDefinition(this); -} - - -antlrcpp::Any qasm3Parser::QuantumGateDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumGateDefinition(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumGateDefinitionContext* qasm3Parser::quantumGateDefinition() { - QuantumGateDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 80, qasm3Parser::RuleQuantumGateDefinition); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(475); - match(qasm3Parser::T__20); - setState(476); - quantumGateSignature(); - setState(477); - quantumBlock(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumGateSignatureContext ------------------------------------------------------------------ - -qasm3Parser::QuantumGateSignatureContext::QuantumGateSignatureContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::QuantumGateSignatureContext::identifierList() { - return getRuleContexts(); -} - -qasm3Parser::IdentifierListContext* qasm3Parser::QuantumGateSignatureContext::identifierList(size_t i) { - return getRuleContext(i); -} - -tree::TerminalNode* qasm3Parser::QuantumGateSignatureContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -tree::TerminalNode* qasm3Parser::QuantumGateSignatureContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::QuantumGateSignatureContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - - -size_t qasm3Parser::QuantumGateSignatureContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumGateSignature; -} - -void qasm3Parser::QuantumGateSignatureContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumGateSignature(this); -} - -void qasm3Parser::QuantumGateSignatureContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumGateSignature(this); -} - - -antlrcpp::Any qasm3Parser::QuantumGateSignatureContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumGateSignature(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumGateSignatureContext* qasm3Parser::quantumGateSignature() { - QuantumGateSignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 82, qasm3Parser::RuleQuantumGateSignature); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(479); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__21 - - || _la == qasm3Parser::T__22 || _la == qasm3Parser::Identifier)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - setState(485); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LPAREN) { - setState(480); - match(qasm3Parser::LPAREN); - setState(482); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::Identifier) { - setState(481); - identifierList(); - } - setState(484); - match(qasm3Parser::RPAREN); - } - setState(487); - identifierList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumBlockContext ------------------------------------------------------------------ - -qasm3Parser::QuantumBlockContext::QuantumBlockContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::QuantumBlockContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::QuantumBlockContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - -std::vector qasm3Parser::QuantumBlockContext::compute_action_stmt() { - return getRuleContexts(); -} - -qasm3Parser::Compute_action_stmtContext* qasm3Parser::QuantumBlockContext::compute_action_stmt(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::QuantumBlockContext::quantumStatement() { - return getRuleContexts(); -} - -qasm3Parser::QuantumStatementContext* qasm3Parser::QuantumBlockContext::quantumStatement(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::QuantumBlockContext::quantumLoop() { - return getRuleContexts(); -} - -qasm3Parser::QuantumLoopContext* qasm3Parser::QuantumBlockContext::quantumLoop(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::QuantumBlockContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumBlock; -} - -void qasm3Parser::QuantumBlockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumBlock(this); -} - -void qasm3Parser::QuantumBlockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumBlock(this); -} - - -antlrcpp::Any qasm3Parser::QuantumBlockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumBlock(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumBlockContext* qasm3Parser::quantumBlock() { - QuantumBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 84, qasm3Parser::RuleQuantumBlock); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(489); - match(qasm3Parser::LBRACE); - setState(495); - _errHandler->sync(this); - _la = _input->LA(1); - while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) - | (1ULL << qasm3Parser::T__21) - | (1ULL << qasm3Parser::T__22) - | (1ULL << qasm3Parser::T__23) - | (1ULL << qasm3Parser::T__24) - | (1ULL << qasm3Parser::T__25) - | (1ULL << qasm3Parser::T__26) - | (1ULL << qasm3Parser::T__27) - | (1ULL << qasm3Parser::T__28) - | (1ULL << qasm3Parser::T__30))) != 0) || ((((_la - 78) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 78)) & ((1ULL << (qasm3Parser::T__77 - 78)) - | (1ULL << (qasm3Parser::T__78 - 78)) - | (1ULL << (qasm3Parser::T__89 - 78)) - | (1ULL << (qasm3Parser::T__90 - 78)) - | (1ULL << (qasm3Parser::T__92 - 78)) - | (1ULL << (qasm3Parser::T__93 - 78)) - | (1ULL << (qasm3Parser::Identifier - 78)))) != 0)) { - setState(493); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__2: { - setState(490); - compute_action_stmt(); - break; - } - - case qasm3Parser::T__21: - case qasm3Parser::T__22: - case qasm3Parser::T__23: - case qasm3Parser::T__24: - case qasm3Parser::T__25: - case qasm3Parser::T__26: - case qasm3Parser::T__27: - case qasm3Parser::T__28: - case qasm3Parser::T__30: - case qasm3Parser::T__89: - case qasm3Parser::T__90: - case qasm3Parser::T__92: - case qasm3Parser::T__93: - case qasm3Parser::Identifier: { - setState(491); - quantumStatement(); - break; - } - - case qasm3Parser::T__77: - case qasm3Parser::T__78: { - setState(492); - quantumLoop(); - break; - } - - default: - throw NoViableAltException(this); - } - setState(497); - _errHandler->sync(this); - _la = _input->LA(1); - } - setState(498); - match(qasm3Parser::RBRACE); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumLoopContext ------------------------------------------------------------------ - -qasm3Parser::QuantumLoopContext::QuantumLoopContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::LoopSignatureContext* qasm3Parser::QuantumLoopContext::loopSignature() { - return getRuleContext(0); -} - -qasm3Parser::QuantumLoopBlockContext* qasm3Parser::QuantumLoopContext::quantumLoopBlock() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumLoopContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumLoop; -} - -void qasm3Parser::QuantumLoopContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumLoop(this); -} - -void qasm3Parser::QuantumLoopContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumLoop(this); -} - - -antlrcpp::Any qasm3Parser::QuantumLoopContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumLoop(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumLoopContext* qasm3Parser::quantumLoop() { - QuantumLoopContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 86, qasm3Parser::RuleQuantumLoop); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(500); - loopSignature(); - setState(501); - quantumLoopBlock(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumLoopBlockContext ------------------------------------------------------------------ - -qasm3Parser::QuantumLoopBlockContext::QuantumLoopBlockContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::QuantumLoopBlockContext::quantumStatement() { - return getRuleContexts(); -} - -qasm3Parser::QuantumStatementContext* qasm3Parser::QuantumLoopBlockContext::quantumStatement(size_t i) { - return getRuleContext(i); -} - -tree::TerminalNode* qasm3Parser::QuantumLoopBlockContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::QuantumLoopBlockContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - - -size_t qasm3Parser::QuantumLoopBlockContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumLoopBlock; -} - -void qasm3Parser::QuantumLoopBlockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumLoopBlock(this); -} - -void qasm3Parser::QuantumLoopBlockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumLoopBlock(this); -} - - -antlrcpp::Any qasm3Parser::QuantumLoopBlockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumLoopBlock(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumLoopBlockContext* qasm3Parser::quantumLoopBlock() { - QuantumLoopBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 88, qasm3Parser::RuleQuantumLoopBlock); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(512); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__21: - case qasm3Parser::T__22: - case qasm3Parser::T__23: - case qasm3Parser::T__24: - case qasm3Parser::T__25: - case qasm3Parser::T__26: - case qasm3Parser::T__27: - case qasm3Parser::T__28: - case qasm3Parser::T__30: - case qasm3Parser::T__89: - case qasm3Parser::T__90: - case qasm3Parser::T__92: - case qasm3Parser::T__93: - case qasm3Parser::Identifier: { - enterOuterAlt(_localctx, 1); - setState(503); - quantumStatement(); - break; - } - - case qasm3Parser::LBRACE: { - enterOuterAlt(_localctx, 2); - setState(504); - match(qasm3Parser::LBRACE); - setState(508); - _errHandler->sync(this); - _la = _input->LA(1); - while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__21) - | (1ULL << qasm3Parser::T__22) - | (1ULL << qasm3Parser::T__23) - | (1ULL << qasm3Parser::T__24) - | (1ULL << qasm3Parser::T__25) - | (1ULL << qasm3Parser::T__26) - | (1ULL << qasm3Parser::T__27) - | (1ULL << qasm3Parser::T__28) - | (1ULL << qasm3Parser::T__30))) != 0) || ((((_la - 90) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 90)) & ((1ULL << (qasm3Parser::T__89 - 90)) - | (1ULL << (qasm3Parser::T__90 - 90)) - | (1ULL << (qasm3Parser::T__92 - 90)) - | (1ULL << (qasm3Parser::T__93 - 90)) - | (1ULL << (qasm3Parser::Identifier - 90)))) != 0)) { - setState(505); - quantumStatement(); - setState(510); - _errHandler->sync(this); - _la = _input->LA(1); - } - setState(511); - match(qasm3Parser::RBRACE); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumStatementContext ------------------------------------------------------------------ - -qasm3Parser::QuantumStatementContext::QuantumStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumInstructionContext* qasm3Parser::QuantumStatementContext::quantumInstruction() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::QuantumStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - -qasm3Parser::TimingStatementContext* qasm3Parser::QuantumStatementContext::timingStatement() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumStatementContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumStatement; -} - -void qasm3Parser::QuantumStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumStatement(this); -} - -void qasm3Parser::QuantumStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumStatement(this); -} - - -antlrcpp::Any qasm3Parser::QuantumStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumStatementContext* qasm3Parser::quantumStatement() { - QuantumStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 90, qasm3Parser::RuleQuantumStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(518); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__21: - case qasm3Parser::T__22: - case qasm3Parser::T__23: - case qasm3Parser::T__24: - case qasm3Parser::T__25: - case qasm3Parser::T__26: - case qasm3Parser::T__27: - case qasm3Parser::T__28: - case qasm3Parser::T__30: - case qasm3Parser::Identifier: { - enterOuterAlt(_localctx, 1); - setState(514); - quantumInstruction(); - setState(515); - match(qasm3Parser::SEMICOLON); - break; - } - - case qasm3Parser::T__89: - case qasm3Parser::T__90: - case qasm3Parser::T__92: - case qasm3Parser::T__93: { - enterOuterAlt(_localctx, 2); - setState(517); - timingStatement(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumInstructionContext ------------------------------------------------------------------ - -qasm3Parser::QuantumInstructionContext::QuantumInstructionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumGateCallContext* qasm3Parser::QuantumInstructionContext::quantumGateCall() { - return getRuleContext(0); -} - -qasm3Parser::QuantumPhaseContext* qasm3Parser::QuantumInstructionContext::quantumPhase() { - return getRuleContext(0); -} - -qasm3Parser::QuantumMeasurementContext* qasm3Parser::QuantumInstructionContext::quantumMeasurement() { - return getRuleContext(0); -} - -qasm3Parser::QuantumBarrierContext* qasm3Parser::QuantumInstructionContext::quantumBarrier() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumInstructionContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumInstruction; -} - -void qasm3Parser::QuantumInstructionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumInstruction(this); -} - -void qasm3Parser::QuantumInstructionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumInstruction(this); -} - - -antlrcpp::Any qasm3Parser::QuantumInstructionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumInstruction(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumInstructionContext* qasm3Parser::quantumInstruction() { - QuantumInstructionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 92, qasm3Parser::RuleQuantumInstruction); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(524); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__21: - case qasm3Parser::T__22: - case qasm3Parser::T__26: - case qasm3Parser::T__27: - case qasm3Parser::T__28: - case qasm3Parser::T__30: - case qasm3Parser::Identifier: { - enterOuterAlt(_localctx, 1); - setState(520); - quantumGateCall(); - break; - } - - case qasm3Parser::T__23: { - enterOuterAlt(_localctx, 2); - setState(521); - quantumPhase(); - break; - } - - case qasm3Parser::T__24: { - enterOuterAlt(_localctx, 3); - setState(522); - quantumMeasurement(); - break; - } - - case qasm3Parser::T__25: { - enterOuterAlt(_localctx, 4); - setState(523); - quantumBarrier(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumPhaseContext ------------------------------------------------------------------ - -qasm3Parser::QuantumPhaseContext::QuantumPhaseContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::QuantumPhaseContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::QuantumPhaseContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -tree::TerminalNode* qasm3Parser::QuantumPhaseContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - - -size_t qasm3Parser::QuantumPhaseContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumPhase; -} - -void qasm3Parser::QuantumPhaseContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumPhase(this); -} - -void qasm3Parser::QuantumPhaseContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumPhase(this); -} - - -antlrcpp::Any qasm3Parser::QuantumPhaseContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumPhase(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumPhaseContext* qasm3Parser::quantumPhase() { - QuantumPhaseContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 94, qasm3Parser::RuleQuantumPhase); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(526); - match(qasm3Parser::T__23); - setState(527); - match(qasm3Parser::LPAREN); - setState(528); - match(qasm3Parser::Identifier); - setState(529); - match(qasm3Parser::RPAREN); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumMeasurementContext ------------------------------------------------------------------ - -qasm3Parser::QuantumMeasurementContext::QuantumMeasurementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumMeasurementContext::indexIdentifierList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumMeasurementContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumMeasurement; -} - -void qasm3Parser::QuantumMeasurementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumMeasurement(this); -} - -void qasm3Parser::QuantumMeasurementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumMeasurement(this); -} - - -antlrcpp::Any qasm3Parser::QuantumMeasurementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumMeasurement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumMeasurementContext* qasm3Parser::quantumMeasurement() { - QuantumMeasurementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 96, qasm3Parser::RuleQuantumMeasurement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(531); - match(qasm3Parser::T__24); - setState(532); - indexIdentifierList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumMeasurementAssignmentContext ------------------------------------------------------------------ - -qasm3Parser::QuantumMeasurementAssignmentContext::QuantumMeasurementAssignmentContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumMeasurementContext* qasm3Parser::QuantumMeasurementAssignmentContext::quantumMeasurement() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::QuantumMeasurementAssignmentContext::ARROW() { - return getToken(qasm3Parser::ARROW, 0); -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumMeasurementAssignmentContext::indexIdentifierList() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::QuantumMeasurementAssignmentContext::EQUALS() { - return getToken(qasm3Parser::EQUALS, 0); -} - - -size_t qasm3Parser::QuantumMeasurementAssignmentContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumMeasurementAssignment; -} - -void qasm3Parser::QuantumMeasurementAssignmentContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumMeasurementAssignment(this); -} - -void qasm3Parser::QuantumMeasurementAssignmentContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumMeasurementAssignment(this); -} - - -antlrcpp::Any qasm3Parser::QuantumMeasurementAssignmentContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumMeasurementAssignment(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumMeasurementAssignmentContext* qasm3Parser::quantumMeasurementAssignment() { - QuantumMeasurementAssignmentContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 98, qasm3Parser::RuleQuantumMeasurementAssignment); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(543); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__24: { - enterOuterAlt(_localctx, 1); - setState(534); - quantumMeasurement(); - setState(537); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::ARROW) { - setState(535); - match(qasm3Parser::ARROW); - setState(536); - indexIdentifierList(); - } - break; - } - - case qasm3Parser::Identifier: { - enterOuterAlt(_localctx, 2); - setState(539); - indexIdentifierList(); - setState(540); - match(qasm3Parser::EQUALS); - setState(541); - quantumMeasurement(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumBarrierContext ------------------------------------------------------------------ - -qasm3Parser::QuantumBarrierContext::QuantumBarrierContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumBarrierContext::indexIdentifierList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumBarrierContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumBarrier; -} - -void qasm3Parser::QuantumBarrierContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumBarrier(this); -} - -void qasm3Parser::QuantumBarrierContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumBarrier(this); -} - - -antlrcpp::Any qasm3Parser::QuantumBarrierContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumBarrier(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumBarrierContext* qasm3Parser::quantumBarrier() { - QuantumBarrierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 100, qasm3Parser::RuleQuantumBarrier); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(545); - match(qasm3Parser::T__25); - setState(546); - indexIdentifierList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumGateModifierContext ------------------------------------------------------------------ - -qasm3Parser::QuantumGateModifierContext::QuantumGateModifierContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::QuantumGateModifierContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::QuantumGateModifierContext::expression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::QuantumGateModifierContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - - -size_t qasm3Parser::QuantumGateModifierContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumGateModifier; -} - -void qasm3Parser::QuantumGateModifierContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumGateModifier(this); -} - -void qasm3Parser::QuantumGateModifierContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumGateModifier(this); -} - - -antlrcpp::Any qasm3Parser::QuantumGateModifierContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumGateModifier(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumGateModifierContext* qasm3Parser::quantumGateModifier() { - QuantumGateModifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 102, qasm3Parser::RuleQuantumGateModifier); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(555); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__26: { - setState(548); - match(qasm3Parser::T__26); - break; - } - - case qasm3Parser::T__27: { - setState(549); - match(qasm3Parser::T__27); - setState(550); - match(qasm3Parser::LPAREN); - setState(551); - expression(0); - setState(552); - match(qasm3Parser::RPAREN); - break; - } - - case qasm3Parser::T__28: { - setState(554); - match(qasm3Parser::T__28); - break; - } - - default: - throw NoViableAltException(this); - } - setState(557); - match(qasm3Parser::T__29); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumGateCallContext ------------------------------------------------------------------ - -qasm3Parser::QuantumGateCallContext::QuantumGateCallContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::QuantumGateNameContext* qasm3Parser::QuantumGateCallContext::quantumGateName() { - return getRuleContext(0); -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumGateCallContext::indexIdentifierList() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::QuantumGateCallContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::QuantumGateCallContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::QuantumGateCallContext::expressionList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumGateCallContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumGateCall; -} - -void qasm3Parser::QuantumGateCallContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumGateCall(this); -} - -void qasm3Parser::QuantumGateCallContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumGateCall(this); -} - - -antlrcpp::Any qasm3Parser::QuantumGateCallContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumGateCall(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumGateCallContext* qasm3Parser::quantumGateCall() { - QuantumGateCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 104, qasm3Parser::RuleQuantumGateCall); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(559); - quantumGateName(); - setState(565); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LPAREN) { - setState(560); - match(qasm3Parser::LPAREN); - setState(562); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(561); - expressionList(); - } - setState(564); - match(qasm3Parser::RPAREN); - } - setState(567); - indexIdentifierList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- QuantumGateNameContext ------------------------------------------------------------------ - -qasm3Parser::QuantumGateNameContext::QuantumGateNameContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::QuantumGateNameContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::QuantumGateModifierContext* qasm3Parser::QuantumGateNameContext::quantumGateModifier() { - return getRuleContext(0); -} - -qasm3Parser::QuantumGateNameContext* qasm3Parser::QuantumGateNameContext::quantumGateName() { - return getRuleContext(0); -} - - -size_t qasm3Parser::QuantumGateNameContext::getRuleIndex() const { - return qasm3Parser::RuleQuantumGateName; -} - -void qasm3Parser::QuantumGateNameContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterQuantumGateName(this); -} - -void qasm3Parser::QuantumGateNameContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitQuantumGateName(this); -} - - -antlrcpp::Any qasm3Parser::QuantumGateNameContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitQuantumGateName(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::QuantumGateNameContext* qasm3Parser::quantumGateName() { - QuantumGateNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 106, qasm3Parser::RuleQuantumGateName); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(576); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__21: { - enterOuterAlt(_localctx, 1); - setState(569); - match(qasm3Parser::T__21); - break; - } - - case qasm3Parser::T__22: { - enterOuterAlt(_localctx, 2); - setState(570); - match(qasm3Parser::T__22); - break; - } - - case qasm3Parser::T__30: { - enterOuterAlt(_localctx, 3); - setState(571); - match(qasm3Parser::T__30); - break; - } - - case qasm3Parser::Identifier: { - enterOuterAlt(_localctx, 4); - setState(572); - match(qasm3Parser::Identifier); - break; - } - - case qasm3Parser::T__26: - case qasm3Parser::T__27: - case qasm3Parser::T__28: { - enterOuterAlt(_localctx, 5); - setState(573); - quantumGateModifier(); - setState(574); - quantumGateName(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- UnaryOperatorContext ------------------------------------------------------------------ - -qasm3Parser::UnaryOperatorContext::UnaryOperatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::UnaryOperatorContext::getRuleIndex() const { - return qasm3Parser::RuleUnaryOperator; -} - -void qasm3Parser::UnaryOperatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterUnaryOperator(this); -} - -void qasm3Parser::UnaryOperatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitUnaryOperator(this); -} - - -antlrcpp::Any qasm3Parser::UnaryOperatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitUnaryOperator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::UnaryOperatorContext* qasm3Parser::unaryOperator() { - UnaryOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 108, qasm3Parser::RuleUnaryOperator); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(578); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__31 - - || _la == qasm3Parser::T__32)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- RelationalOperatorContext ------------------------------------------------------------------ - -qasm3Parser::RelationalOperatorContext::RelationalOperatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::RelationalOperatorContext::getRuleIndex() const { - return qasm3Parser::RuleRelationalOperator; -} - -void qasm3Parser::RelationalOperatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterRelationalOperator(this); -} - -void qasm3Parser::RelationalOperatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitRelationalOperator(this); -} - - -antlrcpp::Any qasm3Parser::RelationalOperatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitRelationalOperator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::RelationalOperatorContext* qasm3Parser::relationalOperator() { - RelationalOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 110, qasm3Parser::RuleRelationalOperator); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(580); - _la = _input->LA(1); - if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__33) - | (1ULL << qasm3Parser::T__34) - | (1ULL << qasm3Parser::T__35) - | (1ULL << qasm3Parser::T__36) - | (1ULL << qasm3Parser::T__37) - | (1ULL << qasm3Parser::T__38))) != 0))) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- LogicalOperatorContext ------------------------------------------------------------------ - -qasm3Parser::LogicalOperatorContext::LogicalOperatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::LogicalOperatorContext::getRuleIndex() const { - return qasm3Parser::RuleLogicalOperator; -} - -void qasm3Parser::LogicalOperatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterLogicalOperator(this); -} - -void qasm3Parser::LogicalOperatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitLogicalOperator(this); -} - - -antlrcpp::Any qasm3Parser::LogicalOperatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitLogicalOperator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::LogicalOperatorContext* qasm3Parser::logicalOperator() { - LogicalOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 112, qasm3Parser::RuleLogicalOperator); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(582); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__19 - - || _la == qasm3Parser::T__39)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ExpressionStatementContext ------------------------------------------------------------------ - -qasm3Parser::ExpressionStatementContext::ExpressionStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ExpressionContext* qasm3Parser::ExpressionStatementContext::expression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::ExpressionStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::ExpressionStatementContext::getRuleIndex() const { - return qasm3Parser::RuleExpressionStatement; -} - -void qasm3Parser::ExpressionStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterExpressionStatement(this); -} - -void qasm3Parser::ExpressionStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitExpressionStatement(this); -} - - -antlrcpp::Any qasm3Parser::ExpressionStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitExpressionStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ExpressionStatementContext* qasm3Parser::expressionStatement() { - ExpressionStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 114, qasm3Parser::RuleExpressionStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(584); - expression(0); - setState(585); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ExpressionContext ------------------------------------------------------------------ - -qasm3Parser::ExpressionContext::ExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ExpressionTerminatorContext* qasm3Parser::ExpressionContext::expressionTerminator() { - return getRuleContext(0); -} - -qasm3Parser::UnaryExpressionContext* qasm3Parser::ExpressionContext::unaryExpression() { - return getRuleContext(0); -} - -qasm3Parser::XOrExpressionContext* qasm3Parser::ExpressionContext::xOrExpression() { - return getRuleContext(0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::ExpressionContext::expression() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleExpression; -} - -void qasm3Parser::ExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterExpression(this); -} - -void qasm3Parser::ExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitExpression(this); -} - - -antlrcpp::Any qasm3Parser::ExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitExpression(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::ExpressionContext* qasm3Parser::expression() { - return expression(0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::expression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::ExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::ExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 116; - enterRecursionRule(_localctx, 116, qasm3Parser::RuleExpression, precedence); - - - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(591); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 44, _ctx)) { - case 1: { - setState(588); - expressionTerminator(0); - break; - } - - case 2: { - setState(589); - unaryExpression(); - break; - } - - case 3: { - setState(590); - xOrExpression(0); - break; - } - - default: - break; - } - _ctx->stop = _input->LT(-1); - setState(598); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 45, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleExpression); - setState(593); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(594); - match(qasm3Parser::T__40); - setState(595); - xOrExpression(0); - } - setState(600); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 45, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- XOrExpressionContext ------------------------------------------------------------------ - -qasm3Parser::XOrExpressionContext::XOrExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::BitAndExpressionContext* qasm3Parser::XOrExpressionContext::bitAndExpression() { - return getRuleContext(0); -} - -qasm3Parser::XOrExpressionContext* qasm3Parser::XOrExpressionContext::xOrExpression() { - return getRuleContext(0); -} - - -size_t qasm3Parser::XOrExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleXOrExpression; -} - -void qasm3Parser::XOrExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterXOrExpression(this); -} - -void qasm3Parser::XOrExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitXOrExpression(this); -} - - -antlrcpp::Any qasm3Parser::XOrExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitXOrExpression(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::XOrExpressionContext* qasm3Parser::xOrExpression() { - return xOrExpression(0); -} - -qasm3Parser::XOrExpressionContext* qasm3Parser::xOrExpression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::XOrExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::XOrExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 118; - enterRecursionRule(_localctx, 118, qasm3Parser::RuleXOrExpression, precedence); - - - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(602); - bitAndExpression(0); - _ctx->stop = _input->LT(-1); - setState(609); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 46, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleXOrExpression); - setState(604); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(605); - match(qasm3Parser::T__41); - setState(606); - bitAndExpression(0); - } - setState(611); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 46, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- BitAndExpressionContext ------------------------------------------------------------------ - -qasm3Parser::BitAndExpressionContext::BitAndExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::BitShiftExpressionContext* qasm3Parser::BitAndExpressionContext::bitShiftExpression() { - return getRuleContext(0); -} - -qasm3Parser::BitAndExpressionContext* qasm3Parser::BitAndExpressionContext::bitAndExpression() { - return getRuleContext(0); -} - - -size_t qasm3Parser::BitAndExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleBitAndExpression; -} - -void qasm3Parser::BitAndExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBitAndExpression(this); -} - -void qasm3Parser::BitAndExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBitAndExpression(this); -} - - -antlrcpp::Any qasm3Parser::BitAndExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBitAndExpression(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::BitAndExpressionContext* qasm3Parser::bitAndExpression() { - return bitAndExpression(0); -} - -qasm3Parser::BitAndExpressionContext* qasm3Parser::bitAndExpression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::BitAndExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::BitAndExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 120; - enterRecursionRule(_localctx, 120, qasm3Parser::RuleBitAndExpression, precedence); - - - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(613); - bitShiftExpression(0); - _ctx->stop = _input->LT(-1); - setState(620); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleBitAndExpression); - setState(615); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(616); - match(qasm3Parser::T__42); - setState(617); - bitShiftExpression(0); - } - setState(622); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 47, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- BitShiftExpressionContext ------------------------------------------------------------------ - -qasm3Parser::BitShiftExpressionContext::BitShiftExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::AdditiveExpressionContext* qasm3Parser::BitShiftExpressionContext::additiveExpression() { - return getRuleContext(0); -} - -qasm3Parser::BitShiftExpressionContext* qasm3Parser::BitShiftExpressionContext::bitShiftExpression() { - return getRuleContext(0); -} - - -size_t qasm3Parser::BitShiftExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleBitShiftExpression; -} - -void qasm3Parser::BitShiftExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBitShiftExpression(this); -} - -void qasm3Parser::BitShiftExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBitShiftExpression(this); -} - - -antlrcpp::Any qasm3Parser::BitShiftExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBitShiftExpression(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::BitShiftExpressionContext* qasm3Parser::bitShiftExpression() { - return bitShiftExpression(0); -} - -qasm3Parser::BitShiftExpressionContext* qasm3Parser::bitShiftExpression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::BitShiftExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::BitShiftExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 122; - enterRecursionRule(_localctx, 122, qasm3Parser::RuleBitShiftExpression, precedence); - - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(624); - additiveExpression(0); - _ctx->stop = _input->LT(-1); - setState(631); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleBitShiftExpression); - setState(626); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(627); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__43 - - || _la == qasm3Parser::T__44)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - setState(628); - additiveExpression(0); - } - setState(633); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- AdditiveExpressionContext ------------------------------------------------------------------ - -qasm3Parser::AdditiveExpressionContext::AdditiveExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::AdditiveExpressionContext::multiplicativeExpression() { - return getRuleContext(0); -} - -qasm3Parser::AdditiveExpressionContext* qasm3Parser::AdditiveExpressionContext::additiveExpression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::AdditiveExpressionContext::MINUS() { - return getToken(qasm3Parser::MINUS, 0); -} - - -size_t qasm3Parser::AdditiveExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleAdditiveExpression; -} - -void qasm3Parser::AdditiveExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterAdditiveExpression(this); -} - -void qasm3Parser::AdditiveExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitAdditiveExpression(this); -} - - -antlrcpp::Any qasm3Parser::AdditiveExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitAdditiveExpression(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::AdditiveExpressionContext* qasm3Parser::additiveExpression() { - return additiveExpression(0); -} - -qasm3Parser::AdditiveExpressionContext* qasm3Parser::additiveExpression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::AdditiveExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::AdditiveExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 124; - enterRecursionRule(_localctx, 124, qasm3Parser::RuleAdditiveExpression, precedence); - - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(635); - multiplicativeExpression(0); - _ctx->stop = _input->LT(-1); - setState(642); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleAdditiveExpression); - setState(637); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(638); - dynamic_cast(_localctx)->binary_op = _input->LT(1); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__45 || _la == qasm3Parser::MINUS)) { - dynamic_cast(_localctx)->binary_op = _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - setState(639); - multiplicativeExpression(0); - } - setState(644); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- MultiplicativeExpressionContext ------------------------------------------------------------------ - -qasm3Parser::MultiplicativeExpressionContext::MultiplicativeExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ExpressionTerminatorContext* qasm3Parser::MultiplicativeExpressionContext::expressionTerminator() { - return getRuleContext(0); -} - -qasm3Parser::UnaryExpressionContext* qasm3Parser::MultiplicativeExpressionContext::unaryExpression() { - return getRuleContext(0); -} - -qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::MultiplicativeExpressionContext::multiplicativeExpression() { - return getRuleContext(0); -} - - -size_t qasm3Parser::MultiplicativeExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleMultiplicativeExpression; -} - -void qasm3Parser::MultiplicativeExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterMultiplicativeExpression(this); -} - -void qasm3Parser::MultiplicativeExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitMultiplicativeExpression(this); -} - - -antlrcpp::Any qasm3Parser::MultiplicativeExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitMultiplicativeExpression(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::multiplicativeExpression() { - return multiplicativeExpression(0); -} - -qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::multiplicativeExpression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::MultiplicativeExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::MultiplicativeExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 126; - enterRecursionRule(_localctx, 126, qasm3Parser::RuleMultiplicativeExpression, precedence); - - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(648); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__7: - case qasm3Parser::T__8: - case qasm3Parser::T__9: - case qasm3Parser::T__10: - case qasm3Parser::T__11: - case qasm3Parser::T__12: - case qasm3Parser::T__13: - case qasm3Parser::T__14: - case qasm3Parser::T__15: - case qasm3Parser::T__16: - case qasm3Parser::T__51: - case qasm3Parser::T__52: - case qasm3Parser::T__53: - case qasm3Parser::T__54: - case qasm3Parser::T__55: - case qasm3Parser::T__56: - case qasm3Parser::T__57: - case qasm3Parser::T__58: - case qasm3Parser::T__59: - case qasm3Parser::T__60: - case qasm3Parser::T__61: - case qasm3Parser::T__62: - case qasm3Parser::T__63: - case qasm3Parser::T__87: - case qasm3Parser::T__88: - case qasm3Parser::T__91: - case qasm3Parser::LPAREN: - case qasm3Parser::MINUS: - case qasm3Parser::Constant: - case qasm3Parser::Integer: - case qasm3Parser::Identifier: - case qasm3Parser::RealNumber: - case qasm3Parser::TimingLiteral: - case qasm3Parser::StringLiteral: { - setState(646); - expressionTerminator(0); - break; - } - - case qasm3Parser::T__31: - case qasm3Parser::T__32: { - setState(647); - unaryExpression(); - break; - } - - default: - throw NoViableAltException(this); - } - _ctx->stop = _input->LT(-1); - setState(658); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleMultiplicativeExpression); - setState(650); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(651); - dynamic_cast(_localctx)->binary_op = _input->LT(1); - _la = _input->LA(1); - if (!((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__46) - | (1ULL << qasm3Parser::T__47) - | (1ULL << qasm3Parser::T__48))) != 0))) { - dynamic_cast(_localctx)->binary_op = _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - setState(654); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__7: - case qasm3Parser::T__8: - case qasm3Parser::T__9: - case qasm3Parser::T__10: - case qasm3Parser::T__11: - case qasm3Parser::T__12: - case qasm3Parser::T__13: - case qasm3Parser::T__14: - case qasm3Parser::T__15: - case qasm3Parser::T__16: - case qasm3Parser::T__51: - case qasm3Parser::T__52: - case qasm3Parser::T__53: - case qasm3Parser::T__54: - case qasm3Parser::T__55: - case qasm3Parser::T__56: - case qasm3Parser::T__57: - case qasm3Parser::T__58: - case qasm3Parser::T__59: - case qasm3Parser::T__60: - case qasm3Parser::T__61: - case qasm3Parser::T__62: - case qasm3Parser::T__63: - case qasm3Parser::T__87: - case qasm3Parser::T__88: - case qasm3Parser::T__91: - case qasm3Parser::LPAREN: - case qasm3Parser::MINUS: - case qasm3Parser::Constant: - case qasm3Parser::Integer: - case qasm3Parser::Identifier: - case qasm3Parser::RealNumber: - case qasm3Parser::TimingLiteral: - case qasm3Parser::StringLiteral: { - setState(652); - expressionTerminator(0); - break; - } - - case qasm3Parser::T__31: - case qasm3Parser::T__32: { - setState(653); - unaryExpression(); - break; - } - - default: - throw NoViableAltException(this); - } - } - setState(660); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- UnaryExpressionContext ------------------------------------------------------------------ - -qasm3Parser::UnaryExpressionContext::UnaryExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::UnaryOperatorContext* qasm3Parser::UnaryExpressionContext::unaryOperator() { - return getRuleContext(0); -} - -qasm3Parser::ExpressionTerminatorContext* qasm3Parser::UnaryExpressionContext::expressionTerminator() { - return getRuleContext(0); -} - - -size_t qasm3Parser::UnaryExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleUnaryExpression; -} - -void qasm3Parser::UnaryExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterUnaryExpression(this); -} - -void qasm3Parser::UnaryExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitUnaryExpression(this); -} - - -antlrcpp::Any qasm3Parser::UnaryExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitUnaryExpression(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::UnaryExpressionContext* qasm3Parser::unaryExpression() { - UnaryExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 128, qasm3Parser::RuleUnaryExpression); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(661); - unaryOperator(); - setState(662); - expressionTerminator(0); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ExpressionTerminatorContext ------------------------------------------------------------------ - -qasm3Parser::ExpressionTerminatorContext::ExpressionTerminatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::Constant() { - return getToken(qasm3Parser::Constant, 0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::Integer() { - return getToken(qasm3Parser::Integer, 0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::RealNumber() { - return getToken(qasm3Parser::RealNumber, 0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::StringLiteral() { - return getToken(qasm3Parser::StringLiteral, 0); -} - -qasm3Parser::BuiltInCallContext* qasm3Parser::ExpressionTerminatorContext::builtInCall() { - return getRuleContext(0); -} - -qasm3Parser::KernelCallContext* qasm3Parser::ExpressionTerminatorContext::kernelCall() { - return getRuleContext(0); -} - -qasm3Parser::SubroutineCallContext* qasm3Parser::ExpressionTerminatorContext::subroutineCall() { - return getRuleContext(0); -} - -qasm3Parser::TimingTerminatorContext* qasm3Parser::ExpressionTerminatorContext::timingTerminator() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::MINUS() { - return getToken(qasm3Parser::MINUS, 0); -} - -qasm3Parser::ExpressionTerminatorContext* qasm3Parser::ExpressionTerminatorContext::expressionTerminator() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::ExpressionTerminatorContext::expression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::LBRACKET() { - return getToken(qasm3Parser::LBRACKET, 0); -} - -tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::RBRACKET() { - return getToken(qasm3Parser::RBRACKET, 0); -} - -qasm3Parser::IncrementorContext* qasm3Parser::ExpressionTerminatorContext::incrementor() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ExpressionTerminatorContext::getRuleIndex() const { - return qasm3Parser::RuleExpressionTerminator; -} - -void qasm3Parser::ExpressionTerminatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterExpressionTerminator(this); -} - -void qasm3Parser::ExpressionTerminatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitExpressionTerminator(this); -} - - -antlrcpp::Any qasm3Parser::ExpressionTerminatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitExpressionTerminator(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::ExpressionTerminatorContext* qasm3Parser::expressionTerminator() { - return expressionTerminator(0); -} - -qasm3Parser::ExpressionTerminatorContext* qasm3Parser::expressionTerminator(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::ExpressionTerminatorContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::ExpressionTerminatorContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 130; - enterRecursionRule(_localctx, 130, qasm3Parser::RuleExpressionTerminator, precedence); - - - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(680); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 53, _ctx)) { - case 1: { - setState(665); - match(qasm3Parser::Constant); - break; - } - - case 2: { - setState(666); - match(qasm3Parser::Integer); - break; - } - - case 3: { - setState(667); - match(qasm3Parser::RealNumber); - break; - } - - case 4: { - setState(668); - match(qasm3Parser::Identifier); - break; - } - - case 5: { - setState(669); - match(qasm3Parser::StringLiteral); - break; - } - - case 6: { - setState(670); - builtInCall(); - break; - } - - case 7: { - setState(671); - kernelCall(); - break; - } - - case 8: { - setState(672); - subroutineCall(); - break; - } - - case 9: { - setState(673); - timingTerminator(); - break; - } - - case 10: { - setState(674); - match(qasm3Parser::MINUS); - setState(675); - expressionTerminator(4); - break; - } - - case 11: { - setState(676); - match(qasm3Parser::LPAREN); - setState(677); - expression(0); - setState(678); - match(qasm3Parser::RPAREN); - break; - } - - default: - break; - } - _ctx->stop = _input->LT(-1); - setState(691); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 55, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - setState(689); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 54, _ctx)) { - case 1: { - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleExpressionTerminator); - setState(682); - - if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(683); - match(qasm3Parser::LBRACKET); - setState(684); - expression(0); - setState(685); - match(qasm3Parser::RBRACKET); - break; - } - - case 2: { - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleExpressionTerminator); - setState(687); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(688); - incrementor(); - break; - } - - default: - break; - } - } - setState(693); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 55, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- IncrementorContext ------------------------------------------------------------------ - -qasm3Parser::IncrementorContext::IncrementorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::IncrementorContext::getRuleIndex() const { - return qasm3Parser::RuleIncrementor; -} - -void qasm3Parser::IncrementorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterIncrementor(this); -} - -void qasm3Parser::IncrementorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitIncrementor(this); -} - - -antlrcpp::Any qasm3Parser::IncrementorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitIncrementor(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::IncrementorContext* qasm3Parser::incrementor() { - IncrementorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 132, qasm3Parser::RuleIncrementor); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(694); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__49 - - || _la == qasm3Parser::T__50)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- BuiltInCallContext ------------------------------------------------------------------ - -qasm3Parser::BuiltInCallContext::BuiltInCallContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::BuiltInCallContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::BuiltInCallContext::expressionList() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::BuiltInCallContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -qasm3Parser::BuiltInMathContext* qasm3Parser::BuiltInCallContext::builtInMath() { - return getRuleContext(0); -} - -qasm3Parser::CastOperatorContext* qasm3Parser::BuiltInCallContext::castOperator() { - return getRuleContext(0); -} - - -size_t qasm3Parser::BuiltInCallContext::getRuleIndex() const { - return qasm3Parser::RuleBuiltInCall; -} - -void qasm3Parser::BuiltInCallContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBuiltInCall(this); -} - -void qasm3Parser::BuiltInCallContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBuiltInCall(this); -} - - -antlrcpp::Any qasm3Parser::BuiltInCallContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBuiltInCall(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::BuiltInCallContext* qasm3Parser::builtInCall() { - BuiltInCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 134, qasm3Parser::RuleBuiltInCall); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(698); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__51: - case qasm3Parser::T__52: - case qasm3Parser::T__53: - case qasm3Parser::T__54: - case qasm3Parser::T__55: - case qasm3Parser::T__56: - case qasm3Parser::T__57: - case qasm3Parser::T__58: - case qasm3Parser::T__59: - case qasm3Parser::T__60: - case qasm3Parser::T__61: - case qasm3Parser::T__62: - case qasm3Parser::T__63: { - setState(696); - builtInMath(); - break; - } - - case qasm3Parser::T__7: - case qasm3Parser::T__8: - case qasm3Parser::T__9: - case qasm3Parser::T__10: - case qasm3Parser::T__11: - case qasm3Parser::T__12: - case qasm3Parser::T__13: - case qasm3Parser::T__14: - case qasm3Parser::T__15: - case qasm3Parser::T__16: - case qasm3Parser::T__87: - case qasm3Parser::T__88: { - setState(697); - castOperator(); - break; - } - - default: - throw NoViableAltException(this); - } - setState(700); - match(qasm3Parser::LPAREN); - setState(701); - expressionList(); - setState(702); - match(qasm3Parser::RPAREN); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- BuiltInMathContext ------------------------------------------------------------------ - -qasm3Parser::BuiltInMathContext::BuiltInMathContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::BuiltInMathContext::getRuleIndex() const { - return qasm3Parser::RuleBuiltInMath; -} - -void qasm3Parser::BuiltInMathContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBuiltInMath(this); -} - -void qasm3Parser::BuiltInMathContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBuiltInMath(this); -} - - -antlrcpp::Any qasm3Parser::BuiltInMathContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBuiltInMath(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::BuiltInMathContext* qasm3Parser::builtInMath() { - BuiltInMathContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 136, qasm3Parser::RuleBuiltInMath); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(704); - _la = _input->LA(1); - if (!(((((_la - 52) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 52)) & ((1ULL << (qasm3Parser::T__51 - 52)) - | (1ULL << (qasm3Parser::T__52 - 52)) - | (1ULL << (qasm3Parser::T__53 - 52)) - | (1ULL << (qasm3Parser::T__54 - 52)) - | (1ULL << (qasm3Parser::T__55 - 52)) - | (1ULL << (qasm3Parser::T__56 - 52)) - | (1ULL << (qasm3Parser::T__57 - 52)) - | (1ULL << (qasm3Parser::T__58 - 52)) - | (1ULL << (qasm3Parser::T__59 - 52)) - | (1ULL << (qasm3Parser::T__60 - 52)) - | (1ULL << (qasm3Parser::T__61 - 52)) - | (1ULL << (qasm3Parser::T__62 - 52)) - | (1ULL << (qasm3Parser::T__63 - 52)))) != 0))) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- CastOperatorContext ------------------------------------------------------------------ - -qasm3Parser::CastOperatorContext::CastOperatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ClassicalTypeContext* qasm3Parser::CastOperatorContext::classicalType() { - return getRuleContext(0); -} - - -size_t qasm3Parser::CastOperatorContext::getRuleIndex() const { - return qasm3Parser::RuleCastOperator; -} - -void qasm3Parser::CastOperatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCastOperator(this); -} - -void qasm3Parser::CastOperatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCastOperator(this); -} - - -antlrcpp::Any qasm3Parser::CastOperatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCastOperator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::CastOperatorContext* qasm3Parser::castOperator() { - CastOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 138, qasm3Parser::RuleCastOperator); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(706); - classicalType(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ExpressionListContext ------------------------------------------------------------------ - -qasm3Parser::ExpressionListContext::ExpressionListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::ExpressionListContext::expression() { - return getRuleContexts(); -} - -qasm3Parser::ExpressionContext* qasm3Parser::ExpressionListContext::expression(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::ExpressionListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::ExpressionListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::ExpressionListContext::getRuleIndex() const { - return qasm3Parser::RuleExpressionList; -} - -void qasm3Parser::ExpressionListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterExpressionList(this); -} - -void qasm3Parser::ExpressionListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitExpressionList(this); -} - - -antlrcpp::Any qasm3Parser::ExpressionListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitExpressionList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::expressionList() { - ExpressionListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 140, qasm3Parser::RuleExpressionList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(713); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(708); - expression(0); - setState(709); - match(qasm3Parser::COMMA); - } - setState(715); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 57, _ctx); - } - setState(716); - expression(0); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- BooleanExpressionContext ------------------------------------------------------------------ - -qasm3Parser::BooleanExpressionContext::BooleanExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::MembershipTestContext* qasm3Parser::BooleanExpressionContext::membershipTest() { - return getRuleContext(0); -} - -qasm3Parser::ComparsionExpressionContext* qasm3Parser::BooleanExpressionContext::comparsionExpression() { - return getRuleContext(0); -} - -qasm3Parser::BooleanExpressionContext* qasm3Parser::BooleanExpressionContext::booleanExpression() { - return getRuleContext(0); -} - -qasm3Parser::LogicalOperatorContext* qasm3Parser::BooleanExpressionContext::logicalOperator() { - return getRuleContext(0); -} - - -size_t qasm3Parser::BooleanExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleBooleanExpression; -} - -void qasm3Parser::BooleanExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBooleanExpression(this); -} - -void qasm3Parser::BooleanExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBooleanExpression(this); -} - - -antlrcpp::Any qasm3Parser::BooleanExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBooleanExpression(this); - else - return visitor->visitChildren(this); -} - - -qasm3Parser::BooleanExpressionContext* qasm3Parser::booleanExpression() { - return booleanExpression(0); -} - -qasm3Parser::BooleanExpressionContext* qasm3Parser::booleanExpression(int precedence) { - ParserRuleContext *parentContext = _ctx; - size_t parentState = getState(); - qasm3Parser::BooleanExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); - qasm3Parser::BooleanExpressionContext *previousContext = _localctx; - (void)previousContext; // Silence compiler, in case the context is not used by generated code. - size_t startState = 142; - enterRecursionRule(_localctx, 142, qasm3Parser::RuleBooleanExpression, precedence); - - - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - unrollRecursionContexts(parentContext); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(721); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 58, _ctx)) { - case 1: { - setState(719); - membershipTest(); - break; - } - - case 2: { - setState(720); - comparsionExpression(); - break; - } - - default: - break; - } - _ctx->stop = _input->LT(-1); - setState(729); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 59, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - if (!_parseListeners.empty()) - triggerExitRuleEvent(); - previousContext = _localctx; - _localctx = _tracker.createInstance(parentContext, parentState); - pushNewRecursionContext(_localctx, startState, RuleBooleanExpression); - setState(723); - - if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(724); - logicalOperator(); - setState(725); - comparsionExpression(); - } - setState(731); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 59, _ctx); - } - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - return _localctx; -} - -//----------------- ComparsionExpressionContext ------------------------------------------------------------------ - -qasm3Parser::ComparsionExpressionContext::ComparsionExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::ComparsionExpressionContext::expression() { - return getRuleContexts(); -} - -qasm3Parser::ExpressionContext* qasm3Parser::ComparsionExpressionContext::expression(size_t i) { - return getRuleContext(i); -} - -qasm3Parser::RelationalOperatorContext* qasm3Parser::ComparsionExpressionContext::relationalOperator() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ComparsionExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleComparsionExpression; -} - -void qasm3Parser::ComparsionExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterComparsionExpression(this); -} - -void qasm3Parser::ComparsionExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitComparsionExpression(this); -} - - -antlrcpp::Any qasm3Parser::ComparsionExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitComparsionExpression(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ComparsionExpressionContext* qasm3Parser::comparsionExpression() { - ComparsionExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 144, qasm3Parser::RuleComparsionExpression); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(737); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 60, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(732); - expression(0); - break; - } - - case 2: { - enterOuterAlt(_localctx, 2); - setState(733); - expression(0); - setState(734); - relationalOperator(); - setState(735); - expression(0); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- EqualsExpressionContext ------------------------------------------------------------------ - -qasm3Parser::EqualsExpressionContext::EqualsExpressionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::EqualsExpressionContext::EQUALS() { - return getToken(qasm3Parser::EQUALS, 0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::EqualsExpressionContext::expression() { - return getRuleContext(0); -} - - -size_t qasm3Parser::EqualsExpressionContext::getRuleIndex() const { - return qasm3Parser::RuleEqualsExpression; -} - -void qasm3Parser::EqualsExpressionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterEqualsExpression(this); -} - -void qasm3Parser::EqualsExpressionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitEqualsExpression(this); -} - - -antlrcpp::Any qasm3Parser::EqualsExpressionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitEqualsExpression(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::EqualsExpressionContext* qasm3Parser::equalsExpression() { - EqualsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 146, qasm3Parser::RuleEqualsExpression); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(739); - match(qasm3Parser::EQUALS); - setState(740); - expression(0); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- AssignmentOperatorContext ------------------------------------------------------------------ - -qasm3Parser::AssignmentOperatorContext::AssignmentOperatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::AssignmentOperatorContext::EQUALS() { - return getToken(qasm3Parser::EQUALS, 0); -} - - -size_t qasm3Parser::AssignmentOperatorContext::getRuleIndex() const { - return qasm3Parser::RuleAssignmentOperator; -} - -void qasm3Parser::AssignmentOperatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterAssignmentOperator(this); -} - -void qasm3Parser::AssignmentOperatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitAssignmentOperator(this); -} - - -antlrcpp::Any qasm3Parser::AssignmentOperatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitAssignmentOperator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::AssignmentOperatorContext* qasm3Parser::assignmentOperator() { - AssignmentOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 148, qasm3Parser::RuleAssignmentOperator); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(742); - _la = _input->LA(1); - if (!(((((_la - 65) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 65)) & ((1ULL << (qasm3Parser::T__64 - 65)) - | (1ULL << (qasm3Parser::T__65 - 65)) - | (1ULL << (qasm3Parser::T__66 - 65)) - | (1ULL << (qasm3Parser::T__67 - 65)) - | (1ULL << (qasm3Parser::T__68 - 65)) - | (1ULL << (qasm3Parser::T__69 - 65)) - | (1ULL << (qasm3Parser::T__70 - 65)) - | (1ULL << (qasm3Parser::T__71 - 65)) - | (1ULL << (qasm3Parser::T__72 - 65)) - | (1ULL << (qasm3Parser::T__73 - 65)) - | (1ULL << (qasm3Parser::EQUALS - 65)))) != 0))) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- EqualsAssignmentListContext ------------------------------------------------------------------ - -qasm3Parser::EqualsAssignmentListContext::EqualsAssignmentListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::EqualsAssignmentListContext::Identifier() { - return getTokens(qasm3Parser::Identifier); -} - -tree::TerminalNode* qasm3Parser::EqualsAssignmentListContext::Identifier(size_t i) { - return getToken(qasm3Parser::Identifier, i); -} - -std::vector qasm3Parser::EqualsAssignmentListContext::equalsExpression() { - return getRuleContexts(); -} - -qasm3Parser::EqualsExpressionContext* qasm3Parser::EqualsAssignmentListContext::equalsExpression(size_t i) { - return getRuleContext(i); -} - -std::vector qasm3Parser::EqualsAssignmentListContext::COMMA() { - return getTokens(qasm3Parser::COMMA); -} - -tree::TerminalNode* qasm3Parser::EqualsAssignmentListContext::COMMA(size_t i) { - return getToken(qasm3Parser::COMMA, i); -} - - -size_t qasm3Parser::EqualsAssignmentListContext::getRuleIndex() const { - return qasm3Parser::RuleEqualsAssignmentList; -} - -void qasm3Parser::EqualsAssignmentListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterEqualsAssignmentList(this); -} - -void qasm3Parser::EqualsAssignmentListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitEqualsAssignmentList(this); -} - - -antlrcpp::Any qasm3Parser::EqualsAssignmentListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitEqualsAssignmentList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::EqualsAssignmentListContext* qasm3Parser::equalsAssignmentList() { - EqualsAssignmentListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 150, qasm3Parser::RuleEqualsAssignmentList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(750); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(744); - match(qasm3Parser::Identifier); - setState(745); - equalsExpression(); - setState(746); - match(qasm3Parser::COMMA); - } - setState(752); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 61, _ctx); - } - setState(753); - match(qasm3Parser::Identifier); - setState(754); - equalsExpression(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- MembershipTestContext ------------------------------------------------------------------ - -qasm3Parser::MembershipTestContext::MembershipTestContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::MembershipTestContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::SetDeclarationContext* qasm3Parser::MembershipTestContext::setDeclaration() { - return getRuleContext(0); -} - - -size_t qasm3Parser::MembershipTestContext::getRuleIndex() const { - return qasm3Parser::RuleMembershipTest; -} - -void qasm3Parser::MembershipTestContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterMembershipTest(this); -} - -void qasm3Parser::MembershipTestContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitMembershipTest(this); -} - - -antlrcpp::Any qasm3Parser::MembershipTestContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitMembershipTest(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::MembershipTestContext* qasm3Parser::membershipTest() { - MembershipTestContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 152, qasm3Parser::RuleMembershipTest); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(756); - match(qasm3Parser::Identifier); - setState(757); - match(qasm3Parser::T__74); - setState(758); - setDeclaration(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- SetDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::SetDeclarationContext::SetDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::SetDeclarationContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::SetDeclarationContext::expressionList() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::SetDeclarationContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - -qasm3Parser::RangeDefinitionContext* qasm3Parser::SetDeclarationContext::rangeDefinition() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::SetDeclarationContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - - -size_t qasm3Parser::SetDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleSetDeclaration; -} - -void qasm3Parser::SetDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterSetDeclaration(this); -} - -void qasm3Parser::SetDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitSetDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::SetDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitSetDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::SetDeclarationContext* qasm3Parser::setDeclaration() { - SetDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 154, qasm3Parser::RuleSetDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(766); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::LBRACE: { - enterOuterAlt(_localctx, 1); - setState(760); - match(qasm3Parser::LBRACE); - setState(761); - expressionList(); - setState(762); - match(qasm3Parser::RBRACE); - break; - } - - case qasm3Parser::LBRACKET: { - enterOuterAlt(_localctx, 2); - setState(764); - rangeDefinition(); - break; - } - - case qasm3Parser::Identifier: { - enterOuterAlt(_localctx, 3); - setState(765); - match(qasm3Parser::Identifier); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ProgramBlockContext ------------------------------------------------------------------ - -qasm3Parser::ProgramBlockContext::ProgramBlockContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::ProgramBlockContext::statement() { - return getRuleContexts(); -} - -qasm3Parser::StatementContext* qasm3Parser::ProgramBlockContext::statement(size_t i) { - return getRuleContext(i); -} - -tree::TerminalNode* qasm3Parser::ProgramBlockContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::ProgramBlockContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - - -size_t qasm3Parser::ProgramBlockContext::getRuleIndex() const { - return qasm3Parser::RuleProgramBlock; -} - -void qasm3Parser::ProgramBlockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterProgramBlock(this); -} - -void qasm3Parser::ProgramBlockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitProgramBlock(this); -} - - -antlrcpp::Any qasm3Parser::ProgramBlockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitProgramBlock(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ProgramBlockContext* qasm3Parser::programBlock() { - ProgramBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 156, qasm3Parser::RuleProgramBlock); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(777); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__2: - case qasm3Parser::T__4: - case qasm3Parser::T__7: - case qasm3Parser::T__8: - case qasm3Parser::T__9: - case qasm3Parser::T__10: - case qasm3Parser::T__11: - case qasm3Parser::T__12: - case qasm3Parser::T__13: - case qasm3Parser::T__14: - case qasm3Parser::T__15: - case qasm3Parser::T__16: - case qasm3Parser::T__17: - case qasm3Parser::T__18: - case qasm3Parser::T__21: - case qasm3Parser::T__22: - case qasm3Parser::T__23: - case qasm3Parser::T__24: - case qasm3Parser::T__25: - case qasm3Parser::T__26: - case qasm3Parser::T__27: - case qasm3Parser::T__28: - case qasm3Parser::T__30: - case qasm3Parser::T__31: - case qasm3Parser::T__32: - case qasm3Parser::T__51: - case qasm3Parser::T__52: - case qasm3Parser::T__53: - case qasm3Parser::T__54: - case qasm3Parser::T__55: - case qasm3Parser::T__56: - case qasm3Parser::T__57: - case qasm3Parser::T__58: - case qasm3Parser::T__59: - case qasm3Parser::T__60: - case qasm3Parser::T__61: - case qasm3Parser::T__62: - case qasm3Parser::T__63: - case qasm3Parser::T__75: - case qasm3Parser::T__77: - case qasm3Parser::T__78: - case qasm3Parser::T__80: - case qasm3Parser::T__81: - case qasm3Parser::T__82: - case qasm3Parser::T__85: - case qasm3Parser::T__87: - case qasm3Parser::T__88: - case qasm3Parser::T__89: - case qasm3Parser::T__90: - case qasm3Parser::T__91: - case qasm3Parser::T__92: - case qasm3Parser::T__93: - case qasm3Parser::LPAREN: - case qasm3Parser::MINUS: - case qasm3Parser::Constant: - case qasm3Parser::Integer: - case qasm3Parser::Identifier: - case qasm3Parser::RealNumber: - case qasm3Parser::TimingLiteral: - case qasm3Parser::StringLiteral: { - enterOuterAlt(_localctx, 1); - setState(768); - statement(); - break; - } - - case qasm3Parser::LBRACE: { - enterOuterAlt(_localctx, 2); - setState(769); - match(qasm3Parser::LBRACE); - setState(773); - _errHandler->sync(this); - _la = _input->LA(1); - while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) - | (1ULL << qasm3Parser::T__4) - | (1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__17) - | (1ULL << qasm3Parser::T__18) - | (1ULL << qasm3Parser::T__21) - | (1ULL << qasm3Parser::T__22) - | (1ULL << qasm3Parser::T__23) - | (1ULL << qasm3Parser::T__24) - | (1ULL << qasm3Parser::T__25) - | (1ULL << qasm3Parser::T__26) - | (1ULL << qasm3Parser::T__27) - | (1ULL << qasm3Parser::T__28) - | (1ULL << qasm3Parser::T__30) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__75 - 64)) - | (1ULL << (qasm3Parser::T__77 - 64)) - | (1ULL << (qasm3Parser::T__78 - 64)) - | (1ULL << (qasm3Parser::T__80 - 64)) - | (1ULL << (qasm3Parser::T__81 - 64)) - | (1ULL << (qasm3Parser::T__82 - 64)) - | (1ULL << (qasm3Parser::T__85 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__89 - 64)) - | (1ULL << (qasm3Parser::T__90 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::T__92 - 64)) - | (1ULL << (qasm3Parser::T__93 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(770); - statement(); - setState(775); - _errHandler->sync(this); - _la = _input->LA(1); - } - setState(776); - match(qasm3Parser::RBRACE); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- BranchingStatementContext ------------------------------------------------------------------ - -qasm3Parser::BranchingStatementContext::BranchingStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::BranchingStatementContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -qasm3Parser::BooleanExpressionContext* qasm3Parser::BranchingStatementContext::booleanExpression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::BranchingStatementContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -std::vector qasm3Parser::BranchingStatementContext::programBlock() { - return getRuleContexts(); -} - -qasm3Parser::ProgramBlockContext* qasm3Parser::BranchingStatementContext::programBlock(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::BranchingStatementContext::getRuleIndex() const { - return qasm3Parser::RuleBranchingStatement; -} - -void qasm3Parser::BranchingStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterBranchingStatement(this); -} - -void qasm3Parser::BranchingStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitBranchingStatement(this); -} - - -antlrcpp::Any qasm3Parser::BranchingStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitBranchingStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::BranchingStatementContext* qasm3Parser::branchingStatement() { - BranchingStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 158, qasm3Parser::RuleBranchingStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(779); - match(qasm3Parser::T__75); - setState(780); - match(qasm3Parser::LPAREN); - setState(781); - booleanExpression(0); - setState(782); - match(qasm3Parser::RPAREN); - setState(783); - programBlock(); - setState(786); - _errHandler->sync(this); - - switch (getInterpreter()->adaptivePredict(_input, 65, _ctx)) { - case 1: { - setState(784); - match(qasm3Parser::T__76); - setState(785); - programBlock(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- LoopSignatureContext ------------------------------------------------------------------ - -qasm3Parser::LoopSignatureContext::LoopSignatureContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::MembershipTestContext* qasm3Parser::LoopSignatureContext::membershipTest() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::LoopSignatureContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -qasm3Parser::BooleanExpressionContext* qasm3Parser::LoopSignatureContext::booleanExpression() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::LoopSignatureContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - - -size_t qasm3Parser::LoopSignatureContext::getRuleIndex() const { - return qasm3Parser::RuleLoopSignature; -} - -void qasm3Parser::LoopSignatureContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterLoopSignature(this); -} - -void qasm3Parser::LoopSignatureContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitLoopSignature(this); -} - - -antlrcpp::Any qasm3Parser::LoopSignatureContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitLoopSignature(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::LoopSignatureContext* qasm3Parser::loopSignature() { - LoopSignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 160, qasm3Parser::RuleLoopSignature); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(795); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__77: { - enterOuterAlt(_localctx, 1); - setState(788); - match(qasm3Parser::T__77); - setState(789); - membershipTest(); - break; - } - - case qasm3Parser::T__78: { - enterOuterAlt(_localctx, 2); - setState(790); - match(qasm3Parser::T__78); - setState(791); - match(qasm3Parser::LPAREN); - setState(792); - booleanExpression(0); - setState(793); - match(qasm3Parser::RPAREN); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- LoopStatementContext ------------------------------------------------------------------ - -qasm3Parser::LoopStatementContext::LoopStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::LoopSignatureContext* qasm3Parser::LoopStatementContext::loopSignature() { - return getRuleContext(0); -} - -qasm3Parser::ProgramBlockContext* qasm3Parser::LoopStatementContext::programBlock() { - return getRuleContext(0); -} - - -size_t qasm3Parser::LoopStatementContext::getRuleIndex() const { - return qasm3Parser::RuleLoopStatement; -} - -void qasm3Parser::LoopStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterLoopStatement(this); -} - -void qasm3Parser::LoopStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitLoopStatement(this); -} - - -antlrcpp::Any qasm3Parser::LoopStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitLoopStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::LoopStatementContext* qasm3Parser::loopStatement() { - LoopStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 162, qasm3Parser::RuleLoopStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(797); - loopSignature(); - setState(798); - programBlock(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- CLikeLoopStatementContext ------------------------------------------------------------------ - -qasm3Parser::CLikeLoopStatementContext::CLikeLoopStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -std::vector qasm3Parser::CLikeLoopStatementContext::LPAREN() { - return getTokens(qasm3Parser::LPAREN); -} - -tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::LPAREN(size_t i) { - return getToken(qasm3Parser::LPAREN, i); -} - -qasm3Parser::ClassicalTypeContext* qasm3Parser::CLikeLoopStatementContext::classicalType() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::EqualsExpressionContext* qasm3Parser::CLikeLoopStatementContext::equalsExpression() { - return getRuleContext(0); -} - -std::vector qasm3Parser::CLikeLoopStatementContext::SEMICOLON() { - return getTokens(qasm3Parser::SEMICOLON); -} - -tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::SEMICOLON(size_t i) { - return getToken(qasm3Parser::SEMICOLON, i); -} - -qasm3Parser::BooleanExpressionContext* qasm3Parser::CLikeLoopStatementContext::booleanExpression() { - return getRuleContext(0); -} - -qasm3Parser::ExpressionContext* qasm3Parser::CLikeLoopStatementContext::expression() { - return getRuleContext(0); -} - -std::vector qasm3Parser::CLikeLoopStatementContext::RPAREN() { - return getTokens(qasm3Parser::RPAREN); -} - -tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::RPAREN(size_t i) { - return getToken(qasm3Parser::RPAREN, i); -} - -tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -qasm3Parser::ProgramBlockContext* qasm3Parser::CLikeLoopStatementContext::programBlock() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::COLON() { - return getToken(qasm3Parser::COLON, 0); -} - - -size_t qasm3Parser::CLikeLoopStatementContext::getRuleIndex() const { - return qasm3Parser::RuleCLikeLoopStatement; -} - -void qasm3Parser::CLikeLoopStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCLikeLoopStatement(this); -} - -void qasm3Parser::CLikeLoopStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCLikeLoopStatement(this); -} - - -antlrcpp::Any qasm3Parser::CLikeLoopStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCLikeLoopStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::CLikeLoopStatementContext* qasm3Parser::cLikeLoopStatement() { - CLikeLoopStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 164, qasm3Parser::RuleCLikeLoopStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(828); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 67, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(800); - match(qasm3Parser::T__77); - setState(801); - match(qasm3Parser::LPAREN); - setState(802); - classicalType(); - setState(803); - match(qasm3Parser::Identifier); - setState(804); - equalsExpression(); - setState(805); - match(qasm3Parser::SEMICOLON); - setState(806); - booleanExpression(0); - setState(807); - match(qasm3Parser::SEMICOLON); - setState(808); - expression(0); - setState(809); - match(qasm3Parser::RPAREN); - setState(810); - match(qasm3Parser::LBRACE); - setState(811); - programBlock(); - setState(812); - match(qasm3Parser::RBRACE); - break; - } - - case 2: { - enterOuterAlt(_localctx, 2); - setState(814); - match(qasm3Parser::T__77); - setState(815); - match(qasm3Parser::LPAREN); - setState(816); - classicalType(); - setState(817); - match(qasm3Parser::Identifier); - setState(818); - match(qasm3Parser::COLON); - setState(819); - match(qasm3Parser::T__79); - setState(820); - match(qasm3Parser::LPAREN); - setState(821); - expression(0); - setState(822); - match(qasm3Parser::RPAREN); - setState(823); - match(qasm3Parser::RPAREN); - setState(824); - match(qasm3Parser::LBRACE); - setState(825); - programBlock(); - setState(826); - match(qasm3Parser::RBRACE); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ControlDirectiveStatementContext ------------------------------------------------------------------ - -qasm3Parser::ControlDirectiveStatementContext::ControlDirectiveStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ControlDirectiveContext* qasm3Parser::ControlDirectiveStatementContext::controlDirective() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::ControlDirectiveStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::ControlDirectiveStatementContext::getRuleIndex() const { - return qasm3Parser::RuleControlDirectiveStatement; -} - -void qasm3Parser::ControlDirectiveStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterControlDirectiveStatement(this); -} - -void qasm3Parser::ControlDirectiveStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitControlDirectiveStatement(this); -} - - -antlrcpp::Any qasm3Parser::ControlDirectiveStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitControlDirectiveStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ControlDirectiveStatementContext* qasm3Parser::controlDirectiveStatement() { - ControlDirectiveStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 166, qasm3Parser::RuleControlDirectiveStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(830); - controlDirective(); - setState(831); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ControlDirectiveContext ------------------------------------------------------------------ - -qasm3Parser::ControlDirectiveContext::ControlDirectiveContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::ControlDirectiveContext::getRuleIndex() const { - return qasm3Parser::RuleControlDirective; -} - -void qasm3Parser::ControlDirectiveContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterControlDirective(this); -} - -void qasm3Parser::ControlDirectiveContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitControlDirective(this); -} - - -antlrcpp::Any qasm3Parser::ControlDirectiveContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitControlDirective(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ControlDirectiveContext* qasm3Parser::controlDirective() { - ControlDirectiveContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 168, qasm3Parser::RuleControlDirective); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(833); - _la = _input->LA(1); - if (!(((((_la - 81) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 81)) & ((1ULL << (qasm3Parser::T__80 - 81)) - | (1ULL << (qasm3Parser::T__81 - 81)) - | (1ULL << (qasm3Parser::T__82 - 81)))) != 0))) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- KernelDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::KernelDeclarationContext::KernelDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::KernelDeclarationContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -tree::TerminalNode* qasm3Parser::KernelDeclarationContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - -tree::TerminalNode* qasm3Parser::KernelDeclarationContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::KernelDeclarationContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -qasm3Parser::ReturnSignatureContext* qasm3Parser::KernelDeclarationContext::returnSignature() { - return getRuleContext(0); -} - -qasm3Parser::ClassicalTypeContext* qasm3Parser::KernelDeclarationContext::classicalType() { - return getRuleContext(0); -} - -qasm3Parser::ClassicalTypeListContext* qasm3Parser::KernelDeclarationContext::classicalTypeList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::KernelDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleKernelDeclaration; -} - -void qasm3Parser::KernelDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterKernelDeclaration(this); -} - -void qasm3Parser::KernelDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitKernelDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::KernelDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitKernelDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::KernelDeclarationContext* qasm3Parser::kernelDeclaration() { - KernelDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 170, qasm3Parser::RuleKernelDeclaration); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(835); - match(qasm3Parser::T__83); - setState(836); - match(qasm3Parser::Identifier); - setState(842); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LPAREN) { - setState(837); - match(qasm3Parser::LPAREN); - setState(839); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16))) != 0) || _la == qasm3Parser::T__87 - - || _la == qasm3Parser::T__88) { - setState(838); - classicalTypeList(); - } - setState(841); - match(qasm3Parser::RPAREN); - } - setState(845); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::ARROW) { - setState(844); - returnSignature(); - } - setState(848); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16))) != 0) || _la == qasm3Parser::T__87 - - || _la == qasm3Parser::T__88) { - setState(847); - classicalType(); - } - setState(850); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- KernelCallContext ------------------------------------------------------------------ - -qasm3Parser::KernelCallContext::KernelCallContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::KernelCallContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -tree::TerminalNode* qasm3Parser::KernelCallContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::KernelCallContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::KernelCallContext::expressionList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::KernelCallContext::getRuleIndex() const { - return qasm3Parser::RuleKernelCall; -} - -void qasm3Parser::KernelCallContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterKernelCall(this); -} - -void qasm3Parser::KernelCallContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitKernelCall(this); -} - - -antlrcpp::Any qasm3Parser::KernelCallContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitKernelCall(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::KernelCallContext* qasm3Parser::kernelCall() { - KernelCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 172, qasm3Parser::RuleKernelCall); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(852); - match(qasm3Parser::Identifier); - setState(853); - match(qasm3Parser::LPAREN); - setState(855); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(854); - expressionList(); - } - setState(857); - match(qasm3Parser::RPAREN); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- SubroutineDefinitionContext ------------------------------------------------------------------ - -qasm3Parser::SubroutineDefinitionContext::SubroutineDefinitionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::SubroutineDefinitionContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::SubroutineBlockContext* qasm3Parser::SubroutineDefinitionContext::subroutineBlock() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::SubroutineDefinitionContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::SubroutineDefinitionContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -qasm3Parser::QuantumArgumentListContext* qasm3Parser::SubroutineDefinitionContext::quantumArgumentList() { - return getRuleContext(0); -} - -qasm3Parser::ReturnSignatureContext* qasm3Parser::SubroutineDefinitionContext::returnSignature() { - return getRuleContext(0); -} - -qasm3Parser::ClassicalArgumentListContext* qasm3Parser::SubroutineDefinitionContext::classicalArgumentList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::SubroutineDefinitionContext::getRuleIndex() const { - return qasm3Parser::RuleSubroutineDefinition; -} - -void qasm3Parser::SubroutineDefinitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterSubroutineDefinition(this); -} - -void qasm3Parser::SubroutineDefinitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitSubroutineDefinition(this); -} - - -antlrcpp::Any qasm3Parser::SubroutineDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitSubroutineDefinition(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::SubroutineDefinitionContext* qasm3Parser::subroutineDefinition() { - SubroutineDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 174, qasm3Parser::RuleSubroutineDefinition); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(859); - match(qasm3Parser::T__84); - setState(860); - match(qasm3Parser::Identifier); - setState(866); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LPAREN) { - setState(861); - match(qasm3Parser::LPAREN); - setState(863); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16))) != 0) || _la == qasm3Parser::T__87 - - || _la == qasm3Parser::T__88) { - setState(862); - classicalArgumentList(); - } - setState(865); - match(qasm3Parser::RPAREN); - } - setState(869); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::T__5 - - || _la == qasm3Parser::T__6) { - setState(868); - quantumArgumentList(); - } - setState(872); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::ARROW) { - setState(871); - returnSignature(); - } - setState(874); - subroutineBlock(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- ReturnStatementContext ------------------------------------------------------------------ - -qasm3Parser::ReturnStatementContext::ReturnStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::StatementContext* qasm3Parser::ReturnStatementContext::statement() { - return getRuleContext(0); -} - - -size_t qasm3Parser::ReturnStatementContext::getRuleIndex() const { - return qasm3Parser::RuleReturnStatement; -} - -void qasm3Parser::ReturnStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterReturnStatement(this); -} - -void qasm3Parser::ReturnStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitReturnStatement(this); -} - - -antlrcpp::Any qasm3Parser::ReturnStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitReturnStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::ReturnStatementContext* qasm3Parser::returnStatement() { - ReturnStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 176, qasm3Parser::RuleReturnStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(876); - match(qasm3Parser::T__85); - setState(877); - statement(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- SubroutineBlockContext ------------------------------------------------------------------ - -qasm3Parser::SubroutineBlockContext::SubroutineBlockContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::SubroutineBlockContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::SubroutineBlockContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - -std::vector qasm3Parser::SubroutineBlockContext::statement() { - return getRuleContexts(); -} - -qasm3Parser::StatementContext* qasm3Parser::SubroutineBlockContext::statement(size_t i) { - return getRuleContext(i); -} - -qasm3Parser::ReturnStatementContext* qasm3Parser::SubroutineBlockContext::returnStatement() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::SubroutineBlockContext::EXTERN() { - return getToken(qasm3Parser::EXTERN, 0); -} - -tree::TerminalNode* qasm3Parser::SubroutineBlockContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::SubroutineBlockContext::getRuleIndex() const { - return qasm3Parser::RuleSubroutineBlock; -} - -void qasm3Parser::SubroutineBlockContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterSubroutineBlock(this); -} - -void qasm3Parser::SubroutineBlockContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitSubroutineBlock(this); -} - - -antlrcpp::Any qasm3Parser::SubroutineBlockContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitSubroutineBlock(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::SubroutineBlockContext* qasm3Parser::subroutineBlock() { - SubroutineBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 178, qasm3Parser::RuleSubroutineBlock); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - setState(892); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::LBRACE: { - enterOuterAlt(_localctx, 1); - setState(879); - match(qasm3Parser::LBRACE); - setState(883); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 77, _ctx); - while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1) { - setState(880); - statement(); - } - setState(885); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 77, _ctx); - } - setState(887); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::T__85) { - setState(886); - returnStatement(); - } - setState(889); - match(qasm3Parser::RBRACE); - break; - } - - case qasm3Parser::EXTERN: { - enterOuterAlt(_localctx, 2); - setState(890); - match(qasm3Parser::EXTERN); - setState(891); - match(qasm3Parser::SEMICOLON); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- SubroutineCallContext ------------------------------------------------------------------ - -qasm3Parser::SubroutineCallContext::SubroutineCallContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::SubroutineCallContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -std::vector qasm3Parser::SubroutineCallContext::expressionList() { - return getRuleContexts(); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::SubroutineCallContext::expressionList(size_t i) { - return getRuleContext(i); -} - -tree::TerminalNode* qasm3Parser::SubroutineCallContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::SubroutineCallContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - - -size_t qasm3Parser::SubroutineCallContext::getRuleIndex() const { - return qasm3Parser::RuleSubroutineCall; -} - -void qasm3Parser::SubroutineCallContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterSubroutineCall(this); -} - -void qasm3Parser::SubroutineCallContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitSubroutineCall(this); -} - - -antlrcpp::Any qasm3Parser::SubroutineCallContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitSubroutineCall(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::SubroutineCallContext* qasm3Parser::subroutineCall() { - SubroutineCallContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 180, qasm3Parser::RuleSubroutineCall); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(894); - match(qasm3Parser::Identifier); - - setState(895); - match(qasm3Parser::LPAREN); - setState(897); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(896); - expressionList(); - } - setState(899); - match(qasm3Parser::RPAREN); - setState(901); - expressionList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- PragmaContext ------------------------------------------------------------------ - -qasm3Parser::PragmaContext::PragmaContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::PragmaContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::PragmaContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - -std::vector qasm3Parser::PragmaContext::statement() { - return getRuleContexts(); -} - -qasm3Parser::StatementContext* qasm3Parser::PragmaContext::statement(size_t i) { - return getRuleContext(i); -} - - -size_t qasm3Parser::PragmaContext::getRuleIndex() const { - return qasm3Parser::RulePragma; -} - -void qasm3Parser::PragmaContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterPragma(this); -} - -void qasm3Parser::PragmaContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitPragma(this); -} - - -antlrcpp::Any qasm3Parser::PragmaContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitPragma(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::PragmaContext* qasm3Parser::pragma() { - PragmaContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 182, qasm3Parser::RulePragma); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(903); - match(qasm3Parser::T__86); - setState(904); - match(qasm3Parser::LBRACE); - setState(908); - _errHandler->sync(this); - _la = _input->LA(1); - while ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) - | (1ULL << qasm3Parser::T__4) - | (1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__17) - | (1ULL << qasm3Parser::T__18) - | (1ULL << qasm3Parser::T__21) - | (1ULL << qasm3Parser::T__22) - | (1ULL << qasm3Parser::T__23) - | (1ULL << qasm3Parser::T__24) - | (1ULL << qasm3Parser::T__25) - | (1ULL << qasm3Parser::T__26) - | (1ULL << qasm3Parser::T__27) - | (1ULL << qasm3Parser::T__28) - | (1ULL << qasm3Parser::T__30) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__75 - 64)) - | (1ULL << (qasm3Parser::T__77 - 64)) - | (1ULL << (qasm3Parser::T__78 - 64)) - | (1ULL << (qasm3Parser::T__80 - 64)) - | (1ULL << (qasm3Parser::T__81 - 64)) - | (1ULL << (qasm3Parser::T__82 - 64)) - | (1ULL << (qasm3Parser::T__85 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__89 - 64)) - | (1ULL << (qasm3Parser::T__90 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::T__92 - 64)) - | (1ULL << (qasm3Parser::T__93 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(905); - statement(); - setState(910); - _errHandler->sync(this); - _la = _input->LA(1); - } - setState(911); - match(qasm3Parser::RBRACE); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- TimingTypeContext ------------------------------------------------------------------ - -qasm3Parser::TimingTypeContext::TimingTypeContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::TimingTypeContext::Integer() { - return getToken(qasm3Parser::Integer, 0); -} - - -size_t qasm3Parser::TimingTypeContext::getRuleIndex() const { - return qasm3Parser::RuleTimingType; -} - -void qasm3Parser::TimingTypeContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterTimingType(this); -} - -void qasm3Parser::TimingTypeContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitTimingType(this); -} - - -antlrcpp::Any qasm3Parser::TimingTypeContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTimingType(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::TimingTypeContext* qasm3Parser::timingType() { - TimingTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 184, qasm3Parser::RuleTimingType); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(918); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__87: { - enterOuterAlt(_localctx, 1); - setState(913); - match(qasm3Parser::T__87); - break; - } - - case qasm3Parser::T__88: { - enterOuterAlt(_localctx, 2); - setState(914); - match(qasm3Parser::T__88); - setState(916); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::Integer) { - setState(915); - match(qasm3Parser::Integer); - } - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- TimingBoxContext ------------------------------------------------------------------ - -qasm3Parser::TimingBoxContext::TimingBoxContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::TimingBoxContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::QuantumBlockContext* qasm3Parser::TimingBoxContext::quantumBlock() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::TimingBoxContext::TimingLiteral() { - return getToken(qasm3Parser::TimingLiteral, 0); -} - - -size_t qasm3Parser::TimingBoxContext::getRuleIndex() const { - return qasm3Parser::RuleTimingBox; -} - -void qasm3Parser::TimingBoxContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterTimingBox(this); -} - -void qasm3Parser::TimingBoxContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitTimingBox(this); -} - - -antlrcpp::Any qasm3Parser::TimingBoxContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTimingBox(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::TimingBoxContext* qasm3Parser::timingBox() { - TimingBoxContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 186, qasm3Parser::RuleTimingBox); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(926); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__89: { - enterOuterAlt(_localctx, 1); - setState(920); - match(qasm3Parser::T__89); - setState(921); - match(qasm3Parser::Identifier); - setState(922); - quantumBlock(); - break; - } - - case qasm3Parser::T__90: { - enterOuterAlt(_localctx, 2); - setState(923); - match(qasm3Parser::T__90); - setState(924); - match(qasm3Parser::TimingLiteral); - setState(925); - quantumBlock(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- TimingTerminatorContext ------------------------------------------------------------------ - -qasm3Parser::TimingTerminatorContext::TimingTerminatorContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::TimingIdentifierContext* qasm3Parser::TimingTerminatorContext::timingIdentifier() { - return getRuleContext(0); -} - - -size_t qasm3Parser::TimingTerminatorContext::getRuleIndex() const { - return qasm3Parser::RuleTimingTerminator; -} - -void qasm3Parser::TimingTerminatorContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterTimingTerminator(this); -} - -void qasm3Parser::TimingTerminatorContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitTimingTerminator(this); -} - - -antlrcpp::Any qasm3Parser::TimingTerminatorContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTimingTerminator(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::TimingTerminatorContext* qasm3Parser::timingTerminator() { - TimingTerminatorContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 188, qasm3Parser::RuleTimingTerminator); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(930); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__63: - case qasm3Parser::TimingLiteral: { - enterOuterAlt(_localctx, 1); - setState(928); - timingIdentifier(); - break; - } - - case qasm3Parser::T__91: { - enterOuterAlt(_localctx, 2); - setState(929); - match(qasm3Parser::T__91); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- TimingIdentifierContext ------------------------------------------------------------------ - -qasm3Parser::TimingIdentifierContext::TimingIdentifierContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::TimingIdentifierContext::TimingLiteral() { - return getToken(qasm3Parser::TimingLiteral, 0); -} - -tree::TerminalNode* qasm3Parser::TimingIdentifierContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::TimingIdentifierContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::TimingIdentifierContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::QuantumBlockContext* qasm3Parser::TimingIdentifierContext::quantumBlock() { - return getRuleContext(0); -} - - -size_t qasm3Parser::TimingIdentifierContext::getRuleIndex() const { - return qasm3Parser::RuleTimingIdentifier; -} - -void qasm3Parser::TimingIdentifierContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterTimingIdentifier(this); -} - -void qasm3Parser::TimingIdentifierContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitTimingIdentifier(this); -} - - -antlrcpp::Any qasm3Parser::TimingIdentifierContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTimingIdentifier(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::TimingIdentifierContext* qasm3Parser::timingIdentifier() { - TimingIdentifierContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 190, qasm3Parser::RuleTimingIdentifier); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(940); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::TimingLiteral: { - enterOuterAlt(_localctx, 1); - setState(932); - match(qasm3Parser::TimingLiteral); - break; - } - - case qasm3Parser::T__63: { - enterOuterAlt(_localctx, 2); - setState(933); - match(qasm3Parser::T__63); - setState(934); - match(qasm3Parser::LPAREN); - setState(937); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::Identifier: { - setState(935); - match(qasm3Parser::Identifier); - break; - } - - case qasm3Parser::LBRACE: { - setState(936); - quantumBlock(); - break; - } - - default: - throw NoViableAltException(this); - } - setState(939); - match(qasm3Parser::RPAREN); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- TimingInstructionNameContext ------------------------------------------------------------------ - -qasm3Parser::TimingInstructionNameContext::TimingInstructionNameContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - - -size_t qasm3Parser::TimingInstructionNameContext::getRuleIndex() const { - return qasm3Parser::RuleTimingInstructionName; -} - -void qasm3Parser::TimingInstructionNameContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterTimingInstructionName(this); -} - -void qasm3Parser::TimingInstructionNameContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitTimingInstructionName(this); -} - - -antlrcpp::Any qasm3Parser::TimingInstructionNameContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTimingInstructionName(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::TimingInstructionNameContext* qasm3Parser::timingInstructionName() { - TimingInstructionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 192, qasm3Parser::RuleTimingInstructionName); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(942); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__92 - - || _la == qasm3Parser::T__93)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- TimingInstructionContext ------------------------------------------------------------------ - -qasm3Parser::TimingInstructionContext::TimingInstructionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::TimingInstructionNameContext* qasm3Parser::TimingInstructionContext::timingInstructionName() { - return getRuleContext(0); -} - -qasm3Parser::DesignatorContext* qasm3Parser::TimingInstructionContext::designator() { - return getRuleContext(0); -} - -qasm3Parser::IndexIdentifierListContext* qasm3Parser::TimingInstructionContext::indexIdentifierList() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::TimingInstructionContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::TimingInstructionContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::TimingInstructionContext::expressionList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::TimingInstructionContext::getRuleIndex() const { - return qasm3Parser::RuleTimingInstruction; -} - -void qasm3Parser::TimingInstructionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterTimingInstruction(this); -} - -void qasm3Parser::TimingInstructionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitTimingInstruction(this); -} - - -antlrcpp::Any qasm3Parser::TimingInstructionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTimingInstruction(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::TimingInstructionContext* qasm3Parser::timingInstruction() { - TimingInstructionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 194, qasm3Parser::RuleTimingInstruction); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(944); - timingInstructionName(); - setState(950); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LPAREN) { - setState(945); - match(qasm3Parser::LPAREN); - setState(947); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(946); - expressionList(); - } - setState(949); - match(qasm3Parser::RPAREN); - } - setState(952); - designator(); - setState(953); - indexIdentifierList(); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- TimingStatementContext ------------------------------------------------------------------ - -qasm3Parser::TimingStatementContext::TimingStatementContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::TimingInstructionContext* qasm3Parser::TimingStatementContext::timingInstruction() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::TimingStatementContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - -qasm3Parser::TimingBoxContext* qasm3Parser::TimingStatementContext::timingBox() { - return getRuleContext(0); -} - - -size_t qasm3Parser::TimingStatementContext::getRuleIndex() const { - return qasm3Parser::RuleTimingStatement; -} - -void qasm3Parser::TimingStatementContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterTimingStatement(this); -} - -void qasm3Parser::TimingStatementContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitTimingStatement(this); -} - - -antlrcpp::Any qasm3Parser::TimingStatementContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitTimingStatement(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::TimingStatementContext* qasm3Parser::timingStatement() { - TimingStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 196, qasm3Parser::RuleTimingStatement); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(959); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__92: - case qasm3Parser::T__93: { - enterOuterAlt(_localctx, 1); - setState(955); - timingInstruction(); - setState(956); - match(qasm3Parser::SEMICOLON); - break; - } - - case qasm3Parser::T__89: - case qasm3Parser::T__90: { - enterOuterAlt(_localctx, 2); - setState(958); - timingBox(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- CalibrationContext ------------------------------------------------------------------ - -qasm3Parser::CalibrationContext::CalibrationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::CalibrationGrammarDeclarationContext* qasm3Parser::CalibrationContext::calibrationGrammarDeclaration() { - return getRuleContext(0); -} - -qasm3Parser::CalibrationDefinitionContext* qasm3Parser::CalibrationContext::calibrationDefinition() { - return getRuleContext(0); -} - - -size_t qasm3Parser::CalibrationContext::getRuleIndex() const { - return qasm3Parser::RuleCalibration; -} - -void qasm3Parser::CalibrationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCalibration(this); -} - -void qasm3Parser::CalibrationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCalibration(this); -} - - -antlrcpp::Any qasm3Parser::CalibrationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCalibration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::CalibrationContext* qasm3Parser::calibration() { - CalibrationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 198, qasm3Parser::RuleCalibration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(963); - _errHandler->sync(this); - switch (_input->LA(1)) { - case qasm3Parser::T__94: { - enterOuterAlt(_localctx, 1); - setState(961); - calibrationGrammarDeclaration(); - break; - } - - case qasm3Parser::T__95: { - enterOuterAlt(_localctx, 2); - setState(962); - calibrationDefinition(); - break; - } - - default: - throw NoViableAltException(this); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- CalibrationGrammarDeclarationContext ------------------------------------------------------------------ - -qasm3Parser::CalibrationGrammarDeclarationContext::CalibrationGrammarDeclarationContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::CalibrationGrammarContext* qasm3Parser::CalibrationGrammarDeclarationContext::calibrationGrammar() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::CalibrationGrammarDeclarationContext::SEMICOLON() { - return getToken(qasm3Parser::SEMICOLON, 0); -} - - -size_t qasm3Parser::CalibrationGrammarDeclarationContext::getRuleIndex() const { - return qasm3Parser::RuleCalibrationGrammarDeclaration; -} - -void qasm3Parser::CalibrationGrammarDeclarationContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCalibrationGrammarDeclaration(this); -} - -void qasm3Parser::CalibrationGrammarDeclarationContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCalibrationGrammarDeclaration(this); -} - - -antlrcpp::Any qasm3Parser::CalibrationGrammarDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCalibrationGrammarDeclaration(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::CalibrationGrammarDeclarationContext* qasm3Parser::calibrationGrammarDeclaration() { - CalibrationGrammarDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 200, qasm3Parser::RuleCalibrationGrammarDeclaration); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(965); - match(qasm3Parser::T__94); - setState(966); - calibrationGrammar(); - setState(967); - match(qasm3Parser::SEMICOLON); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- CalibrationDefinitionContext ------------------------------------------------------------------ - -qasm3Parser::CalibrationDefinitionContext::CalibrationDefinitionContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::Identifier() { - return getToken(qasm3Parser::Identifier, 0); -} - -qasm3Parser::IdentifierListContext* qasm3Parser::CalibrationDefinitionContext::identifierList() { - return getRuleContext(0); -} - -tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::LBRACE() { - return getToken(qasm3Parser::LBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::RBRACE() { - return getToken(qasm3Parser::RBRACE, 0); -} - -tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::LPAREN() { - return getToken(qasm3Parser::LPAREN, 0); -} - -tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::RPAREN() { - return getToken(qasm3Parser::RPAREN, 0); -} - -qasm3Parser::ReturnSignatureContext* qasm3Parser::CalibrationDefinitionContext::returnSignature() { - return getRuleContext(0); -} - -qasm3Parser::CalibrationArgumentListContext* qasm3Parser::CalibrationDefinitionContext::calibrationArgumentList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::CalibrationDefinitionContext::getRuleIndex() const { - return qasm3Parser::RuleCalibrationDefinition; -} - -void qasm3Parser::CalibrationDefinitionContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCalibrationDefinition(this); -} - -void qasm3Parser::CalibrationDefinitionContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCalibrationDefinition(this); -} - - -antlrcpp::Any qasm3Parser::CalibrationDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCalibrationDefinition(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::CalibrationDefinitionContext* qasm3Parser::calibrationDefinition() { - CalibrationDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 202, qasm3Parser::RuleCalibrationDefinition); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - size_t alt; - enterOuterAlt(_localctx, 1); - setState(969); - match(qasm3Parser::T__95); - setState(970); - match(qasm3Parser::Identifier); - setState(976); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::LPAREN) { - setState(971); - match(qasm3Parser::LPAREN); - setState(973); - _errHandler->sync(this); - - _la = _input->LA(1); - if ((((_la & ~ 0x3fULL) == 0) && - ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) - | (1ULL << qasm3Parser::T__8) - | (1ULL << qasm3Parser::T__9) - | (1ULL << qasm3Parser::T__10) - | (1ULL << qasm3Parser::T__11) - | (1ULL << qasm3Parser::T__12) - | (1ULL << qasm3Parser::T__13) - | (1ULL << qasm3Parser::T__14) - | (1ULL << qasm3Parser::T__15) - | (1ULL << qasm3Parser::T__16) - | (1ULL << qasm3Parser::T__31) - | (1ULL << qasm3Parser::T__32) - | (1ULL << qasm3Parser::T__51) - | (1ULL << qasm3Parser::T__52) - | (1ULL << qasm3Parser::T__53) - | (1ULL << qasm3Parser::T__54) - | (1ULL << qasm3Parser::T__55) - | (1ULL << qasm3Parser::T__56) - | (1ULL << qasm3Parser::T__57) - | (1ULL << qasm3Parser::T__58) - | (1ULL << qasm3Parser::T__59) - | (1ULL << qasm3Parser::T__60) - | (1ULL << qasm3Parser::T__61) - | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && - ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) - | (1ULL << (qasm3Parser::T__87 - 64)) - | (1ULL << (qasm3Parser::T__88 - 64)) - | (1ULL << (qasm3Parser::T__91 - 64)) - | (1ULL << (qasm3Parser::LPAREN - 64)) - | (1ULL << (qasm3Parser::MINUS - 64)) - | (1ULL << (qasm3Parser::Constant - 64)) - | (1ULL << (qasm3Parser::Integer - 64)) - | (1ULL << (qasm3Parser::Identifier - 64)) - | (1ULL << (qasm3Parser::RealNumber - 64)) - | (1ULL << (qasm3Parser::TimingLiteral - 64)) - | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { - setState(972); - calibrationArgumentList(); - } - setState(975); - match(qasm3Parser::RPAREN); - } - setState(978); - identifierList(); - setState(980); - _errHandler->sync(this); - - _la = _input->LA(1); - if (_la == qasm3Parser::ARROW) { - setState(979); - returnSignature(); - } - setState(982); - match(qasm3Parser::LBRACE); - setState(986); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 95, _ctx); - while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { - if (alt == 1 + 1) { - setState(983); - matchWildcard(); - } - setState(988); - _errHandler->sync(this); - alt = getInterpreter()->adaptivePredict(_input, 95, _ctx); - } - setState(989); - match(qasm3Parser::RBRACE); - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- CalibrationGrammarContext ------------------------------------------------------------------ - -qasm3Parser::CalibrationGrammarContext::CalibrationGrammarContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -tree::TerminalNode* qasm3Parser::CalibrationGrammarContext::StringLiteral() { - return getToken(qasm3Parser::StringLiteral, 0); -} - - -size_t qasm3Parser::CalibrationGrammarContext::getRuleIndex() const { - return qasm3Parser::RuleCalibrationGrammar; -} - -void qasm3Parser::CalibrationGrammarContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCalibrationGrammar(this); -} - -void qasm3Parser::CalibrationGrammarContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCalibrationGrammar(this); -} - - -antlrcpp::Any qasm3Parser::CalibrationGrammarContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCalibrationGrammar(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::CalibrationGrammarContext* qasm3Parser::calibrationGrammar() { - CalibrationGrammarContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 204, qasm3Parser::RuleCalibrationGrammar); - size_t _la = 0; - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - enterOuterAlt(_localctx, 1); - setState(991); - _la = _input->LA(1); - if (!(_la == qasm3Parser::T__96 - - || _la == qasm3Parser::StringLiteral)) { - _errHandler->recoverInline(this); - } - else { - _errHandler->reportMatch(this); - consume(); - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -//----------------- CalibrationArgumentListContext ------------------------------------------------------------------ - -qasm3Parser::CalibrationArgumentListContext::CalibrationArgumentListContext(ParserRuleContext *parent, size_t invokingState) - : ParserRuleContext(parent, invokingState) { -} - -qasm3Parser::ClassicalArgumentListContext* qasm3Parser::CalibrationArgumentListContext::classicalArgumentList() { - return getRuleContext(0); -} - -qasm3Parser::ExpressionListContext* qasm3Parser::CalibrationArgumentListContext::expressionList() { - return getRuleContext(0); -} - - -size_t qasm3Parser::CalibrationArgumentListContext::getRuleIndex() const { - return qasm3Parser::RuleCalibrationArgumentList; -} - -void qasm3Parser::CalibrationArgumentListContext::enterRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->enterCalibrationArgumentList(this); -} - -void qasm3Parser::CalibrationArgumentListContext::exitRule(tree::ParseTreeListener *listener) { - auto parserListener = dynamic_cast(listener); - if (parserListener != nullptr) - parserListener->exitCalibrationArgumentList(this); -} - - -antlrcpp::Any qasm3Parser::CalibrationArgumentListContext::accept(tree::ParseTreeVisitor *visitor) { - if (auto parserVisitor = dynamic_cast(visitor)) - return parserVisitor->visitCalibrationArgumentList(this); - else - return visitor->visitChildren(this); -} - -qasm3Parser::CalibrationArgumentListContext* qasm3Parser::calibrationArgumentList() { - CalibrationArgumentListContext *_localctx = _tracker.createInstance(_ctx, getState()); - enterRule(_localctx, 206, qasm3Parser::RuleCalibrationArgumentList); - -#if __cplusplus > 201703L - auto onExit = finally([=, this] { -#else - auto onExit = finally([=] { -#endif - exitRule(); - }); - try { - setState(995); - _errHandler->sync(this); - switch (getInterpreter()->adaptivePredict(_input, 96, _ctx)) { - case 1: { - enterOuterAlt(_localctx, 1); - setState(993); - classicalArgumentList(); - break; - } - - case 2: { - enterOuterAlt(_localctx, 2); - setState(994); - expressionList(); - break; - } - - default: - break; - } - - } - catch (RecognitionException &e) { - _errHandler->reportError(this, e); - _localctx->exception = std::current_exception(); - _errHandler->recover(this, _localctx->exception); - } - - return _localctx; -} - -bool qasm3Parser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { - switch (ruleIndex) { - case 36: return indexIdentifierSempred(dynamic_cast(context), predicateIndex); - case 58: return expressionSempred(dynamic_cast(context), predicateIndex); - case 59: return xOrExpressionSempred(dynamic_cast(context), predicateIndex); - case 60: return bitAndExpressionSempred(dynamic_cast(context), predicateIndex); - case 61: return bitShiftExpressionSempred(dynamic_cast(context), predicateIndex); - case 62: return additiveExpressionSempred(dynamic_cast(context), predicateIndex); - case 63: return multiplicativeExpressionSempred(dynamic_cast(context), predicateIndex); - case 65: return expressionTerminatorSempred(dynamic_cast(context), predicateIndex); - case 71: return booleanExpressionSempred(dynamic_cast(context), predicateIndex); - - default: - break; - } - return true; -} - -bool qasm3Parser::indexIdentifierSempred(IndexIdentifierContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 0: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::expressionSempred(ExpressionContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 1: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::xOrExpressionSempred(XOrExpressionContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 2: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::bitAndExpressionSempred(BitAndExpressionContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 3: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::bitShiftExpressionSempred(BitShiftExpressionContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 4: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::additiveExpressionSempred(AdditiveExpressionContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 5: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::multiplicativeExpressionSempred(MultiplicativeExpressionContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 6: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::expressionTerminatorSempred(ExpressionTerminatorContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 7: return precpred(_ctx, 2); - case 8: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -bool qasm3Parser::booleanExpressionSempred(BooleanExpressionContext *_localctx, size_t predicateIndex) { - switch (predicateIndex) { - case 9: return precpred(_ctx, 1); - - default: - break; - } - return true; -} - -// Static vars and initialization. -std::vector qasm3Parser::_decisionToDFA; -atn::PredictionContextCache qasm3Parser::_sharedContextCache; - -// We own the ATN which in turn owns the ATN states. -atn::ATN qasm3Parser::_atn; -std::vector qasm3Parser::_serializedATN; - -std::vector qasm3Parser::_ruleNames = { - "program", "header", "version", "include", "globalStatement", "statement", - "compute_action_stmt", "qcor_test_statement", "quantumDeclarationStatement", - "classicalDeclarationStatement", "classicalAssignment", "assignmentStatement", - "returnSignature", "designator", "doubleDesignator", "identifierList", - "association", "quantumType", "quantumDeclaration", "quantumArgument", - "quantumArgumentList", "bitType", "singleDesignatorType", "doubleDesignatorType", - "noDesignatorType", "classicalType", "constantDeclaration", "singleDesignatorDeclaration", - "doubleDesignatorDeclaration", "noDesignatorDeclaration", "bitDeclaration", - "classicalDeclaration", "classicalTypeList", "classicalArgument", "classicalArgumentList", - "aliasStatement", "indexIdentifier", "indexIdentifierList", "indexEqualsAssignmentList", - "rangeDefinition", "quantumGateDefinition", "quantumGateSignature", "quantumBlock", - "quantumLoop", "quantumLoopBlock", "quantumStatement", "quantumInstruction", - "quantumPhase", "quantumMeasurement", "quantumMeasurementAssignment", - "quantumBarrier", "quantumGateModifier", "quantumGateCall", "quantumGateName", - "unaryOperator", "relationalOperator", "logicalOperator", "expressionStatement", - "expression", "xOrExpression", "bitAndExpression", "bitShiftExpression", - "additiveExpression", "multiplicativeExpression", "unaryExpression", "expressionTerminator", - "incrementor", "builtInCall", "builtInMath", "castOperator", "expressionList", - "booleanExpression", "comparsionExpression", "equalsExpression", "assignmentOperator", - "equalsAssignmentList", "membershipTest", "setDeclaration", "programBlock", - "branchingStatement", "loopSignature", "loopStatement", "cLikeLoopStatement", - "controlDirectiveStatement", "controlDirective", "kernelDeclaration", - "kernelCall", "subroutineDefinition", "returnStatement", "subroutineBlock", - "subroutineCall", "pragma", "timingType", "timingBox", "timingTerminator", - "timingIdentifier", "timingInstructionName", "timingInstruction", "timingStatement", - "calibration", "calibrationGrammarDeclaration", "calibrationDefinition", - "calibrationGrammar", "calibrationArgumentList" -}; - -std::vector qasm3Parser::_literalNames = { - "", "'OPENQASM'", "'include'", "'compute'", "'action'", "'QCOR_EXPECT_TRUE'", - "'qubit'", "'qreg'", "'bit'", "'creg'", "'int'", "'uint'", "'float'", - "'angle'", "'fixed'", "'bool'", "'int64_t'", "'double'", "'const'", "'let'", - "'||'", "'gate'", "'CX'", "'U'", "'gphase'", "'measure'", "'barrier'", - "'inv'", "'pow'", "'ctrl'", "'@'", "'reset'", "'~'", "'!'", "'>'", "'<'", - "'>='", "'<='", "'=='", "'!='", "'&&'", "'|'", "'^'", "'&'", "'<<'", "'>>'", - "'+'", "'*'", "'/'", "'%'", "'++'", "'--'", "'sin'", "'cos'", "'tan'", - "'arctan'", "'arccos'", "'arcsin'", "'exp'", "'ln'", "'sqrt'", "'rotl'", - "'rotr'", "'popcount'", "'lengthof'", "'+='", "'-='", "'*='", "'/='", - "'&='", "'|='", "'~='", "'^='", "'<<='", "'>>='", "'in'", "'if'", "'else'", - "'for'", "'while'", "'range'", "'break'", "'continue'", "'end'", "'kernel'", - "'def'", "'return'", "'#pragma'", "'length'", "'stretch'", "'boxas'", - "'boxto'", "'stretchinf'", "'delay'", "'rotary'", "'defcalgrammar'", "'defcal'", - "'\"openpulse\"'", "'['", "']'", "'{'", "'}'", "'('", "')'", "':'", "';'", - "'.'", "','", "'='", "'->'", "'-'", "'extern'" -}; - -std::vector qasm3Parser::_symbolicNames = { - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", - "LPAREN", "RPAREN", "COLON", "SEMICOLON", "DOT", "COMMA", "EQUALS", "ARROW", - "MINUS", "EXTERN", "Constant", "Whitespace", "Newline", "Integer", "Identifier", - "RealNumber", "TimingLiteral", "StringLiteral", "LineComment", "BlockComment" -}; - -dfa::Vocabulary qasm3Parser::_vocabulary(_literalNames, _symbolicNames); - -std::vector qasm3Parser::_tokenNames; - -qasm3Parser::Initializer::Initializer() { - for (size_t i = 0; i < _symbolicNames.size(); ++i) { - std::string name = _vocabulary.getLiteralName(i); - if (name.empty()) { - name = _vocabulary.getSymbolicName(i); - } - - if (name.empty()) { - _tokenNames.push_back(""); - } else { - _tokenNames.push_back(name); - } - } - - static const uint16_t serializedATNSegment0[] = { - 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, - 0x3, 0x7b, 0x3e8, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, - 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, - 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, - 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, 0xd, 0x4, - 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, 0x4, 0x11, - 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, 0x4, 0x14, - 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, 0x4, 0x17, - 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, 0x4, 0x1a, - 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, 0x4, 0x1d, - 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, 0x4, 0x20, - 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, 0x4, 0x23, - 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, 0x4, 0x26, - 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, 0x4, 0x29, - 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, 0x4, 0x2c, - 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, 0x4, 0x2f, - 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, 0x4, 0x32, - 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, 0x4, 0x35, - 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, 0x4, 0x38, - 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, 0x4, 0x3b, - 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, 0x4, 0x3e, - 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, 0x4, 0x41, - 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, 0x4, 0x44, - 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, 0x4, 0x47, - 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, 0x4, 0x4a, - 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, 0x4, 0x4d, - 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, 0x4, 0x50, - 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, 0x4, 0x53, - 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, 0x4, 0x56, - 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, 0x4, 0x59, - 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, 0x4, 0x5c, - 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, 0x4, 0x5f, - 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, 0x4, 0x62, - 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, 0x4, 0x65, - 0x9, 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67, 0x9, 0x67, 0x4, 0x68, - 0x9, 0x68, 0x4, 0x69, 0x9, 0x69, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x7, - 0x2, 0xd6, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xd9, 0xb, 0x2, 0x3, 0x3, - 0x5, 0x3, 0xdc, 0xa, 0x3, 0x3, 0x3, 0x7, 0x3, 0xdf, 0xa, 0x3, 0xc, - 0x3, 0xe, 0x3, 0xe2, 0xb, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, - 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, - 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x5, 0x6, 0xf2, 0xa, 0x6, - 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, - 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x5, 0x7, 0xff, 0xa, - 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, - 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0xa, 0x3, - 0xa, 0x3, 0xa, 0x3, 0xb, 0x3, 0xb, 0x5, 0xb, 0x111, 0xa, 0xb, 0x3, - 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x5, 0xc, - 0x119, 0xa, 0xc, 0x3, 0xd, 0x3, 0xd, 0x5, 0xd, 0x11d, 0xa, 0xd, 0x3, - 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xf, 0x3, 0xf, - 0x3, 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, - 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x7, 0x11, 0x130, 0xa, 0x11, - 0xc, 0x11, 0xe, 0x11, 0x133, 0xb, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, - 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, - 0x14, 0x3, 0x14, 0x3, 0x15, 0x3, 0x15, 0x5, 0x15, 0x141, 0xa, 0x15, - 0x3, 0x15, 0x3, 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x7, 0x16, - 0x148, 0xa, 0x16, 0xc, 0x16, 0xe, 0x16, 0x14b, 0xb, 0x16, 0x3, 0x16, - 0x3, 0x16, 0x3, 0x17, 0x3, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, 0x19, - 0x3, 0x19, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, - 0x3, 0x1a, 0x5, 0x1a, 0x15b, 0xa, 0x1a, 0x3, 0x1b, 0x3, 0x1b, 0x3, - 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, - 0x1b, 0x5, 0x1b, 0x166, 0xa, 0x1b, 0x5, 0x1b, 0x168, 0xa, 0x1b, 0x3, - 0x1c, 0x3, 0x1c, 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, - 0x1d, 0x5, 0x1d, 0x171, 0xa, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, - 0x3, 0x1e, 0x5, 0x1e, 0x177, 0xa, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, - 0x1f, 0x5, 0x1f, 0x17c, 0xa, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, - 0x5, 0x20, 0x181, 0xa, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, - 0x21, 0x5, 0x21, 0x187, 0xa, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, - 0x7, 0x22, 0x18c, 0xa, 0x22, 0xc, 0x22, 0xe, 0x22, 0x18f, 0xb, 0x22, - 0x3, 0x22, 0x3, 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, - 0x3, 0x24, 0x3, 0x24, 0x7, 0x24, 0x199, 0xa, 0x24, 0xc, 0x24, 0xe, - 0x24, 0x19c, 0xb, 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, 0x25, - 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x26, 0x3, 0x26, - 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, - 0x5, 0x26, 0x1ae, 0xa, 0x26, 0x5, 0x26, 0x1b0, 0xa, 0x26, 0x3, 0x26, - 0x3, 0x26, 0x3, 0x26, 0x7, 0x26, 0x1b5, 0xa, 0x26, 0xc, 0x26, 0xe, - 0x26, 0x1b8, 0xb, 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x7, 0x27, - 0x1bd, 0xa, 0x27, 0xc, 0x27, 0xe, 0x27, 0x1c0, 0xb, 0x27, 0x3, 0x27, - 0x3, 0x27, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x7, 0x28, - 0x1c8, 0xa, 0x28, 0xc, 0x28, 0xe, 0x28, 0x1cb, 0xb, 0x28, 0x3, 0x28, - 0x3, 0x28, 0x3, 0x28, 0x3, 0x29, 0x3, 0x29, 0x5, 0x29, 0x1d2, 0xa, - 0x29, 0x3, 0x29, 0x3, 0x29, 0x5, 0x29, 0x1d6, 0xa, 0x29, 0x3, 0x29, - 0x3, 0x29, 0x5, 0x29, 0x1da, 0xa, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, - 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2b, 0x3, - 0x2b, 0x5, 0x2b, 0x1e5, 0xa, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x1e8, 0xa, - 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, - 0x2c, 0x7, 0x2c, 0x1f0, 0xa, 0x2c, 0xc, 0x2c, 0xe, 0x2c, 0x1f3, 0xb, - 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, - 0x2e, 0x3, 0x2e, 0x3, 0x2e, 0x7, 0x2e, 0x1fd, 0xa, 0x2e, 0xc, 0x2e, - 0xe, 0x2e, 0x200, 0xb, 0x2e, 0x3, 0x2e, 0x5, 0x2e, 0x203, 0xa, 0x2e, - 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x5, 0x2f, 0x209, 0xa, - 0x2f, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x5, 0x30, 0x20f, - 0xa, 0x30, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, - 0x3, 0x32, 0x3, 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, - 0x5, 0x33, 0x21c, 0xa, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, - 0x33, 0x5, 0x33, 0x222, 0xa, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, - 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, - 0x3, 0x35, 0x5, 0x35, 0x22e, 0xa, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, - 0x36, 0x3, 0x36, 0x3, 0x36, 0x5, 0x36, 0x235, 0xa, 0x36, 0x3, 0x36, - 0x5, 0x36, 0x238, 0xa, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x37, 0x3, - 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x5, - 0x37, 0x243, 0xa, 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x39, 0x3, 0x39, - 0x3, 0x3a, 0x3, 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3c, - 0x3, 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x5, 0x3c, 0x252, 0xa, 0x3c, 0x3, - 0x3c, 0x3, 0x3c, 0x3, 0x3c, 0x7, 0x3c, 0x257, 0xa, 0x3c, 0xc, 0x3c, - 0xe, 0x3c, 0x25a, 0xb, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, - 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x7, 0x3d, 0x262, 0xa, 0x3d, 0xc, 0x3d, - 0xe, 0x3d, 0x265, 0xb, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, - 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x7, 0x3e, 0x26d, 0xa, 0x3e, 0xc, 0x3e, - 0xe, 0x3e, 0x270, 0xb, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, - 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x7, 0x3f, 0x278, 0xa, 0x3f, 0xc, 0x3f, - 0xe, 0x3f, 0x27b, 0xb, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, - 0x40, 0x3, 0x40, 0x3, 0x40, 0x7, 0x40, 0x283, 0xa, 0x40, 0xc, 0x40, - 0xe, 0x40, 0x286, 0xb, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x5, - 0x41, 0x28b, 0xa, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, - 0x5, 0x41, 0x291, 0xa, 0x41, 0x7, 0x41, 0x293, 0xa, 0x41, 0xc, 0x41, - 0xe, 0x41, 0x296, 0xb, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, - 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, - 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, - 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x5, 0x43, 0x2ab, 0xa, 0x43, - 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, - 0x3, 0x43, 0x7, 0x43, 0x2b4, 0xa, 0x43, 0xc, 0x43, 0xe, 0x43, 0x2b7, - 0xb, 0x43, 0x3, 0x44, 0x3, 0x44, 0x3, 0x45, 0x3, 0x45, 0x5, 0x45, - 0x2bd, 0xa, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, - 0x46, 0x3, 0x46, 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, 0x48, 0x3, - 0x48, 0x7, 0x48, 0x2ca, 0xa, 0x48, 0xc, 0x48, 0xe, 0x48, 0x2cd, 0xb, - 0x48, 0x3, 0x48, 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x5, - 0x49, 0x2d4, 0xa, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, - 0x7, 0x49, 0x2da, 0xa, 0x49, 0xc, 0x49, 0xe, 0x49, 0x2dd, 0xb, 0x49, - 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x5, 0x4a, - 0x2e4, 0xa, 0x4a, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4c, 0x3, - 0x4c, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x7, 0x4d, 0x2ef, - 0xa, 0x4d, 0xc, 0x4d, 0xe, 0x4d, 0x2f2, 0xb, 0x4d, 0x3, 0x4d, 0x3, - 0x4d, 0x3, 0x4d, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, - 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x5, - 0x4f, 0x301, 0xa, 0x4f, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x7, 0x50, - 0x306, 0xa, 0x50, 0xc, 0x50, 0xe, 0x50, 0x309, 0xb, 0x50, 0x3, 0x50, - 0x5, 0x50, 0x30c, 0xa, 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, - 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x5, 0x51, 0x315, 0xa, 0x51, - 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, - 0x3, 0x52, 0x5, 0x52, 0x31e, 0xa, 0x52, 0x3, 0x53, 0x3, 0x53, 0x3, - 0x53, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, - 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x5, 0x54, 0x33f, - 0xa, 0x54, 0x3, 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, - 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, 0x57, 0x5, 0x57, 0x34a, 0xa, - 0x57, 0x3, 0x57, 0x5, 0x57, 0x34d, 0xa, 0x57, 0x3, 0x57, 0x5, 0x57, - 0x350, 0xa, 0x57, 0x3, 0x57, 0x5, 0x57, 0x353, 0xa, 0x57, 0x3, 0x57, - 0x3, 0x57, 0x3, 0x58, 0x3, 0x58, 0x3, 0x58, 0x5, 0x58, 0x35a, 0xa, - 0x58, 0x3, 0x58, 0x3, 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, - 0x59, 0x5, 0x59, 0x362, 0xa, 0x59, 0x3, 0x59, 0x5, 0x59, 0x365, 0xa, - 0x59, 0x3, 0x59, 0x5, 0x59, 0x368, 0xa, 0x59, 0x3, 0x59, 0x5, 0x59, - 0x36b, 0xa, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, - 0x5a, 0x3, 0x5b, 0x3, 0x5b, 0x7, 0x5b, 0x374, 0xa, 0x5b, 0xc, 0x5b, - 0xe, 0x5b, 0x377, 0xb, 0x5b, 0x3, 0x5b, 0x5, 0x5b, 0x37a, 0xa, 0x5b, - 0x3, 0x5b, 0x3, 0x5b, 0x3, 0x5b, 0x5, 0x5b, 0x37f, 0xa, 0x5b, 0x3, - 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x5, 0x5c, 0x384, 0xa, 0x5c, 0x3, 0x5c, - 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, - 0x7, 0x5d, 0x38d, 0xa, 0x5d, 0xc, 0x5d, 0xe, 0x5d, 0x390, 0xb, 0x5d, - 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x5, 0x5e, - 0x397, 0xa, 0x5e, 0x5, 0x5e, 0x399, 0xa, 0x5e, 0x3, 0x5f, 0x3, 0x5f, - 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x3a1, 0xa, - 0x5f, 0x3, 0x60, 0x3, 0x60, 0x5, 0x60, 0x3a5, 0xa, 0x60, 0x3, 0x61, - 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x3, 0x61, 0x5, 0x61, 0x3ac, 0xa, - 0x61, 0x3, 0x61, 0x5, 0x61, 0x3af, 0xa, 0x61, 0x3, 0x62, 0x3, 0x62, - 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x5, 0x63, 0x3b6, 0xa, 0x63, 0x3, - 0x63, 0x5, 0x63, 0x3b9, 0xa, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, - 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x3, 0x64, 0x5, 0x64, 0x3c2, 0xa, - 0x64, 0x3, 0x65, 0x3, 0x65, 0x5, 0x65, 0x3c6, 0xa, 0x65, 0x3, 0x66, - 0x3, 0x66, 0x3, 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, - 0x3, 0x67, 0x5, 0x67, 0x3d0, 0xa, 0x67, 0x3, 0x67, 0x5, 0x67, 0x3d3, - 0xa, 0x67, 0x3, 0x67, 0x3, 0x67, 0x5, 0x67, 0x3d7, 0xa, 0x67, 0x3, - 0x67, 0x3, 0x67, 0x7, 0x67, 0x3db, 0xa, 0x67, 0xc, 0x67, 0xe, 0x67, - 0x3de, 0xb, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x68, 0x3, 0x68, 0x3, - 0x69, 0x3, 0x69, 0x5, 0x69, 0x3e6, 0xa, 0x69, 0x3, 0x69, 0x3, 0x3dc, - 0xb, 0x4a, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x84, 0x90, 0x6a, - 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, - 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, - 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, - 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, - 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, - 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, - 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, - 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, - 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, - 0xca, 0xcc, 0xce, 0xd0, 0x2, 0x13, 0x4, 0x2, 0x75, 0x75, 0x77, 0x77, - 0x3, 0x2, 0x8, 0x9, 0x3, 0x2, 0xa, 0xb, 0x3, 0x2, 0xc, 0xf, 0x4, - 0x2, 0x18, 0x19, 0x76, 0x76, 0x3, 0x2, 0x22, 0x23, 0x3, 0x2, 0x24, - 0x29, 0x4, 0x2, 0x16, 0x16, 0x2a, 0x2a, 0x3, 0x2, 0x2e, 0x2f, 0x4, - 0x2, 0x30, 0x30, 0x70, 0x70, 0x3, 0x2, 0x31, 0x33, 0x3, 0x2, 0x34, - 0x35, 0x3, 0x2, 0x36, 0x42, 0x4, 0x2, 0x43, 0x4c, 0x6e, 0x6e, 0x3, - 0x2, 0x53, 0x55, 0x3, 0x2, 0x5f, 0x60, 0x4, 0x2, 0x63, 0x63, 0x79, - 0x79, 0x2, 0x407, 0x2, 0xd2, 0x3, 0x2, 0x2, 0x2, 0x4, 0xdb, 0x3, - 0x2, 0x2, 0x2, 0x6, 0xe3, 0x3, 0x2, 0x2, 0x2, 0x8, 0xe7, 0x3, 0x2, - 0x2, 0x2, 0xa, 0xf1, 0x3, 0x2, 0x2, 0x2, 0xc, 0xfe, 0x3, 0x2, 0x2, - 0x2, 0xe, 0x100, 0x3, 0x2, 0x2, 0x2, 0x10, 0x105, 0x3, 0x2, 0x2, - 0x2, 0x12, 0x10b, 0x3, 0x2, 0x2, 0x2, 0x14, 0x110, 0x3, 0x2, 0x2, - 0x2, 0x16, 0x114, 0x3, 0x2, 0x2, 0x2, 0x18, 0x11c, 0x3, 0x2, 0x2, - 0x2, 0x1a, 0x120, 0x3, 0x2, 0x2, 0x2, 0x1c, 0x123, 0x3, 0x2, 0x2, - 0x2, 0x1e, 0x127, 0x3, 0x2, 0x2, 0x2, 0x20, 0x131, 0x3, 0x2, 0x2, - 0x2, 0x22, 0x136, 0x3, 0x2, 0x2, 0x2, 0x24, 0x139, 0x3, 0x2, 0x2, - 0x2, 0x26, 0x13b, 0x3, 0x2, 0x2, 0x2, 0x28, 0x13e, 0x3, 0x2, 0x2, - 0x2, 0x2a, 0x149, 0x3, 0x2, 0x2, 0x2, 0x2c, 0x14e, 0x3, 0x2, 0x2, - 0x2, 0x2e, 0x150, 0x3, 0x2, 0x2, 0x2, 0x30, 0x152, 0x3, 0x2, 0x2, - 0x2, 0x32, 0x15a, 0x3, 0x2, 0x2, 0x2, 0x34, 0x167, 0x3, 0x2, 0x2, - 0x2, 0x36, 0x169, 0x3, 0x2, 0x2, 0x2, 0x38, 0x16c, 0x3, 0x2, 0x2, - 0x2, 0x3a, 0x172, 0x3, 0x2, 0x2, 0x2, 0x3c, 0x178, 0x3, 0x2, 0x2, - 0x2, 0x3e, 0x17d, 0x3, 0x2, 0x2, 0x2, 0x40, 0x186, 0x3, 0x2, 0x2, - 0x2, 0x42, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x44, 0x192, 0x3, 0x2, 0x2, - 0x2, 0x46, 0x19a, 0x3, 0x2, 0x2, 0x2, 0x48, 0x19f, 0x3, 0x2, 0x2, - 0x2, 0x4a, 0x1af, 0x3, 0x2, 0x2, 0x2, 0x4c, 0x1be, 0x3, 0x2, 0x2, - 0x2, 0x4e, 0x1c9, 0x3, 0x2, 0x2, 0x2, 0x50, 0x1cf, 0x3, 0x2, 0x2, - 0x2, 0x52, 0x1dd, 0x3, 0x2, 0x2, 0x2, 0x54, 0x1e1, 0x3, 0x2, 0x2, - 0x2, 0x56, 0x1eb, 0x3, 0x2, 0x2, 0x2, 0x58, 0x1f6, 0x3, 0x2, 0x2, - 0x2, 0x5a, 0x202, 0x3, 0x2, 0x2, 0x2, 0x5c, 0x208, 0x3, 0x2, 0x2, - 0x2, 0x5e, 0x20e, 0x3, 0x2, 0x2, 0x2, 0x60, 0x210, 0x3, 0x2, 0x2, - 0x2, 0x62, 0x215, 0x3, 0x2, 0x2, 0x2, 0x64, 0x221, 0x3, 0x2, 0x2, - 0x2, 0x66, 0x223, 0x3, 0x2, 0x2, 0x2, 0x68, 0x22d, 0x3, 0x2, 0x2, - 0x2, 0x6a, 0x231, 0x3, 0x2, 0x2, 0x2, 0x6c, 0x242, 0x3, 0x2, 0x2, - 0x2, 0x6e, 0x244, 0x3, 0x2, 0x2, 0x2, 0x70, 0x246, 0x3, 0x2, 0x2, - 0x2, 0x72, 0x248, 0x3, 0x2, 0x2, 0x2, 0x74, 0x24a, 0x3, 0x2, 0x2, - 0x2, 0x76, 0x251, 0x3, 0x2, 0x2, 0x2, 0x78, 0x25b, 0x3, 0x2, 0x2, - 0x2, 0x7a, 0x266, 0x3, 0x2, 0x2, 0x2, 0x7c, 0x271, 0x3, 0x2, 0x2, - 0x2, 0x7e, 0x27c, 0x3, 0x2, 0x2, 0x2, 0x80, 0x28a, 0x3, 0x2, 0x2, - 0x2, 0x82, 0x297, 0x3, 0x2, 0x2, 0x2, 0x84, 0x2aa, 0x3, 0x2, 0x2, - 0x2, 0x86, 0x2b8, 0x3, 0x2, 0x2, 0x2, 0x88, 0x2bc, 0x3, 0x2, 0x2, - 0x2, 0x8a, 0x2c2, 0x3, 0x2, 0x2, 0x2, 0x8c, 0x2c4, 0x3, 0x2, 0x2, - 0x2, 0x8e, 0x2cb, 0x3, 0x2, 0x2, 0x2, 0x90, 0x2d3, 0x3, 0x2, 0x2, - 0x2, 0x92, 0x2e3, 0x3, 0x2, 0x2, 0x2, 0x94, 0x2e5, 0x3, 0x2, 0x2, - 0x2, 0x96, 0x2e8, 0x3, 0x2, 0x2, 0x2, 0x98, 0x2f0, 0x3, 0x2, 0x2, - 0x2, 0x9a, 0x2f6, 0x3, 0x2, 0x2, 0x2, 0x9c, 0x300, 0x3, 0x2, 0x2, - 0x2, 0x9e, 0x30b, 0x3, 0x2, 0x2, 0x2, 0xa0, 0x30d, 0x3, 0x2, 0x2, - 0x2, 0xa2, 0x31d, 0x3, 0x2, 0x2, 0x2, 0xa4, 0x31f, 0x3, 0x2, 0x2, - 0x2, 0xa6, 0x33e, 0x3, 0x2, 0x2, 0x2, 0xa8, 0x340, 0x3, 0x2, 0x2, - 0x2, 0xaa, 0x343, 0x3, 0x2, 0x2, 0x2, 0xac, 0x345, 0x3, 0x2, 0x2, - 0x2, 0xae, 0x356, 0x3, 0x2, 0x2, 0x2, 0xb0, 0x35d, 0x3, 0x2, 0x2, - 0x2, 0xb2, 0x36e, 0x3, 0x2, 0x2, 0x2, 0xb4, 0x37e, 0x3, 0x2, 0x2, - 0x2, 0xb6, 0x380, 0x3, 0x2, 0x2, 0x2, 0xb8, 0x389, 0x3, 0x2, 0x2, - 0x2, 0xba, 0x398, 0x3, 0x2, 0x2, 0x2, 0xbc, 0x3a0, 0x3, 0x2, 0x2, - 0x2, 0xbe, 0x3a4, 0x3, 0x2, 0x2, 0x2, 0xc0, 0x3ae, 0x3, 0x2, 0x2, - 0x2, 0xc2, 0x3b0, 0x3, 0x2, 0x2, 0x2, 0xc4, 0x3b2, 0x3, 0x2, 0x2, - 0x2, 0xc6, 0x3c1, 0x3, 0x2, 0x2, 0x2, 0xc8, 0x3c5, 0x3, 0x2, 0x2, - 0x2, 0xca, 0x3c7, 0x3, 0x2, 0x2, 0x2, 0xcc, 0x3cb, 0x3, 0x2, 0x2, - 0x2, 0xce, 0x3e1, 0x3, 0x2, 0x2, 0x2, 0xd0, 0x3e5, 0x3, 0x2, 0x2, - 0x2, 0xd2, 0xd7, 0x5, 0x4, 0x3, 0x2, 0xd3, 0xd6, 0x5, 0xa, 0x6, 0x2, - 0xd4, 0xd6, 0x5, 0xc, 0x7, 0x2, 0xd5, 0xd3, 0x3, 0x2, 0x2, 0x2, 0xd5, - 0xd4, 0x3, 0x2, 0x2, 0x2, 0xd6, 0xd9, 0x3, 0x2, 0x2, 0x2, 0xd7, 0xd5, - 0x3, 0x2, 0x2, 0x2, 0xd7, 0xd8, 0x3, 0x2, 0x2, 0x2, 0xd8, 0x3, 0x3, - 0x2, 0x2, 0x2, 0xd9, 0xd7, 0x3, 0x2, 0x2, 0x2, 0xda, 0xdc, 0x5, 0x6, - 0x4, 0x2, 0xdb, 0xda, 0x3, 0x2, 0x2, 0x2, 0xdb, 0xdc, 0x3, 0x2, 0x2, - 0x2, 0xdc, 0xe0, 0x3, 0x2, 0x2, 0x2, 0xdd, 0xdf, 0x5, 0x8, 0x5, 0x2, - 0xde, 0xdd, 0x3, 0x2, 0x2, 0x2, 0xdf, 0xe2, 0x3, 0x2, 0x2, 0x2, 0xe0, - 0xde, 0x3, 0x2, 0x2, 0x2, 0xe0, 0xe1, 0x3, 0x2, 0x2, 0x2, 0xe1, 0x5, - 0x3, 0x2, 0x2, 0x2, 0xe2, 0xe0, 0x3, 0x2, 0x2, 0x2, 0xe3, 0xe4, 0x7, - 0x3, 0x2, 0x2, 0xe4, 0xe5, 0x9, 0x2, 0x2, 0x2, 0xe5, 0xe6, 0x7, 0x6b, - 0x2, 0x2, 0xe6, 0x7, 0x3, 0x2, 0x2, 0x2, 0xe7, 0xe8, 0x7, 0x4, 0x2, - 0x2, 0xe8, 0xe9, 0x7, 0x79, 0x2, 0x2, 0xe9, 0xea, 0x7, 0x6b, 0x2, - 0x2, 0xea, 0x9, 0x3, 0x2, 0x2, 0x2, 0xeb, 0xf2, 0x5, 0xb0, 0x59, - 0x2, 0xec, 0xf2, 0x5, 0xac, 0x57, 0x2, 0xed, 0xf2, 0x5, 0x52, 0x2a, - 0x2, 0xee, 0xf2, 0x5, 0xc8, 0x65, 0x2, 0xef, 0xf2, 0x5, 0x12, 0xa, - 0x2, 0xf0, 0xf2, 0x5, 0xb8, 0x5d, 0x2, 0xf1, 0xeb, 0x3, 0x2, 0x2, - 0x2, 0xf1, 0xec, 0x3, 0x2, 0x2, 0x2, 0xf1, 0xed, 0x3, 0x2, 0x2, 0x2, - 0xf1, 0xee, 0x3, 0x2, 0x2, 0x2, 0xf1, 0xef, 0x3, 0x2, 0x2, 0x2, 0xf1, - 0xf0, 0x3, 0x2, 0x2, 0x2, 0xf2, 0xb, 0x3, 0x2, 0x2, 0x2, 0xf3, 0xff, - 0x5, 0x74, 0x3b, 0x2, 0xf4, 0xff, 0x5, 0x18, 0xd, 0x2, 0xf5, 0xff, - 0x5, 0x14, 0xb, 0x2, 0xf6, 0xff, 0x5, 0xa0, 0x51, 0x2, 0xf7, 0xff, - 0x5, 0xa4, 0x53, 0x2, 0xf8, 0xff, 0x5, 0xa8, 0x55, 0x2, 0xf9, 0xff, - 0x5, 0x48, 0x25, 0x2, 0xfa, 0xff, 0x5, 0x5c, 0x2f, 0x2, 0xfb, 0xff, - 0x5, 0xb2, 0x5a, 0x2, 0xfc, 0xff, 0x5, 0x10, 0x9, 0x2, 0xfd, 0xff, - 0x5, 0xe, 0x8, 0x2, 0xfe, 0xf3, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xf4, 0x3, - 0x2, 0x2, 0x2, 0xfe, 0xf5, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xf6, 0x3, 0x2, - 0x2, 0x2, 0xfe, 0xf7, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xf8, 0x3, 0x2, 0x2, - 0x2, 0xfe, 0xf9, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xfa, 0x3, 0x2, 0x2, 0x2, - 0xfe, 0xfb, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xfc, 0x3, 0x2, 0x2, 0x2, 0xfe, - 0xfd, 0x3, 0x2, 0x2, 0x2, 0xff, 0xd, 0x3, 0x2, 0x2, 0x2, 0x100, 0x101, - 0x7, 0x5, 0x2, 0x2, 0x101, 0x102, 0x5, 0x9e, 0x50, 0x2, 0x102, 0x103, - 0x7, 0x6, 0x2, 0x2, 0x103, 0x104, 0x5, 0x9e, 0x50, 0x2, 0x104, 0xf, - 0x3, 0x2, 0x2, 0x2, 0x105, 0x106, 0x7, 0x7, 0x2, 0x2, 0x106, 0x107, - 0x7, 0x68, 0x2, 0x2, 0x107, 0x108, 0x5, 0x90, 0x49, 0x2, 0x108, 0x109, - 0x7, 0x69, 0x2, 0x2, 0x109, 0x10a, 0x7, 0x6b, 0x2, 0x2, 0x10a, 0x11, - 0x3, 0x2, 0x2, 0x2, 0x10b, 0x10c, 0x5, 0x26, 0x14, 0x2, 0x10c, 0x10d, - 0x7, 0x6b, 0x2, 0x2, 0x10d, 0x13, 0x3, 0x2, 0x2, 0x2, 0x10e, 0x111, - 0x5, 0x40, 0x21, 0x2, 0x10f, 0x111, 0x5, 0x36, 0x1c, 0x2, 0x110, - 0x10e, 0x3, 0x2, 0x2, 0x2, 0x110, 0x10f, 0x3, 0x2, 0x2, 0x2, 0x111, - 0x112, 0x3, 0x2, 0x2, 0x2, 0x112, 0x113, 0x7, 0x6b, 0x2, 0x2, 0x113, - 0x15, 0x3, 0x2, 0x2, 0x2, 0x114, 0x115, 0x5, 0x4a, 0x26, 0x2, 0x115, - 0x118, 0x5, 0x96, 0x4c, 0x2, 0x116, 0x119, 0x5, 0x76, 0x3c, 0x2, - 0x117, 0x119, 0x5, 0x4a, 0x26, 0x2, 0x118, 0x116, 0x3, 0x2, 0x2, - 0x2, 0x118, 0x117, 0x3, 0x2, 0x2, 0x2, 0x119, 0x17, 0x3, 0x2, 0x2, - 0x2, 0x11a, 0x11d, 0x5, 0x16, 0xc, 0x2, 0x11b, 0x11d, 0x5, 0x64, - 0x33, 0x2, 0x11c, 0x11a, 0x3, 0x2, 0x2, 0x2, 0x11c, 0x11b, 0x3, 0x2, - 0x2, 0x2, 0x11d, 0x11e, 0x3, 0x2, 0x2, 0x2, 0x11e, 0x11f, 0x7, 0x6b, - 0x2, 0x2, 0x11f, 0x19, 0x3, 0x2, 0x2, 0x2, 0x120, 0x121, 0x7, 0x6f, - 0x2, 0x2, 0x121, 0x122, 0x5, 0x34, 0x1b, 0x2, 0x122, 0x1b, 0x3, 0x2, - 0x2, 0x2, 0x123, 0x124, 0x7, 0x64, 0x2, 0x2, 0x124, 0x125, 0x5, 0x76, - 0x3c, 0x2, 0x125, 0x126, 0x7, 0x65, 0x2, 0x2, 0x126, 0x1d, 0x3, 0x2, - 0x2, 0x2, 0x127, 0x128, 0x7, 0x64, 0x2, 0x2, 0x128, 0x129, 0x5, 0x76, - 0x3c, 0x2, 0x129, 0x12a, 0x7, 0x6d, 0x2, 0x2, 0x12a, 0x12b, 0x5, - 0x76, 0x3c, 0x2, 0x12b, 0x12c, 0x7, 0x65, 0x2, 0x2, 0x12c, 0x1f, - 0x3, 0x2, 0x2, 0x2, 0x12d, 0x12e, 0x7, 0x76, 0x2, 0x2, 0x12e, 0x130, - 0x7, 0x6d, 0x2, 0x2, 0x12f, 0x12d, 0x3, 0x2, 0x2, 0x2, 0x130, 0x133, - 0x3, 0x2, 0x2, 0x2, 0x131, 0x12f, 0x3, 0x2, 0x2, 0x2, 0x131, 0x132, - 0x3, 0x2, 0x2, 0x2, 0x132, 0x134, 0x3, 0x2, 0x2, 0x2, 0x133, 0x131, - 0x3, 0x2, 0x2, 0x2, 0x134, 0x135, 0x7, 0x76, 0x2, 0x2, 0x135, 0x21, - 0x3, 0x2, 0x2, 0x2, 0x136, 0x137, 0x7, 0x6a, 0x2, 0x2, 0x137, 0x138, - 0x7, 0x76, 0x2, 0x2, 0x138, 0x23, 0x3, 0x2, 0x2, 0x2, 0x139, 0x13a, - 0x9, 0x3, 0x2, 0x2, 0x13a, 0x25, 0x3, 0x2, 0x2, 0x2, 0x13b, 0x13c, - 0x5, 0x24, 0x13, 0x2, 0x13c, 0x13d, 0x5, 0x4c, 0x27, 0x2, 0x13d, - 0x27, 0x3, 0x2, 0x2, 0x2, 0x13e, 0x140, 0x5, 0x24, 0x13, 0x2, 0x13f, - 0x141, 0x5, 0x1c, 0xf, 0x2, 0x140, 0x13f, 0x3, 0x2, 0x2, 0x2, 0x140, - 0x141, 0x3, 0x2, 0x2, 0x2, 0x141, 0x142, 0x3, 0x2, 0x2, 0x2, 0x142, - 0x143, 0x5, 0x22, 0x12, 0x2, 0x143, 0x29, 0x3, 0x2, 0x2, 0x2, 0x144, - 0x145, 0x5, 0x28, 0x15, 0x2, 0x145, 0x146, 0x7, 0x6d, 0x2, 0x2, 0x146, - 0x148, 0x3, 0x2, 0x2, 0x2, 0x147, 0x144, 0x3, 0x2, 0x2, 0x2, 0x148, - 0x14b, 0x3, 0x2, 0x2, 0x2, 0x149, 0x147, 0x3, 0x2, 0x2, 0x2, 0x149, - 0x14a, 0x3, 0x2, 0x2, 0x2, 0x14a, 0x14c, 0x3, 0x2, 0x2, 0x2, 0x14b, - 0x149, 0x3, 0x2, 0x2, 0x2, 0x14c, 0x14d, 0x5, 0x28, 0x15, 0x2, 0x14d, - 0x2b, 0x3, 0x2, 0x2, 0x2, 0x14e, 0x14f, 0x9, 0x4, 0x2, 0x2, 0x14f, - 0x2d, 0x3, 0x2, 0x2, 0x2, 0x150, 0x151, 0x9, 0x5, 0x2, 0x2, 0x151, - 0x2f, 0x3, 0x2, 0x2, 0x2, 0x152, 0x153, 0x7, 0x10, 0x2, 0x2, 0x153, - 0x31, 0x3, 0x2, 0x2, 0x2, 0x154, 0x15b, 0x7, 0x11, 0x2, 0x2, 0x155, - 0x15b, 0x5, 0xba, 0x5e, 0x2, 0x156, 0x15b, 0x7, 0xc, 0x2, 0x2, 0x157, - 0x15b, 0x7, 0x12, 0x2, 0x2, 0x158, 0x15b, 0x7, 0xe, 0x2, 0x2, 0x159, - 0x15b, 0x7, 0x13, 0x2, 0x2, 0x15a, 0x154, 0x3, 0x2, 0x2, 0x2, 0x15a, - 0x155, 0x3, 0x2, 0x2, 0x2, 0x15a, 0x156, 0x3, 0x2, 0x2, 0x2, 0x15a, - 0x157, 0x3, 0x2, 0x2, 0x2, 0x15a, 0x158, 0x3, 0x2, 0x2, 0x2, 0x15a, - 0x159, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x33, 0x3, 0x2, 0x2, 0x2, 0x15c, - 0x15d, 0x5, 0x2e, 0x18, 0x2, 0x15d, 0x15e, 0x5, 0x1c, 0xf, 0x2, 0x15e, - 0x168, 0x3, 0x2, 0x2, 0x2, 0x15f, 0x160, 0x5, 0x30, 0x19, 0x2, 0x160, - 0x161, 0x5, 0x1e, 0x10, 0x2, 0x161, 0x168, 0x3, 0x2, 0x2, 0x2, 0x162, - 0x168, 0x5, 0x32, 0x1a, 0x2, 0x163, 0x165, 0x5, 0x2c, 0x17, 0x2, - 0x164, 0x166, 0x5, 0x1c, 0xf, 0x2, 0x165, 0x164, 0x3, 0x2, 0x2, 0x2, - 0x165, 0x166, 0x3, 0x2, 0x2, 0x2, 0x166, 0x168, 0x3, 0x2, 0x2, 0x2, - 0x167, 0x15c, 0x3, 0x2, 0x2, 0x2, 0x167, 0x15f, 0x3, 0x2, 0x2, 0x2, - 0x167, 0x162, 0x3, 0x2, 0x2, 0x2, 0x167, 0x163, 0x3, 0x2, 0x2, 0x2, - 0x168, 0x35, 0x3, 0x2, 0x2, 0x2, 0x169, 0x16a, 0x7, 0x14, 0x2, 0x2, - 0x16a, 0x16b, 0x5, 0x98, 0x4d, 0x2, 0x16b, 0x37, 0x3, 0x2, 0x2, 0x2, - 0x16c, 0x16d, 0x5, 0x2e, 0x18, 0x2, 0x16d, 0x170, 0x5, 0x1c, 0xf, - 0x2, 0x16e, 0x171, 0x5, 0x20, 0x11, 0x2, 0x16f, 0x171, 0x5, 0x98, - 0x4d, 0x2, 0x170, 0x16e, 0x3, 0x2, 0x2, 0x2, 0x170, 0x16f, 0x3, 0x2, - 0x2, 0x2, 0x171, 0x39, 0x3, 0x2, 0x2, 0x2, 0x172, 0x173, 0x5, 0x30, - 0x19, 0x2, 0x173, 0x176, 0x5, 0x1e, 0x10, 0x2, 0x174, 0x177, 0x5, - 0x20, 0x11, 0x2, 0x175, 0x177, 0x5, 0x98, 0x4d, 0x2, 0x176, 0x174, - 0x3, 0x2, 0x2, 0x2, 0x176, 0x175, 0x3, 0x2, 0x2, 0x2, 0x177, 0x3b, - 0x3, 0x2, 0x2, 0x2, 0x178, 0x17b, 0x5, 0x32, 0x1a, 0x2, 0x179, 0x17c, - 0x5, 0x20, 0x11, 0x2, 0x17a, 0x17c, 0x5, 0x98, 0x4d, 0x2, 0x17b, - 0x179, 0x3, 0x2, 0x2, 0x2, 0x17b, 0x17a, 0x3, 0x2, 0x2, 0x2, 0x17c, - 0x3d, 0x3, 0x2, 0x2, 0x2, 0x17d, 0x180, 0x5, 0x2c, 0x17, 0x2, 0x17e, - 0x181, 0x5, 0x4c, 0x27, 0x2, 0x17f, 0x181, 0x5, 0x4e, 0x28, 0x2, - 0x180, 0x17e, 0x3, 0x2, 0x2, 0x2, 0x180, 0x17f, 0x3, 0x2, 0x2, 0x2, - 0x181, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x182, 0x187, 0x5, 0x38, 0x1d, 0x2, - 0x183, 0x187, 0x5, 0x3a, 0x1e, 0x2, 0x184, 0x187, 0x5, 0x3c, 0x1f, - 0x2, 0x185, 0x187, 0x5, 0x3e, 0x20, 0x2, 0x186, 0x182, 0x3, 0x2, - 0x2, 0x2, 0x186, 0x183, 0x3, 0x2, 0x2, 0x2, 0x186, 0x184, 0x3, 0x2, - 0x2, 0x2, 0x186, 0x185, 0x3, 0x2, 0x2, 0x2, 0x187, 0x41, 0x3, 0x2, - 0x2, 0x2, 0x188, 0x189, 0x5, 0x34, 0x1b, 0x2, 0x189, 0x18a, 0x7, - 0x6d, 0x2, 0x2, 0x18a, 0x18c, 0x3, 0x2, 0x2, 0x2, 0x18b, 0x188, 0x3, - 0x2, 0x2, 0x2, 0x18c, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x18d, 0x18b, 0x3, - 0x2, 0x2, 0x2, 0x18d, 0x18e, 0x3, 0x2, 0x2, 0x2, 0x18e, 0x190, 0x3, - 0x2, 0x2, 0x2, 0x18f, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x190, 0x191, 0x5, - 0x34, 0x1b, 0x2, 0x191, 0x43, 0x3, 0x2, 0x2, 0x2, 0x192, 0x193, 0x5, - 0x34, 0x1b, 0x2, 0x193, 0x194, 0x5, 0x22, 0x12, 0x2, 0x194, 0x45, - 0x3, 0x2, 0x2, 0x2, 0x195, 0x196, 0x5, 0x44, 0x23, 0x2, 0x196, 0x197, - 0x7, 0x6d, 0x2, 0x2, 0x197, 0x199, 0x3, 0x2, 0x2, 0x2, 0x198, 0x195, - 0x3, 0x2, 0x2, 0x2, 0x199, 0x19c, 0x3, 0x2, 0x2, 0x2, 0x19a, 0x198, - 0x3, 0x2, 0x2, 0x2, 0x19a, 0x19b, 0x3, 0x2, 0x2, 0x2, 0x19b, 0x19d, - 0x3, 0x2, 0x2, 0x2, 0x19c, 0x19a, 0x3, 0x2, 0x2, 0x2, 0x19d, 0x19e, - 0x5, 0x44, 0x23, 0x2, 0x19e, 0x47, 0x3, 0x2, 0x2, 0x2, 0x19f, 0x1a0, - 0x7, 0x15, 0x2, 0x2, 0x1a0, 0x1a1, 0x7, 0x76, 0x2, 0x2, 0x1a1, 0x1a2, - 0x7, 0x6e, 0x2, 0x2, 0x1a2, 0x1a3, 0x5, 0x4a, 0x26, 0x2, 0x1a3, 0x1a4, - 0x7, 0x6b, 0x2, 0x2, 0x1a4, 0x49, 0x3, 0x2, 0x2, 0x2, 0x1a5, 0x1a6, - 0x8, 0x26, 0x1, 0x2, 0x1a6, 0x1a7, 0x7, 0x76, 0x2, 0x2, 0x1a7, 0x1b0, - 0x5, 0x50, 0x29, 0x2, 0x1a8, 0x1ad, 0x7, 0x76, 0x2, 0x2, 0x1a9, 0x1aa, - 0x7, 0x64, 0x2, 0x2, 0x1aa, 0x1ab, 0x5, 0x8e, 0x48, 0x2, 0x1ab, 0x1ac, - 0x7, 0x65, 0x2, 0x2, 0x1ac, 0x1ae, 0x3, 0x2, 0x2, 0x2, 0x1ad, 0x1a9, - 0x3, 0x2, 0x2, 0x2, 0x1ad, 0x1ae, 0x3, 0x2, 0x2, 0x2, 0x1ae, 0x1b0, - 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1a5, 0x3, 0x2, 0x2, 0x2, 0x1af, 0x1a8, - 0x3, 0x2, 0x2, 0x2, 0x1b0, 0x1b6, 0x3, 0x2, 0x2, 0x2, 0x1b1, 0x1b2, - 0xc, 0x3, 0x2, 0x2, 0x1b2, 0x1b3, 0x7, 0x16, 0x2, 0x2, 0x1b3, 0x1b5, - 0x5, 0x4a, 0x26, 0x4, 0x1b4, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x1b5, 0x1b8, - 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b4, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b7, - 0x3, 0x2, 0x2, 0x2, 0x1b7, 0x4b, 0x3, 0x2, 0x2, 0x2, 0x1b8, 0x1b6, - 0x3, 0x2, 0x2, 0x2, 0x1b9, 0x1ba, 0x5, 0x4a, 0x26, 0x2, 0x1ba, 0x1bb, - 0x7, 0x6d, 0x2, 0x2, 0x1bb, 0x1bd, 0x3, 0x2, 0x2, 0x2, 0x1bc, 0x1b9, - 0x3, 0x2, 0x2, 0x2, 0x1bd, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0x1be, 0x1bc, - 0x3, 0x2, 0x2, 0x2, 0x1be, 0x1bf, 0x3, 0x2, 0x2, 0x2, 0x1bf, 0x1c1, - 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x1be, 0x3, 0x2, 0x2, 0x2, 0x1c1, 0x1c2, - 0x5, 0x4a, 0x26, 0x2, 0x1c2, 0x4d, 0x3, 0x2, 0x2, 0x2, 0x1c3, 0x1c4, - 0x5, 0x4a, 0x26, 0x2, 0x1c4, 0x1c5, 0x5, 0x94, 0x4b, 0x2, 0x1c5, - 0x1c6, 0x7, 0x6d, 0x2, 0x2, 0x1c6, 0x1c8, 0x3, 0x2, 0x2, 0x2, 0x1c7, - 0x1c3, 0x3, 0x2, 0x2, 0x2, 0x1c8, 0x1cb, 0x3, 0x2, 0x2, 0x2, 0x1c9, - 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x1c9, 0x1ca, 0x3, 0x2, 0x2, 0x2, 0x1ca, - 0x1cc, 0x3, 0x2, 0x2, 0x2, 0x1cb, 0x1c9, 0x3, 0x2, 0x2, 0x2, 0x1cc, - 0x1cd, 0x5, 0x4a, 0x26, 0x2, 0x1cd, 0x1ce, 0x5, 0x94, 0x4b, 0x2, - 0x1ce, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x1cf, 0x1d1, 0x7, 0x64, 0x2, 0x2, - 0x1d0, 0x1d2, 0x5, 0x76, 0x3c, 0x2, 0x1d1, 0x1d0, 0x3, 0x2, 0x2, - 0x2, 0x1d1, 0x1d2, 0x3, 0x2, 0x2, 0x2, 0x1d2, 0x1d3, 0x3, 0x2, 0x2, - 0x2, 0x1d3, 0x1d5, 0x7, 0x6a, 0x2, 0x2, 0x1d4, 0x1d6, 0x5, 0x76, - 0x3c, 0x2, 0x1d5, 0x1d4, 0x3, 0x2, 0x2, 0x2, 0x1d5, 0x1d6, 0x3, 0x2, - 0x2, 0x2, 0x1d6, 0x1d9, 0x3, 0x2, 0x2, 0x2, 0x1d7, 0x1d8, 0x7, 0x6a, - 0x2, 0x2, 0x1d8, 0x1da, 0x5, 0x76, 0x3c, 0x2, 0x1d9, 0x1d7, 0x3, - 0x2, 0x2, 0x2, 0x1d9, 0x1da, 0x3, 0x2, 0x2, 0x2, 0x1da, 0x1db, 0x3, - 0x2, 0x2, 0x2, 0x1db, 0x1dc, 0x7, 0x65, 0x2, 0x2, 0x1dc, 0x51, 0x3, - 0x2, 0x2, 0x2, 0x1dd, 0x1de, 0x7, 0x17, 0x2, 0x2, 0x1de, 0x1df, 0x5, - 0x54, 0x2b, 0x2, 0x1df, 0x1e0, 0x5, 0x56, 0x2c, 0x2, 0x1e0, 0x53, - 0x3, 0x2, 0x2, 0x2, 0x1e1, 0x1e7, 0x9, 0x6, 0x2, 0x2, 0x1e2, 0x1e4, - 0x7, 0x68, 0x2, 0x2, 0x1e3, 0x1e5, 0x5, 0x20, 0x11, 0x2, 0x1e4, 0x1e3, - 0x3, 0x2, 0x2, 0x2, 0x1e4, 0x1e5, 0x3, 0x2, 0x2, 0x2, 0x1e5, 0x1e6, - 0x3, 0x2, 0x2, 0x2, 0x1e6, 0x1e8, 0x7, 0x69, 0x2, 0x2, 0x1e7, 0x1e2, - 0x3, 0x2, 0x2, 0x2, 0x1e7, 0x1e8, 0x3, 0x2, 0x2, 0x2, 0x1e8, 0x1e9, - 0x3, 0x2, 0x2, 0x2, 0x1e9, 0x1ea, 0x5, 0x20, 0x11, 0x2, 0x1ea, 0x55, - 0x3, 0x2, 0x2, 0x2, 0x1eb, 0x1f1, 0x7, 0x66, 0x2, 0x2, 0x1ec, 0x1f0, - 0x5, 0xe, 0x8, 0x2, 0x1ed, 0x1f0, 0x5, 0x5c, 0x2f, 0x2, 0x1ee, 0x1f0, - 0x5, 0x58, 0x2d, 0x2, 0x1ef, 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x1ef, 0x1ed, - 0x3, 0x2, 0x2, 0x2, 0x1ef, 0x1ee, 0x3, 0x2, 0x2, 0x2, 0x1f0, 0x1f3, - 0x3, 0x2, 0x2, 0x2, 0x1f1, 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1f1, 0x1f2, - 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f4, 0x3, 0x2, 0x2, 0x2, 0x1f3, 0x1f1, - 0x3, 0x2, 0x2, 0x2, 0x1f4, 0x1f5, 0x7, 0x67, 0x2, 0x2, 0x1f5, 0x57, - 0x3, 0x2, 0x2, 0x2, 0x1f6, 0x1f7, 0x5, 0xa2, 0x52, 0x2, 0x1f7, 0x1f8, - 0x5, 0x5a, 0x2e, 0x2, 0x1f8, 0x59, 0x3, 0x2, 0x2, 0x2, 0x1f9, 0x203, - 0x5, 0x5c, 0x2f, 0x2, 0x1fa, 0x1fe, 0x7, 0x66, 0x2, 0x2, 0x1fb, 0x1fd, - 0x5, 0x5c, 0x2f, 0x2, 0x1fc, 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x1fd, 0x200, - 0x3, 0x2, 0x2, 0x2, 0x1fe, 0x1fc, 0x3, 0x2, 0x2, 0x2, 0x1fe, 0x1ff, - 0x3, 0x2, 0x2, 0x2, 0x1ff, 0x201, 0x3, 0x2, 0x2, 0x2, 0x200, 0x1fe, - 0x3, 0x2, 0x2, 0x2, 0x201, 0x203, 0x7, 0x67, 0x2, 0x2, 0x202, 0x1f9, - 0x3, 0x2, 0x2, 0x2, 0x202, 0x1fa, 0x3, 0x2, 0x2, 0x2, 0x203, 0x5b, - 0x3, 0x2, 0x2, 0x2, 0x204, 0x205, 0x5, 0x5e, 0x30, 0x2, 0x205, 0x206, - 0x7, 0x6b, 0x2, 0x2, 0x206, 0x209, 0x3, 0x2, 0x2, 0x2, 0x207, 0x209, - 0x5, 0xc6, 0x64, 0x2, 0x208, 0x204, 0x3, 0x2, 0x2, 0x2, 0x208, 0x207, - 0x3, 0x2, 0x2, 0x2, 0x209, 0x5d, 0x3, 0x2, 0x2, 0x2, 0x20a, 0x20f, - 0x5, 0x6a, 0x36, 0x2, 0x20b, 0x20f, 0x5, 0x60, 0x31, 0x2, 0x20c, - 0x20f, 0x5, 0x62, 0x32, 0x2, 0x20d, 0x20f, 0x5, 0x66, 0x34, 0x2, - 0x20e, 0x20a, 0x3, 0x2, 0x2, 0x2, 0x20e, 0x20b, 0x3, 0x2, 0x2, 0x2, - 0x20e, 0x20c, 0x3, 0x2, 0x2, 0x2, 0x20e, 0x20d, 0x3, 0x2, 0x2, 0x2, - 0x20f, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x210, 0x211, 0x7, 0x1a, 0x2, 0x2, - 0x211, 0x212, 0x7, 0x68, 0x2, 0x2, 0x212, 0x213, 0x7, 0x76, 0x2, - 0x2, 0x213, 0x214, 0x7, 0x69, 0x2, 0x2, 0x214, 0x61, 0x3, 0x2, 0x2, - 0x2, 0x215, 0x216, 0x7, 0x1b, 0x2, 0x2, 0x216, 0x217, 0x5, 0x4c, - 0x27, 0x2, 0x217, 0x63, 0x3, 0x2, 0x2, 0x2, 0x218, 0x21b, 0x5, 0x62, - 0x32, 0x2, 0x219, 0x21a, 0x7, 0x6f, 0x2, 0x2, 0x21a, 0x21c, 0x5, - 0x4c, 0x27, 0x2, 0x21b, 0x219, 0x3, 0x2, 0x2, 0x2, 0x21b, 0x21c, - 0x3, 0x2, 0x2, 0x2, 0x21c, 0x222, 0x3, 0x2, 0x2, 0x2, 0x21d, 0x21e, - 0x5, 0x4c, 0x27, 0x2, 0x21e, 0x21f, 0x7, 0x6e, 0x2, 0x2, 0x21f, 0x220, - 0x5, 0x62, 0x32, 0x2, 0x220, 0x222, 0x3, 0x2, 0x2, 0x2, 0x221, 0x218, - 0x3, 0x2, 0x2, 0x2, 0x221, 0x21d, 0x3, 0x2, 0x2, 0x2, 0x222, 0x65, - 0x3, 0x2, 0x2, 0x2, 0x223, 0x224, 0x7, 0x1c, 0x2, 0x2, 0x224, 0x225, - 0x5, 0x4c, 0x27, 0x2, 0x225, 0x67, 0x3, 0x2, 0x2, 0x2, 0x226, 0x22e, - 0x7, 0x1d, 0x2, 0x2, 0x227, 0x228, 0x7, 0x1e, 0x2, 0x2, 0x228, 0x229, - 0x7, 0x68, 0x2, 0x2, 0x229, 0x22a, 0x5, 0x76, 0x3c, 0x2, 0x22a, 0x22b, - 0x7, 0x69, 0x2, 0x2, 0x22b, 0x22e, 0x3, 0x2, 0x2, 0x2, 0x22c, 0x22e, - 0x7, 0x1f, 0x2, 0x2, 0x22d, 0x226, 0x3, 0x2, 0x2, 0x2, 0x22d, 0x227, - 0x3, 0x2, 0x2, 0x2, 0x22d, 0x22c, 0x3, 0x2, 0x2, 0x2, 0x22e, 0x22f, - 0x3, 0x2, 0x2, 0x2, 0x22f, 0x230, 0x7, 0x20, 0x2, 0x2, 0x230, 0x69, - 0x3, 0x2, 0x2, 0x2, 0x231, 0x237, 0x5, 0x6c, 0x37, 0x2, 0x232, 0x234, - 0x7, 0x68, 0x2, 0x2, 0x233, 0x235, 0x5, 0x8e, 0x48, 0x2, 0x234, 0x233, - 0x3, 0x2, 0x2, 0x2, 0x234, 0x235, 0x3, 0x2, 0x2, 0x2, 0x235, 0x236, - 0x3, 0x2, 0x2, 0x2, 0x236, 0x238, 0x7, 0x69, 0x2, 0x2, 0x237, 0x232, - 0x3, 0x2, 0x2, 0x2, 0x237, 0x238, 0x3, 0x2, 0x2, 0x2, 0x238, 0x239, - 0x3, 0x2, 0x2, 0x2, 0x239, 0x23a, 0x5, 0x4c, 0x27, 0x2, 0x23a, 0x6b, - 0x3, 0x2, 0x2, 0x2, 0x23b, 0x243, 0x7, 0x18, 0x2, 0x2, 0x23c, 0x243, - 0x7, 0x19, 0x2, 0x2, 0x23d, 0x243, 0x7, 0x21, 0x2, 0x2, 0x23e, 0x243, - 0x7, 0x76, 0x2, 0x2, 0x23f, 0x240, 0x5, 0x68, 0x35, 0x2, 0x240, 0x241, - 0x5, 0x6c, 0x37, 0x2, 0x241, 0x243, 0x3, 0x2, 0x2, 0x2, 0x242, 0x23b, - 0x3, 0x2, 0x2, 0x2, 0x242, 0x23c, 0x3, 0x2, 0x2, 0x2, 0x242, 0x23d, - 0x3, 0x2, 0x2, 0x2, 0x242, 0x23e, 0x3, 0x2, 0x2, 0x2, 0x242, 0x23f, - 0x3, 0x2, 0x2, 0x2, 0x243, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x244, 0x245, - 0x9, 0x7, 0x2, 0x2, 0x245, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x246, 0x247, - 0x9, 0x8, 0x2, 0x2, 0x247, 0x71, 0x3, 0x2, 0x2, 0x2, 0x248, 0x249, - 0x9, 0x9, 0x2, 0x2, 0x249, 0x73, 0x3, 0x2, 0x2, 0x2, 0x24a, 0x24b, - 0x5, 0x76, 0x3c, 0x2, 0x24b, 0x24c, 0x7, 0x6b, 0x2, 0x2, 0x24c, 0x75, - 0x3, 0x2, 0x2, 0x2, 0x24d, 0x24e, 0x8, 0x3c, 0x1, 0x2, 0x24e, 0x252, - 0x5, 0x84, 0x43, 0x2, 0x24f, 0x252, 0x5, 0x82, 0x42, 0x2, 0x250, - 0x252, 0x5, 0x78, 0x3d, 0x2, 0x251, 0x24d, 0x3, 0x2, 0x2, 0x2, 0x251, - 0x24f, 0x3, 0x2, 0x2, 0x2, 0x251, 0x250, 0x3, 0x2, 0x2, 0x2, 0x252, - 0x258, 0x3, 0x2, 0x2, 0x2, 0x253, 0x254, 0xc, 0x3, 0x2, 0x2, 0x254, - 0x255, 0x7, 0x2b, 0x2, 0x2, 0x255, 0x257, 0x5, 0x78, 0x3d, 0x2, 0x256, - 0x253, 0x3, 0x2, 0x2, 0x2, 0x257, 0x25a, 0x3, 0x2, 0x2, 0x2, 0x258, - 0x256, 0x3, 0x2, 0x2, 0x2, 0x258, 0x259, 0x3, 0x2, 0x2, 0x2, 0x259, - 0x77, 0x3, 0x2, 0x2, 0x2, 0x25a, 0x258, 0x3, 0x2, 0x2, 0x2, 0x25b, - 0x25c, 0x8, 0x3d, 0x1, 0x2, 0x25c, 0x25d, 0x5, 0x7a, 0x3e, 0x2, 0x25d, - 0x263, 0x3, 0x2, 0x2, 0x2, 0x25e, 0x25f, 0xc, 0x3, 0x2, 0x2, 0x25f, - 0x260, 0x7, 0x2c, 0x2, 0x2, 0x260, 0x262, 0x5, 0x7a, 0x3e, 0x2, 0x261, - 0x25e, 0x3, 0x2, 0x2, 0x2, 0x262, 0x265, 0x3, 0x2, 0x2, 0x2, 0x263, - 0x261, 0x3, 0x2, 0x2, 0x2, 0x263, 0x264, 0x3, 0x2, 0x2, 0x2, 0x264, - 0x79, 0x3, 0x2, 0x2, 0x2, 0x265, 0x263, 0x3, 0x2, 0x2, 0x2, 0x266, - 0x267, 0x8, 0x3e, 0x1, 0x2, 0x267, 0x268, 0x5, 0x7c, 0x3f, 0x2, 0x268, - 0x26e, 0x3, 0x2, 0x2, 0x2, 0x269, 0x26a, 0xc, 0x3, 0x2, 0x2, 0x26a, - 0x26b, 0x7, 0x2d, 0x2, 0x2, 0x26b, 0x26d, 0x5, 0x7c, 0x3f, 0x2, 0x26c, - 0x269, 0x3, 0x2, 0x2, 0x2, 0x26d, 0x270, 0x3, 0x2, 0x2, 0x2, 0x26e, - 0x26c, 0x3, 0x2, 0x2, 0x2, 0x26e, 0x26f, 0x3, 0x2, 0x2, 0x2, 0x26f, - 0x7b, 0x3, 0x2, 0x2, 0x2, 0x270, 0x26e, 0x3, 0x2, 0x2, 0x2, 0x271, - 0x272, 0x8, 0x3f, 0x1, 0x2, 0x272, 0x273, 0x5, 0x7e, 0x40, 0x2, 0x273, - 0x279, 0x3, 0x2, 0x2, 0x2, 0x274, 0x275, 0xc, 0x3, 0x2, 0x2, 0x275, - 0x276, 0x9, 0xa, 0x2, 0x2, 0x276, 0x278, 0x5, 0x7e, 0x40, 0x2, 0x277, - 0x274, 0x3, 0x2, 0x2, 0x2, 0x278, 0x27b, 0x3, 0x2, 0x2, 0x2, 0x279, - 0x277, 0x3, 0x2, 0x2, 0x2, 0x279, 0x27a, 0x3, 0x2, 0x2, 0x2, 0x27a, - 0x7d, 0x3, 0x2, 0x2, 0x2, 0x27b, 0x279, 0x3, 0x2, 0x2, 0x2, 0x27c, - 0x27d, 0x8, 0x40, 0x1, 0x2, 0x27d, 0x27e, 0x5, 0x80, 0x41, 0x2, 0x27e, - 0x284, 0x3, 0x2, 0x2, 0x2, 0x27f, 0x280, 0xc, 0x3, 0x2, 0x2, 0x280, - 0x281, 0x9, 0xb, 0x2, 0x2, 0x281, 0x283, 0x5, 0x80, 0x41, 0x2, 0x282, - 0x27f, 0x3, 0x2, 0x2, 0x2, 0x283, 0x286, 0x3, 0x2, 0x2, 0x2, 0x284, - 0x282, 0x3, 0x2, 0x2, 0x2, 0x284, 0x285, 0x3, 0x2, 0x2, 0x2, 0x285, - 0x7f, 0x3, 0x2, 0x2, 0x2, 0x286, 0x284, 0x3, 0x2, 0x2, 0x2, 0x287, - 0x288, 0x8, 0x41, 0x1, 0x2, 0x288, 0x28b, 0x5, 0x84, 0x43, 0x2, 0x289, - 0x28b, 0x5, 0x82, 0x42, 0x2, 0x28a, 0x287, 0x3, 0x2, 0x2, 0x2, 0x28a, - 0x289, 0x3, 0x2, 0x2, 0x2, 0x28b, 0x294, 0x3, 0x2, 0x2, 0x2, 0x28c, - 0x28d, 0xc, 0x3, 0x2, 0x2, 0x28d, 0x290, 0x9, 0xc, 0x2, 0x2, 0x28e, - 0x291, 0x5, 0x84, 0x43, 0x2, 0x28f, 0x291, 0x5, 0x82, 0x42, 0x2, - 0x290, 0x28e, 0x3, 0x2, 0x2, 0x2, 0x290, 0x28f, 0x3, 0x2, 0x2, 0x2, - 0x291, 0x293, 0x3, 0x2, 0x2, 0x2, 0x292, 0x28c, 0x3, 0x2, 0x2, 0x2, - 0x293, 0x296, 0x3, 0x2, 0x2, 0x2, 0x294, 0x292, 0x3, 0x2, 0x2, 0x2, - 0x294, 0x295, 0x3, 0x2, 0x2, 0x2, 0x295, 0x81, 0x3, 0x2, 0x2, 0x2, - 0x296, 0x294, 0x3, 0x2, 0x2, 0x2, 0x297, 0x298, 0x5, 0x6e, 0x38, - 0x2, 0x298, 0x299, 0x5, 0x84, 0x43, 0x2, 0x299, 0x83, 0x3, 0x2, 0x2, - 0x2, 0x29a, 0x29b, 0x8, 0x43, 0x1, 0x2, 0x29b, 0x2ab, 0x7, 0x72, - 0x2, 0x2, 0x29c, 0x2ab, 0x7, 0x75, 0x2, 0x2, 0x29d, 0x2ab, 0x7, 0x77, - 0x2, 0x2, 0x29e, 0x2ab, 0x7, 0x76, 0x2, 0x2, 0x29f, 0x2ab, 0x7, 0x79, - 0x2, 0x2, 0x2a0, 0x2ab, 0x5, 0x88, 0x45, 0x2, 0x2a1, 0x2ab, 0x5, - 0xae, 0x58, 0x2, 0x2a2, 0x2ab, 0x5, 0xb6, 0x5c, 0x2, 0x2a3, 0x2ab, - 0x5, 0xbe, 0x60, 0x2, 0x2a4, 0x2a5, 0x7, 0x70, 0x2, 0x2, 0x2a5, 0x2ab, - 0x5, 0x84, 0x43, 0x6, 0x2a6, 0x2a7, 0x7, 0x68, 0x2, 0x2, 0x2a7, 0x2a8, - 0x5, 0x76, 0x3c, 0x2, 0x2a8, 0x2a9, 0x7, 0x69, 0x2, 0x2, 0x2a9, 0x2ab, - 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x29a, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x29c, - 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x29e, - 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2a0, - 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2a1, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2a2, - 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2a3, 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2a4, - 0x3, 0x2, 0x2, 0x2, 0x2aa, 0x2a6, 0x3, 0x2, 0x2, 0x2, 0x2ab, 0x2b5, - 0x3, 0x2, 0x2, 0x2, 0x2ac, 0x2ad, 0xc, 0x4, 0x2, 0x2, 0x2ad, 0x2ae, - 0x7, 0x64, 0x2, 0x2, 0x2ae, 0x2af, 0x5, 0x76, 0x3c, 0x2, 0x2af, 0x2b0, - 0x7, 0x65, 0x2, 0x2, 0x2b0, 0x2b4, 0x3, 0x2, 0x2, 0x2, 0x2b1, 0x2b2, - 0xc, 0x3, 0x2, 0x2, 0x2b2, 0x2b4, 0x5, 0x86, 0x44, 0x2, 0x2b3, 0x2ac, - 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2b1, 0x3, 0x2, 0x2, 0x2, 0x2b4, 0x2b7, - 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x2b6, - 0x3, 0x2, 0x2, 0x2, 0x2b6, 0x85, 0x3, 0x2, 0x2, 0x2, 0x2b7, 0x2b5, - 0x3, 0x2, 0x2, 0x2, 0x2b8, 0x2b9, 0x9, 0xd, 0x2, 0x2, 0x2b9, 0x87, - 0x3, 0x2, 0x2, 0x2, 0x2ba, 0x2bd, 0x5, 0x8a, 0x46, 0x2, 0x2bb, 0x2bd, - 0x5, 0x8c, 0x47, 0x2, 0x2bc, 0x2ba, 0x3, 0x2, 0x2, 0x2, 0x2bc, 0x2bb, - 0x3, 0x2, 0x2, 0x2, 0x2bd, 0x2be, 0x3, 0x2, 0x2, 0x2, 0x2be, 0x2bf, - 0x7, 0x68, 0x2, 0x2, 0x2bf, 0x2c0, 0x5, 0x8e, 0x48, 0x2, 0x2c0, 0x2c1, - 0x7, 0x69, 0x2, 0x2, 0x2c1, 0x89, 0x3, 0x2, 0x2, 0x2, 0x2c2, 0x2c3, - 0x9, 0xe, 0x2, 0x2, 0x2c3, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x2c4, 0x2c5, - 0x5, 0x34, 0x1b, 0x2, 0x2c5, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x2c6, 0x2c7, - 0x5, 0x76, 0x3c, 0x2, 0x2c7, 0x2c8, 0x7, 0x6d, 0x2, 0x2, 0x2c8, 0x2ca, - 0x3, 0x2, 0x2, 0x2, 0x2c9, 0x2c6, 0x3, 0x2, 0x2, 0x2, 0x2ca, 0x2cd, - 0x3, 0x2, 0x2, 0x2, 0x2cb, 0x2c9, 0x3, 0x2, 0x2, 0x2, 0x2cb, 0x2cc, - 0x3, 0x2, 0x2, 0x2, 0x2cc, 0x2ce, 0x3, 0x2, 0x2, 0x2, 0x2cd, 0x2cb, - 0x3, 0x2, 0x2, 0x2, 0x2ce, 0x2cf, 0x5, 0x76, 0x3c, 0x2, 0x2cf, 0x8f, - 0x3, 0x2, 0x2, 0x2, 0x2d0, 0x2d1, 0x8, 0x49, 0x1, 0x2, 0x2d1, 0x2d4, - 0x5, 0x9a, 0x4e, 0x2, 0x2d2, 0x2d4, 0x5, 0x92, 0x4a, 0x2, 0x2d3, - 0x2d0, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x2d4, - 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2d5, 0x2d6, 0xc, 0x3, 0x2, 0x2, 0x2d6, - 0x2d7, 0x5, 0x72, 0x3a, 0x2, 0x2d7, 0x2d8, 0x5, 0x92, 0x4a, 0x2, - 0x2d8, 0x2da, 0x3, 0x2, 0x2, 0x2, 0x2d9, 0x2d5, 0x3, 0x2, 0x2, 0x2, - 0x2da, 0x2dd, 0x3, 0x2, 0x2, 0x2, 0x2db, 0x2d9, 0x3, 0x2, 0x2, 0x2, - 0x2db, 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x2dc, 0x91, 0x3, 0x2, 0x2, 0x2, - 0x2dd, 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2e4, 0x5, 0x76, 0x3c, - 0x2, 0x2df, 0x2e0, 0x5, 0x76, 0x3c, 0x2, 0x2e0, 0x2e1, 0x5, 0x70, - 0x39, 0x2, 0x2e1, 0x2e2, 0x5, 0x76, 0x3c, 0x2, 0x2e2, 0x2e4, 0x3, - 0x2, 0x2, 0x2, 0x2e3, 0x2de, 0x3, 0x2, 0x2, 0x2, 0x2e3, 0x2df, 0x3, - 0x2, 0x2, 0x2, 0x2e4, 0x93, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x2e6, 0x7, - 0x6e, 0x2, 0x2, 0x2e6, 0x2e7, 0x5, 0x76, 0x3c, 0x2, 0x2e7, 0x95, - 0x3, 0x2, 0x2, 0x2, 0x2e8, 0x2e9, 0x9, 0xf, 0x2, 0x2, 0x2e9, 0x97, - 0x3, 0x2, 0x2, 0x2, 0x2ea, 0x2eb, 0x7, 0x76, 0x2, 0x2, 0x2eb, 0x2ec, - 0x5, 0x94, 0x4b, 0x2, 0x2ec, 0x2ed, 0x7, 0x6d, 0x2, 0x2, 0x2ed, 0x2ef, - 0x3, 0x2, 0x2, 0x2, 0x2ee, 0x2ea, 0x3, 0x2, 0x2, 0x2, 0x2ef, 0x2f2, - 0x3, 0x2, 0x2, 0x2, 0x2f0, 0x2ee, 0x3, 0x2, 0x2, 0x2, 0x2f0, 0x2f1, - 0x3, 0x2, 0x2, 0x2, 0x2f1, 0x2f3, 0x3, 0x2, 0x2, 0x2, 0x2f2, 0x2f0, - 0x3, 0x2, 0x2, 0x2, 0x2f3, 0x2f4, 0x7, 0x76, 0x2, 0x2, 0x2f4, 0x2f5, - 0x5, 0x94, 0x4b, 0x2, 0x2f5, 0x99, 0x3, 0x2, 0x2, 0x2, 0x2f6, 0x2f7, - 0x7, 0x76, 0x2, 0x2, 0x2f7, 0x2f8, 0x7, 0x4d, 0x2, 0x2, 0x2f8, 0x2f9, - 0x5, 0x9c, 0x4f, 0x2, 0x2f9, 0x9b, 0x3, 0x2, 0x2, 0x2, 0x2fa, 0x2fb, - 0x7, 0x66, 0x2, 0x2, 0x2fb, 0x2fc, 0x5, 0x8e, 0x48, 0x2, 0x2fc, 0x2fd, - 0x7, 0x67, 0x2, 0x2, 0x2fd, 0x301, 0x3, 0x2, 0x2, 0x2, 0x2fe, 0x301, - 0x5, 0x50, 0x29, 0x2, 0x2ff, 0x301, 0x7, 0x76, 0x2, 0x2, 0x300, 0x2fa, - 0x3, 0x2, 0x2, 0x2, 0x300, 0x2fe, 0x3, 0x2, 0x2, 0x2, 0x300, 0x2ff, - 0x3, 0x2, 0x2, 0x2, 0x301, 0x9d, 0x3, 0x2, 0x2, 0x2, 0x302, 0x30c, - 0x5, 0xc, 0x7, 0x2, 0x303, 0x307, 0x7, 0x66, 0x2, 0x2, 0x304, 0x306, - 0x5, 0xc, 0x7, 0x2, 0x305, 0x304, 0x3, 0x2, 0x2, 0x2, 0x306, 0x309, - 0x3, 0x2, 0x2, 0x2, 0x307, 0x305, 0x3, 0x2, 0x2, 0x2, 0x307, 0x308, - 0x3, 0x2, 0x2, 0x2, 0x308, 0x30a, 0x3, 0x2, 0x2, 0x2, 0x309, 0x307, - 0x3, 0x2, 0x2, 0x2, 0x30a, 0x30c, 0x7, 0x67, 0x2, 0x2, 0x30b, 0x302, - 0x3, 0x2, 0x2, 0x2, 0x30b, 0x303, 0x3, 0x2, 0x2, 0x2, 0x30c, 0x9f, - 0x3, 0x2, 0x2, 0x2, 0x30d, 0x30e, 0x7, 0x4e, 0x2, 0x2, 0x30e, 0x30f, - 0x7, 0x68, 0x2, 0x2, 0x30f, 0x310, 0x5, 0x90, 0x49, 0x2, 0x310, 0x311, - 0x7, 0x69, 0x2, 0x2, 0x311, 0x314, 0x5, 0x9e, 0x50, 0x2, 0x312, 0x313, - 0x7, 0x4f, 0x2, 0x2, 0x313, 0x315, 0x5, 0x9e, 0x50, 0x2, 0x314, 0x312, - 0x3, 0x2, 0x2, 0x2, 0x314, 0x315, 0x3, 0x2, 0x2, 0x2, 0x315, 0xa1, - 0x3, 0x2, 0x2, 0x2, 0x316, 0x317, 0x7, 0x50, 0x2, 0x2, 0x317, 0x31e, - 0x5, 0x9a, 0x4e, 0x2, 0x318, 0x319, 0x7, 0x51, 0x2, 0x2, 0x319, 0x31a, - 0x7, 0x68, 0x2, 0x2, 0x31a, 0x31b, 0x5, 0x90, 0x49, 0x2, 0x31b, 0x31c, - 0x7, 0x69, 0x2, 0x2, 0x31c, 0x31e, 0x3, 0x2, 0x2, 0x2, 0x31d, 0x316, - 0x3, 0x2, 0x2, 0x2, 0x31d, 0x318, 0x3, 0x2, 0x2, 0x2, 0x31e, 0xa3, - 0x3, 0x2, 0x2, 0x2, 0x31f, 0x320, 0x5, 0xa2, 0x52, 0x2, 0x320, 0x321, - 0x5, 0x9e, 0x50, 0x2, 0x321, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x322, 0x323, - 0x7, 0x50, 0x2, 0x2, 0x323, 0x324, 0x7, 0x68, 0x2, 0x2, 0x324, 0x325, - 0x5, 0x34, 0x1b, 0x2, 0x325, 0x326, 0x7, 0x76, 0x2, 0x2, 0x326, 0x327, - 0x5, 0x94, 0x4b, 0x2, 0x327, 0x328, 0x7, 0x6b, 0x2, 0x2, 0x328, 0x329, - 0x5, 0x90, 0x49, 0x2, 0x329, 0x32a, 0x7, 0x6b, 0x2, 0x2, 0x32a, 0x32b, - 0x5, 0x76, 0x3c, 0x2, 0x32b, 0x32c, 0x7, 0x69, 0x2, 0x2, 0x32c, 0x32d, - 0x7, 0x66, 0x2, 0x2, 0x32d, 0x32e, 0x5, 0x9e, 0x50, 0x2, 0x32e, 0x32f, - 0x7, 0x67, 0x2, 0x2, 0x32f, 0x33f, 0x3, 0x2, 0x2, 0x2, 0x330, 0x331, - 0x7, 0x50, 0x2, 0x2, 0x331, 0x332, 0x7, 0x68, 0x2, 0x2, 0x332, 0x333, - 0x5, 0x34, 0x1b, 0x2, 0x333, 0x334, 0x7, 0x76, 0x2, 0x2, 0x334, 0x335, - 0x7, 0x6a, 0x2, 0x2, 0x335, 0x336, 0x7, 0x52, 0x2, 0x2, 0x336, 0x337, - 0x7, 0x68, 0x2, 0x2, 0x337, 0x338, 0x5, 0x76, 0x3c, 0x2, 0x338, 0x339, - 0x7, 0x69, 0x2, 0x2, 0x339, 0x33a, 0x7, 0x69, 0x2, 0x2, 0x33a, 0x33b, - 0x7, 0x66, 0x2, 0x2, 0x33b, 0x33c, 0x5, 0x9e, 0x50, 0x2, 0x33c, 0x33d, - 0x7, 0x67, 0x2, 0x2, 0x33d, 0x33f, 0x3, 0x2, 0x2, 0x2, 0x33e, 0x322, - 0x3, 0x2, 0x2, 0x2, 0x33e, 0x330, 0x3, 0x2, 0x2, 0x2, 0x33f, 0xa7, - 0x3, 0x2, 0x2, 0x2, 0x340, 0x341, 0x5, 0xaa, 0x56, 0x2, 0x341, 0x342, - 0x7, 0x6b, 0x2, 0x2, 0x342, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x343, 0x344, - 0x9, 0x10, 0x2, 0x2, 0x344, 0xab, 0x3, 0x2, 0x2, 0x2, 0x345, 0x346, - 0x7, 0x56, 0x2, 0x2, 0x346, 0x34c, 0x7, 0x76, 0x2, 0x2, 0x347, 0x349, - 0x7, 0x68, 0x2, 0x2, 0x348, 0x34a, 0x5, 0x42, 0x22, 0x2, 0x349, 0x348, - 0x3, 0x2, 0x2, 0x2, 0x349, 0x34a, 0x3, 0x2, 0x2, 0x2, 0x34a, 0x34b, - 0x3, 0x2, 0x2, 0x2, 0x34b, 0x34d, 0x7, 0x69, 0x2, 0x2, 0x34c, 0x347, - 0x3, 0x2, 0x2, 0x2, 0x34c, 0x34d, 0x3, 0x2, 0x2, 0x2, 0x34d, 0x34f, - 0x3, 0x2, 0x2, 0x2, 0x34e, 0x350, 0x5, 0x1a, 0xe, 0x2, 0x34f, 0x34e, - 0x3, 0x2, 0x2, 0x2, 0x34f, 0x350, 0x3, 0x2, 0x2, 0x2, 0x350, 0x352, - 0x3, 0x2, 0x2, 0x2, 0x351, 0x353, 0x5, 0x34, 0x1b, 0x2, 0x352, 0x351, - 0x3, 0x2, 0x2, 0x2, 0x352, 0x353, 0x3, 0x2, 0x2, 0x2, 0x353, 0x354, - 0x3, 0x2, 0x2, 0x2, 0x354, 0x355, 0x7, 0x6b, 0x2, 0x2, 0x355, 0xad, - 0x3, 0x2, 0x2, 0x2, 0x356, 0x357, 0x7, 0x76, 0x2, 0x2, 0x357, 0x359, - 0x7, 0x68, 0x2, 0x2, 0x358, 0x35a, 0x5, 0x8e, 0x48, 0x2, 0x359, 0x358, - 0x3, 0x2, 0x2, 0x2, 0x359, 0x35a, 0x3, 0x2, 0x2, 0x2, 0x35a, 0x35b, - 0x3, 0x2, 0x2, 0x2, 0x35b, 0x35c, 0x7, 0x69, 0x2, 0x2, 0x35c, 0xaf, - 0x3, 0x2, 0x2, 0x2, 0x35d, 0x35e, 0x7, 0x57, 0x2, 0x2, 0x35e, 0x364, - 0x7, 0x76, 0x2, 0x2, 0x35f, 0x361, 0x7, 0x68, 0x2, 0x2, 0x360, 0x362, - 0x5, 0x46, 0x24, 0x2, 0x361, 0x360, 0x3, 0x2, 0x2, 0x2, 0x361, 0x362, - 0x3, 0x2, 0x2, 0x2, 0x362, 0x363, 0x3, 0x2, 0x2, 0x2, 0x363, 0x365, - 0x7, 0x69, 0x2, 0x2, 0x364, 0x35f, 0x3, 0x2, 0x2, 0x2, 0x364, 0x365, - 0x3, 0x2, 0x2, 0x2, 0x365, 0x367, 0x3, 0x2, 0x2, 0x2, 0x366, 0x368, - 0x5, 0x2a, 0x16, 0x2, 0x367, 0x366, 0x3, 0x2, 0x2, 0x2, 0x367, 0x368, - 0x3, 0x2, 0x2, 0x2, 0x368, 0x36a, 0x3, 0x2, 0x2, 0x2, 0x369, 0x36b, - 0x5, 0x1a, 0xe, 0x2, 0x36a, 0x369, 0x3, 0x2, 0x2, 0x2, 0x36a, 0x36b, - 0x3, 0x2, 0x2, 0x2, 0x36b, 0x36c, 0x3, 0x2, 0x2, 0x2, 0x36c, 0x36d, - 0x5, 0xb4, 0x5b, 0x2, 0x36d, 0xb1, 0x3, 0x2, 0x2, 0x2, 0x36e, 0x36f, - 0x7, 0x58, 0x2, 0x2, 0x36f, 0x370, 0x5, 0xc, 0x7, 0x2, 0x370, 0xb3, - 0x3, 0x2, 0x2, 0x2, 0x371, 0x375, 0x7, 0x66, 0x2, 0x2, 0x372, 0x374, - 0x5, 0xc, 0x7, 0x2, 0x373, 0x372, 0x3, 0x2, 0x2, 0x2, 0x374, 0x377, - 0x3, 0x2, 0x2, 0x2, 0x375, 0x373, 0x3, 0x2, 0x2, 0x2, 0x375, 0x376, - 0x3, 0x2, 0x2, 0x2, 0x376, 0x379, 0x3, 0x2, 0x2, 0x2, 0x377, 0x375, - 0x3, 0x2, 0x2, 0x2, 0x378, 0x37a, 0x5, 0xb2, 0x5a, 0x2, 0x379, 0x378, - 0x3, 0x2, 0x2, 0x2, 0x379, 0x37a, 0x3, 0x2, 0x2, 0x2, 0x37a, 0x37b, - 0x3, 0x2, 0x2, 0x2, 0x37b, 0x37f, 0x7, 0x67, 0x2, 0x2, 0x37c, 0x37d, - 0x7, 0x71, 0x2, 0x2, 0x37d, 0x37f, 0x7, 0x6b, 0x2, 0x2, 0x37e, 0x371, - 0x3, 0x2, 0x2, 0x2, 0x37e, 0x37c, 0x3, 0x2, 0x2, 0x2, 0x37f, 0xb5, - 0x3, 0x2, 0x2, 0x2, 0x380, 0x381, 0x7, 0x76, 0x2, 0x2, 0x381, 0x383, - 0x7, 0x68, 0x2, 0x2, 0x382, 0x384, 0x5, 0x8e, 0x48, 0x2, 0x383, 0x382, - 0x3, 0x2, 0x2, 0x2, 0x383, 0x384, 0x3, 0x2, 0x2, 0x2, 0x384, 0x385, - 0x3, 0x2, 0x2, 0x2, 0x385, 0x386, 0x7, 0x69, 0x2, 0x2, 0x386, 0x387, - 0x3, 0x2, 0x2, 0x2, 0x387, 0x388, 0x5, 0x8e, 0x48, 0x2, 0x388, 0xb7, - 0x3, 0x2, 0x2, 0x2, 0x389, 0x38a, 0x7, 0x59, 0x2, 0x2, 0x38a, 0x38e, - 0x7, 0x66, 0x2, 0x2, 0x38b, 0x38d, 0x5, 0xc, 0x7, 0x2, 0x38c, 0x38b, - 0x3, 0x2, 0x2, 0x2, 0x38d, 0x390, 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38c, - 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38f, 0x3, 0x2, 0x2, 0x2, 0x38f, 0x391, - 0x3, 0x2, 0x2, 0x2, 0x390, 0x38e, 0x3, 0x2, 0x2, 0x2, 0x391, 0x392, - 0x7, 0x67, 0x2, 0x2, 0x392, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x393, 0x399, - 0x7, 0x5a, 0x2, 0x2, 0x394, 0x396, 0x7, 0x5b, 0x2, 0x2, 0x395, 0x397, - 0x7, 0x75, 0x2, 0x2, 0x396, 0x395, 0x3, 0x2, 0x2, 0x2, 0x396, 0x397, - 0x3, 0x2, 0x2, 0x2, 0x397, 0x399, 0x3, 0x2, 0x2, 0x2, 0x398, 0x393, - 0x3, 0x2, 0x2, 0x2, 0x398, 0x394, 0x3, 0x2, 0x2, 0x2, 0x399, 0xbb, - 0x3, 0x2, 0x2, 0x2, 0x39a, 0x39b, 0x7, 0x5c, 0x2, 0x2, 0x39b, 0x39c, - 0x7, 0x76, 0x2, 0x2, 0x39c, 0x3a1, 0x5, 0x56, 0x2c, 0x2, 0x39d, 0x39e, - 0x7, 0x5d, 0x2, 0x2, 0x39e, 0x39f, 0x7, 0x78, 0x2, 0x2, 0x39f, 0x3a1, - 0x5, 0x56, 0x2c, 0x2, 0x3a0, 0x39a, 0x3, 0x2, 0x2, 0x2, 0x3a0, 0x39d, - 0x3, 0x2, 0x2, 0x2, 0x3a1, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x3a2, 0x3a5, - 0x5, 0xc0, 0x61, 0x2, 0x3a3, 0x3a5, 0x7, 0x5e, 0x2, 0x2, 0x3a4, 0x3a2, - 0x3, 0x2, 0x2, 0x2, 0x3a4, 0x3a3, 0x3, 0x2, 0x2, 0x2, 0x3a5, 0xbf, - 0x3, 0x2, 0x2, 0x2, 0x3a6, 0x3af, 0x7, 0x78, 0x2, 0x2, 0x3a7, 0x3a8, - 0x7, 0x42, 0x2, 0x2, 0x3a8, 0x3ab, 0x7, 0x68, 0x2, 0x2, 0x3a9, 0x3ac, - 0x7, 0x76, 0x2, 0x2, 0x3aa, 0x3ac, 0x5, 0x56, 0x2c, 0x2, 0x3ab, 0x3a9, - 0x3, 0x2, 0x2, 0x2, 0x3ab, 0x3aa, 0x3, 0x2, 0x2, 0x2, 0x3ac, 0x3ad, - 0x3, 0x2, 0x2, 0x2, 0x3ad, 0x3af, 0x7, 0x69, 0x2, 0x2, 0x3ae, 0x3a6, - 0x3, 0x2, 0x2, 0x2, 0x3ae, 0x3a7, 0x3, 0x2, 0x2, 0x2, 0x3af, 0xc1, - 0x3, 0x2, 0x2, 0x2, 0x3b0, 0x3b1, 0x9, 0x11, 0x2, 0x2, 0x3b1, 0xc3, - 0x3, 0x2, 0x2, 0x2, 0x3b2, 0x3b8, 0x5, 0xc2, 0x62, 0x2, 0x3b3, 0x3b5, - 0x7, 0x68, 0x2, 0x2, 0x3b4, 0x3b6, 0x5, 0x8e, 0x48, 0x2, 0x3b5, 0x3b4, - 0x3, 0x2, 0x2, 0x2, 0x3b5, 0x3b6, 0x3, 0x2, 0x2, 0x2, 0x3b6, 0x3b7, - 0x3, 0x2, 0x2, 0x2, 0x3b7, 0x3b9, 0x7, 0x69, 0x2, 0x2, 0x3b8, 0x3b3, - 0x3, 0x2, 0x2, 0x2, 0x3b8, 0x3b9, 0x3, 0x2, 0x2, 0x2, 0x3b9, 0x3ba, - 0x3, 0x2, 0x2, 0x2, 0x3ba, 0x3bb, 0x5, 0x1c, 0xf, 0x2, 0x3bb, 0x3bc, - 0x5, 0x4c, 0x27, 0x2, 0x3bc, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x3bd, 0x3be, - 0x5, 0xc4, 0x63, 0x2, 0x3be, 0x3bf, 0x7, 0x6b, 0x2, 0x2, 0x3bf, 0x3c2, - 0x3, 0x2, 0x2, 0x2, 0x3c0, 0x3c2, 0x5, 0xbc, 0x5f, 0x2, 0x3c1, 0x3bd, - 0x3, 0x2, 0x2, 0x2, 0x3c1, 0x3c0, 0x3, 0x2, 0x2, 0x2, 0x3c2, 0xc7, - 0x3, 0x2, 0x2, 0x2, 0x3c3, 0x3c6, 0x5, 0xca, 0x66, 0x2, 0x3c4, 0x3c6, - 0x5, 0xcc, 0x67, 0x2, 0x3c5, 0x3c3, 0x3, 0x2, 0x2, 0x2, 0x3c5, 0x3c4, - 0x3, 0x2, 0x2, 0x2, 0x3c6, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x3c7, 0x3c8, - 0x7, 0x61, 0x2, 0x2, 0x3c8, 0x3c9, 0x5, 0xce, 0x68, 0x2, 0x3c9, 0x3ca, - 0x7, 0x6b, 0x2, 0x2, 0x3ca, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x3cb, 0x3cc, - 0x7, 0x62, 0x2, 0x2, 0x3cc, 0x3d2, 0x7, 0x76, 0x2, 0x2, 0x3cd, 0x3cf, - 0x7, 0x68, 0x2, 0x2, 0x3ce, 0x3d0, 0x5, 0xd0, 0x69, 0x2, 0x3cf, 0x3ce, - 0x3, 0x2, 0x2, 0x2, 0x3cf, 0x3d0, 0x3, 0x2, 0x2, 0x2, 0x3d0, 0x3d1, - 0x3, 0x2, 0x2, 0x2, 0x3d1, 0x3d3, 0x7, 0x69, 0x2, 0x2, 0x3d2, 0x3cd, - 0x3, 0x2, 0x2, 0x2, 0x3d2, 0x3d3, 0x3, 0x2, 0x2, 0x2, 0x3d3, 0x3d4, - 0x3, 0x2, 0x2, 0x2, 0x3d4, 0x3d6, 0x5, 0x20, 0x11, 0x2, 0x3d5, 0x3d7, - 0x5, 0x1a, 0xe, 0x2, 0x3d6, 0x3d5, 0x3, 0x2, 0x2, 0x2, 0x3d6, 0x3d7, - 0x3, 0x2, 0x2, 0x2, 0x3d7, 0x3d8, 0x3, 0x2, 0x2, 0x2, 0x3d8, 0x3dc, - 0x7, 0x66, 0x2, 0x2, 0x3d9, 0x3db, 0xb, 0x2, 0x2, 0x2, 0x3da, 0x3d9, - 0x3, 0x2, 0x2, 0x2, 0x3db, 0x3de, 0x3, 0x2, 0x2, 0x2, 0x3dc, 0x3dd, - 0x3, 0x2, 0x2, 0x2, 0x3dc, 0x3da, 0x3, 0x2, 0x2, 0x2, 0x3dd, 0x3df, - 0x3, 0x2, 0x2, 0x2, 0x3de, 0x3dc, 0x3, 0x2, 0x2, 0x2, 0x3df, 0x3e0, - 0x7, 0x67, 0x2, 0x2, 0x3e0, 0xcd, 0x3, 0x2, 0x2, 0x2, 0x3e1, 0x3e2, - 0x9, 0x12, 0x2, 0x2, 0x3e2, 0xcf, 0x3, 0x2, 0x2, 0x2, 0x3e3, 0x3e6, - 0x5, 0x46, 0x24, 0x2, 0x3e4, 0x3e6, 0x5, 0x8e, 0x48, 0x2, 0x3e5, - 0x3e3, 0x3, 0x2, 0x2, 0x2, 0x3e5, 0x3e4, 0x3, 0x2, 0x2, 0x2, 0x3e6, - 0xd1, 0x3, 0x2, 0x2, 0x2, 0x63, 0xd5, 0xd7, 0xdb, 0xe0, 0xf1, 0xfe, - 0x110, 0x118, 0x11c, 0x131, 0x140, 0x149, 0x15a, 0x165, 0x167, 0x170, - 0x176, 0x17b, 0x180, 0x186, 0x18d, 0x19a, 0x1ad, 0x1af, 0x1b6, 0x1be, - 0x1c9, 0x1d1, 0x1d5, 0x1d9, 0x1e4, 0x1e7, 0x1ef, 0x1f1, 0x1fe, 0x202, - 0x208, 0x20e, 0x21b, 0x221, 0x22d, 0x234, 0x237, 0x242, 0x251, 0x258, - 0x263, 0x26e, 0x279, 0x284, 0x28a, 0x290, 0x294, 0x2aa, 0x2b3, 0x2b5, - 0x2bc, 0x2cb, 0x2d3, 0x2db, 0x2e3, 0x2f0, 0x300, 0x307, 0x30b, 0x314, - 0x31d, 0x33e, 0x349, 0x34c, 0x34f, 0x352, 0x359, 0x361, 0x364, 0x367, - 0x36a, 0x375, 0x379, 0x37e, 0x383, 0x38e, 0x396, 0x398, 0x3a0, 0x3a4, - 0x3ab, 0x3ae, 0x3b5, 0x3b8, 0x3c1, 0x3c5, 0x3cf, 0x3d2, 0x3d6, 0x3dc, - 0x3e5, - }; - - _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, - serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); - - - atn::ATNDeserializer deserializer; - _atn = deserializer.deserialize(_serializedATN); - - size_t count = _atn.getNumberOfDecisions(); - _decisionToDFA.reserve(count); - for (size_t i = 0; i < count; i++) { - _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); - } -} - -qasm3Parser::Initializer qasm3Parser::_init; + +// Generated from qasm3.g4 by ANTLR 4.9.2 + + +#include "qasm3Listener.h" +#include "qasm3Visitor.h" + +#include "qasm3Parser.h" + + +using namespace antlrcpp; +using namespace qasm3; +using namespace antlr4; + +qasm3Parser::qasm3Parser(TokenStream *input) : Parser(input) { + _interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache); +} + +qasm3Parser::~qasm3Parser() { + delete _interpreter; +} + +std::string qasm3Parser::getGrammarFileName() const { + return "qasm3.g4"; +} + +const std::vector& qasm3Parser::getRuleNames() const { + return _ruleNames; +} + +dfa::Vocabulary& qasm3Parser::getVocabulary() const { + return _vocabulary; +} + + +//----------------- ProgramContext ------------------------------------------------------------------ + +qasm3Parser::ProgramContext::ProgramContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::HeaderContext* qasm3Parser::ProgramContext::header() { + return getRuleContext(0); +} + +std::vector qasm3Parser::ProgramContext::globalStatement() { + return getRuleContexts(); +} + +qasm3Parser::GlobalStatementContext* qasm3Parser::ProgramContext::globalStatement(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::ProgramContext::statement() { + return getRuleContexts(); +} + +qasm3Parser::StatementContext* qasm3Parser::ProgramContext::statement(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::ProgramContext::getRuleIndex() const { + return qasm3Parser::RuleProgram; +} + +void qasm3Parser::ProgramContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterProgram(this); +} + +void qasm3Parser::ProgramContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitProgram(this); +} + + +antlrcpp::Any qasm3Parser::ProgramContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitProgram(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ProgramContext* qasm3Parser::program() { + ProgramContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 0, qasm3Parser::RuleProgram); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(208); + header(); + setState(213); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) + | (1ULL << qasm3Parser::T__4) + | (1ULL << qasm3Parser::T__5) + | (1ULL << qasm3Parser::T__6) + | (1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__17) + | (1ULL << qasm3Parser::T__18) + | (1ULL << qasm3Parser::T__20) + | (1ULL << qasm3Parser::T__21) + | (1ULL << qasm3Parser::T__22) + | (1ULL << qasm3Parser::T__23) + | (1ULL << qasm3Parser::T__24) + | (1ULL << qasm3Parser::T__25) + | (1ULL << qasm3Parser::T__26) + | (1ULL << qasm3Parser::T__27) + | (1ULL << qasm3Parser::T__28) + | (1ULL << qasm3Parser::T__30) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__75 - 64)) + | (1ULL << (qasm3Parser::T__77 - 64)) + | (1ULL << (qasm3Parser::T__78 - 64)) + | (1ULL << (qasm3Parser::T__80 - 64)) + | (1ULL << (qasm3Parser::T__81 - 64)) + | (1ULL << (qasm3Parser::T__82 - 64)) + | (1ULL << (qasm3Parser::T__83 - 64)) + | (1ULL << (qasm3Parser::T__84 - 64)) + | (1ULL << (qasm3Parser::T__85 - 64)) + | (1ULL << (qasm3Parser::T__86 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__89 - 64)) + | (1ULL << (qasm3Parser::T__90 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::T__92 - 64)) + | (1ULL << (qasm3Parser::T__93 - 64)) + | (1ULL << (qasm3Parser::T__94 - 64)) + | (1ULL << (qasm3Parser::T__95 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(211); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__5: + case qasm3Parser::T__6: + case qasm3Parser::T__20: + case qasm3Parser::T__83: + case qasm3Parser::T__84: + case qasm3Parser::T__86: + case qasm3Parser::T__94: + case qasm3Parser::T__95: { + setState(209); + globalStatement(); + break; + } + + case qasm3Parser::T__2: + case qasm3Parser::T__4: + case qasm3Parser::T__7: + case qasm3Parser::T__8: + case qasm3Parser::T__9: + case qasm3Parser::T__10: + case qasm3Parser::T__11: + case qasm3Parser::T__12: + case qasm3Parser::T__13: + case qasm3Parser::T__14: + case qasm3Parser::T__15: + case qasm3Parser::T__16: + case qasm3Parser::T__17: + case qasm3Parser::T__18: + case qasm3Parser::T__21: + case qasm3Parser::T__22: + case qasm3Parser::T__23: + case qasm3Parser::T__24: + case qasm3Parser::T__25: + case qasm3Parser::T__26: + case qasm3Parser::T__27: + case qasm3Parser::T__28: + case qasm3Parser::T__30: + case qasm3Parser::T__31: + case qasm3Parser::T__32: + case qasm3Parser::T__51: + case qasm3Parser::T__52: + case qasm3Parser::T__53: + case qasm3Parser::T__54: + case qasm3Parser::T__55: + case qasm3Parser::T__56: + case qasm3Parser::T__57: + case qasm3Parser::T__58: + case qasm3Parser::T__59: + case qasm3Parser::T__60: + case qasm3Parser::T__61: + case qasm3Parser::T__62: + case qasm3Parser::T__63: + case qasm3Parser::T__75: + case qasm3Parser::T__77: + case qasm3Parser::T__78: + case qasm3Parser::T__80: + case qasm3Parser::T__81: + case qasm3Parser::T__82: + case qasm3Parser::T__85: + case qasm3Parser::T__87: + case qasm3Parser::T__88: + case qasm3Parser::T__89: + case qasm3Parser::T__90: + case qasm3Parser::T__91: + case qasm3Parser::T__92: + case qasm3Parser::T__93: + case qasm3Parser::LPAREN: + case qasm3Parser::MINUS: + case qasm3Parser::Constant: + case qasm3Parser::Integer: + case qasm3Parser::Identifier: + case qasm3Parser::RealNumber: + case qasm3Parser::TimingLiteral: + case qasm3Parser::StringLiteral: { + setState(210); + statement(); + break; + } + + default: + throw NoViableAltException(this); + } + setState(215); + _errHandler->sync(this); + _la = _input->LA(1); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- HeaderContext ------------------------------------------------------------------ + +qasm3Parser::HeaderContext::HeaderContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::VersionContext* qasm3Parser::HeaderContext::version() { + return getRuleContext(0); +} + +std::vector qasm3Parser::HeaderContext::include() { + return getRuleContexts(); +} + +qasm3Parser::IncludeContext* qasm3Parser::HeaderContext::include(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::HeaderContext::getRuleIndex() const { + return qasm3Parser::RuleHeader; +} + +void qasm3Parser::HeaderContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterHeader(this); +} + +void qasm3Parser::HeaderContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitHeader(this); +} + + +antlrcpp::Any qasm3Parser::HeaderContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitHeader(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::HeaderContext* qasm3Parser::header() { + HeaderContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 2, qasm3Parser::RuleHeader); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(217); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::T__0) { + setState(216); + version(); + } + setState(222); + _errHandler->sync(this); + _la = _input->LA(1); + while (_la == qasm3Parser::T__1) { + setState(219); + include(); + setState(224); + _errHandler->sync(this); + _la = _input->LA(1); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- VersionContext ------------------------------------------------------------------ + +qasm3Parser::VersionContext::VersionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::VersionContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + +tree::TerminalNode* qasm3Parser::VersionContext::Integer() { + return getToken(qasm3Parser::Integer, 0); +} + +tree::TerminalNode* qasm3Parser::VersionContext::RealNumber() { + return getToken(qasm3Parser::RealNumber, 0); +} + + +size_t qasm3Parser::VersionContext::getRuleIndex() const { + return qasm3Parser::RuleVersion; +} + +void qasm3Parser::VersionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterVersion(this); +} + +void qasm3Parser::VersionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitVersion(this); +} + + +antlrcpp::Any qasm3Parser::VersionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitVersion(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::VersionContext* qasm3Parser::version() { + VersionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 4, qasm3Parser::RuleVersion); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(225); + match(qasm3Parser::T__0); + setState(226); + _la = _input->LA(1); + if (!(_la == qasm3Parser::Integer + + || _la == qasm3Parser::RealNumber)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(227); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IncludeContext ------------------------------------------------------------------ + +qasm3Parser::IncludeContext::IncludeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::IncludeContext::StringLiteral() { + return getToken(qasm3Parser::StringLiteral, 0); +} + +tree::TerminalNode* qasm3Parser::IncludeContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::IncludeContext::getRuleIndex() const { + return qasm3Parser::RuleInclude; +} + +void qasm3Parser::IncludeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterInclude(this); +} + +void qasm3Parser::IncludeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitInclude(this); +} + + +antlrcpp::Any qasm3Parser::IncludeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitInclude(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::IncludeContext* qasm3Parser::include() { + IncludeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 6, qasm3Parser::RuleInclude); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(229); + match(qasm3Parser::T__1); + setState(230); + match(qasm3Parser::StringLiteral); + setState(231); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- GlobalStatementContext ------------------------------------------------------------------ + +qasm3Parser::GlobalStatementContext::GlobalStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::SubroutineDefinitionContext* qasm3Parser::GlobalStatementContext::subroutineDefinition() { + return getRuleContext(0); +} + +qasm3Parser::KernelDeclarationContext* qasm3Parser::GlobalStatementContext::kernelDeclaration() { + return getRuleContext(0); +} + +qasm3Parser::QuantumGateDefinitionContext* qasm3Parser::GlobalStatementContext::quantumGateDefinition() { + return getRuleContext(0); +} + +qasm3Parser::CalibrationContext* qasm3Parser::GlobalStatementContext::calibration() { + return getRuleContext(0); +} + +qasm3Parser::QuantumDeclarationStatementContext* qasm3Parser::GlobalStatementContext::quantumDeclarationStatement() { + return getRuleContext(0); +} + +qasm3Parser::PragmaContext* qasm3Parser::GlobalStatementContext::pragma() { + return getRuleContext(0); +} + + +size_t qasm3Parser::GlobalStatementContext::getRuleIndex() const { + return qasm3Parser::RuleGlobalStatement; +} + +void qasm3Parser::GlobalStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterGlobalStatement(this); +} + +void qasm3Parser::GlobalStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitGlobalStatement(this); +} + + +antlrcpp::Any qasm3Parser::GlobalStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitGlobalStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::GlobalStatementContext* qasm3Parser::globalStatement() { + GlobalStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 8, qasm3Parser::RuleGlobalStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(239); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__84: { + enterOuterAlt(_localctx, 1); + setState(233); + subroutineDefinition(); + break; + } + + case qasm3Parser::T__83: { + enterOuterAlt(_localctx, 2); + setState(234); + kernelDeclaration(); + break; + } + + case qasm3Parser::T__20: { + enterOuterAlt(_localctx, 3); + setState(235); + quantumGateDefinition(); + break; + } + + case qasm3Parser::T__94: + case qasm3Parser::T__95: { + enterOuterAlt(_localctx, 4); + setState(236); + calibration(); + break; + } + + case qasm3Parser::T__5: + case qasm3Parser::T__6: { + enterOuterAlt(_localctx, 5); + setState(237); + quantumDeclarationStatement(); + break; + } + + case qasm3Parser::T__86: { + enterOuterAlt(_localctx, 6); + setState(238); + pragma(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- StatementContext ------------------------------------------------------------------ + +qasm3Parser::StatementContext::StatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ExpressionStatementContext* qasm3Parser::StatementContext::expressionStatement() { + return getRuleContext(0); +} + +qasm3Parser::AssignmentStatementContext* qasm3Parser::StatementContext::assignmentStatement() { + return getRuleContext(0); +} + +qasm3Parser::ClassicalDeclarationStatementContext* qasm3Parser::StatementContext::classicalDeclarationStatement() { + return getRuleContext(0); +} + +qasm3Parser::BranchingStatementContext* qasm3Parser::StatementContext::branchingStatement() { + return getRuleContext(0); +} + +qasm3Parser::LoopStatementContext* qasm3Parser::StatementContext::loopStatement() { + return getRuleContext(0); +} + +qasm3Parser::ControlDirectiveStatementContext* qasm3Parser::StatementContext::controlDirectiveStatement() { + return getRuleContext(0); +} + +qasm3Parser::AliasStatementContext* qasm3Parser::StatementContext::aliasStatement() { + return getRuleContext(0); +} + +qasm3Parser::QuantumStatementContext* qasm3Parser::StatementContext::quantumStatement() { + return getRuleContext(0); +} + +qasm3Parser::ReturnStatementContext* qasm3Parser::StatementContext::returnStatement() { + return getRuleContext(0); +} + +qasm3Parser::Qcor_test_statementContext* qasm3Parser::StatementContext::qcor_test_statement() { + return getRuleContext(0); +} + +qasm3Parser::Compute_action_stmtContext* qasm3Parser::StatementContext::compute_action_stmt() { + return getRuleContext(0); +} + + +size_t qasm3Parser::StatementContext::getRuleIndex() const { + return qasm3Parser::RuleStatement; +} + +void qasm3Parser::StatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterStatement(this); +} + +void qasm3Parser::StatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitStatement(this); +} + + +antlrcpp::Any qasm3Parser::StatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::StatementContext* qasm3Parser::statement() { + StatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 10, qasm3Parser::RuleStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(252); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 5, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(241); + expressionStatement(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(242); + assignmentStatement(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(243); + classicalDeclarationStatement(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(244); + branchingStatement(); + break; + } + + case 5: { + enterOuterAlt(_localctx, 5); + setState(245); + loopStatement(); + break; + } + + case 6: { + enterOuterAlt(_localctx, 6); + setState(246); + controlDirectiveStatement(); + break; + } + + case 7: { + enterOuterAlt(_localctx, 7); + setState(247); + aliasStatement(); + break; + } + + case 8: { + enterOuterAlt(_localctx, 8); + setState(248); + quantumStatement(); + break; + } + + case 9: { + enterOuterAlt(_localctx, 9); + setState(249); + returnStatement(); + break; + } + + case 10: { + enterOuterAlt(_localctx, 10); + setState(250); + qcor_test_statement(); + break; + } + + case 11: { + enterOuterAlt(_localctx, 11); + setState(251); + compute_action_stmt(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Compute_action_stmtContext ------------------------------------------------------------------ + +qasm3Parser::Compute_action_stmtContext::Compute_action_stmtContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::Compute_action_stmtContext::programBlock() { + return getRuleContexts(); +} + +qasm3Parser::ProgramBlockContext* qasm3Parser::Compute_action_stmtContext::programBlock(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::Compute_action_stmtContext::getRuleIndex() const { + return qasm3Parser::RuleCompute_action_stmt; +} + +void qasm3Parser::Compute_action_stmtContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCompute_action_stmt(this); +} + +void qasm3Parser::Compute_action_stmtContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCompute_action_stmt(this); +} + + +antlrcpp::Any qasm3Parser::Compute_action_stmtContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCompute_action_stmt(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::Compute_action_stmtContext* qasm3Parser::compute_action_stmt() { + Compute_action_stmtContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 12, qasm3Parser::RuleCompute_action_stmt); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(254); + match(qasm3Parser::T__2); + setState(255); + dynamic_cast(_localctx)->compute_block = programBlock(); + setState(256); + match(qasm3Parser::T__3); + setState(257); + dynamic_cast(_localctx)->action_block = programBlock(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- Qcor_test_statementContext ------------------------------------------------------------------ + +qasm3Parser::Qcor_test_statementContext::Qcor_test_statementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::Qcor_test_statementContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +qasm3Parser::BooleanExpressionContext* qasm3Parser::Qcor_test_statementContext::booleanExpression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::Qcor_test_statementContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::Qcor_test_statementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::Qcor_test_statementContext::getRuleIndex() const { + return qasm3Parser::RuleQcor_test_statement; +} + +void qasm3Parser::Qcor_test_statementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQcor_test_statement(this); +} + +void qasm3Parser::Qcor_test_statementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQcor_test_statement(this); +} + + +antlrcpp::Any qasm3Parser::Qcor_test_statementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQcor_test_statement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::Qcor_test_statementContext* qasm3Parser::qcor_test_statement() { + Qcor_test_statementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 14, qasm3Parser::RuleQcor_test_statement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(259); + match(qasm3Parser::T__4); + setState(260); + match(qasm3Parser::LPAREN); + setState(261); + booleanExpression(0); + setState(262); + match(qasm3Parser::RPAREN); + setState(263); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumDeclarationStatementContext ------------------------------------------------------------------ + +qasm3Parser::QuantumDeclarationStatementContext::QuantumDeclarationStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::QuantumDeclarationContext* qasm3Parser::QuantumDeclarationStatementContext::quantumDeclaration() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::QuantumDeclarationStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::QuantumDeclarationStatementContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumDeclarationStatement; +} + +void qasm3Parser::QuantumDeclarationStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumDeclarationStatement(this); +} + +void qasm3Parser::QuantumDeclarationStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumDeclarationStatement(this); +} + + +antlrcpp::Any qasm3Parser::QuantumDeclarationStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumDeclarationStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumDeclarationStatementContext* qasm3Parser::quantumDeclarationStatement() { + QuantumDeclarationStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 16, qasm3Parser::RuleQuantumDeclarationStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(265); + quantumDeclaration(); + setState(266); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ClassicalDeclarationStatementContext ------------------------------------------------------------------ + +qasm3Parser::ClassicalDeclarationStatementContext::ClassicalDeclarationStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::ClassicalDeclarationStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + +qasm3Parser::ClassicalDeclarationContext* qasm3Parser::ClassicalDeclarationStatementContext::classicalDeclaration() { + return getRuleContext(0); +} + +qasm3Parser::ConstantDeclarationContext* qasm3Parser::ClassicalDeclarationStatementContext::constantDeclaration() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ClassicalDeclarationStatementContext::getRuleIndex() const { + return qasm3Parser::RuleClassicalDeclarationStatement; +} + +void qasm3Parser::ClassicalDeclarationStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterClassicalDeclarationStatement(this); +} + +void qasm3Parser::ClassicalDeclarationStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitClassicalDeclarationStatement(this); +} + + +antlrcpp::Any qasm3Parser::ClassicalDeclarationStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClassicalDeclarationStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ClassicalDeclarationStatementContext* qasm3Parser::classicalDeclarationStatement() { + ClassicalDeclarationStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 18, qasm3Parser::RuleClassicalDeclarationStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(270); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__7: + case qasm3Parser::T__8: + case qasm3Parser::T__9: + case qasm3Parser::T__10: + case qasm3Parser::T__11: + case qasm3Parser::T__12: + case qasm3Parser::T__13: + case qasm3Parser::T__14: + case qasm3Parser::T__15: + case qasm3Parser::T__16: + case qasm3Parser::T__87: + case qasm3Parser::T__88: { + setState(268); + classicalDeclaration(); + break; + } + + case qasm3Parser::T__17: { + setState(269); + constantDeclaration(); + break; + } + + default: + throw NoViableAltException(this); + } + setState(272); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ClassicalAssignmentContext ------------------------------------------------------------------ + +qasm3Parser::ClassicalAssignmentContext::ClassicalAssignmentContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::ClassicalAssignmentContext::indexIdentifier() { + return getRuleContexts(); +} + +qasm3Parser::IndexIdentifierContext* qasm3Parser::ClassicalAssignmentContext::indexIdentifier(size_t i) { + return getRuleContext(i); +} + +qasm3Parser::AssignmentOperatorContext* qasm3Parser::ClassicalAssignmentContext::assignmentOperator() { + return getRuleContext(0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::ClassicalAssignmentContext::expression() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ClassicalAssignmentContext::getRuleIndex() const { + return qasm3Parser::RuleClassicalAssignment; +} + +void qasm3Parser::ClassicalAssignmentContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterClassicalAssignment(this); +} + +void qasm3Parser::ClassicalAssignmentContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitClassicalAssignment(this); +} + + +antlrcpp::Any qasm3Parser::ClassicalAssignmentContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClassicalAssignment(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ClassicalAssignmentContext* qasm3Parser::classicalAssignment() { + ClassicalAssignmentContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 20, qasm3Parser::RuleClassicalAssignment); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(274); + indexIdentifier(0); + setState(275); + assignmentOperator(); + setState(278); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 7, _ctx)) { + case 1: { + setState(276); + expression(0); + break; + } + + case 2: { + setState(277); + indexIdentifier(0); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- AssignmentStatementContext ------------------------------------------------------------------ + +qasm3Parser::AssignmentStatementContext::AssignmentStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::AssignmentStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + +qasm3Parser::ClassicalAssignmentContext* qasm3Parser::AssignmentStatementContext::classicalAssignment() { + return getRuleContext(0); +} + +qasm3Parser::QuantumMeasurementAssignmentContext* qasm3Parser::AssignmentStatementContext::quantumMeasurementAssignment() { + return getRuleContext(0); +} + + +size_t qasm3Parser::AssignmentStatementContext::getRuleIndex() const { + return qasm3Parser::RuleAssignmentStatement; +} + +void qasm3Parser::AssignmentStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterAssignmentStatement(this); +} + +void qasm3Parser::AssignmentStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitAssignmentStatement(this); +} + + +antlrcpp::Any qasm3Parser::AssignmentStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitAssignmentStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::AssignmentStatementContext* qasm3Parser::assignmentStatement() { + AssignmentStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 22, qasm3Parser::RuleAssignmentStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(282); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 8, _ctx)) { + case 1: { + setState(280); + classicalAssignment(); + break; + } + + case 2: { + setState(281); + quantumMeasurementAssignment(); + break; + } + + default: + break; + } + setState(284); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ReturnSignatureContext ------------------------------------------------------------------ + +qasm3Parser::ReturnSignatureContext::ReturnSignatureContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::ReturnSignatureContext::ARROW() { + return getToken(qasm3Parser::ARROW, 0); +} + +qasm3Parser::ClassicalTypeContext* qasm3Parser::ReturnSignatureContext::classicalType() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ReturnSignatureContext::getRuleIndex() const { + return qasm3Parser::RuleReturnSignature; +} + +void qasm3Parser::ReturnSignatureContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterReturnSignature(this); +} + +void qasm3Parser::ReturnSignatureContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitReturnSignature(this); +} + + +antlrcpp::Any qasm3Parser::ReturnSignatureContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitReturnSignature(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ReturnSignatureContext* qasm3Parser::returnSignature() { + ReturnSignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 24, qasm3Parser::RuleReturnSignature); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(286); + match(qasm3Parser::ARROW); + setState(287); + classicalType(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- DesignatorContext ------------------------------------------------------------------ + +qasm3Parser::DesignatorContext::DesignatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::DesignatorContext::LBRACKET() { + return getToken(qasm3Parser::LBRACKET, 0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::DesignatorContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::DesignatorContext::RBRACKET() { + return getToken(qasm3Parser::RBRACKET, 0); +} + + +size_t qasm3Parser::DesignatorContext::getRuleIndex() const { + return qasm3Parser::RuleDesignator; +} + +void qasm3Parser::DesignatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterDesignator(this); +} + +void qasm3Parser::DesignatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitDesignator(this); +} + + +antlrcpp::Any qasm3Parser::DesignatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitDesignator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::DesignatorContext* qasm3Parser::designator() { + DesignatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 26, qasm3Parser::RuleDesignator); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(289); + match(qasm3Parser::LBRACKET); + setState(290); + expression(0); + setState(291); + match(qasm3Parser::RBRACKET); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- DoubleDesignatorContext ------------------------------------------------------------------ + +qasm3Parser::DoubleDesignatorContext::DoubleDesignatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::DoubleDesignatorContext::LBRACKET() { + return getToken(qasm3Parser::LBRACKET, 0); +} + +std::vector qasm3Parser::DoubleDesignatorContext::expression() { + return getRuleContexts(); +} + +qasm3Parser::ExpressionContext* qasm3Parser::DoubleDesignatorContext::expression(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* qasm3Parser::DoubleDesignatorContext::COMMA() { + return getToken(qasm3Parser::COMMA, 0); +} + +tree::TerminalNode* qasm3Parser::DoubleDesignatorContext::RBRACKET() { + return getToken(qasm3Parser::RBRACKET, 0); +} + + +size_t qasm3Parser::DoubleDesignatorContext::getRuleIndex() const { + return qasm3Parser::RuleDoubleDesignator; +} + +void qasm3Parser::DoubleDesignatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterDoubleDesignator(this); +} + +void qasm3Parser::DoubleDesignatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitDoubleDesignator(this); +} + + +antlrcpp::Any qasm3Parser::DoubleDesignatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitDoubleDesignator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::DoubleDesignatorContext* qasm3Parser::doubleDesignator() { + DoubleDesignatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 28, qasm3Parser::RuleDoubleDesignator); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(293); + match(qasm3Parser::LBRACKET); + setState(294); + expression(0); + setState(295); + match(qasm3Parser::COMMA); + setState(296); + expression(0); + setState(297); + match(qasm3Parser::RBRACKET); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IdentifierListContext ------------------------------------------------------------------ + +qasm3Parser::IdentifierListContext::IdentifierListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::IdentifierListContext::Identifier() { + return getTokens(qasm3Parser::Identifier); +} + +tree::TerminalNode* qasm3Parser::IdentifierListContext::Identifier(size_t i) { + return getToken(qasm3Parser::Identifier, i); +} + +std::vector qasm3Parser::IdentifierListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::IdentifierListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::IdentifierListContext::getRuleIndex() const { + return qasm3Parser::RuleIdentifierList; +} + +void qasm3Parser::IdentifierListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIdentifierList(this); +} + +void qasm3Parser::IdentifierListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIdentifierList(this); +} + + +antlrcpp::Any qasm3Parser::IdentifierListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitIdentifierList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::IdentifierListContext* qasm3Parser::identifierList() { + IdentifierListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 30, qasm3Parser::RuleIdentifierList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(303); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 9, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(299); + match(qasm3Parser::Identifier); + setState(300); + match(qasm3Parser::COMMA); + } + setState(305); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 9, _ctx); + } + setState(306); + match(qasm3Parser::Identifier); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- AssociationContext ------------------------------------------------------------------ + +qasm3Parser::AssociationContext::AssociationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::AssociationContext::COLON() { + return getToken(qasm3Parser::COLON, 0); +} + +tree::TerminalNode* qasm3Parser::AssociationContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + + +size_t qasm3Parser::AssociationContext::getRuleIndex() const { + return qasm3Parser::RuleAssociation; +} + +void qasm3Parser::AssociationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterAssociation(this); +} + +void qasm3Parser::AssociationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitAssociation(this); +} + + +antlrcpp::Any qasm3Parser::AssociationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitAssociation(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::AssociationContext* qasm3Parser::association() { + AssociationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 32, qasm3Parser::RuleAssociation); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(308); + match(qasm3Parser::COLON); + setState(309); + match(qasm3Parser::Identifier); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumTypeContext ------------------------------------------------------------------ + +qasm3Parser::QuantumTypeContext::QuantumTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::QuantumTypeContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumType; +} + +void qasm3Parser::QuantumTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumType(this); +} + +void qasm3Parser::QuantumTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumType(this); +} + + +antlrcpp::Any qasm3Parser::QuantumTypeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumType(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumTypeContext* qasm3Parser::quantumType() { + QuantumTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 34, qasm3Parser::RuleQuantumType); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(311); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__5 + + || _la == qasm3Parser::T__6)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::QuantumDeclarationContext::QuantumDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::QuantumDeclarationContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::DesignatorContext* qasm3Parser::QuantumDeclarationContext::designator() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumDeclaration; +} + +void qasm3Parser::QuantumDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumDeclaration(this); +} + +void qasm3Parser::QuantumDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::QuantumDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumDeclarationContext* qasm3Parser::quantumDeclaration() { + QuantumDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 36, qasm3Parser::RuleQuantumDeclaration); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(323); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__6: { + enterOuterAlt(_localctx, 1); + setState(313); + match(qasm3Parser::T__6); + setState(314); + match(qasm3Parser::Identifier); + setState(316); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LBRACKET) { + setState(315); + designator(); + } + break; + } + + case qasm3Parser::T__5: { + enterOuterAlt(_localctx, 2); + setState(318); + match(qasm3Parser::T__5); + setState(320); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LBRACKET) { + setState(319); + designator(); + } + setState(322); + match(qasm3Parser::Identifier); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumArgumentContext ------------------------------------------------------------------ + +qasm3Parser::QuantumArgumentContext::QuantumArgumentContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::QuantumTypeContext* qasm3Parser::QuantumArgumentContext::quantumType() { + return getRuleContext(0); +} + +qasm3Parser::AssociationContext* qasm3Parser::QuantumArgumentContext::association() { + return getRuleContext(0); +} + +qasm3Parser::DesignatorContext* qasm3Parser::QuantumArgumentContext::designator() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumArgumentContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumArgument; +} + +void qasm3Parser::QuantumArgumentContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumArgument(this); +} + +void qasm3Parser::QuantumArgumentContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumArgument(this); +} + + +antlrcpp::Any qasm3Parser::QuantumArgumentContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumArgument(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumArgumentContext* qasm3Parser::quantumArgument() { + QuantumArgumentContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 38, qasm3Parser::RuleQuantumArgument); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(325); + quantumType(); + setState(327); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LBRACKET) { + setState(326); + designator(); + } + setState(329); + association(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumArgumentListContext ------------------------------------------------------------------ + +qasm3Parser::QuantumArgumentListContext::QuantumArgumentListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::QuantumArgumentListContext::quantumArgument() { + return getRuleContexts(); +} + +qasm3Parser::QuantumArgumentContext* qasm3Parser::QuantumArgumentListContext::quantumArgument(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::QuantumArgumentListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::QuantumArgumentListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::QuantumArgumentListContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumArgumentList; +} + +void qasm3Parser::QuantumArgumentListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumArgumentList(this); +} + +void qasm3Parser::QuantumArgumentListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumArgumentList(this); +} + + +antlrcpp::Any qasm3Parser::QuantumArgumentListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumArgumentList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumArgumentListContext* qasm3Parser::quantumArgumentList() { + QuantumArgumentListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 40, qasm3Parser::RuleQuantumArgumentList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(336); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 14, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(331); + quantumArgument(); + setState(332); + match(qasm3Parser::COMMA); + } + setState(338); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 14, _ctx); + } + setState(339); + quantumArgument(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BitTypeContext ------------------------------------------------------------------ + +qasm3Parser::BitTypeContext::BitTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::BitTypeContext::getRuleIndex() const { + return qasm3Parser::RuleBitType; +} + +void qasm3Parser::BitTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBitType(this); +} + +void qasm3Parser::BitTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBitType(this); +} + + +antlrcpp::Any qasm3Parser::BitTypeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBitType(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::BitTypeContext* qasm3Parser::bitType() { + BitTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 42, qasm3Parser::RuleBitType); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(341); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__7 + + || _la == qasm3Parser::T__8)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SingleDesignatorTypeContext ------------------------------------------------------------------ + +qasm3Parser::SingleDesignatorTypeContext::SingleDesignatorTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::SingleDesignatorTypeContext::getRuleIndex() const { + return qasm3Parser::RuleSingleDesignatorType; +} + +void qasm3Parser::SingleDesignatorTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSingleDesignatorType(this); +} + +void qasm3Parser::SingleDesignatorTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSingleDesignatorType(this); +} + + +antlrcpp::Any qasm3Parser::SingleDesignatorTypeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitSingleDesignatorType(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::SingleDesignatorTypeContext* qasm3Parser::singleDesignatorType() { + SingleDesignatorTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 44, qasm3Parser::RuleSingleDesignatorType); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(343); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- DoubleDesignatorTypeContext ------------------------------------------------------------------ + +qasm3Parser::DoubleDesignatorTypeContext::DoubleDesignatorTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::DoubleDesignatorTypeContext::getRuleIndex() const { + return qasm3Parser::RuleDoubleDesignatorType; +} + +void qasm3Parser::DoubleDesignatorTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterDoubleDesignatorType(this); +} + +void qasm3Parser::DoubleDesignatorTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitDoubleDesignatorType(this); +} + + +antlrcpp::Any qasm3Parser::DoubleDesignatorTypeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitDoubleDesignatorType(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::DoubleDesignatorTypeContext* qasm3Parser::doubleDesignatorType() { + DoubleDesignatorTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 46, qasm3Parser::RuleDoubleDesignatorType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(345); + match(qasm3Parser::T__13); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- NoDesignatorTypeContext ------------------------------------------------------------------ + +qasm3Parser::NoDesignatorTypeContext::NoDesignatorTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::TimingTypeContext* qasm3Parser::NoDesignatorTypeContext::timingType() { + return getRuleContext(0); +} + + +size_t qasm3Parser::NoDesignatorTypeContext::getRuleIndex() const { + return qasm3Parser::RuleNoDesignatorType; +} + +void qasm3Parser::NoDesignatorTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterNoDesignatorType(this); +} + +void qasm3Parser::NoDesignatorTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitNoDesignatorType(this); +} + + +antlrcpp::Any qasm3Parser::NoDesignatorTypeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitNoDesignatorType(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::NoDesignatorTypeContext* qasm3Parser::noDesignatorType() { + NoDesignatorTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 48, qasm3Parser::RuleNoDesignatorType); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(353); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__14: { + enterOuterAlt(_localctx, 1); + setState(347); + match(qasm3Parser::T__14); + break; + } + + case qasm3Parser::T__87: + case qasm3Parser::T__88: { + enterOuterAlt(_localctx, 2); + setState(348); + timingType(); + break; + } + + case qasm3Parser::T__9: { + enterOuterAlt(_localctx, 3); + setState(349); + match(qasm3Parser::T__9); + break; + } + + case qasm3Parser::T__15: { + enterOuterAlt(_localctx, 4); + setState(350); + match(qasm3Parser::T__15); + break; + } + + case qasm3Parser::T__11: { + enterOuterAlt(_localctx, 5); + setState(351); + match(qasm3Parser::T__11); + break; + } + + case qasm3Parser::T__16: { + enterOuterAlt(_localctx, 6); + setState(352); + match(qasm3Parser::T__16); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ClassicalTypeContext ------------------------------------------------------------------ + +qasm3Parser::ClassicalTypeContext::ClassicalTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::SingleDesignatorTypeContext* qasm3Parser::ClassicalTypeContext::singleDesignatorType() { + return getRuleContext(0); +} + +qasm3Parser::DesignatorContext* qasm3Parser::ClassicalTypeContext::designator() { + return getRuleContext(0); +} + +qasm3Parser::DoubleDesignatorTypeContext* qasm3Parser::ClassicalTypeContext::doubleDesignatorType() { + return getRuleContext(0); +} + +qasm3Parser::DoubleDesignatorContext* qasm3Parser::ClassicalTypeContext::doubleDesignator() { + return getRuleContext(0); +} + +qasm3Parser::NoDesignatorTypeContext* qasm3Parser::ClassicalTypeContext::noDesignatorType() { + return getRuleContext(0); +} + +qasm3Parser::BitTypeContext* qasm3Parser::ClassicalTypeContext::bitType() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ClassicalTypeContext::getRuleIndex() const { + return qasm3Parser::RuleClassicalType; +} + +void qasm3Parser::ClassicalTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterClassicalType(this); +} + +void qasm3Parser::ClassicalTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitClassicalType(this); +} + + +antlrcpp::Any qasm3Parser::ClassicalTypeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClassicalType(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ClassicalTypeContext* qasm3Parser::classicalType() { + ClassicalTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 50, qasm3Parser::RuleClassicalType); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(366); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 17, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(355); + singleDesignatorType(); + setState(356); + designator(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(358); + doubleDesignatorType(); + setState(359); + doubleDesignator(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(361); + noDesignatorType(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(362); + bitType(); + setState(364); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LBRACKET) { + setState(363); + designator(); + } + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ConstantDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::ConstantDeclarationContext::ConstantDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::EqualsAssignmentListContext* qasm3Parser::ConstantDeclarationContext::equalsAssignmentList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ConstantDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleConstantDeclaration; +} + +void qasm3Parser::ConstantDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterConstantDeclaration(this); +} + +void qasm3Parser::ConstantDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitConstantDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::ConstantDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitConstantDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ConstantDeclarationContext* qasm3Parser::constantDeclaration() { + ConstantDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 52, qasm3Parser::RuleConstantDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(368); + match(qasm3Parser::T__17); + setState(369); + equalsAssignmentList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SingleDesignatorDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::SingleDesignatorDeclarationContext::SingleDesignatorDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::SingleDesignatorTypeContext* qasm3Parser::SingleDesignatorDeclarationContext::singleDesignatorType() { + return getRuleContext(0); +} + +qasm3Parser::DesignatorContext* qasm3Parser::SingleDesignatorDeclarationContext::designator() { + return getRuleContext(0); +} + +qasm3Parser::IdentifierListContext* qasm3Parser::SingleDesignatorDeclarationContext::identifierList() { + return getRuleContext(0); +} + +qasm3Parser::EqualsAssignmentListContext* qasm3Parser::SingleDesignatorDeclarationContext::equalsAssignmentList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::SingleDesignatorDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleSingleDesignatorDeclaration; +} + +void qasm3Parser::SingleDesignatorDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSingleDesignatorDeclaration(this); +} + +void qasm3Parser::SingleDesignatorDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSingleDesignatorDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::SingleDesignatorDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitSingleDesignatorDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::SingleDesignatorDeclarationContext* qasm3Parser::singleDesignatorDeclaration() { + SingleDesignatorDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 54, qasm3Parser::RuleSingleDesignatorDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(371); + singleDesignatorType(); + setState(372); + designator(); + setState(375); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 18, _ctx)) { + case 1: { + setState(373); + identifierList(); + break; + } + + case 2: { + setState(374); + equalsAssignmentList(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- DoubleDesignatorDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::DoubleDesignatorDeclarationContext::DoubleDesignatorDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::DoubleDesignatorTypeContext* qasm3Parser::DoubleDesignatorDeclarationContext::doubleDesignatorType() { + return getRuleContext(0); +} + +qasm3Parser::DoubleDesignatorContext* qasm3Parser::DoubleDesignatorDeclarationContext::doubleDesignator() { + return getRuleContext(0); +} + +qasm3Parser::IdentifierListContext* qasm3Parser::DoubleDesignatorDeclarationContext::identifierList() { + return getRuleContext(0); +} + +qasm3Parser::EqualsAssignmentListContext* qasm3Parser::DoubleDesignatorDeclarationContext::equalsAssignmentList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::DoubleDesignatorDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleDoubleDesignatorDeclaration; +} + +void qasm3Parser::DoubleDesignatorDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterDoubleDesignatorDeclaration(this); +} + +void qasm3Parser::DoubleDesignatorDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitDoubleDesignatorDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::DoubleDesignatorDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitDoubleDesignatorDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::DoubleDesignatorDeclarationContext* qasm3Parser::doubleDesignatorDeclaration() { + DoubleDesignatorDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 56, qasm3Parser::RuleDoubleDesignatorDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(377); + doubleDesignatorType(); + setState(378); + doubleDesignator(); + setState(381); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 19, _ctx)) { + case 1: { + setState(379); + identifierList(); + break; + } + + case 2: { + setState(380); + equalsAssignmentList(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- NoDesignatorDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::NoDesignatorDeclarationContext::NoDesignatorDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::NoDesignatorTypeContext* qasm3Parser::NoDesignatorDeclarationContext::noDesignatorType() { + return getRuleContext(0); +} + +qasm3Parser::IdentifierListContext* qasm3Parser::NoDesignatorDeclarationContext::identifierList() { + return getRuleContext(0); +} + +qasm3Parser::EqualsAssignmentListContext* qasm3Parser::NoDesignatorDeclarationContext::equalsAssignmentList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::NoDesignatorDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleNoDesignatorDeclaration; +} + +void qasm3Parser::NoDesignatorDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterNoDesignatorDeclaration(this); +} + +void qasm3Parser::NoDesignatorDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitNoDesignatorDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::NoDesignatorDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitNoDesignatorDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::NoDesignatorDeclarationContext* qasm3Parser::noDesignatorDeclaration() { + NoDesignatorDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 58, qasm3Parser::RuleNoDesignatorDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(383); + noDesignatorType(); + setState(386); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 20, _ctx)) { + case 1: { + setState(384); + identifierList(); + break; + } + + case 2: { + setState(385); + equalsAssignmentList(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BitDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::BitDeclarationContext::BitDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::BitTypeContext* qasm3Parser::BitDeclarationContext::bitType() { + return getRuleContext(0); +} + +qasm3Parser::IndexIdentifierListContext* qasm3Parser::BitDeclarationContext::indexIdentifierList() { + return getRuleContext(0); +} + +qasm3Parser::IndexEqualsAssignmentListContext* qasm3Parser::BitDeclarationContext::indexEqualsAssignmentList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::BitDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleBitDeclaration; +} + +void qasm3Parser::BitDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBitDeclaration(this); +} + +void qasm3Parser::BitDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBitDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::BitDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBitDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::BitDeclarationContext* qasm3Parser::bitDeclaration() { + BitDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 60, qasm3Parser::RuleBitDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(388); + bitType(); + setState(391); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 21, _ctx)) { + case 1: { + setState(389); + indexIdentifierList(); + break; + } + + case 2: { + setState(390); + indexEqualsAssignmentList(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ClassicalDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::ClassicalDeclarationContext::ClassicalDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::SingleDesignatorDeclarationContext* qasm3Parser::ClassicalDeclarationContext::singleDesignatorDeclaration() { + return getRuleContext(0); +} + +qasm3Parser::DoubleDesignatorDeclarationContext* qasm3Parser::ClassicalDeclarationContext::doubleDesignatorDeclaration() { + return getRuleContext(0); +} + +qasm3Parser::NoDesignatorDeclarationContext* qasm3Parser::ClassicalDeclarationContext::noDesignatorDeclaration() { + return getRuleContext(0); +} + +qasm3Parser::BitDeclarationContext* qasm3Parser::ClassicalDeclarationContext::bitDeclaration() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ClassicalDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleClassicalDeclaration; +} + +void qasm3Parser::ClassicalDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterClassicalDeclaration(this); +} + +void qasm3Parser::ClassicalDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitClassicalDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::ClassicalDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClassicalDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ClassicalDeclarationContext* qasm3Parser::classicalDeclaration() { + ClassicalDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 62, qasm3Parser::RuleClassicalDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(397); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 22, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(393); + singleDesignatorDeclaration(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(394); + doubleDesignatorDeclaration(); + break; + } + + case 3: { + enterOuterAlt(_localctx, 3); + setState(395); + noDesignatorDeclaration(); + break; + } + + case 4: { + enterOuterAlt(_localctx, 4); + setState(396); + bitDeclaration(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ClassicalTypeListContext ------------------------------------------------------------------ + +qasm3Parser::ClassicalTypeListContext::ClassicalTypeListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::ClassicalTypeListContext::classicalType() { + return getRuleContexts(); +} + +qasm3Parser::ClassicalTypeContext* qasm3Parser::ClassicalTypeListContext::classicalType(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::ClassicalTypeListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::ClassicalTypeListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::ClassicalTypeListContext::getRuleIndex() const { + return qasm3Parser::RuleClassicalTypeList; +} + +void qasm3Parser::ClassicalTypeListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterClassicalTypeList(this); +} + +void qasm3Parser::ClassicalTypeListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitClassicalTypeList(this); +} + + +antlrcpp::Any qasm3Parser::ClassicalTypeListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClassicalTypeList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ClassicalTypeListContext* qasm3Parser::classicalTypeList() { + ClassicalTypeListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 64, qasm3Parser::RuleClassicalTypeList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(404); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 23, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(399); + classicalType(); + setState(400); + match(qasm3Parser::COMMA); + } + setState(406); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 23, _ctx); + } + setState(407); + classicalType(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ClassicalArgumentContext ------------------------------------------------------------------ + +qasm3Parser::ClassicalArgumentContext::ClassicalArgumentContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ClassicalTypeContext* qasm3Parser::ClassicalArgumentContext::classicalType() { + return getRuleContext(0); +} + +qasm3Parser::AssociationContext* qasm3Parser::ClassicalArgumentContext::association() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ClassicalArgumentContext::getRuleIndex() const { + return qasm3Parser::RuleClassicalArgument; +} + +void qasm3Parser::ClassicalArgumentContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterClassicalArgument(this); +} + +void qasm3Parser::ClassicalArgumentContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitClassicalArgument(this); +} + + +antlrcpp::Any qasm3Parser::ClassicalArgumentContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClassicalArgument(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ClassicalArgumentContext* qasm3Parser::classicalArgument() { + ClassicalArgumentContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 66, qasm3Parser::RuleClassicalArgument); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(409); + classicalType(); + setState(410); + association(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ClassicalArgumentListContext ------------------------------------------------------------------ + +qasm3Parser::ClassicalArgumentListContext::ClassicalArgumentListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::ClassicalArgumentListContext::classicalArgument() { + return getRuleContexts(); +} + +qasm3Parser::ClassicalArgumentContext* qasm3Parser::ClassicalArgumentListContext::classicalArgument(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::ClassicalArgumentListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::ClassicalArgumentListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::ClassicalArgumentListContext::getRuleIndex() const { + return qasm3Parser::RuleClassicalArgumentList; +} + +void qasm3Parser::ClassicalArgumentListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterClassicalArgumentList(this); +} + +void qasm3Parser::ClassicalArgumentListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitClassicalArgumentList(this); +} + + +antlrcpp::Any qasm3Parser::ClassicalArgumentListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitClassicalArgumentList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ClassicalArgumentListContext* qasm3Parser::classicalArgumentList() { + ClassicalArgumentListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 68, qasm3Parser::RuleClassicalArgumentList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(417); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 24, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(412); + classicalArgument(); + setState(413); + match(qasm3Parser::COMMA); + } + setState(419); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 24, _ctx); + } + setState(420); + classicalArgument(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- AliasStatementContext ------------------------------------------------------------------ + +qasm3Parser::AliasStatementContext::AliasStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::AliasStatementContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +tree::TerminalNode* qasm3Parser::AliasStatementContext::EQUALS() { + return getToken(qasm3Parser::EQUALS, 0); +} + +qasm3Parser::IndexIdentifierContext* qasm3Parser::AliasStatementContext::indexIdentifier() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::AliasStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::AliasStatementContext::getRuleIndex() const { + return qasm3Parser::RuleAliasStatement; +} + +void qasm3Parser::AliasStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterAliasStatement(this); +} + +void qasm3Parser::AliasStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitAliasStatement(this); +} + + +antlrcpp::Any qasm3Parser::AliasStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitAliasStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::AliasStatementContext* qasm3Parser::aliasStatement() { + AliasStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 70, qasm3Parser::RuleAliasStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(422); + match(qasm3Parser::T__18); + setState(423); + match(qasm3Parser::Identifier); + setState(424); + match(qasm3Parser::EQUALS); + setState(425); + indexIdentifier(0); + setState(426); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IndexIdentifierContext ------------------------------------------------------------------ + +qasm3Parser::IndexIdentifierContext::IndexIdentifierContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::IndexIdentifierContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::RangeDefinitionContext* qasm3Parser::IndexIdentifierContext::rangeDefinition() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::IndexIdentifierContext::LBRACKET() { + return getToken(qasm3Parser::LBRACKET, 0); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::IndexIdentifierContext::expressionList() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::IndexIdentifierContext::RBRACKET() { + return getToken(qasm3Parser::RBRACKET, 0); +} + +std::vector qasm3Parser::IndexIdentifierContext::indexIdentifier() { + return getRuleContexts(); +} + +qasm3Parser::IndexIdentifierContext* qasm3Parser::IndexIdentifierContext::indexIdentifier(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::IndexIdentifierContext::getRuleIndex() const { + return qasm3Parser::RuleIndexIdentifier; +} + +void qasm3Parser::IndexIdentifierContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIndexIdentifier(this); +} + +void qasm3Parser::IndexIdentifierContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIndexIdentifier(this); +} + + +antlrcpp::Any qasm3Parser::IndexIdentifierContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitIndexIdentifier(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::IndexIdentifierContext* qasm3Parser::indexIdentifier() { + return indexIdentifier(0); +} + +qasm3Parser::IndexIdentifierContext* qasm3Parser::indexIdentifier(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::IndexIdentifierContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::IndexIdentifierContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 72; + enterRecursionRule(_localctx, 72, qasm3Parser::RuleIndexIdentifier, precedence); + + + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(438); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 26, _ctx)) { + case 1: { + setState(429); + match(qasm3Parser::Identifier); + setState(430); + rangeDefinition(); + break; + } + + case 2: { + setState(431); + match(qasm3Parser::Identifier); + setState(436); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 25, _ctx)) { + case 1: { + setState(432); + match(qasm3Parser::LBRACKET); + setState(433); + expressionList(); + setState(434); + match(qasm3Parser::RBRACKET); + break; + } + + default: + break; + } + break; + } + + default: + break; + } + _ctx->stop = _input->LT(-1); + setState(445); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 27, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleIndexIdentifier); + setState(440); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(441); + match(qasm3Parser::T__19); + setState(442); + indexIdentifier(2); + } + setState(447); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 27, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- IndexIdentifierListContext ------------------------------------------------------------------ + +qasm3Parser::IndexIdentifierListContext::IndexIdentifierListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::IndexIdentifierListContext::indexIdentifier() { + return getRuleContexts(); +} + +qasm3Parser::IndexIdentifierContext* qasm3Parser::IndexIdentifierListContext::indexIdentifier(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::IndexIdentifierListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::IndexIdentifierListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::IndexIdentifierListContext::getRuleIndex() const { + return qasm3Parser::RuleIndexIdentifierList; +} + +void qasm3Parser::IndexIdentifierListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIndexIdentifierList(this); +} + +void qasm3Parser::IndexIdentifierListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIndexIdentifierList(this); +} + + +antlrcpp::Any qasm3Parser::IndexIdentifierListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitIndexIdentifierList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::IndexIdentifierListContext* qasm3Parser::indexIdentifierList() { + IndexIdentifierListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 74, qasm3Parser::RuleIndexIdentifierList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(453); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 28, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(448); + indexIdentifier(0); + setState(449); + match(qasm3Parser::COMMA); + } + setState(455); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 28, _ctx); + } + setState(456); + indexIdentifier(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- IndexEqualsAssignmentListContext ------------------------------------------------------------------ + +qasm3Parser::IndexEqualsAssignmentListContext::IndexEqualsAssignmentListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::IndexEqualsAssignmentListContext::indexIdentifier() { + return getRuleContexts(); +} + +qasm3Parser::IndexIdentifierContext* qasm3Parser::IndexEqualsAssignmentListContext::indexIdentifier(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::IndexEqualsAssignmentListContext::equalsExpression() { + return getRuleContexts(); +} + +qasm3Parser::EqualsExpressionContext* qasm3Parser::IndexEqualsAssignmentListContext::equalsExpression(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::IndexEqualsAssignmentListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::IndexEqualsAssignmentListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::IndexEqualsAssignmentListContext::getRuleIndex() const { + return qasm3Parser::RuleIndexEqualsAssignmentList; +} + +void qasm3Parser::IndexEqualsAssignmentListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIndexEqualsAssignmentList(this); +} + +void qasm3Parser::IndexEqualsAssignmentListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIndexEqualsAssignmentList(this); +} + + +antlrcpp::Any qasm3Parser::IndexEqualsAssignmentListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitIndexEqualsAssignmentList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::IndexEqualsAssignmentListContext* qasm3Parser::indexEqualsAssignmentList() { + IndexEqualsAssignmentListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 76, qasm3Parser::RuleIndexEqualsAssignmentList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(464); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 29, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(458); + indexIdentifier(0); + setState(459); + equalsExpression(); + setState(460); + match(qasm3Parser::COMMA); + } + setState(466); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 29, _ctx); + } + setState(467); + indexIdentifier(0); + setState(468); + equalsExpression(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- RangeDefinitionContext ------------------------------------------------------------------ + +qasm3Parser::RangeDefinitionContext::RangeDefinitionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::RangeDefinitionContext::LBRACKET() { + return getToken(qasm3Parser::LBRACKET, 0); +} + +std::vector qasm3Parser::RangeDefinitionContext::COLON() { + return getTokens(qasm3Parser::COLON); +} + +tree::TerminalNode* qasm3Parser::RangeDefinitionContext::COLON(size_t i) { + return getToken(qasm3Parser::COLON, i); +} + +tree::TerminalNode* qasm3Parser::RangeDefinitionContext::RBRACKET() { + return getToken(qasm3Parser::RBRACKET, 0); +} + +std::vector qasm3Parser::RangeDefinitionContext::expression() { + return getRuleContexts(); +} + +qasm3Parser::ExpressionContext* qasm3Parser::RangeDefinitionContext::expression(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::RangeDefinitionContext::getRuleIndex() const { + return qasm3Parser::RuleRangeDefinition; +} + +void qasm3Parser::RangeDefinitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterRangeDefinition(this); +} + +void qasm3Parser::RangeDefinitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitRangeDefinition(this); +} + + +antlrcpp::Any qasm3Parser::RangeDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitRangeDefinition(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::RangeDefinitionContext* qasm3Parser::rangeDefinition() { + RangeDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 78, qasm3Parser::RuleRangeDefinition); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(470); + match(qasm3Parser::LBRACKET); + setState(472); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(471); + expression(0); + } + setState(474); + match(qasm3Parser::COLON); + setState(476); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(475); + expression(0); + } + setState(480); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::COLON) { + setState(478); + match(qasm3Parser::COLON); + setState(479); + expression(0); + } + setState(482); + match(qasm3Parser::RBRACKET); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumGateDefinitionContext ------------------------------------------------------------------ + +qasm3Parser::QuantumGateDefinitionContext::QuantumGateDefinitionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::QuantumGateSignatureContext* qasm3Parser::QuantumGateDefinitionContext::quantumGateSignature() { + return getRuleContext(0); +} + +qasm3Parser::QuantumBlockContext* qasm3Parser::QuantumGateDefinitionContext::quantumBlock() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumGateDefinitionContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumGateDefinition; +} + +void qasm3Parser::QuantumGateDefinitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumGateDefinition(this); +} + +void qasm3Parser::QuantumGateDefinitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumGateDefinition(this); +} + + +antlrcpp::Any qasm3Parser::QuantumGateDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumGateDefinition(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumGateDefinitionContext* qasm3Parser::quantumGateDefinition() { + QuantumGateDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 80, qasm3Parser::RuleQuantumGateDefinition); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(484); + match(qasm3Parser::T__20); + setState(485); + quantumGateSignature(); + setState(486); + quantumBlock(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumGateSignatureContext ------------------------------------------------------------------ + +qasm3Parser::QuantumGateSignatureContext::QuantumGateSignatureContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::QuantumGateSignatureContext::identifierList() { + return getRuleContexts(); +} + +qasm3Parser::IdentifierListContext* qasm3Parser::QuantumGateSignatureContext::identifierList(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* qasm3Parser::QuantumGateSignatureContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +tree::TerminalNode* qasm3Parser::QuantumGateSignatureContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::QuantumGateSignatureContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + + +size_t qasm3Parser::QuantumGateSignatureContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumGateSignature; +} + +void qasm3Parser::QuantumGateSignatureContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumGateSignature(this); +} + +void qasm3Parser::QuantumGateSignatureContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumGateSignature(this); +} + + +antlrcpp::Any qasm3Parser::QuantumGateSignatureContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumGateSignature(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumGateSignatureContext* qasm3Parser::quantumGateSignature() { + QuantumGateSignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 82, qasm3Parser::RuleQuantumGateSignature); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(488); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__21 + + || _la == qasm3Parser::T__22 || _la == qasm3Parser::Identifier)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(494); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LPAREN) { + setState(489); + match(qasm3Parser::LPAREN); + setState(491); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::Identifier) { + setState(490); + identifierList(); + } + setState(493); + match(qasm3Parser::RPAREN); + } + setState(496); + identifierList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumBlockContext ------------------------------------------------------------------ + +qasm3Parser::QuantumBlockContext::QuantumBlockContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::QuantumBlockContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::QuantumBlockContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + +std::vector qasm3Parser::QuantumBlockContext::compute_action_stmt() { + return getRuleContexts(); +} + +qasm3Parser::Compute_action_stmtContext* qasm3Parser::QuantumBlockContext::compute_action_stmt(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::QuantumBlockContext::quantumStatement() { + return getRuleContexts(); +} + +qasm3Parser::QuantumStatementContext* qasm3Parser::QuantumBlockContext::quantumStatement(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::QuantumBlockContext::quantumLoop() { + return getRuleContexts(); +} + +qasm3Parser::QuantumLoopContext* qasm3Parser::QuantumBlockContext::quantumLoop(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::QuantumBlockContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumBlock; +} + +void qasm3Parser::QuantumBlockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumBlock(this); +} + +void qasm3Parser::QuantumBlockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumBlock(this); +} + + +antlrcpp::Any qasm3Parser::QuantumBlockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumBlock(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumBlockContext* qasm3Parser::quantumBlock() { + QuantumBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 84, qasm3Parser::RuleQuantumBlock); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(498); + match(qasm3Parser::LBRACE); + setState(504); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) + | (1ULL << qasm3Parser::T__21) + | (1ULL << qasm3Parser::T__22) + | (1ULL << qasm3Parser::T__23) + | (1ULL << qasm3Parser::T__24) + | (1ULL << qasm3Parser::T__25) + | (1ULL << qasm3Parser::T__26) + | (1ULL << qasm3Parser::T__27) + | (1ULL << qasm3Parser::T__28) + | (1ULL << qasm3Parser::T__30))) != 0) || ((((_la - 78) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 78)) & ((1ULL << (qasm3Parser::T__77 - 78)) + | (1ULL << (qasm3Parser::T__78 - 78)) + | (1ULL << (qasm3Parser::T__89 - 78)) + | (1ULL << (qasm3Parser::T__90 - 78)) + | (1ULL << (qasm3Parser::T__92 - 78)) + | (1ULL << (qasm3Parser::T__93 - 78)) + | (1ULL << (qasm3Parser::Identifier - 78)))) != 0)) { + setState(502); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__2: { + setState(499); + compute_action_stmt(); + break; + } + + case qasm3Parser::T__21: + case qasm3Parser::T__22: + case qasm3Parser::T__23: + case qasm3Parser::T__24: + case qasm3Parser::T__25: + case qasm3Parser::T__26: + case qasm3Parser::T__27: + case qasm3Parser::T__28: + case qasm3Parser::T__30: + case qasm3Parser::T__89: + case qasm3Parser::T__90: + case qasm3Parser::T__92: + case qasm3Parser::T__93: + case qasm3Parser::Identifier: { + setState(500); + quantumStatement(); + break; + } + + case qasm3Parser::T__77: + case qasm3Parser::T__78: { + setState(501); + quantumLoop(); + break; + } + + default: + throw NoViableAltException(this); + } + setState(506); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(507); + match(qasm3Parser::RBRACE); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumLoopContext ------------------------------------------------------------------ + +qasm3Parser::QuantumLoopContext::QuantumLoopContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::LoopSignatureContext* qasm3Parser::QuantumLoopContext::loopSignature() { + return getRuleContext(0); +} + +qasm3Parser::QuantumLoopBlockContext* qasm3Parser::QuantumLoopContext::quantumLoopBlock() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumLoopContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumLoop; +} + +void qasm3Parser::QuantumLoopContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumLoop(this); +} + +void qasm3Parser::QuantumLoopContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumLoop(this); +} + + +antlrcpp::Any qasm3Parser::QuantumLoopContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumLoop(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumLoopContext* qasm3Parser::quantumLoop() { + QuantumLoopContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 86, qasm3Parser::RuleQuantumLoop); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(509); + loopSignature(); + setState(510); + quantumLoopBlock(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumLoopBlockContext ------------------------------------------------------------------ + +qasm3Parser::QuantumLoopBlockContext::QuantumLoopBlockContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::QuantumLoopBlockContext::quantumStatement() { + return getRuleContexts(); +} + +qasm3Parser::QuantumStatementContext* qasm3Parser::QuantumLoopBlockContext::quantumStatement(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* qasm3Parser::QuantumLoopBlockContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::QuantumLoopBlockContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + + +size_t qasm3Parser::QuantumLoopBlockContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumLoopBlock; +} + +void qasm3Parser::QuantumLoopBlockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumLoopBlock(this); +} + +void qasm3Parser::QuantumLoopBlockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumLoopBlock(this); +} + + +antlrcpp::Any qasm3Parser::QuantumLoopBlockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumLoopBlock(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumLoopBlockContext* qasm3Parser::quantumLoopBlock() { + QuantumLoopBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 88, qasm3Parser::RuleQuantumLoopBlock); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(521); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__21: + case qasm3Parser::T__22: + case qasm3Parser::T__23: + case qasm3Parser::T__24: + case qasm3Parser::T__25: + case qasm3Parser::T__26: + case qasm3Parser::T__27: + case qasm3Parser::T__28: + case qasm3Parser::T__30: + case qasm3Parser::T__89: + case qasm3Parser::T__90: + case qasm3Parser::T__92: + case qasm3Parser::T__93: + case qasm3Parser::Identifier: { + enterOuterAlt(_localctx, 1); + setState(512); + quantumStatement(); + break; + } + + case qasm3Parser::LBRACE: { + enterOuterAlt(_localctx, 2); + setState(513); + match(qasm3Parser::LBRACE); + setState(517); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__21) + | (1ULL << qasm3Parser::T__22) + | (1ULL << qasm3Parser::T__23) + | (1ULL << qasm3Parser::T__24) + | (1ULL << qasm3Parser::T__25) + | (1ULL << qasm3Parser::T__26) + | (1ULL << qasm3Parser::T__27) + | (1ULL << qasm3Parser::T__28) + | (1ULL << qasm3Parser::T__30))) != 0) || ((((_la - 90) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 90)) & ((1ULL << (qasm3Parser::T__89 - 90)) + | (1ULL << (qasm3Parser::T__90 - 90)) + | (1ULL << (qasm3Parser::T__92 - 90)) + | (1ULL << (qasm3Parser::T__93 - 90)) + | (1ULL << (qasm3Parser::Identifier - 90)))) != 0)) { + setState(514); + quantumStatement(); + setState(519); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(520); + match(qasm3Parser::RBRACE); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumStatementContext ------------------------------------------------------------------ + +qasm3Parser::QuantumStatementContext::QuantumStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::QuantumInstructionContext* qasm3Parser::QuantumStatementContext::quantumInstruction() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::QuantumStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + +qasm3Parser::TimingStatementContext* qasm3Parser::QuantumStatementContext::timingStatement() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumStatementContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumStatement; +} + +void qasm3Parser::QuantumStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumStatement(this); +} + +void qasm3Parser::QuantumStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumStatement(this); +} + + +antlrcpp::Any qasm3Parser::QuantumStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumStatementContext* qasm3Parser::quantumStatement() { + QuantumStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 90, qasm3Parser::RuleQuantumStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(527); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__21: + case qasm3Parser::T__22: + case qasm3Parser::T__23: + case qasm3Parser::T__24: + case qasm3Parser::T__25: + case qasm3Parser::T__26: + case qasm3Parser::T__27: + case qasm3Parser::T__28: + case qasm3Parser::T__30: + case qasm3Parser::Identifier: { + enterOuterAlt(_localctx, 1); + setState(523); + quantumInstruction(); + setState(524); + match(qasm3Parser::SEMICOLON); + break; + } + + case qasm3Parser::T__89: + case qasm3Parser::T__90: + case qasm3Parser::T__92: + case qasm3Parser::T__93: { + enterOuterAlt(_localctx, 2); + setState(526); + timingStatement(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumInstructionContext ------------------------------------------------------------------ + +qasm3Parser::QuantumInstructionContext::QuantumInstructionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::QuantumGateCallContext* qasm3Parser::QuantumInstructionContext::quantumGateCall() { + return getRuleContext(0); +} + +qasm3Parser::QuantumPhaseContext* qasm3Parser::QuantumInstructionContext::quantumPhase() { + return getRuleContext(0); +} + +qasm3Parser::QuantumMeasurementContext* qasm3Parser::QuantumInstructionContext::quantumMeasurement() { + return getRuleContext(0); +} + +qasm3Parser::QuantumBarrierContext* qasm3Parser::QuantumInstructionContext::quantumBarrier() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumInstructionContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumInstruction; +} + +void qasm3Parser::QuantumInstructionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumInstruction(this); +} + +void qasm3Parser::QuantumInstructionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumInstruction(this); +} + + +antlrcpp::Any qasm3Parser::QuantumInstructionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumInstruction(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumInstructionContext* qasm3Parser::quantumInstruction() { + QuantumInstructionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 92, qasm3Parser::RuleQuantumInstruction); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(533); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__21: + case qasm3Parser::T__22: + case qasm3Parser::T__26: + case qasm3Parser::T__27: + case qasm3Parser::T__28: + case qasm3Parser::T__30: + case qasm3Parser::Identifier: { + enterOuterAlt(_localctx, 1); + setState(529); + quantumGateCall(); + break; + } + + case qasm3Parser::T__23: { + enterOuterAlt(_localctx, 2); + setState(530); + quantumPhase(); + break; + } + + case qasm3Parser::T__24: { + enterOuterAlt(_localctx, 3); + setState(531); + quantumMeasurement(); + break; + } + + case qasm3Parser::T__25: { + enterOuterAlt(_localctx, 4); + setState(532); + quantumBarrier(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumPhaseContext ------------------------------------------------------------------ + +qasm3Parser::QuantumPhaseContext::QuantumPhaseContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::QuantumPhaseContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::QuantumPhaseContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +tree::TerminalNode* qasm3Parser::QuantumPhaseContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + + +size_t qasm3Parser::QuantumPhaseContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumPhase; +} + +void qasm3Parser::QuantumPhaseContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumPhase(this); +} + +void qasm3Parser::QuantumPhaseContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumPhase(this); +} + + +antlrcpp::Any qasm3Parser::QuantumPhaseContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumPhase(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumPhaseContext* qasm3Parser::quantumPhase() { + QuantumPhaseContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 94, qasm3Parser::RuleQuantumPhase); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(535); + match(qasm3Parser::T__23); + setState(536); + match(qasm3Parser::LPAREN); + setState(537); + match(qasm3Parser::Identifier); + setState(538); + match(qasm3Parser::RPAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumMeasurementContext ------------------------------------------------------------------ + +qasm3Parser::QuantumMeasurementContext::QuantumMeasurementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumMeasurementContext::indexIdentifierList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumMeasurementContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumMeasurement; +} + +void qasm3Parser::QuantumMeasurementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumMeasurement(this); +} + +void qasm3Parser::QuantumMeasurementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumMeasurement(this); +} + + +antlrcpp::Any qasm3Parser::QuantumMeasurementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumMeasurement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumMeasurementContext* qasm3Parser::quantumMeasurement() { + QuantumMeasurementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 96, qasm3Parser::RuleQuantumMeasurement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(540); + match(qasm3Parser::T__24); + setState(541); + indexIdentifierList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumMeasurementAssignmentContext ------------------------------------------------------------------ + +qasm3Parser::QuantumMeasurementAssignmentContext::QuantumMeasurementAssignmentContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::QuantumMeasurementContext* qasm3Parser::QuantumMeasurementAssignmentContext::quantumMeasurement() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::QuantumMeasurementAssignmentContext::ARROW() { + return getToken(qasm3Parser::ARROW, 0); +} + +qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumMeasurementAssignmentContext::indexIdentifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::QuantumMeasurementAssignmentContext::EQUALS() { + return getToken(qasm3Parser::EQUALS, 0); +} + + +size_t qasm3Parser::QuantumMeasurementAssignmentContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumMeasurementAssignment; +} + +void qasm3Parser::QuantumMeasurementAssignmentContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumMeasurementAssignment(this); +} + +void qasm3Parser::QuantumMeasurementAssignmentContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumMeasurementAssignment(this); +} + + +antlrcpp::Any qasm3Parser::QuantumMeasurementAssignmentContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumMeasurementAssignment(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumMeasurementAssignmentContext* qasm3Parser::quantumMeasurementAssignment() { + QuantumMeasurementAssignmentContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 98, qasm3Parser::RuleQuantumMeasurementAssignment); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(552); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__24: { + enterOuterAlt(_localctx, 1); + setState(543); + quantumMeasurement(); + setState(546); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::ARROW) { + setState(544); + match(qasm3Parser::ARROW); + setState(545); + indexIdentifierList(); + } + break; + } + + case qasm3Parser::Identifier: { + enterOuterAlt(_localctx, 2); + setState(548); + indexIdentifierList(); + setState(549); + match(qasm3Parser::EQUALS); + setState(550); + quantumMeasurement(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumBarrierContext ------------------------------------------------------------------ + +qasm3Parser::QuantumBarrierContext::QuantumBarrierContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumBarrierContext::indexIdentifierList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumBarrierContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumBarrier; +} + +void qasm3Parser::QuantumBarrierContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumBarrier(this); +} + +void qasm3Parser::QuantumBarrierContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumBarrier(this); +} + + +antlrcpp::Any qasm3Parser::QuantumBarrierContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumBarrier(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumBarrierContext* qasm3Parser::quantumBarrier() { + QuantumBarrierContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 100, qasm3Parser::RuleQuantumBarrier); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(554); + match(qasm3Parser::T__25); + setState(555); + indexIdentifierList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumGateModifierContext ------------------------------------------------------------------ + +qasm3Parser::QuantumGateModifierContext::QuantumGateModifierContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::QuantumGateModifierContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::QuantumGateModifierContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::QuantumGateModifierContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + + +size_t qasm3Parser::QuantumGateModifierContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumGateModifier; +} + +void qasm3Parser::QuantumGateModifierContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumGateModifier(this); +} + +void qasm3Parser::QuantumGateModifierContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumGateModifier(this); +} + + +antlrcpp::Any qasm3Parser::QuantumGateModifierContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumGateModifier(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumGateModifierContext* qasm3Parser::quantumGateModifier() { + QuantumGateModifierContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 102, qasm3Parser::RuleQuantumGateModifier); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(564); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__26: { + setState(557); + match(qasm3Parser::T__26); + break; + } + + case qasm3Parser::T__27: { + setState(558); + match(qasm3Parser::T__27); + setState(559); + match(qasm3Parser::LPAREN); + setState(560); + expression(0); + setState(561); + match(qasm3Parser::RPAREN); + break; + } + + case qasm3Parser::T__28: { + setState(563); + match(qasm3Parser::T__28); + break; + } + + default: + throw NoViableAltException(this); + } + setState(566); + match(qasm3Parser::T__29); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumGateCallContext ------------------------------------------------------------------ + +qasm3Parser::QuantumGateCallContext::QuantumGateCallContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::QuantumGateNameContext* qasm3Parser::QuantumGateCallContext::quantumGateName() { + return getRuleContext(0); +} + +qasm3Parser::IndexIdentifierListContext* qasm3Parser::QuantumGateCallContext::indexIdentifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::QuantumGateCallContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::QuantumGateCallContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::QuantumGateCallContext::expressionList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumGateCallContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumGateCall; +} + +void qasm3Parser::QuantumGateCallContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumGateCall(this); +} + +void qasm3Parser::QuantumGateCallContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumGateCall(this); +} + + +antlrcpp::Any qasm3Parser::QuantumGateCallContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumGateCall(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumGateCallContext* qasm3Parser::quantumGateCall() { + QuantumGateCallContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 104, qasm3Parser::RuleQuantumGateCall); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(568); + quantumGateName(); + setState(574); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LPAREN) { + setState(569); + match(qasm3Parser::LPAREN); + setState(571); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(570); + expressionList(); + } + setState(573); + match(qasm3Parser::RPAREN); + } + setState(576); + indexIdentifierList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- QuantumGateNameContext ------------------------------------------------------------------ + +qasm3Parser::QuantumGateNameContext::QuantumGateNameContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::QuantumGateNameContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::QuantumGateModifierContext* qasm3Parser::QuantumGateNameContext::quantumGateModifier() { + return getRuleContext(0); +} + +qasm3Parser::QuantumGateNameContext* qasm3Parser::QuantumGateNameContext::quantumGateName() { + return getRuleContext(0); +} + + +size_t qasm3Parser::QuantumGateNameContext::getRuleIndex() const { + return qasm3Parser::RuleQuantumGateName; +} + +void qasm3Parser::QuantumGateNameContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterQuantumGateName(this); +} + +void qasm3Parser::QuantumGateNameContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitQuantumGateName(this); +} + + +antlrcpp::Any qasm3Parser::QuantumGateNameContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitQuantumGateName(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::QuantumGateNameContext* qasm3Parser::quantumGateName() { + QuantumGateNameContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 106, qasm3Parser::RuleQuantumGateName); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(585); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__21: { + enterOuterAlt(_localctx, 1); + setState(578); + match(qasm3Parser::T__21); + break; + } + + case qasm3Parser::T__22: { + enterOuterAlt(_localctx, 2); + setState(579); + match(qasm3Parser::T__22); + break; + } + + case qasm3Parser::T__30: { + enterOuterAlt(_localctx, 3); + setState(580); + match(qasm3Parser::T__30); + break; + } + + case qasm3Parser::Identifier: { + enterOuterAlt(_localctx, 4); + setState(581); + match(qasm3Parser::Identifier); + break; + } + + case qasm3Parser::T__26: + case qasm3Parser::T__27: + case qasm3Parser::T__28: { + enterOuterAlt(_localctx, 5); + setState(582); + quantumGateModifier(); + setState(583); + quantumGateName(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- UnaryOperatorContext ------------------------------------------------------------------ + +qasm3Parser::UnaryOperatorContext::UnaryOperatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::UnaryOperatorContext::getRuleIndex() const { + return qasm3Parser::RuleUnaryOperator; +} + +void qasm3Parser::UnaryOperatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterUnaryOperator(this); +} + +void qasm3Parser::UnaryOperatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitUnaryOperator(this); +} + + +antlrcpp::Any qasm3Parser::UnaryOperatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitUnaryOperator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::UnaryOperatorContext* qasm3Parser::unaryOperator() { + UnaryOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 108, qasm3Parser::RuleUnaryOperator); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(587); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__31 + + || _la == qasm3Parser::T__32)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- RelationalOperatorContext ------------------------------------------------------------------ + +qasm3Parser::RelationalOperatorContext::RelationalOperatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::RelationalOperatorContext::getRuleIndex() const { + return qasm3Parser::RuleRelationalOperator; +} + +void qasm3Parser::RelationalOperatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterRelationalOperator(this); +} + +void qasm3Parser::RelationalOperatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitRelationalOperator(this); +} + + +antlrcpp::Any qasm3Parser::RelationalOperatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitRelationalOperator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::RelationalOperatorContext* qasm3Parser::relationalOperator() { + RelationalOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 110, qasm3Parser::RuleRelationalOperator); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(589); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__33) + | (1ULL << qasm3Parser::T__34) + | (1ULL << qasm3Parser::T__35) + | (1ULL << qasm3Parser::T__36) + | (1ULL << qasm3Parser::T__37) + | (1ULL << qasm3Parser::T__38))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- LogicalOperatorContext ------------------------------------------------------------------ + +qasm3Parser::LogicalOperatorContext::LogicalOperatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::LogicalOperatorContext::getRuleIndex() const { + return qasm3Parser::RuleLogicalOperator; +} + +void qasm3Parser::LogicalOperatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLogicalOperator(this); +} + +void qasm3Parser::LogicalOperatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLogicalOperator(this); +} + + +antlrcpp::Any qasm3Parser::LogicalOperatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitLogicalOperator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::LogicalOperatorContext* qasm3Parser::logicalOperator() { + LogicalOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 112, qasm3Parser::RuleLogicalOperator); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(591); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__19 + + || _la == qasm3Parser::T__39)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExpressionStatementContext ------------------------------------------------------------------ + +qasm3Parser::ExpressionStatementContext::ExpressionStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ExpressionContext* qasm3Parser::ExpressionStatementContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::ExpressionStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::ExpressionStatementContext::getRuleIndex() const { + return qasm3Parser::RuleExpressionStatement; +} + +void qasm3Parser::ExpressionStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExpressionStatement(this); +} + +void qasm3Parser::ExpressionStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExpressionStatement(this); +} + + +antlrcpp::Any qasm3Parser::ExpressionStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitExpressionStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ExpressionStatementContext* qasm3Parser::expressionStatement() { + ExpressionStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 114, qasm3Parser::RuleExpressionStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(593); + expression(0); + setState(594); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExpressionContext ------------------------------------------------------------------ + +qasm3Parser::ExpressionContext::ExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ExpressionTerminatorContext* qasm3Parser::ExpressionContext::expressionTerminator() { + return getRuleContext(0); +} + +qasm3Parser::UnaryExpressionContext* qasm3Parser::ExpressionContext::unaryExpression() { + return getRuleContext(0); +} + +qasm3Parser::XOrExpressionContext* qasm3Parser::ExpressionContext::xOrExpression() { + return getRuleContext(0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::ExpressionContext::expression() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleExpression; +} + +void qasm3Parser::ExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExpression(this); +} + +void qasm3Parser::ExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExpression(this); +} + + +antlrcpp::Any qasm3Parser::ExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitExpression(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::ExpressionContext* qasm3Parser::expression() { + return expression(0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::expression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::ExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::ExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 116; + enterRecursionRule(_localctx, 116, qasm3Parser::RuleExpression, precedence); + + + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(600); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 47, _ctx)) { + case 1: { + setState(597); + expressionTerminator(0); + break; + } + + case 2: { + setState(598); + unaryExpression(); + break; + } + + case 3: { + setState(599); + xOrExpression(0); + break; + } + + default: + break; + } + _ctx->stop = _input->LT(-1); + setState(607); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpression); + setState(602); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(603); + match(qasm3Parser::T__40); + setState(604); + xOrExpression(0); + } + setState(609); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 48, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- XOrExpressionContext ------------------------------------------------------------------ + +qasm3Parser::XOrExpressionContext::XOrExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::BitAndExpressionContext* qasm3Parser::XOrExpressionContext::bitAndExpression() { + return getRuleContext(0); +} + +qasm3Parser::XOrExpressionContext* qasm3Parser::XOrExpressionContext::xOrExpression() { + return getRuleContext(0); +} + + +size_t qasm3Parser::XOrExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleXOrExpression; +} + +void qasm3Parser::XOrExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterXOrExpression(this); +} + +void qasm3Parser::XOrExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitXOrExpression(this); +} + + +antlrcpp::Any qasm3Parser::XOrExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitXOrExpression(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::XOrExpressionContext* qasm3Parser::xOrExpression() { + return xOrExpression(0); +} + +qasm3Parser::XOrExpressionContext* qasm3Parser::xOrExpression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::XOrExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::XOrExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 118; + enterRecursionRule(_localctx, 118, qasm3Parser::RuleXOrExpression, precedence); + + + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(611); + bitAndExpression(0); + _ctx->stop = _input->LT(-1); + setState(618); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleXOrExpression); + setState(613); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(614); + match(qasm3Parser::T__41); + setState(615); + bitAndExpression(0); + } + setState(620); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 49, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- BitAndExpressionContext ------------------------------------------------------------------ + +qasm3Parser::BitAndExpressionContext::BitAndExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::BitShiftExpressionContext* qasm3Parser::BitAndExpressionContext::bitShiftExpression() { + return getRuleContext(0); +} + +qasm3Parser::BitAndExpressionContext* qasm3Parser::BitAndExpressionContext::bitAndExpression() { + return getRuleContext(0); +} + + +size_t qasm3Parser::BitAndExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleBitAndExpression; +} + +void qasm3Parser::BitAndExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBitAndExpression(this); +} + +void qasm3Parser::BitAndExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBitAndExpression(this); +} + + +antlrcpp::Any qasm3Parser::BitAndExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBitAndExpression(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::BitAndExpressionContext* qasm3Parser::bitAndExpression() { + return bitAndExpression(0); +} + +qasm3Parser::BitAndExpressionContext* qasm3Parser::bitAndExpression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::BitAndExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::BitAndExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 120; + enterRecursionRule(_localctx, 120, qasm3Parser::RuleBitAndExpression, precedence); + + + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(622); + bitShiftExpression(0); + _ctx->stop = _input->LT(-1); + setState(629); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 50, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleBitAndExpression); + setState(624); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(625); + match(qasm3Parser::T__42); + setState(626); + bitShiftExpression(0); + } + setState(631); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 50, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- BitShiftExpressionContext ------------------------------------------------------------------ + +qasm3Parser::BitShiftExpressionContext::BitShiftExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::AdditiveExpressionContext* qasm3Parser::BitShiftExpressionContext::additiveExpression() { + return getRuleContext(0); +} + +qasm3Parser::BitShiftExpressionContext* qasm3Parser::BitShiftExpressionContext::bitShiftExpression() { + return getRuleContext(0); +} + + +size_t qasm3Parser::BitShiftExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleBitShiftExpression; +} + +void qasm3Parser::BitShiftExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBitShiftExpression(this); +} + +void qasm3Parser::BitShiftExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBitShiftExpression(this); +} + + +antlrcpp::Any qasm3Parser::BitShiftExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBitShiftExpression(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::BitShiftExpressionContext* qasm3Parser::bitShiftExpression() { + return bitShiftExpression(0); +} + +qasm3Parser::BitShiftExpressionContext* qasm3Parser::bitShiftExpression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::BitShiftExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::BitShiftExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 122; + enterRecursionRule(_localctx, 122, qasm3Parser::RuleBitShiftExpression, precedence); + + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(633); + additiveExpression(0); + _ctx->stop = _input->LT(-1); + setState(640); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 51, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleBitShiftExpression); + setState(635); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(636); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__43 + + || _la == qasm3Parser::T__44)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(637); + additiveExpression(0); + } + setState(642); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 51, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- AdditiveExpressionContext ------------------------------------------------------------------ + +qasm3Parser::AdditiveExpressionContext::AdditiveExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::AdditiveExpressionContext::multiplicativeExpression() { + return getRuleContext(0); +} + +qasm3Parser::AdditiveExpressionContext* qasm3Parser::AdditiveExpressionContext::additiveExpression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::AdditiveExpressionContext::MINUS() { + return getToken(qasm3Parser::MINUS, 0); +} + + +size_t qasm3Parser::AdditiveExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleAdditiveExpression; +} + +void qasm3Parser::AdditiveExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterAdditiveExpression(this); +} + +void qasm3Parser::AdditiveExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitAdditiveExpression(this); +} + + +antlrcpp::Any qasm3Parser::AdditiveExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitAdditiveExpression(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::AdditiveExpressionContext* qasm3Parser::additiveExpression() { + return additiveExpression(0); +} + +qasm3Parser::AdditiveExpressionContext* qasm3Parser::additiveExpression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::AdditiveExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::AdditiveExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 124; + enterRecursionRule(_localctx, 124, qasm3Parser::RuleAdditiveExpression, precedence); + + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(644); + multiplicativeExpression(0); + _ctx->stop = _input->LT(-1); + setState(651); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleAdditiveExpression); + setState(646); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(647); + dynamic_cast(_localctx)->binary_op = _input->LT(1); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__45 || _la == qasm3Parser::MINUS)) { + dynamic_cast(_localctx)->binary_op = _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(648); + multiplicativeExpression(0); + } + setState(653); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 52, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- MultiplicativeExpressionContext ------------------------------------------------------------------ + +qasm3Parser::MultiplicativeExpressionContext::MultiplicativeExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ExpressionTerminatorContext* qasm3Parser::MultiplicativeExpressionContext::expressionTerminator() { + return getRuleContext(0); +} + +qasm3Parser::UnaryExpressionContext* qasm3Parser::MultiplicativeExpressionContext::unaryExpression() { + return getRuleContext(0); +} + +qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::MultiplicativeExpressionContext::multiplicativeExpression() { + return getRuleContext(0); +} + + +size_t qasm3Parser::MultiplicativeExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleMultiplicativeExpression; +} + +void qasm3Parser::MultiplicativeExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterMultiplicativeExpression(this); +} + +void qasm3Parser::MultiplicativeExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitMultiplicativeExpression(this); +} + + +antlrcpp::Any qasm3Parser::MultiplicativeExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitMultiplicativeExpression(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::multiplicativeExpression() { + return multiplicativeExpression(0); +} + +qasm3Parser::MultiplicativeExpressionContext* qasm3Parser::multiplicativeExpression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::MultiplicativeExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::MultiplicativeExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 126; + enterRecursionRule(_localctx, 126, qasm3Parser::RuleMultiplicativeExpression, precedence); + + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(657); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__7: + case qasm3Parser::T__8: + case qasm3Parser::T__9: + case qasm3Parser::T__10: + case qasm3Parser::T__11: + case qasm3Parser::T__12: + case qasm3Parser::T__13: + case qasm3Parser::T__14: + case qasm3Parser::T__15: + case qasm3Parser::T__16: + case qasm3Parser::T__51: + case qasm3Parser::T__52: + case qasm3Parser::T__53: + case qasm3Parser::T__54: + case qasm3Parser::T__55: + case qasm3Parser::T__56: + case qasm3Parser::T__57: + case qasm3Parser::T__58: + case qasm3Parser::T__59: + case qasm3Parser::T__60: + case qasm3Parser::T__61: + case qasm3Parser::T__62: + case qasm3Parser::T__63: + case qasm3Parser::T__87: + case qasm3Parser::T__88: + case qasm3Parser::T__91: + case qasm3Parser::LPAREN: + case qasm3Parser::MINUS: + case qasm3Parser::Constant: + case qasm3Parser::Integer: + case qasm3Parser::Identifier: + case qasm3Parser::RealNumber: + case qasm3Parser::TimingLiteral: + case qasm3Parser::StringLiteral: { + setState(655); + expressionTerminator(0); + break; + } + + case qasm3Parser::T__31: + case qasm3Parser::T__32: { + setState(656); + unaryExpression(); + break; + } + + default: + throw NoViableAltException(this); + } + _ctx->stop = _input->LT(-1); + setState(667); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 55, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleMultiplicativeExpression); + setState(659); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(660); + dynamic_cast(_localctx)->binary_op = _input->LT(1); + _la = _input->LA(1); + if (!((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__46) + | (1ULL << qasm3Parser::T__47) + | (1ULL << qasm3Parser::T__48))) != 0))) { + dynamic_cast(_localctx)->binary_op = _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + setState(663); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__7: + case qasm3Parser::T__8: + case qasm3Parser::T__9: + case qasm3Parser::T__10: + case qasm3Parser::T__11: + case qasm3Parser::T__12: + case qasm3Parser::T__13: + case qasm3Parser::T__14: + case qasm3Parser::T__15: + case qasm3Parser::T__16: + case qasm3Parser::T__51: + case qasm3Parser::T__52: + case qasm3Parser::T__53: + case qasm3Parser::T__54: + case qasm3Parser::T__55: + case qasm3Parser::T__56: + case qasm3Parser::T__57: + case qasm3Parser::T__58: + case qasm3Parser::T__59: + case qasm3Parser::T__60: + case qasm3Parser::T__61: + case qasm3Parser::T__62: + case qasm3Parser::T__63: + case qasm3Parser::T__87: + case qasm3Parser::T__88: + case qasm3Parser::T__91: + case qasm3Parser::LPAREN: + case qasm3Parser::MINUS: + case qasm3Parser::Constant: + case qasm3Parser::Integer: + case qasm3Parser::Identifier: + case qasm3Parser::RealNumber: + case qasm3Parser::TimingLiteral: + case qasm3Parser::StringLiteral: { + setState(661); + expressionTerminator(0); + break; + } + + case qasm3Parser::T__31: + case qasm3Parser::T__32: { + setState(662); + unaryExpression(); + break; + } + + default: + throw NoViableAltException(this); + } + } + setState(669); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 55, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- UnaryExpressionContext ------------------------------------------------------------------ + +qasm3Parser::UnaryExpressionContext::UnaryExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::UnaryOperatorContext* qasm3Parser::UnaryExpressionContext::unaryOperator() { + return getRuleContext(0); +} + +qasm3Parser::ExpressionTerminatorContext* qasm3Parser::UnaryExpressionContext::expressionTerminator() { + return getRuleContext(0); +} + + +size_t qasm3Parser::UnaryExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleUnaryExpression; +} + +void qasm3Parser::UnaryExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterUnaryExpression(this); +} + +void qasm3Parser::UnaryExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitUnaryExpression(this); +} + + +antlrcpp::Any qasm3Parser::UnaryExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitUnaryExpression(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::UnaryExpressionContext* qasm3Parser::unaryExpression() { + UnaryExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 128, qasm3Parser::RuleUnaryExpression); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(670); + unaryOperator(); + setState(671); + expressionTerminator(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExpressionTerminatorContext ------------------------------------------------------------------ + +qasm3Parser::ExpressionTerminatorContext::ExpressionTerminatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::Constant() { + return getToken(qasm3Parser::Constant, 0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::Integer() { + return getToken(qasm3Parser::Integer, 0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::RealNumber() { + return getToken(qasm3Parser::RealNumber, 0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::StringLiteral() { + return getToken(qasm3Parser::StringLiteral, 0); +} + +qasm3Parser::BuiltInCallContext* qasm3Parser::ExpressionTerminatorContext::builtInCall() { + return getRuleContext(0); +} + +qasm3Parser::KernelCallContext* qasm3Parser::ExpressionTerminatorContext::kernelCall() { + return getRuleContext(0); +} + +qasm3Parser::SubroutineCallContext* qasm3Parser::ExpressionTerminatorContext::subroutineCall() { + return getRuleContext(0); +} + +qasm3Parser::TimingTerminatorContext* qasm3Parser::ExpressionTerminatorContext::timingTerminator() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::MINUS() { + return getToken(qasm3Parser::MINUS, 0); +} + +qasm3Parser::ExpressionTerminatorContext* qasm3Parser::ExpressionTerminatorContext::expressionTerminator() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::ExpressionTerminatorContext::expression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::LBRACKET() { + return getToken(qasm3Parser::LBRACKET, 0); +} + +tree::TerminalNode* qasm3Parser::ExpressionTerminatorContext::RBRACKET() { + return getToken(qasm3Parser::RBRACKET, 0); +} + +qasm3Parser::IncrementorContext* qasm3Parser::ExpressionTerminatorContext::incrementor() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ExpressionTerminatorContext::getRuleIndex() const { + return qasm3Parser::RuleExpressionTerminator; +} + +void qasm3Parser::ExpressionTerminatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExpressionTerminator(this); +} + +void qasm3Parser::ExpressionTerminatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExpressionTerminator(this); +} + + +antlrcpp::Any qasm3Parser::ExpressionTerminatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitExpressionTerminator(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::ExpressionTerminatorContext* qasm3Parser::expressionTerminator() { + return expressionTerminator(0); +} + +qasm3Parser::ExpressionTerminatorContext* qasm3Parser::expressionTerminator(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::ExpressionTerminatorContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::ExpressionTerminatorContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 130; + enterRecursionRule(_localctx, 130, qasm3Parser::RuleExpressionTerminator, precedence); + + + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(689); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 56, _ctx)) { + case 1: { + setState(674); + match(qasm3Parser::Constant); + break; + } + + case 2: { + setState(675); + match(qasm3Parser::Integer); + break; + } + + case 3: { + setState(676); + match(qasm3Parser::RealNumber); + break; + } + + case 4: { + setState(677); + match(qasm3Parser::Identifier); + break; + } + + case 5: { + setState(678); + match(qasm3Parser::StringLiteral); + break; + } + + case 6: { + setState(679); + builtInCall(); + break; + } + + case 7: { + setState(680); + kernelCall(); + break; + } + + case 8: { + setState(681); + subroutineCall(); + break; + } + + case 9: { + setState(682); + timingTerminator(); + break; + } + + case 10: { + setState(683); + match(qasm3Parser::MINUS); + setState(684); + expressionTerminator(4); + break; + } + + case 11: { + setState(685); + match(qasm3Parser::LPAREN); + setState(686); + expression(0); + setState(687); + match(qasm3Parser::RPAREN); + break; + } + + default: + break; + } + _ctx->stop = _input->LT(-1); + setState(700); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 58, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + setState(698); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 57, _ctx)) { + case 1: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpressionTerminator); + setState(691); + + if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(692); + match(qasm3Parser::LBRACKET); + setState(693); + expression(0); + setState(694); + match(qasm3Parser::RBRACKET); + break; + } + + case 2: { + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleExpressionTerminator); + setState(696); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(697); + incrementor(); + break; + } + + default: + break; + } + } + setState(702); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 58, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- IncrementorContext ------------------------------------------------------------------ + +qasm3Parser::IncrementorContext::IncrementorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::IncrementorContext::getRuleIndex() const { + return qasm3Parser::RuleIncrementor; +} + +void qasm3Parser::IncrementorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterIncrementor(this); +} + +void qasm3Parser::IncrementorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitIncrementor(this); +} + + +antlrcpp::Any qasm3Parser::IncrementorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitIncrementor(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::IncrementorContext* qasm3Parser::incrementor() { + IncrementorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 132, qasm3Parser::RuleIncrementor); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(703); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__49 + + || _la == qasm3Parser::T__50)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BuiltInCallContext ------------------------------------------------------------------ + +qasm3Parser::BuiltInCallContext::BuiltInCallContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::BuiltInCallContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::BuiltInCallContext::expressionList() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::BuiltInCallContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +qasm3Parser::BuiltInMathContext* qasm3Parser::BuiltInCallContext::builtInMath() { + return getRuleContext(0); +} + +qasm3Parser::CastOperatorContext* qasm3Parser::BuiltInCallContext::castOperator() { + return getRuleContext(0); +} + + +size_t qasm3Parser::BuiltInCallContext::getRuleIndex() const { + return qasm3Parser::RuleBuiltInCall; +} + +void qasm3Parser::BuiltInCallContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBuiltInCall(this); +} + +void qasm3Parser::BuiltInCallContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBuiltInCall(this); +} + + +antlrcpp::Any qasm3Parser::BuiltInCallContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBuiltInCall(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::BuiltInCallContext* qasm3Parser::builtInCall() { + BuiltInCallContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 134, qasm3Parser::RuleBuiltInCall); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(707); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__51: + case qasm3Parser::T__52: + case qasm3Parser::T__53: + case qasm3Parser::T__54: + case qasm3Parser::T__55: + case qasm3Parser::T__56: + case qasm3Parser::T__57: + case qasm3Parser::T__58: + case qasm3Parser::T__59: + case qasm3Parser::T__60: + case qasm3Parser::T__61: + case qasm3Parser::T__62: + case qasm3Parser::T__63: { + setState(705); + builtInMath(); + break; + } + + case qasm3Parser::T__7: + case qasm3Parser::T__8: + case qasm3Parser::T__9: + case qasm3Parser::T__10: + case qasm3Parser::T__11: + case qasm3Parser::T__12: + case qasm3Parser::T__13: + case qasm3Parser::T__14: + case qasm3Parser::T__15: + case qasm3Parser::T__16: + case qasm3Parser::T__87: + case qasm3Parser::T__88: { + setState(706); + castOperator(); + break; + } + + default: + throw NoViableAltException(this); + } + setState(709); + match(qasm3Parser::LPAREN); + setState(710); + expressionList(); + setState(711); + match(qasm3Parser::RPAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BuiltInMathContext ------------------------------------------------------------------ + +qasm3Parser::BuiltInMathContext::BuiltInMathContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::BuiltInMathContext::getRuleIndex() const { + return qasm3Parser::RuleBuiltInMath; +} + +void qasm3Parser::BuiltInMathContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBuiltInMath(this); +} + +void qasm3Parser::BuiltInMathContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBuiltInMath(this); +} + + +antlrcpp::Any qasm3Parser::BuiltInMathContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBuiltInMath(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::BuiltInMathContext* qasm3Parser::builtInMath() { + BuiltInMathContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 136, qasm3Parser::RuleBuiltInMath); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(713); + _la = _input->LA(1); + if (!(((((_la - 52) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 52)) & ((1ULL << (qasm3Parser::T__51 - 52)) + | (1ULL << (qasm3Parser::T__52 - 52)) + | (1ULL << (qasm3Parser::T__53 - 52)) + | (1ULL << (qasm3Parser::T__54 - 52)) + | (1ULL << (qasm3Parser::T__55 - 52)) + | (1ULL << (qasm3Parser::T__56 - 52)) + | (1ULL << (qasm3Parser::T__57 - 52)) + | (1ULL << (qasm3Parser::T__58 - 52)) + | (1ULL << (qasm3Parser::T__59 - 52)) + | (1ULL << (qasm3Parser::T__60 - 52)) + | (1ULL << (qasm3Parser::T__61 - 52)) + | (1ULL << (qasm3Parser::T__62 - 52)) + | (1ULL << (qasm3Parser::T__63 - 52)))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CastOperatorContext ------------------------------------------------------------------ + +qasm3Parser::CastOperatorContext::CastOperatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ClassicalTypeContext* qasm3Parser::CastOperatorContext::classicalType() { + return getRuleContext(0); +} + + +size_t qasm3Parser::CastOperatorContext::getRuleIndex() const { + return qasm3Parser::RuleCastOperator; +} + +void qasm3Parser::CastOperatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCastOperator(this); +} + +void qasm3Parser::CastOperatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCastOperator(this); +} + + +antlrcpp::Any qasm3Parser::CastOperatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCastOperator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::CastOperatorContext* qasm3Parser::castOperator() { + CastOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 138, qasm3Parser::RuleCastOperator); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(715); + classicalType(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ExpressionListContext ------------------------------------------------------------------ + +qasm3Parser::ExpressionListContext::ExpressionListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::ExpressionListContext::expression() { + return getRuleContexts(); +} + +qasm3Parser::ExpressionContext* qasm3Parser::ExpressionListContext::expression(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::ExpressionListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::ExpressionListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::ExpressionListContext::getRuleIndex() const { + return qasm3Parser::RuleExpressionList; +} + +void qasm3Parser::ExpressionListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterExpressionList(this); +} + +void qasm3Parser::ExpressionListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitExpressionList(this); +} + + +antlrcpp::Any qasm3Parser::ExpressionListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitExpressionList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::expressionList() { + ExpressionListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 140, qasm3Parser::RuleExpressionList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(722); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 60, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(717); + expression(0); + setState(718); + match(qasm3Parser::COMMA); + } + setState(724); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 60, _ctx); + } + setState(725); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BooleanExpressionContext ------------------------------------------------------------------ + +qasm3Parser::BooleanExpressionContext::BooleanExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::MembershipTestContext* qasm3Parser::BooleanExpressionContext::membershipTest() { + return getRuleContext(0); +} + +qasm3Parser::ComparsionExpressionContext* qasm3Parser::BooleanExpressionContext::comparsionExpression() { + return getRuleContext(0); +} + +qasm3Parser::BooleanExpressionContext* qasm3Parser::BooleanExpressionContext::booleanExpression() { + return getRuleContext(0); +} + +qasm3Parser::LogicalOperatorContext* qasm3Parser::BooleanExpressionContext::logicalOperator() { + return getRuleContext(0); +} + + +size_t qasm3Parser::BooleanExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleBooleanExpression; +} + +void qasm3Parser::BooleanExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBooleanExpression(this); +} + +void qasm3Parser::BooleanExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBooleanExpression(this); +} + + +antlrcpp::Any qasm3Parser::BooleanExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBooleanExpression(this); + else + return visitor->visitChildren(this); +} + + +qasm3Parser::BooleanExpressionContext* qasm3Parser::booleanExpression() { + return booleanExpression(0); +} + +qasm3Parser::BooleanExpressionContext* qasm3Parser::booleanExpression(int precedence) { + ParserRuleContext *parentContext = _ctx; + size_t parentState = getState(); + qasm3Parser::BooleanExpressionContext *_localctx = _tracker.createInstance(_ctx, parentState); + qasm3Parser::BooleanExpressionContext *previousContext = _localctx; + (void)previousContext; // Silence compiler, in case the context is not used by generated code. + size_t startState = 142; + enterRecursionRule(_localctx, 142, qasm3Parser::RuleBooleanExpression, precedence); + + + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + unrollRecursionContexts(parentContext); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(730); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 61, _ctx)) { + case 1: { + setState(728); + membershipTest(); + break; + } + + case 2: { + setState(729); + comparsionExpression(); + break; + } + + default: + break; + } + _ctx->stop = _input->LT(-1); + setState(738); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 62, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + if (!_parseListeners.empty()) + triggerExitRuleEvent(); + previousContext = _localctx; + _localctx = _tracker.createInstance(parentContext, parentState); + pushNewRecursionContext(_localctx, startState, RuleBooleanExpression); + setState(732); + + if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(733); + logicalOperator(); + setState(734); + comparsionExpression(); + } + setState(740); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 62, _ctx); + } + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + return _localctx; +} + +//----------------- ComparsionExpressionContext ------------------------------------------------------------------ + +qasm3Parser::ComparsionExpressionContext::ComparsionExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::ComparsionExpressionContext::expression() { + return getRuleContexts(); +} + +qasm3Parser::ExpressionContext* qasm3Parser::ComparsionExpressionContext::expression(size_t i) { + return getRuleContext(i); +} + +qasm3Parser::RelationalOperatorContext* qasm3Parser::ComparsionExpressionContext::relationalOperator() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ComparsionExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleComparsionExpression; +} + +void qasm3Parser::ComparsionExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterComparsionExpression(this); +} + +void qasm3Parser::ComparsionExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitComparsionExpression(this); +} + + +antlrcpp::Any qasm3Parser::ComparsionExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitComparsionExpression(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ComparsionExpressionContext* qasm3Parser::comparsionExpression() { + ComparsionExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 144, qasm3Parser::RuleComparsionExpression); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(746); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 63, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(741); + expression(0); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(742); + expression(0); + setState(743); + relationalOperator(); + setState(744); + expression(0); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- EqualsExpressionContext ------------------------------------------------------------------ + +qasm3Parser::EqualsExpressionContext::EqualsExpressionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::EqualsExpressionContext::EQUALS() { + return getToken(qasm3Parser::EQUALS, 0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::EqualsExpressionContext::expression() { + return getRuleContext(0); +} + + +size_t qasm3Parser::EqualsExpressionContext::getRuleIndex() const { + return qasm3Parser::RuleEqualsExpression; +} + +void qasm3Parser::EqualsExpressionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterEqualsExpression(this); +} + +void qasm3Parser::EqualsExpressionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitEqualsExpression(this); +} + + +antlrcpp::Any qasm3Parser::EqualsExpressionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitEqualsExpression(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::EqualsExpressionContext* qasm3Parser::equalsExpression() { + EqualsExpressionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 146, qasm3Parser::RuleEqualsExpression); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(748); + match(qasm3Parser::EQUALS); + setState(749); + expression(0); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- AssignmentOperatorContext ------------------------------------------------------------------ + +qasm3Parser::AssignmentOperatorContext::AssignmentOperatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::AssignmentOperatorContext::EQUALS() { + return getToken(qasm3Parser::EQUALS, 0); +} + + +size_t qasm3Parser::AssignmentOperatorContext::getRuleIndex() const { + return qasm3Parser::RuleAssignmentOperator; +} + +void qasm3Parser::AssignmentOperatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterAssignmentOperator(this); +} + +void qasm3Parser::AssignmentOperatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitAssignmentOperator(this); +} + + +antlrcpp::Any qasm3Parser::AssignmentOperatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitAssignmentOperator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::AssignmentOperatorContext* qasm3Parser::assignmentOperator() { + AssignmentOperatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 148, qasm3Parser::RuleAssignmentOperator); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(751); + _la = _input->LA(1); + if (!(((((_la - 65) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 65)) & ((1ULL << (qasm3Parser::T__64 - 65)) + | (1ULL << (qasm3Parser::T__65 - 65)) + | (1ULL << (qasm3Parser::T__66 - 65)) + | (1ULL << (qasm3Parser::T__67 - 65)) + | (1ULL << (qasm3Parser::T__68 - 65)) + | (1ULL << (qasm3Parser::T__69 - 65)) + | (1ULL << (qasm3Parser::T__70 - 65)) + | (1ULL << (qasm3Parser::T__71 - 65)) + | (1ULL << (qasm3Parser::T__72 - 65)) + | (1ULL << (qasm3Parser::T__73 - 65)) + | (1ULL << (qasm3Parser::EQUALS - 65)))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- EqualsAssignmentListContext ------------------------------------------------------------------ + +qasm3Parser::EqualsAssignmentListContext::EqualsAssignmentListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::EqualsAssignmentListContext::Identifier() { + return getTokens(qasm3Parser::Identifier); +} + +tree::TerminalNode* qasm3Parser::EqualsAssignmentListContext::Identifier(size_t i) { + return getToken(qasm3Parser::Identifier, i); +} + +std::vector qasm3Parser::EqualsAssignmentListContext::equalsExpression() { + return getRuleContexts(); +} + +qasm3Parser::EqualsExpressionContext* qasm3Parser::EqualsAssignmentListContext::equalsExpression(size_t i) { + return getRuleContext(i); +} + +std::vector qasm3Parser::EqualsAssignmentListContext::COMMA() { + return getTokens(qasm3Parser::COMMA); +} + +tree::TerminalNode* qasm3Parser::EqualsAssignmentListContext::COMMA(size_t i) { + return getToken(qasm3Parser::COMMA, i); +} + + +size_t qasm3Parser::EqualsAssignmentListContext::getRuleIndex() const { + return qasm3Parser::RuleEqualsAssignmentList; +} + +void qasm3Parser::EqualsAssignmentListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterEqualsAssignmentList(this); +} + +void qasm3Parser::EqualsAssignmentListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitEqualsAssignmentList(this); +} + + +antlrcpp::Any qasm3Parser::EqualsAssignmentListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitEqualsAssignmentList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::EqualsAssignmentListContext* qasm3Parser::equalsAssignmentList() { + EqualsAssignmentListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 150, qasm3Parser::RuleEqualsAssignmentList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(759); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(753); + match(qasm3Parser::Identifier); + setState(754); + equalsExpression(); + setState(755); + match(qasm3Parser::COMMA); + } + setState(761); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 64, _ctx); + } + setState(762); + match(qasm3Parser::Identifier); + setState(763); + equalsExpression(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- MembershipTestContext ------------------------------------------------------------------ + +qasm3Parser::MembershipTestContext::MembershipTestContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::MembershipTestContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::SetDeclarationContext* qasm3Parser::MembershipTestContext::setDeclaration() { + return getRuleContext(0); +} + + +size_t qasm3Parser::MembershipTestContext::getRuleIndex() const { + return qasm3Parser::RuleMembershipTest; +} + +void qasm3Parser::MembershipTestContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterMembershipTest(this); +} + +void qasm3Parser::MembershipTestContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitMembershipTest(this); +} + + +antlrcpp::Any qasm3Parser::MembershipTestContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitMembershipTest(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::MembershipTestContext* qasm3Parser::membershipTest() { + MembershipTestContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 152, qasm3Parser::RuleMembershipTest); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(765); + match(qasm3Parser::Identifier); + setState(766); + match(qasm3Parser::T__74); + setState(767); + setDeclaration(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SetDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::SetDeclarationContext::SetDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::SetDeclarationContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::SetDeclarationContext::expressionList() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::SetDeclarationContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + +qasm3Parser::RangeDefinitionContext* qasm3Parser::SetDeclarationContext::rangeDefinition() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::SetDeclarationContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + + +size_t qasm3Parser::SetDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleSetDeclaration; +} + +void qasm3Parser::SetDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSetDeclaration(this); +} + +void qasm3Parser::SetDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSetDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::SetDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitSetDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::SetDeclarationContext* qasm3Parser::setDeclaration() { + SetDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 154, qasm3Parser::RuleSetDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(775); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::LBRACE: { + enterOuterAlt(_localctx, 1); + setState(769); + match(qasm3Parser::LBRACE); + setState(770); + expressionList(); + setState(771); + match(qasm3Parser::RBRACE); + break; + } + + case qasm3Parser::LBRACKET: { + enterOuterAlt(_localctx, 2); + setState(773); + rangeDefinition(); + break; + } + + case qasm3Parser::Identifier: { + enterOuterAlt(_localctx, 3); + setState(774); + match(qasm3Parser::Identifier); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ProgramBlockContext ------------------------------------------------------------------ + +qasm3Parser::ProgramBlockContext::ProgramBlockContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::ProgramBlockContext::statement() { + return getRuleContexts(); +} + +qasm3Parser::StatementContext* qasm3Parser::ProgramBlockContext::statement(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* qasm3Parser::ProgramBlockContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::ProgramBlockContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + + +size_t qasm3Parser::ProgramBlockContext::getRuleIndex() const { + return qasm3Parser::RuleProgramBlock; +} + +void qasm3Parser::ProgramBlockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterProgramBlock(this); +} + +void qasm3Parser::ProgramBlockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitProgramBlock(this); +} + + +antlrcpp::Any qasm3Parser::ProgramBlockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitProgramBlock(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ProgramBlockContext* qasm3Parser::programBlock() { + ProgramBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 156, qasm3Parser::RuleProgramBlock); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(786); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__2: + case qasm3Parser::T__4: + case qasm3Parser::T__7: + case qasm3Parser::T__8: + case qasm3Parser::T__9: + case qasm3Parser::T__10: + case qasm3Parser::T__11: + case qasm3Parser::T__12: + case qasm3Parser::T__13: + case qasm3Parser::T__14: + case qasm3Parser::T__15: + case qasm3Parser::T__16: + case qasm3Parser::T__17: + case qasm3Parser::T__18: + case qasm3Parser::T__21: + case qasm3Parser::T__22: + case qasm3Parser::T__23: + case qasm3Parser::T__24: + case qasm3Parser::T__25: + case qasm3Parser::T__26: + case qasm3Parser::T__27: + case qasm3Parser::T__28: + case qasm3Parser::T__30: + case qasm3Parser::T__31: + case qasm3Parser::T__32: + case qasm3Parser::T__51: + case qasm3Parser::T__52: + case qasm3Parser::T__53: + case qasm3Parser::T__54: + case qasm3Parser::T__55: + case qasm3Parser::T__56: + case qasm3Parser::T__57: + case qasm3Parser::T__58: + case qasm3Parser::T__59: + case qasm3Parser::T__60: + case qasm3Parser::T__61: + case qasm3Parser::T__62: + case qasm3Parser::T__63: + case qasm3Parser::T__75: + case qasm3Parser::T__77: + case qasm3Parser::T__78: + case qasm3Parser::T__80: + case qasm3Parser::T__81: + case qasm3Parser::T__82: + case qasm3Parser::T__85: + case qasm3Parser::T__87: + case qasm3Parser::T__88: + case qasm3Parser::T__89: + case qasm3Parser::T__90: + case qasm3Parser::T__91: + case qasm3Parser::T__92: + case qasm3Parser::T__93: + case qasm3Parser::LPAREN: + case qasm3Parser::MINUS: + case qasm3Parser::Constant: + case qasm3Parser::Integer: + case qasm3Parser::Identifier: + case qasm3Parser::RealNumber: + case qasm3Parser::TimingLiteral: + case qasm3Parser::StringLiteral: { + enterOuterAlt(_localctx, 1); + setState(777); + statement(); + break; + } + + case qasm3Parser::LBRACE: { + enterOuterAlt(_localctx, 2); + setState(778); + match(qasm3Parser::LBRACE); + setState(782); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) + | (1ULL << qasm3Parser::T__4) + | (1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__17) + | (1ULL << qasm3Parser::T__18) + | (1ULL << qasm3Parser::T__21) + | (1ULL << qasm3Parser::T__22) + | (1ULL << qasm3Parser::T__23) + | (1ULL << qasm3Parser::T__24) + | (1ULL << qasm3Parser::T__25) + | (1ULL << qasm3Parser::T__26) + | (1ULL << qasm3Parser::T__27) + | (1ULL << qasm3Parser::T__28) + | (1ULL << qasm3Parser::T__30) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__75 - 64)) + | (1ULL << (qasm3Parser::T__77 - 64)) + | (1ULL << (qasm3Parser::T__78 - 64)) + | (1ULL << (qasm3Parser::T__80 - 64)) + | (1ULL << (qasm3Parser::T__81 - 64)) + | (1ULL << (qasm3Parser::T__82 - 64)) + | (1ULL << (qasm3Parser::T__85 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__89 - 64)) + | (1ULL << (qasm3Parser::T__90 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::T__92 - 64)) + | (1ULL << (qasm3Parser::T__93 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(779); + statement(); + setState(784); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(785); + match(qasm3Parser::RBRACE); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- BranchingStatementContext ------------------------------------------------------------------ + +qasm3Parser::BranchingStatementContext::BranchingStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::BranchingStatementContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +qasm3Parser::BooleanExpressionContext* qasm3Parser::BranchingStatementContext::booleanExpression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::BranchingStatementContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +std::vector qasm3Parser::BranchingStatementContext::programBlock() { + return getRuleContexts(); +} + +qasm3Parser::ProgramBlockContext* qasm3Parser::BranchingStatementContext::programBlock(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::BranchingStatementContext::getRuleIndex() const { + return qasm3Parser::RuleBranchingStatement; +} + +void qasm3Parser::BranchingStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterBranchingStatement(this); +} + +void qasm3Parser::BranchingStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitBranchingStatement(this); +} + + +antlrcpp::Any qasm3Parser::BranchingStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitBranchingStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::BranchingStatementContext* qasm3Parser::branchingStatement() { + BranchingStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 158, qasm3Parser::RuleBranchingStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(788); + match(qasm3Parser::T__75); + setState(789); + match(qasm3Parser::LPAREN); + setState(790); + booleanExpression(0); + setState(791); + match(qasm3Parser::RPAREN); + setState(792); + programBlock(); + setState(795); + _errHandler->sync(this); + + switch (getInterpreter()->adaptivePredict(_input, 68, _ctx)) { + case 1: { + setState(793); + match(qasm3Parser::T__76); + setState(794); + programBlock(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- LoopSignatureContext ------------------------------------------------------------------ + +qasm3Parser::LoopSignatureContext::LoopSignatureContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::MembershipTestContext* qasm3Parser::LoopSignatureContext::membershipTest() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::LoopSignatureContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +qasm3Parser::BooleanExpressionContext* qasm3Parser::LoopSignatureContext::booleanExpression() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::LoopSignatureContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + + +size_t qasm3Parser::LoopSignatureContext::getRuleIndex() const { + return qasm3Parser::RuleLoopSignature; +} + +void qasm3Parser::LoopSignatureContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLoopSignature(this); +} + +void qasm3Parser::LoopSignatureContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLoopSignature(this); +} + + +antlrcpp::Any qasm3Parser::LoopSignatureContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitLoopSignature(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::LoopSignatureContext* qasm3Parser::loopSignature() { + LoopSignatureContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 160, qasm3Parser::RuleLoopSignature); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(804); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__77: { + enterOuterAlt(_localctx, 1); + setState(797); + match(qasm3Parser::T__77); + setState(798); + membershipTest(); + break; + } + + case qasm3Parser::T__78: { + enterOuterAlt(_localctx, 2); + setState(799); + match(qasm3Parser::T__78); + setState(800); + match(qasm3Parser::LPAREN); + setState(801); + booleanExpression(0); + setState(802); + match(qasm3Parser::RPAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- LoopStatementContext ------------------------------------------------------------------ + +qasm3Parser::LoopStatementContext::LoopStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::LoopSignatureContext* qasm3Parser::LoopStatementContext::loopSignature() { + return getRuleContext(0); +} + +qasm3Parser::ProgramBlockContext* qasm3Parser::LoopStatementContext::programBlock() { + return getRuleContext(0); +} + + +size_t qasm3Parser::LoopStatementContext::getRuleIndex() const { + return qasm3Parser::RuleLoopStatement; +} + +void qasm3Parser::LoopStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterLoopStatement(this); +} + +void qasm3Parser::LoopStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitLoopStatement(this); +} + + +antlrcpp::Any qasm3Parser::LoopStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitLoopStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::LoopStatementContext* qasm3Parser::loopStatement() { + LoopStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 162, qasm3Parser::RuleLoopStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(806); + loopSignature(); + setState(807); + programBlock(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CLikeLoopStatementContext ------------------------------------------------------------------ + +qasm3Parser::CLikeLoopStatementContext::CLikeLoopStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +std::vector qasm3Parser::CLikeLoopStatementContext::LPAREN() { + return getTokens(qasm3Parser::LPAREN); +} + +tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::LPAREN(size_t i) { + return getToken(qasm3Parser::LPAREN, i); +} + +qasm3Parser::ClassicalTypeContext* qasm3Parser::CLikeLoopStatementContext::classicalType() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::EqualsExpressionContext* qasm3Parser::CLikeLoopStatementContext::equalsExpression() { + return getRuleContext(0); +} + +std::vector qasm3Parser::CLikeLoopStatementContext::SEMICOLON() { + return getTokens(qasm3Parser::SEMICOLON); +} + +tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::SEMICOLON(size_t i) { + return getToken(qasm3Parser::SEMICOLON, i); +} + +qasm3Parser::BooleanExpressionContext* qasm3Parser::CLikeLoopStatementContext::booleanExpression() { + return getRuleContext(0); +} + +qasm3Parser::ExpressionContext* qasm3Parser::CLikeLoopStatementContext::expression() { + return getRuleContext(0); +} + +std::vector qasm3Parser::CLikeLoopStatementContext::RPAREN() { + return getTokens(qasm3Parser::RPAREN); +} + +tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::RPAREN(size_t i) { + return getToken(qasm3Parser::RPAREN, i); +} + +tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +qasm3Parser::ProgramBlockContext* qasm3Parser::CLikeLoopStatementContext::programBlock() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::CLikeLoopStatementContext::COLON() { + return getToken(qasm3Parser::COLON, 0); +} + + +size_t qasm3Parser::CLikeLoopStatementContext::getRuleIndex() const { + return qasm3Parser::RuleCLikeLoopStatement; +} + +void qasm3Parser::CLikeLoopStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCLikeLoopStatement(this); +} + +void qasm3Parser::CLikeLoopStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCLikeLoopStatement(this); +} + + +antlrcpp::Any qasm3Parser::CLikeLoopStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCLikeLoopStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::CLikeLoopStatementContext* qasm3Parser::cLikeLoopStatement() { + CLikeLoopStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 164, qasm3Parser::RuleCLikeLoopStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(837); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 70, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(809); + match(qasm3Parser::T__77); + setState(810); + match(qasm3Parser::LPAREN); + setState(811); + classicalType(); + setState(812); + match(qasm3Parser::Identifier); + setState(813); + equalsExpression(); + setState(814); + match(qasm3Parser::SEMICOLON); + setState(815); + booleanExpression(0); + setState(816); + match(qasm3Parser::SEMICOLON); + setState(817); + expression(0); + setState(818); + match(qasm3Parser::RPAREN); + setState(819); + match(qasm3Parser::LBRACE); + setState(820); + programBlock(); + setState(821); + match(qasm3Parser::RBRACE); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(823); + match(qasm3Parser::T__77); + setState(824); + match(qasm3Parser::LPAREN); + setState(825); + classicalType(); + setState(826); + match(qasm3Parser::Identifier); + setState(827); + match(qasm3Parser::COLON); + setState(828); + match(qasm3Parser::T__79); + setState(829); + match(qasm3Parser::LPAREN); + setState(830); + expression(0); + setState(831); + match(qasm3Parser::RPAREN); + setState(832); + match(qasm3Parser::RPAREN); + setState(833); + match(qasm3Parser::LBRACE); + setState(834); + programBlock(); + setState(835); + match(qasm3Parser::RBRACE); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ControlDirectiveStatementContext ------------------------------------------------------------------ + +qasm3Parser::ControlDirectiveStatementContext::ControlDirectiveStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ControlDirectiveContext* qasm3Parser::ControlDirectiveStatementContext::controlDirective() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::ControlDirectiveStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::ControlDirectiveStatementContext::getRuleIndex() const { + return qasm3Parser::RuleControlDirectiveStatement; +} + +void qasm3Parser::ControlDirectiveStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterControlDirectiveStatement(this); +} + +void qasm3Parser::ControlDirectiveStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitControlDirectiveStatement(this); +} + + +antlrcpp::Any qasm3Parser::ControlDirectiveStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitControlDirectiveStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ControlDirectiveStatementContext* qasm3Parser::controlDirectiveStatement() { + ControlDirectiveStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 166, qasm3Parser::RuleControlDirectiveStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(839); + controlDirective(); + setState(840); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ControlDirectiveContext ------------------------------------------------------------------ + +qasm3Parser::ControlDirectiveContext::ControlDirectiveContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::ControlDirectiveContext::getRuleIndex() const { + return qasm3Parser::RuleControlDirective; +} + +void qasm3Parser::ControlDirectiveContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterControlDirective(this); +} + +void qasm3Parser::ControlDirectiveContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitControlDirective(this); +} + + +antlrcpp::Any qasm3Parser::ControlDirectiveContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitControlDirective(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ControlDirectiveContext* qasm3Parser::controlDirective() { + ControlDirectiveContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 168, qasm3Parser::RuleControlDirective); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(842); + _la = _input->LA(1); + if (!(((((_la - 81) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 81)) & ((1ULL << (qasm3Parser::T__80 - 81)) + | (1ULL << (qasm3Parser::T__81 - 81)) + | (1ULL << (qasm3Parser::T__82 - 81)))) != 0))) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- KernelDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::KernelDeclarationContext::KernelDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::KernelDeclarationContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +tree::TerminalNode* qasm3Parser::KernelDeclarationContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + +tree::TerminalNode* qasm3Parser::KernelDeclarationContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::KernelDeclarationContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +qasm3Parser::ReturnSignatureContext* qasm3Parser::KernelDeclarationContext::returnSignature() { + return getRuleContext(0); +} + +qasm3Parser::ClassicalTypeContext* qasm3Parser::KernelDeclarationContext::classicalType() { + return getRuleContext(0); +} + +qasm3Parser::ClassicalTypeListContext* qasm3Parser::KernelDeclarationContext::classicalTypeList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::KernelDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleKernelDeclaration; +} + +void qasm3Parser::KernelDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterKernelDeclaration(this); +} + +void qasm3Parser::KernelDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitKernelDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::KernelDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitKernelDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::KernelDeclarationContext* qasm3Parser::kernelDeclaration() { + KernelDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 170, qasm3Parser::RuleKernelDeclaration); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(844); + match(qasm3Parser::T__83); + setState(845); + match(qasm3Parser::Identifier); + setState(851); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LPAREN) { + setState(846); + match(qasm3Parser::LPAREN); + setState(848); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16))) != 0) || _la == qasm3Parser::T__87 + + || _la == qasm3Parser::T__88) { + setState(847); + classicalTypeList(); + } + setState(850); + match(qasm3Parser::RPAREN); + } + setState(854); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::ARROW) { + setState(853); + returnSignature(); + } + setState(857); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16))) != 0) || _la == qasm3Parser::T__87 + + || _la == qasm3Parser::T__88) { + setState(856); + classicalType(); + } + setState(859); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- KernelCallContext ------------------------------------------------------------------ + +qasm3Parser::KernelCallContext::KernelCallContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::KernelCallContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +tree::TerminalNode* qasm3Parser::KernelCallContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::KernelCallContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::KernelCallContext::expressionList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::KernelCallContext::getRuleIndex() const { + return qasm3Parser::RuleKernelCall; +} + +void qasm3Parser::KernelCallContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterKernelCall(this); +} + +void qasm3Parser::KernelCallContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitKernelCall(this); +} + + +antlrcpp::Any qasm3Parser::KernelCallContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitKernelCall(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::KernelCallContext* qasm3Parser::kernelCall() { + KernelCallContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 172, qasm3Parser::RuleKernelCall); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(861); + match(qasm3Parser::Identifier); + setState(862); + match(qasm3Parser::LPAREN); + setState(864); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(863); + expressionList(); + } + setState(866); + match(qasm3Parser::RPAREN); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SubroutineDefinitionContext ------------------------------------------------------------------ + +qasm3Parser::SubroutineDefinitionContext::SubroutineDefinitionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::SubroutineDefinitionContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::SubroutineBlockContext* qasm3Parser::SubroutineDefinitionContext::subroutineBlock() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::SubroutineDefinitionContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::SubroutineDefinitionContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +qasm3Parser::QuantumArgumentListContext* qasm3Parser::SubroutineDefinitionContext::quantumArgumentList() { + return getRuleContext(0); +} + +qasm3Parser::ReturnSignatureContext* qasm3Parser::SubroutineDefinitionContext::returnSignature() { + return getRuleContext(0); +} + +qasm3Parser::ClassicalArgumentListContext* qasm3Parser::SubroutineDefinitionContext::classicalArgumentList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::SubroutineDefinitionContext::getRuleIndex() const { + return qasm3Parser::RuleSubroutineDefinition; +} + +void qasm3Parser::SubroutineDefinitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSubroutineDefinition(this); +} + +void qasm3Parser::SubroutineDefinitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSubroutineDefinition(this); +} + + +antlrcpp::Any qasm3Parser::SubroutineDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitSubroutineDefinition(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::SubroutineDefinitionContext* qasm3Parser::subroutineDefinition() { + SubroutineDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 174, qasm3Parser::RuleSubroutineDefinition); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(868); + match(qasm3Parser::T__84); + setState(869); + match(qasm3Parser::Identifier); + setState(875); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LPAREN) { + setState(870); + match(qasm3Parser::LPAREN); + setState(872); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16))) != 0) || _la == qasm3Parser::T__87 + + || _la == qasm3Parser::T__88) { + setState(871); + classicalArgumentList(); + } + setState(874); + match(qasm3Parser::RPAREN); + } + setState(878); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::T__5 + + || _la == qasm3Parser::T__6) { + setState(877); + quantumArgumentList(); + } + setState(881); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::ARROW) { + setState(880); + returnSignature(); + } + setState(883); + subroutineBlock(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- ReturnStatementContext ------------------------------------------------------------------ + +qasm3Parser::ReturnStatementContext::ReturnStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::StatementContext* qasm3Parser::ReturnStatementContext::statement() { + return getRuleContext(0); +} + + +size_t qasm3Parser::ReturnStatementContext::getRuleIndex() const { + return qasm3Parser::RuleReturnStatement; +} + +void qasm3Parser::ReturnStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterReturnStatement(this); +} + +void qasm3Parser::ReturnStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitReturnStatement(this); +} + + +antlrcpp::Any qasm3Parser::ReturnStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitReturnStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::ReturnStatementContext* qasm3Parser::returnStatement() { + ReturnStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 176, qasm3Parser::RuleReturnStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(885); + match(qasm3Parser::T__85); + setState(886); + statement(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SubroutineBlockContext ------------------------------------------------------------------ + +qasm3Parser::SubroutineBlockContext::SubroutineBlockContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::SubroutineBlockContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::SubroutineBlockContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + +std::vector qasm3Parser::SubroutineBlockContext::statement() { + return getRuleContexts(); +} + +qasm3Parser::StatementContext* qasm3Parser::SubroutineBlockContext::statement(size_t i) { + return getRuleContext(i); +} + +qasm3Parser::ReturnStatementContext* qasm3Parser::SubroutineBlockContext::returnStatement() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::SubroutineBlockContext::EXTERN() { + return getToken(qasm3Parser::EXTERN, 0); +} + +tree::TerminalNode* qasm3Parser::SubroutineBlockContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::SubroutineBlockContext::getRuleIndex() const { + return qasm3Parser::RuleSubroutineBlock; +} + +void qasm3Parser::SubroutineBlockContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSubroutineBlock(this); +} + +void qasm3Parser::SubroutineBlockContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSubroutineBlock(this); +} + + +antlrcpp::Any qasm3Parser::SubroutineBlockContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitSubroutineBlock(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::SubroutineBlockContext* qasm3Parser::subroutineBlock() { + SubroutineBlockContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 178, qasm3Parser::RuleSubroutineBlock); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + setState(901); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::LBRACE: { + enterOuterAlt(_localctx, 1); + setState(888); + match(qasm3Parser::LBRACE); + setState(892); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 80, _ctx); + while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1) { + setState(889); + statement(); + } + setState(894); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 80, _ctx); + } + setState(896); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::T__85) { + setState(895); + returnStatement(); + } + setState(898); + match(qasm3Parser::RBRACE); + break; + } + + case qasm3Parser::EXTERN: { + enterOuterAlt(_localctx, 2); + setState(899); + match(qasm3Parser::EXTERN); + setState(900); + match(qasm3Parser::SEMICOLON); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- SubroutineCallContext ------------------------------------------------------------------ + +qasm3Parser::SubroutineCallContext::SubroutineCallContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::SubroutineCallContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +std::vector qasm3Parser::SubroutineCallContext::expressionList() { + return getRuleContexts(); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::SubroutineCallContext::expressionList(size_t i) { + return getRuleContext(i); +} + +tree::TerminalNode* qasm3Parser::SubroutineCallContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::SubroutineCallContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + + +size_t qasm3Parser::SubroutineCallContext::getRuleIndex() const { + return qasm3Parser::RuleSubroutineCall; +} + +void qasm3Parser::SubroutineCallContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterSubroutineCall(this); +} + +void qasm3Parser::SubroutineCallContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitSubroutineCall(this); +} + + +antlrcpp::Any qasm3Parser::SubroutineCallContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitSubroutineCall(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::SubroutineCallContext* qasm3Parser::subroutineCall() { + SubroutineCallContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 180, qasm3Parser::RuleSubroutineCall); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(903); + match(qasm3Parser::Identifier); + + setState(904); + match(qasm3Parser::LPAREN); + setState(906); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(905); + expressionList(); + } + setState(908); + match(qasm3Parser::RPAREN); + setState(910); + expressionList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- PragmaContext ------------------------------------------------------------------ + +qasm3Parser::PragmaContext::PragmaContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::PragmaContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::PragmaContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + +std::vector qasm3Parser::PragmaContext::statement() { + return getRuleContexts(); +} + +qasm3Parser::StatementContext* qasm3Parser::PragmaContext::statement(size_t i) { + return getRuleContext(i); +} + + +size_t qasm3Parser::PragmaContext::getRuleIndex() const { + return qasm3Parser::RulePragma; +} + +void qasm3Parser::PragmaContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterPragma(this); +} + +void qasm3Parser::PragmaContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitPragma(this); +} + + +antlrcpp::Any qasm3Parser::PragmaContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitPragma(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::PragmaContext* qasm3Parser::pragma() { + PragmaContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 182, qasm3Parser::RulePragma); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(912); + match(qasm3Parser::T__86); + setState(913); + match(qasm3Parser::LBRACE); + setState(917); + _errHandler->sync(this); + _la = _input->LA(1); + while ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__2) + | (1ULL << qasm3Parser::T__4) + | (1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__17) + | (1ULL << qasm3Parser::T__18) + | (1ULL << qasm3Parser::T__21) + | (1ULL << qasm3Parser::T__22) + | (1ULL << qasm3Parser::T__23) + | (1ULL << qasm3Parser::T__24) + | (1ULL << qasm3Parser::T__25) + | (1ULL << qasm3Parser::T__26) + | (1ULL << qasm3Parser::T__27) + | (1ULL << qasm3Parser::T__28) + | (1ULL << qasm3Parser::T__30) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__75 - 64)) + | (1ULL << (qasm3Parser::T__77 - 64)) + | (1ULL << (qasm3Parser::T__78 - 64)) + | (1ULL << (qasm3Parser::T__80 - 64)) + | (1ULL << (qasm3Parser::T__81 - 64)) + | (1ULL << (qasm3Parser::T__82 - 64)) + | (1ULL << (qasm3Parser::T__85 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__89 - 64)) + | (1ULL << (qasm3Parser::T__90 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::T__92 - 64)) + | (1ULL << (qasm3Parser::T__93 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(914); + statement(); + setState(919); + _errHandler->sync(this); + _la = _input->LA(1); + } + setState(920); + match(qasm3Parser::RBRACE); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TimingTypeContext ------------------------------------------------------------------ + +qasm3Parser::TimingTypeContext::TimingTypeContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::TimingTypeContext::Integer() { + return getToken(qasm3Parser::Integer, 0); +} + + +size_t qasm3Parser::TimingTypeContext::getRuleIndex() const { + return qasm3Parser::RuleTimingType; +} + +void qasm3Parser::TimingTypeContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTimingType(this); +} + +void qasm3Parser::TimingTypeContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTimingType(this); +} + + +antlrcpp::Any qasm3Parser::TimingTypeContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTimingType(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::TimingTypeContext* qasm3Parser::timingType() { + TimingTypeContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 184, qasm3Parser::RuleTimingType); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(927); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__87: { + enterOuterAlt(_localctx, 1); + setState(922); + match(qasm3Parser::T__87); + break; + } + + case qasm3Parser::T__88: { + enterOuterAlt(_localctx, 2); + setState(923); + match(qasm3Parser::T__88); + setState(925); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::Integer) { + setState(924); + match(qasm3Parser::Integer); + } + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TimingBoxContext ------------------------------------------------------------------ + +qasm3Parser::TimingBoxContext::TimingBoxContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::TimingBoxContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::QuantumBlockContext* qasm3Parser::TimingBoxContext::quantumBlock() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::TimingBoxContext::TimingLiteral() { + return getToken(qasm3Parser::TimingLiteral, 0); +} + + +size_t qasm3Parser::TimingBoxContext::getRuleIndex() const { + return qasm3Parser::RuleTimingBox; +} + +void qasm3Parser::TimingBoxContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTimingBox(this); +} + +void qasm3Parser::TimingBoxContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTimingBox(this); +} + + +antlrcpp::Any qasm3Parser::TimingBoxContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTimingBox(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::TimingBoxContext* qasm3Parser::timingBox() { + TimingBoxContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 186, qasm3Parser::RuleTimingBox); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(935); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__89: { + enterOuterAlt(_localctx, 1); + setState(929); + match(qasm3Parser::T__89); + setState(930); + match(qasm3Parser::Identifier); + setState(931); + quantumBlock(); + break; + } + + case qasm3Parser::T__90: { + enterOuterAlt(_localctx, 2); + setState(932); + match(qasm3Parser::T__90); + setState(933); + match(qasm3Parser::TimingLiteral); + setState(934); + quantumBlock(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TimingTerminatorContext ------------------------------------------------------------------ + +qasm3Parser::TimingTerminatorContext::TimingTerminatorContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::TimingIdentifierContext* qasm3Parser::TimingTerminatorContext::timingIdentifier() { + return getRuleContext(0); +} + + +size_t qasm3Parser::TimingTerminatorContext::getRuleIndex() const { + return qasm3Parser::RuleTimingTerminator; +} + +void qasm3Parser::TimingTerminatorContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTimingTerminator(this); +} + +void qasm3Parser::TimingTerminatorContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTimingTerminator(this); +} + + +antlrcpp::Any qasm3Parser::TimingTerminatorContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTimingTerminator(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::TimingTerminatorContext* qasm3Parser::timingTerminator() { + TimingTerminatorContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 188, qasm3Parser::RuleTimingTerminator); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(939); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__63: + case qasm3Parser::TimingLiteral: { + enterOuterAlt(_localctx, 1); + setState(937); + timingIdentifier(); + break; + } + + case qasm3Parser::T__91: { + enterOuterAlt(_localctx, 2); + setState(938); + match(qasm3Parser::T__91); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TimingIdentifierContext ------------------------------------------------------------------ + +qasm3Parser::TimingIdentifierContext::TimingIdentifierContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::TimingIdentifierContext::TimingLiteral() { + return getToken(qasm3Parser::TimingLiteral, 0); +} + +tree::TerminalNode* qasm3Parser::TimingIdentifierContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::TimingIdentifierContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::TimingIdentifierContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::QuantumBlockContext* qasm3Parser::TimingIdentifierContext::quantumBlock() { + return getRuleContext(0); +} + + +size_t qasm3Parser::TimingIdentifierContext::getRuleIndex() const { + return qasm3Parser::RuleTimingIdentifier; +} + +void qasm3Parser::TimingIdentifierContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTimingIdentifier(this); +} + +void qasm3Parser::TimingIdentifierContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTimingIdentifier(this); +} + + +antlrcpp::Any qasm3Parser::TimingIdentifierContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTimingIdentifier(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::TimingIdentifierContext* qasm3Parser::timingIdentifier() { + TimingIdentifierContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 190, qasm3Parser::RuleTimingIdentifier); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(949); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::TimingLiteral: { + enterOuterAlt(_localctx, 1); + setState(941); + match(qasm3Parser::TimingLiteral); + break; + } + + case qasm3Parser::T__63: { + enterOuterAlt(_localctx, 2); + setState(942); + match(qasm3Parser::T__63); + setState(943); + match(qasm3Parser::LPAREN); + setState(946); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::Identifier: { + setState(944); + match(qasm3Parser::Identifier); + break; + } + + case qasm3Parser::LBRACE: { + setState(945); + quantumBlock(); + break; + } + + default: + throw NoViableAltException(this); + } + setState(948); + match(qasm3Parser::RPAREN); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TimingInstructionNameContext ------------------------------------------------------------------ + +qasm3Parser::TimingInstructionNameContext::TimingInstructionNameContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + + +size_t qasm3Parser::TimingInstructionNameContext::getRuleIndex() const { + return qasm3Parser::RuleTimingInstructionName; +} + +void qasm3Parser::TimingInstructionNameContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTimingInstructionName(this); +} + +void qasm3Parser::TimingInstructionNameContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTimingInstructionName(this); +} + + +antlrcpp::Any qasm3Parser::TimingInstructionNameContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTimingInstructionName(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::TimingInstructionNameContext* qasm3Parser::timingInstructionName() { + TimingInstructionNameContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 192, qasm3Parser::RuleTimingInstructionName); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(951); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__92 + + || _la == qasm3Parser::T__93)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TimingInstructionContext ------------------------------------------------------------------ + +qasm3Parser::TimingInstructionContext::TimingInstructionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::TimingInstructionNameContext* qasm3Parser::TimingInstructionContext::timingInstructionName() { + return getRuleContext(0); +} + +qasm3Parser::DesignatorContext* qasm3Parser::TimingInstructionContext::designator() { + return getRuleContext(0); +} + +qasm3Parser::IndexIdentifierListContext* qasm3Parser::TimingInstructionContext::indexIdentifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::TimingInstructionContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::TimingInstructionContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::TimingInstructionContext::expressionList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::TimingInstructionContext::getRuleIndex() const { + return qasm3Parser::RuleTimingInstruction; +} + +void qasm3Parser::TimingInstructionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTimingInstruction(this); +} + +void qasm3Parser::TimingInstructionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTimingInstruction(this); +} + + +antlrcpp::Any qasm3Parser::TimingInstructionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTimingInstruction(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::TimingInstructionContext* qasm3Parser::timingInstruction() { + TimingInstructionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 194, qasm3Parser::RuleTimingInstruction); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(953); + timingInstructionName(); + setState(959); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LPAREN) { + setState(954); + match(qasm3Parser::LPAREN); + setState(956); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(955); + expressionList(); + } + setState(958); + match(qasm3Parser::RPAREN); + } + setState(961); + designator(); + setState(962); + indexIdentifierList(); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- TimingStatementContext ------------------------------------------------------------------ + +qasm3Parser::TimingStatementContext::TimingStatementContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::TimingInstructionContext* qasm3Parser::TimingStatementContext::timingInstruction() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::TimingStatementContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + +qasm3Parser::TimingBoxContext* qasm3Parser::TimingStatementContext::timingBox() { + return getRuleContext(0); +} + + +size_t qasm3Parser::TimingStatementContext::getRuleIndex() const { + return qasm3Parser::RuleTimingStatement; +} + +void qasm3Parser::TimingStatementContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterTimingStatement(this); +} + +void qasm3Parser::TimingStatementContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitTimingStatement(this); +} + + +antlrcpp::Any qasm3Parser::TimingStatementContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitTimingStatement(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::TimingStatementContext* qasm3Parser::timingStatement() { + TimingStatementContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 196, qasm3Parser::RuleTimingStatement); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(968); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__92: + case qasm3Parser::T__93: { + enterOuterAlt(_localctx, 1); + setState(964); + timingInstruction(); + setState(965); + match(qasm3Parser::SEMICOLON); + break; + } + + case qasm3Parser::T__89: + case qasm3Parser::T__90: { + enterOuterAlt(_localctx, 2); + setState(967); + timingBox(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CalibrationContext ------------------------------------------------------------------ + +qasm3Parser::CalibrationContext::CalibrationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::CalibrationGrammarDeclarationContext* qasm3Parser::CalibrationContext::calibrationGrammarDeclaration() { + return getRuleContext(0); +} + +qasm3Parser::CalibrationDefinitionContext* qasm3Parser::CalibrationContext::calibrationDefinition() { + return getRuleContext(0); +} + + +size_t qasm3Parser::CalibrationContext::getRuleIndex() const { + return qasm3Parser::RuleCalibration; +} + +void qasm3Parser::CalibrationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCalibration(this); +} + +void qasm3Parser::CalibrationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCalibration(this); +} + + +antlrcpp::Any qasm3Parser::CalibrationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCalibration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::CalibrationContext* qasm3Parser::calibration() { + CalibrationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 198, qasm3Parser::RuleCalibration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(972); + _errHandler->sync(this); + switch (_input->LA(1)) { + case qasm3Parser::T__94: { + enterOuterAlt(_localctx, 1); + setState(970); + calibrationGrammarDeclaration(); + break; + } + + case qasm3Parser::T__95: { + enterOuterAlt(_localctx, 2); + setState(971); + calibrationDefinition(); + break; + } + + default: + throw NoViableAltException(this); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CalibrationGrammarDeclarationContext ------------------------------------------------------------------ + +qasm3Parser::CalibrationGrammarDeclarationContext::CalibrationGrammarDeclarationContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::CalibrationGrammarContext* qasm3Parser::CalibrationGrammarDeclarationContext::calibrationGrammar() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::CalibrationGrammarDeclarationContext::SEMICOLON() { + return getToken(qasm3Parser::SEMICOLON, 0); +} + + +size_t qasm3Parser::CalibrationGrammarDeclarationContext::getRuleIndex() const { + return qasm3Parser::RuleCalibrationGrammarDeclaration; +} + +void qasm3Parser::CalibrationGrammarDeclarationContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCalibrationGrammarDeclaration(this); +} + +void qasm3Parser::CalibrationGrammarDeclarationContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCalibrationGrammarDeclaration(this); +} + + +antlrcpp::Any qasm3Parser::CalibrationGrammarDeclarationContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCalibrationGrammarDeclaration(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::CalibrationGrammarDeclarationContext* qasm3Parser::calibrationGrammarDeclaration() { + CalibrationGrammarDeclarationContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 200, qasm3Parser::RuleCalibrationGrammarDeclaration); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(974); + match(qasm3Parser::T__94); + setState(975); + calibrationGrammar(); + setState(976); + match(qasm3Parser::SEMICOLON); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CalibrationDefinitionContext ------------------------------------------------------------------ + +qasm3Parser::CalibrationDefinitionContext::CalibrationDefinitionContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::Identifier() { + return getToken(qasm3Parser::Identifier, 0); +} + +qasm3Parser::IdentifierListContext* qasm3Parser::CalibrationDefinitionContext::identifierList() { + return getRuleContext(0); +} + +tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::LBRACE() { + return getToken(qasm3Parser::LBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::RBRACE() { + return getToken(qasm3Parser::RBRACE, 0); +} + +tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::LPAREN() { + return getToken(qasm3Parser::LPAREN, 0); +} + +tree::TerminalNode* qasm3Parser::CalibrationDefinitionContext::RPAREN() { + return getToken(qasm3Parser::RPAREN, 0); +} + +qasm3Parser::ReturnSignatureContext* qasm3Parser::CalibrationDefinitionContext::returnSignature() { + return getRuleContext(0); +} + +qasm3Parser::CalibrationArgumentListContext* qasm3Parser::CalibrationDefinitionContext::calibrationArgumentList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::CalibrationDefinitionContext::getRuleIndex() const { + return qasm3Parser::RuleCalibrationDefinition; +} + +void qasm3Parser::CalibrationDefinitionContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCalibrationDefinition(this); +} + +void qasm3Parser::CalibrationDefinitionContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCalibrationDefinition(this); +} + + +antlrcpp::Any qasm3Parser::CalibrationDefinitionContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCalibrationDefinition(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::CalibrationDefinitionContext* qasm3Parser::calibrationDefinition() { + CalibrationDefinitionContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 202, qasm3Parser::RuleCalibrationDefinition); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + size_t alt; + enterOuterAlt(_localctx, 1); + setState(978); + match(qasm3Parser::T__95); + setState(979); + match(qasm3Parser::Identifier); + setState(985); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::LPAREN) { + setState(980); + match(qasm3Parser::LPAREN); + setState(982); + _errHandler->sync(this); + + _la = _input->LA(1); + if ((((_la & ~ 0x3fULL) == 0) && + ((1ULL << _la) & ((1ULL << qasm3Parser::T__7) + | (1ULL << qasm3Parser::T__8) + | (1ULL << qasm3Parser::T__9) + | (1ULL << qasm3Parser::T__10) + | (1ULL << qasm3Parser::T__11) + | (1ULL << qasm3Parser::T__12) + | (1ULL << qasm3Parser::T__13) + | (1ULL << qasm3Parser::T__14) + | (1ULL << qasm3Parser::T__15) + | (1ULL << qasm3Parser::T__16) + | (1ULL << qasm3Parser::T__31) + | (1ULL << qasm3Parser::T__32) + | (1ULL << qasm3Parser::T__51) + | (1ULL << qasm3Parser::T__52) + | (1ULL << qasm3Parser::T__53) + | (1ULL << qasm3Parser::T__54) + | (1ULL << qasm3Parser::T__55) + | (1ULL << qasm3Parser::T__56) + | (1ULL << qasm3Parser::T__57) + | (1ULL << qasm3Parser::T__58) + | (1ULL << qasm3Parser::T__59) + | (1ULL << qasm3Parser::T__60) + | (1ULL << qasm3Parser::T__61) + | (1ULL << qasm3Parser::T__62))) != 0) || ((((_la - 64) & ~ 0x3fULL) == 0) && + ((1ULL << (_la - 64)) & ((1ULL << (qasm3Parser::T__63 - 64)) + | (1ULL << (qasm3Parser::T__87 - 64)) + | (1ULL << (qasm3Parser::T__88 - 64)) + | (1ULL << (qasm3Parser::T__91 - 64)) + | (1ULL << (qasm3Parser::LPAREN - 64)) + | (1ULL << (qasm3Parser::MINUS - 64)) + | (1ULL << (qasm3Parser::Constant - 64)) + | (1ULL << (qasm3Parser::Integer - 64)) + | (1ULL << (qasm3Parser::Identifier - 64)) + | (1ULL << (qasm3Parser::RealNumber - 64)) + | (1ULL << (qasm3Parser::TimingLiteral - 64)) + | (1ULL << (qasm3Parser::StringLiteral - 64)))) != 0)) { + setState(981); + calibrationArgumentList(); + } + setState(984); + match(qasm3Parser::RPAREN); + } + setState(987); + identifierList(); + setState(989); + _errHandler->sync(this); + + _la = _input->LA(1); + if (_la == qasm3Parser::ARROW) { + setState(988); + returnSignature(); + } + setState(991); + match(qasm3Parser::LBRACE); + setState(995); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 98, _ctx); + while (alt != 1 && alt != atn::ATN::INVALID_ALT_NUMBER) { + if (alt == 1 + 1) { + setState(992); + matchWildcard(); + } + setState(997); + _errHandler->sync(this); + alt = getInterpreter()->adaptivePredict(_input, 98, _ctx); + } + setState(998); + match(qasm3Parser::RBRACE); + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CalibrationGrammarContext ------------------------------------------------------------------ + +qasm3Parser::CalibrationGrammarContext::CalibrationGrammarContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +tree::TerminalNode* qasm3Parser::CalibrationGrammarContext::StringLiteral() { + return getToken(qasm3Parser::StringLiteral, 0); +} + + +size_t qasm3Parser::CalibrationGrammarContext::getRuleIndex() const { + return qasm3Parser::RuleCalibrationGrammar; +} + +void qasm3Parser::CalibrationGrammarContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCalibrationGrammar(this); +} + +void qasm3Parser::CalibrationGrammarContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCalibrationGrammar(this); +} + + +antlrcpp::Any qasm3Parser::CalibrationGrammarContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCalibrationGrammar(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::CalibrationGrammarContext* qasm3Parser::calibrationGrammar() { + CalibrationGrammarContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 204, qasm3Parser::RuleCalibrationGrammar); + size_t _la = 0; + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + enterOuterAlt(_localctx, 1); + setState(1000); + _la = _input->LA(1); + if (!(_la == qasm3Parser::T__96 + + || _la == qasm3Parser::StringLiteral)) { + _errHandler->recoverInline(this); + } + else { + _errHandler->reportMatch(this); + consume(); + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +//----------------- CalibrationArgumentListContext ------------------------------------------------------------------ + +qasm3Parser::CalibrationArgumentListContext::CalibrationArgumentListContext(ParserRuleContext *parent, size_t invokingState) + : ParserRuleContext(parent, invokingState) { +} + +qasm3Parser::ClassicalArgumentListContext* qasm3Parser::CalibrationArgumentListContext::classicalArgumentList() { + return getRuleContext(0); +} + +qasm3Parser::ExpressionListContext* qasm3Parser::CalibrationArgumentListContext::expressionList() { + return getRuleContext(0); +} + + +size_t qasm3Parser::CalibrationArgumentListContext::getRuleIndex() const { + return qasm3Parser::RuleCalibrationArgumentList; +} + +void qasm3Parser::CalibrationArgumentListContext::enterRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->enterCalibrationArgumentList(this); +} + +void qasm3Parser::CalibrationArgumentListContext::exitRule(tree::ParseTreeListener *listener) { + auto parserListener = dynamic_cast(listener); + if (parserListener != nullptr) + parserListener->exitCalibrationArgumentList(this); +} + + +antlrcpp::Any qasm3Parser::CalibrationArgumentListContext::accept(tree::ParseTreeVisitor *visitor) { + if (auto parserVisitor = dynamic_cast(visitor)) + return parserVisitor->visitCalibrationArgumentList(this); + else + return visitor->visitChildren(this); +} + +qasm3Parser::CalibrationArgumentListContext* qasm3Parser::calibrationArgumentList() { + CalibrationArgumentListContext *_localctx = _tracker.createInstance(_ctx, getState()); + enterRule(_localctx, 206, qasm3Parser::RuleCalibrationArgumentList); + +#if __cplusplus > 201703L + auto onExit = finally([=, this] { +#else + auto onExit = finally([=] { +#endif + exitRule(); + }); + try { + setState(1004); + _errHandler->sync(this); + switch (getInterpreter()->adaptivePredict(_input, 99, _ctx)) { + case 1: { + enterOuterAlt(_localctx, 1); + setState(1002); + classicalArgumentList(); + break; + } + + case 2: { + enterOuterAlt(_localctx, 2); + setState(1003); + expressionList(); + break; + } + + default: + break; + } + + } + catch (RecognitionException &e) { + _errHandler->reportError(this, e); + _localctx->exception = std::current_exception(); + _errHandler->recover(this, _localctx->exception); + } + + return _localctx; +} + +bool qasm3Parser::sempred(RuleContext *context, size_t ruleIndex, size_t predicateIndex) { + switch (ruleIndex) { + case 36: return indexIdentifierSempred(dynamic_cast(context), predicateIndex); + case 58: return expressionSempred(dynamic_cast(context), predicateIndex); + case 59: return xOrExpressionSempred(dynamic_cast(context), predicateIndex); + case 60: return bitAndExpressionSempred(dynamic_cast(context), predicateIndex); + case 61: return bitShiftExpressionSempred(dynamic_cast(context), predicateIndex); + case 62: return additiveExpressionSempred(dynamic_cast(context), predicateIndex); + case 63: return multiplicativeExpressionSempred(dynamic_cast(context), predicateIndex); + case 65: return expressionTerminatorSempred(dynamic_cast(context), predicateIndex); + case 71: return booleanExpressionSempred(dynamic_cast(context), predicateIndex); + + default: + break; + } + return true; +} + +bool qasm3Parser::indexIdentifierSempred(IndexIdentifierContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 0: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::expressionSempred(ExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 1: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::xOrExpressionSempred(XOrExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 2: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::bitAndExpressionSempred(BitAndExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 3: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::bitShiftExpressionSempred(BitShiftExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 4: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::additiveExpressionSempred(AdditiveExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 5: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::multiplicativeExpressionSempred(MultiplicativeExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 6: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::expressionTerminatorSempred(ExpressionTerminatorContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 7: return precpred(_ctx, 2); + case 8: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +bool qasm3Parser::booleanExpressionSempred(BooleanExpressionContext *_localctx, size_t predicateIndex) { + switch (predicateIndex) { + case 9: return precpred(_ctx, 1); + + default: + break; + } + return true; +} + +// Static vars and initialization. +std::vector qasm3Parser::_decisionToDFA; +atn::PredictionContextCache qasm3Parser::_sharedContextCache; + +// We own the ATN which in turn owns the ATN states. +atn::ATN qasm3Parser::_atn; +std::vector qasm3Parser::_serializedATN; + +std::vector qasm3Parser::_ruleNames = { + "program", "header", "version", "include", "globalStatement", "statement", + "compute_action_stmt", "qcor_test_statement", "quantumDeclarationStatement", + "classicalDeclarationStatement", "classicalAssignment", "assignmentStatement", + "returnSignature", "designator", "doubleDesignator", "identifierList", + "association", "quantumType", "quantumDeclaration", "quantumArgument", + "quantumArgumentList", "bitType", "singleDesignatorType", "doubleDesignatorType", + "noDesignatorType", "classicalType", "constantDeclaration", "singleDesignatorDeclaration", + "doubleDesignatorDeclaration", "noDesignatorDeclaration", "bitDeclaration", + "classicalDeclaration", "classicalTypeList", "classicalArgument", "classicalArgumentList", + "aliasStatement", "indexIdentifier", "indexIdentifierList", "indexEqualsAssignmentList", + "rangeDefinition", "quantumGateDefinition", "quantumGateSignature", "quantumBlock", + "quantumLoop", "quantumLoopBlock", "quantumStatement", "quantumInstruction", + "quantumPhase", "quantumMeasurement", "quantumMeasurementAssignment", + "quantumBarrier", "quantumGateModifier", "quantumGateCall", "quantumGateName", + "unaryOperator", "relationalOperator", "logicalOperator", "expressionStatement", + "expression", "xOrExpression", "bitAndExpression", "bitShiftExpression", + "additiveExpression", "multiplicativeExpression", "unaryExpression", "expressionTerminator", + "incrementor", "builtInCall", "builtInMath", "castOperator", "expressionList", + "booleanExpression", "comparsionExpression", "equalsExpression", "assignmentOperator", + "equalsAssignmentList", "membershipTest", "setDeclaration", "programBlock", + "branchingStatement", "loopSignature", "loopStatement", "cLikeLoopStatement", + "controlDirectiveStatement", "controlDirective", "kernelDeclaration", + "kernelCall", "subroutineDefinition", "returnStatement", "subroutineBlock", + "subroutineCall", "pragma", "timingType", "timingBox", "timingTerminator", + "timingIdentifier", "timingInstructionName", "timingInstruction", "timingStatement", + "calibration", "calibrationGrammarDeclaration", "calibrationDefinition", + "calibrationGrammar", "calibrationArgumentList" +}; + +std::vector qasm3Parser::_literalNames = { + "", "'OPENQASM'", "'include'", "'compute'", "'action'", "'QCOR_EXPECT_TRUE'", + "'qubit'", "'qreg'", "'bit'", "'creg'", "'int'", "'uint'", "'float'", + "'angle'", "'fixed'", "'bool'", "'int64_t'", "'double'", "'const'", "'let'", + "'||'", "'gate'", "'CX'", "'U'", "'gphase'", "'measure'", "'barrier'", + "'inv'", "'pow'", "'ctrl'", "'@'", "'reset'", "'~'", "'!'", "'>'", "'<'", + "'>='", "'<='", "'=='", "'!='", "'&&'", "'|'", "'^'", "'&'", "'<<'", "'>>'", + "'+'", "'*'", "'/'", "'%'", "'++'", "'--'", "'sin'", "'cos'", "'tan'", + "'arctan'", "'arccos'", "'arcsin'", "'exp'", "'ln'", "'sqrt'", "'rotl'", + "'rotr'", "'popcount'", "'lengthof'", "'+='", "'-='", "'*='", "'/='", + "'&='", "'|='", "'~='", "'^='", "'<<='", "'>>='", "'in'", "'if'", "'else'", + "'for'", "'while'", "'range'", "'break'", "'continue'", "'end'", "'kernel'", + "'def'", "'return'", "'#pragma'", "'length'", "'stretch'", "'boxas'", + "'boxto'", "'stretchinf'", "'delay'", "'rotary'", "'defcalgrammar'", "'defcal'", + "'\"openpulse\"'", "'['", "']'", "'{'", "'}'", "'('", "')'", "':'", "';'", + "'.'", "','", "'='", "'->'", "'-'", "'extern'" +}; + +std::vector qasm3Parser::_symbolicNames = { + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", + "LPAREN", "RPAREN", "COLON", "SEMICOLON", "DOT", "COMMA", "EQUALS", "ARROW", + "MINUS", "EXTERN", "Constant", "Whitespace", "Newline", "Integer", "Identifier", + "RealNumber", "TimingLiteral", "StringLiteral", "LineComment", "BlockComment" +}; + +dfa::Vocabulary qasm3Parser::_vocabulary(_literalNames, _symbolicNames); + +std::vector qasm3Parser::_tokenNames; + +qasm3Parser::Initializer::Initializer() { + for (size_t i = 0; i < _symbolicNames.size(); ++i) { + std::string name = _vocabulary.getLiteralName(i); + if (name.empty()) { + name = _vocabulary.getSymbolicName(i); + } + + if (name.empty()) { + _tokenNames.push_back(""); + } else { + _tokenNames.push_back(name); + } + } + + static const uint16_t serializedATNSegment0[] = { + 0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964, + 0x3, 0x7b, 0x3f1, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4, + 0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9, + 0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x4, 0xa, 0x9, 0xa, + 0x4, 0xb, 0x9, 0xb, 0x4, 0xc, 0x9, 0xc, 0x4, 0xd, 0x9, 0xd, 0x4, + 0xe, 0x9, 0xe, 0x4, 0xf, 0x9, 0xf, 0x4, 0x10, 0x9, 0x10, 0x4, 0x11, + 0x9, 0x11, 0x4, 0x12, 0x9, 0x12, 0x4, 0x13, 0x9, 0x13, 0x4, 0x14, + 0x9, 0x14, 0x4, 0x15, 0x9, 0x15, 0x4, 0x16, 0x9, 0x16, 0x4, 0x17, + 0x9, 0x17, 0x4, 0x18, 0x9, 0x18, 0x4, 0x19, 0x9, 0x19, 0x4, 0x1a, + 0x9, 0x1a, 0x4, 0x1b, 0x9, 0x1b, 0x4, 0x1c, 0x9, 0x1c, 0x4, 0x1d, + 0x9, 0x1d, 0x4, 0x1e, 0x9, 0x1e, 0x4, 0x1f, 0x9, 0x1f, 0x4, 0x20, + 0x9, 0x20, 0x4, 0x21, 0x9, 0x21, 0x4, 0x22, 0x9, 0x22, 0x4, 0x23, + 0x9, 0x23, 0x4, 0x24, 0x9, 0x24, 0x4, 0x25, 0x9, 0x25, 0x4, 0x26, + 0x9, 0x26, 0x4, 0x27, 0x9, 0x27, 0x4, 0x28, 0x9, 0x28, 0x4, 0x29, + 0x9, 0x29, 0x4, 0x2a, 0x9, 0x2a, 0x4, 0x2b, 0x9, 0x2b, 0x4, 0x2c, + 0x9, 0x2c, 0x4, 0x2d, 0x9, 0x2d, 0x4, 0x2e, 0x9, 0x2e, 0x4, 0x2f, + 0x9, 0x2f, 0x4, 0x30, 0x9, 0x30, 0x4, 0x31, 0x9, 0x31, 0x4, 0x32, + 0x9, 0x32, 0x4, 0x33, 0x9, 0x33, 0x4, 0x34, 0x9, 0x34, 0x4, 0x35, + 0x9, 0x35, 0x4, 0x36, 0x9, 0x36, 0x4, 0x37, 0x9, 0x37, 0x4, 0x38, + 0x9, 0x38, 0x4, 0x39, 0x9, 0x39, 0x4, 0x3a, 0x9, 0x3a, 0x4, 0x3b, + 0x9, 0x3b, 0x4, 0x3c, 0x9, 0x3c, 0x4, 0x3d, 0x9, 0x3d, 0x4, 0x3e, + 0x9, 0x3e, 0x4, 0x3f, 0x9, 0x3f, 0x4, 0x40, 0x9, 0x40, 0x4, 0x41, + 0x9, 0x41, 0x4, 0x42, 0x9, 0x42, 0x4, 0x43, 0x9, 0x43, 0x4, 0x44, + 0x9, 0x44, 0x4, 0x45, 0x9, 0x45, 0x4, 0x46, 0x9, 0x46, 0x4, 0x47, + 0x9, 0x47, 0x4, 0x48, 0x9, 0x48, 0x4, 0x49, 0x9, 0x49, 0x4, 0x4a, + 0x9, 0x4a, 0x4, 0x4b, 0x9, 0x4b, 0x4, 0x4c, 0x9, 0x4c, 0x4, 0x4d, + 0x9, 0x4d, 0x4, 0x4e, 0x9, 0x4e, 0x4, 0x4f, 0x9, 0x4f, 0x4, 0x50, + 0x9, 0x50, 0x4, 0x51, 0x9, 0x51, 0x4, 0x52, 0x9, 0x52, 0x4, 0x53, + 0x9, 0x53, 0x4, 0x54, 0x9, 0x54, 0x4, 0x55, 0x9, 0x55, 0x4, 0x56, + 0x9, 0x56, 0x4, 0x57, 0x9, 0x57, 0x4, 0x58, 0x9, 0x58, 0x4, 0x59, + 0x9, 0x59, 0x4, 0x5a, 0x9, 0x5a, 0x4, 0x5b, 0x9, 0x5b, 0x4, 0x5c, + 0x9, 0x5c, 0x4, 0x5d, 0x9, 0x5d, 0x4, 0x5e, 0x9, 0x5e, 0x4, 0x5f, + 0x9, 0x5f, 0x4, 0x60, 0x9, 0x60, 0x4, 0x61, 0x9, 0x61, 0x4, 0x62, + 0x9, 0x62, 0x4, 0x63, 0x9, 0x63, 0x4, 0x64, 0x9, 0x64, 0x4, 0x65, + 0x9, 0x65, 0x4, 0x66, 0x9, 0x66, 0x4, 0x67, 0x9, 0x67, 0x4, 0x68, + 0x9, 0x68, 0x4, 0x69, 0x9, 0x69, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x7, + 0x2, 0xd6, 0xa, 0x2, 0xc, 0x2, 0xe, 0x2, 0xd9, 0xb, 0x2, 0x3, 0x3, + 0x5, 0x3, 0xdc, 0xa, 0x3, 0x3, 0x3, 0x7, 0x3, 0xdf, 0xa, 0x3, 0xc, + 0x3, 0xe, 0x3, 0xe2, 0xb, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x3, + 0x4, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x5, 0x3, 0x6, 0x3, 0x6, + 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x3, 0x6, 0x5, 0x6, 0xf2, 0xa, 0x6, + 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, + 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x3, 0x7, 0x5, 0x7, 0xff, 0xa, + 0x7, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x8, 0x3, 0x9, + 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x3, 0xa, 0x3, + 0xa, 0x3, 0xa, 0x3, 0xb, 0x3, 0xb, 0x5, 0xb, 0x111, 0xa, 0xb, 0x3, + 0xb, 0x3, 0xb, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x3, 0xc, 0x5, 0xc, + 0x119, 0xa, 0xc, 0x3, 0xd, 0x3, 0xd, 0x5, 0xd, 0x11d, 0xa, 0xd, 0x3, + 0xd, 0x3, 0xd, 0x3, 0xe, 0x3, 0xe, 0x3, 0xe, 0x3, 0xf, 0x3, 0xf, + 0x3, 0xf, 0x3, 0xf, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3, + 0x10, 0x3, 0x10, 0x3, 0x11, 0x3, 0x11, 0x7, 0x11, 0x130, 0xa, 0x11, + 0xc, 0x11, 0xe, 0x11, 0x133, 0xb, 0x11, 0x3, 0x11, 0x3, 0x11, 0x3, + 0x12, 0x3, 0x12, 0x3, 0x12, 0x3, 0x13, 0x3, 0x13, 0x3, 0x14, 0x3, + 0x14, 0x3, 0x14, 0x5, 0x14, 0x13f, 0xa, 0x14, 0x3, 0x14, 0x3, 0x14, + 0x5, 0x14, 0x143, 0xa, 0x14, 0x3, 0x14, 0x5, 0x14, 0x146, 0xa, 0x14, + 0x3, 0x15, 0x3, 0x15, 0x5, 0x15, 0x14a, 0xa, 0x15, 0x3, 0x15, 0x3, + 0x15, 0x3, 0x16, 0x3, 0x16, 0x3, 0x16, 0x7, 0x16, 0x151, 0xa, 0x16, + 0xc, 0x16, 0xe, 0x16, 0x154, 0xb, 0x16, 0x3, 0x16, 0x3, 0x16, 0x3, + 0x17, 0x3, 0x17, 0x3, 0x18, 0x3, 0x18, 0x3, 0x19, 0x3, 0x19, 0x3, + 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x3, 0x1a, 0x5, + 0x1a, 0x164, 0xa, 0x1a, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, + 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x3, 0x1b, 0x5, 0x1b, + 0x16f, 0xa, 0x1b, 0x5, 0x1b, 0x171, 0xa, 0x1b, 0x3, 0x1c, 0x3, 0x1c, + 0x3, 0x1c, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x3, 0x1d, 0x5, 0x1d, + 0x17a, 0xa, 0x1d, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x3, 0x1e, 0x5, + 0x1e, 0x180, 0xa, 0x1e, 0x3, 0x1f, 0x3, 0x1f, 0x3, 0x1f, 0x5, 0x1f, + 0x185, 0xa, 0x1f, 0x3, 0x20, 0x3, 0x20, 0x3, 0x20, 0x5, 0x20, 0x18a, + 0xa, 0x20, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x3, 0x21, 0x5, 0x21, + 0x190, 0xa, 0x21, 0x3, 0x22, 0x3, 0x22, 0x3, 0x22, 0x7, 0x22, 0x195, + 0xa, 0x22, 0xc, 0x22, 0xe, 0x22, 0x198, 0xb, 0x22, 0x3, 0x22, 0x3, + 0x22, 0x3, 0x23, 0x3, 0x23, 0x3, 0x23, 0x3, 0x24, 0x3, 0x24, 0x3, + 0x24, 0x7, 0x24, 0x1a2, 0xa, 0x24, 0xc, 0x24, 0xe, 0x24, 0x1a5, 0xb, + 0x24, 0x3, 0x24, 0x3, 0x24, 0x3, 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, + 0x25, 0x3, 0x25, 0x3, 0x25, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, + 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, 0x26, 0x5, 0x26, 0x1b7, + 0xa, 0x26, 0x5, 0x26, 0x1b9, 0xa, 0x26, 0x3, 0x26, 0x3, 0x26, 0x3, + 0x26, 0x7, 0x26, 0x1be, 0xa, 0x26, 0xc, 0x26, 0xe, 0x26, 0x1c1, 0xb, + 0x26, 0x3, 0x27, 0x3, 0x27, 0x3, 0x27, 0x7, 0x27, 0x1c6, 0xa, 0x27, + 0xc, 0x27, 0xe, 0x27, 0x1c9, 0xb, 0x27, 0x3, 0x27, 0x3, 0x27, 0x3, + 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, 0x28, 0x7, 0x28, 0x1d1, 0xa, 0x28, + 0xc, 0x28, 0xe, 0x28, 0x1d4, 0xb, 0x28, 0x3, 0x28, 0x3, 0x28, 0x3, + 0x28, 0x3, 0x29, 0x3, 0x29, 0x5, 0x29, 0x1db, 0xa, 0x29, 0x3, 0x29, + 0x3, 0x29, 0x5, 0x29, 0x1df, 0xa, 0x29, 0x3, 0x29, 0x3, 0x29, 0x5, + 0x29, 0x1e3, 0xa, 0x29, 0x3, 0x29, 0x3, 0x29, 0x3, 0x2a, 0x3, 0x2a, + 0x3, 0x2a, 0x3, 0x2a, 0x3, 0x2b, 0x3, 0x2b, 0x3, 0x2b, 0x5, 0x2b, + 0x1ee, 0xa, 0x2b, 0x3, 0x2b, 0x5, 0x2b, 0x1f1, 0xa, 0x2b, 0x3, 0x2b, + 0x3, 0x2b, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x3, 0x2c, 0x7, 0x2c, + 0x1f9, 0xa, 0x2c, 0xc, 0x2c, 0xe, 0x2c, 0x1fc, 0xb, 0x2c, 0x3, 0x2c, + 0x3, 0x2c, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2d, 0x3, 0x2e, 0x3, 0x2e, + 0x3, 0x2e, 0x7, 0x2e, 0x206, 0xa, 0x2e, 0xc, 0x2e, 0xe, 0x2e, 0x209, + 0xb, 0x2e, 0x3, 0x2e, 0x5, 0x2e, 0x20c, 0xa, 0x2e, 0x3, 0x2f, 0x3, + 0x2f, 0x3, 0x2f, 0x3, 0x2f, 0x5, 0x2f, 0x212, 0xa, 0x2f, 0x3, 0x30, + 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x5, 0x30, 0x218, 0xa, 0x30, 0x3, + 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x31, 0x3, 0x32, 0x3, + 0x32, 0x3, 0x32, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x5, 0x33, 0x225, + 0xa, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x3, 0x33, 0x5, 0x33, + 0x22b, 0xa, 0x33, 0x3, 0x34, 0x3, 0x34, 0x3, 0x34, 0x3, 0x35, 0x3, + 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x35, 0x5, + 0x35, 0x237, 0xa, 0x35, 0x3, 0x35, 0x3, 0x35, 0x3, 0x36, 0x3, 0x36, + 0x3, 0x36, 0x5, 0x36, 0x23e, 0xa, 0x36, 0x3, 0x36, 0x5, 0x36, 0x241, + 0xa, 0x36, 0x3, 0x36, 0x3, 0x36, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, + 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x3, 0x37, 0x5, 0x37, 0x24c, 0xa, + 0x37, 0x3, 0x38, 0x3, 0x38, 0x3, 0x39, 0x3, 0x39, 0x3, 0x3a, 0x3, + 0x3a, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3b, 0x3, 0x3c, 0x3, 0x3c, 0x3, + 0x3c, 0x3, 0x3c, 0x5, 0x3c, 0x25b, 0xa, 0x3c, 0x3, 0x3c, 0x3, 0x3c, + 0x3, 0x3c, 0x7, 0x3c, 0x260, 0xa, 0x3c, 0xc, 0x3c, 0xe, 0x3c, 0x263, + 0xb, 0x3c, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, 0x3, 0x3d, + 0x3, 0x3d, 0x7, 0x3d, 0x26b, 0xa, 0x3d, 0xc, 0x3d, 0xe, 0x3d, 0x26e, + 0xb, 0x3d, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, 0x3, 0x3e, + 0x3, 0x3e, 0x7, 0x3e, 0x276, 0xa, 0x3e, 0xc, 0x3e, 0xe, 0x3e, 0x279, + 0xb, 0x3e, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, 0x3, 0x3f, + 0x3, 0x3f, 0x7, 0x3f, 0x281, 0xa, 0x3f, 0xc, 0x3f, 0xe, 0x3f, 0x284, + 0xb, 0x3f, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, 0x3, 0x40, + 0x3, 0x40, 0x7, 0x40, 0x28c, 0xa, 0x40, 0xc, 0x40, 0xe, 0x40, 0x28f, + 0xb, 0x40, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x5, 0x41, 0x294, 0xa, + 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x3, 0x41, 0x5, 0x41, 0x29a, + 0xa, 0x41, 0x7, 0x41, 0x29c, 0xa, 0x41, 0xc, 0x41, 0xe, 0x41, 0x29f, + 0xb, 0x41, 0x3, 0x42, 0x3, 0x42, 0x3, 0x42, 0x3, 0x43, 0x3, 0x43, + 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, + 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, + 0x3, 0x43, 0x3, 0x43, 0x5, 0x43, 0x2b4, 0xa, 0x43, 0x3, 0x43, 0x3, + 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x3, 0x43, 0x7, + 0x43, 0x2bd, 0xa, 0x43, 0xc, 0x43, 0xe, 0x43, 0x2c0, 0xb, 0x43, 0x3, + 0x44, 0x3, 0x44, 0x3, 0x45, 0x3, 0x45, 0x5, 0x45, 0x2c6, 0xa, 0x45, + 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x45, 0x3, 0x46, 0x3, 0x46, + 0x3, 0x47, 0x3, 0x47, 0x3, 0x48, 0x3, 0x48, 0x3, 0x48, 0x7, 0x48, + 0x2d3, 0xa, 0x48, 0xc, 0x48, 0xe, 0x48, 0x2d6, 0xb, 0x48, 0x3, 0x48, + 0x3, 0x48, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x5, 0x49, 0x2dd, 0xa, + 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x3, 0x49, 0x7, 0x49, 0x2e3, + 0xa, 0x49, 0xc, 0x49, 0xe, 0x49, 0x2e6, 0xb, 0x49, 0x3, 0x4a, 0x3, + 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x3, 0x4a, 0x5, 0x4a, 0x2ed, 0xa, 0x4a, + 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4b, 0x3, 0x4c, 0x3, 0x4c, 0x3, 0x4d, + 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x7, 0x4d, 0x2f8, 0xa, 0x4d, 0xc, + 0x4d, 0xe, 0x4d, 0x2fb, 0xb, 0x4d, 0x3, 0x4d, 0x3, 0x4d, 0x3, 0x4d, + 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4e, 0x3, 0x4f, 0x3, 0x4f, + 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x3, 0x4f, 0x5, 0x4f, 0x30a, 0xa, + 0x4f, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x7, 0x50, 0x30f, 0xa, 0x50, + 0xc, 0x50, 0xe, 0x50, 0x312, 0xb, 0x50, 0x3, 0x50, 0x5, 0x50, 0x315, + 0xa, 0x50, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, 0x3, 0x51, + 0x3, 0x51, 0x3, 0x51, 0x5, 0x51, 0x31e, 0xa, 0x51, 0x3, 0x52, 0x3, + 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x3, 0x52, 0x5, + 0x52, 0x327, 0xa, 0x52, 0x3, 0x53, 0x3, 0x53, 0x3, 0x53, 0x3, 0x54, + 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, + 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, + 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, + 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, + 0x3, 0x54, 0x3, 0x54, 0x3, 0x54, 0x5, 0x54, 0x348, 0xa, 0x54, 0x3, + 0x55, 0x3, 0x55, 0x3, 0x55, 0x3, 0x56, 0x3, 0x56, 0x3, 0x57, 0x3, + 0x57, 0x3, 0x57, 0x3, 0x57, 0x5, 0x57, 0x353, 0xa, 0x57, 0x3, 0x57, + 0x5, 0x57, 0x356, 0xa, 0x57, 0x3, 0x57, 0x5, 0x57, 0x359, 0xa, 0x57, + 0x3, 0x57, 0x5, 0x57, 0x35c, 0xa, 0x57, 0x3, 0x57, 0x3, 0x57, 0x3, + 0x58, 0x3, 0x58, 0x3, 0x58, 0x5, 0x58, 0x363, 0xa, 0x58, 0x3, 0x58, + 0x3, 0x58, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x3, 0x59, 0x5, 0x59, + 0x36b, 0xa, 0x59, 0x3, 0x59, 0x5, 0x59, 0x36e, 0xa, 0x59, 0x3, 0x59, + 0x5, 0x59, 0x371, 0xa, 0x59, 0x3, 0x59, 0x5, 0x59, 0x374, 0xa, 0x59, + 0x3, 0x59, 0x3, 0x59, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5a, 0x3, 0x5b, + 0x3, 0x5b, 0x7, 0x5b, 0x37d, 0xa, 0x5b, 0xc, 0x5b, 0xe, 0x5b, 0x380, + 0xb, 0x5b, 0x3, 0x5b, 0x5, 0x5b, 0x383, 0xa, 0x5b, 0x3, 0x5b, 0x3, + 0x5b, 0x3, 0x5b, 0x5, 0x5b, 0x388, 0xa, 0x5b, 0x3, 0x5c, 0x3, 0x5c, + 0x3, 0x5c, 0x5, 0x5c, 0x38d, 0xa, 0x5c, 0x3, 0x5c, 0x3, 0x5c, 0x3, + 0x5c, 0x3, 0x5c, 0x3, 0x5d, 0x3, 0x5d, 0x3, 0x5d, 0x7, 0x5d, 0x396, + 0xa, 0x5d, 0xc, 0x5d, 0xe, 0x5d, 0x399, 0xb, 0x5d, 0x3, 0x5d, 0x3, + 0x5d, 0x3, 0x5e, 0x3, 0x5e, 0x3, 0x5e, 0x5, 0x5e, 0x3a0, 0xa, 0x5e, + 0x5, 0x5e, 0x3a2, 0xa, 0x5e, 0x3, 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x3, + 0x5f, 0x3, 0x5f, 0x3, 0x5f, 0x5, 0x5f, 0x3aa, 0xa, 0x5f, 0x3, 0x60, + 0x3, 0x60, 0x5, 0x60, 0x3ae, 0xa, 0x60, 0x3, 0x61, 0x3, 0x61, 0x3, + 0x61, 0x3, 0x61, 0x3, 0x61, 0x5, 0x61, 0x3b5, 0xa, 0x61, 0x3, 0x61, + 0x5, 0x61, 0x3b8, 0xa, 0x61, 0x3, 0x62, 0x3, 0x62, 0x3, 0x63, 0x3, + 0x63, 0x3, 0x63, 0x5, 0x63, 0x3bf, 0xa, 0x63, 0x3, 0x63, 0x5, 0x63, + 0x3c2, 0xa, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x63, 0x3, 0x64, 0x3, + 0x64, 0x3, 0x64, 0x3, 0x64, 0x5, 0x64, 0x3cb, 0xa, 0x64, 0x3, 0x65, + 0x3, 0x65, 0x5, 0x65, 0x3cf, 0xa, 0x65, 0x3, 0x66, 0x3, 0x66, 0x3, + 0x66, 0x3, 0x66, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x3, 0x67, 0x5, + 0x67, 0x3d9, 0xa, 0x67, 0x3, 0x67, 0x5, 0x67, 0x3dc, 0xa, 0x67, 0x3, + 0x67, 0x3, 0x67, 0x5, 0x67, 0x3e0, 0xa, 0x67, 0x3, 0x67, 0x3, 0x67, + 0x7, 0x67, 0x3e4, 0xa, 0x67, 0xc, 0x67, 0xe, 0x67, 0x3e7, 0xb, 0x67, + 0x3, 0x67, 0x3, 0x67, 0x3, 0x68, 0x3, 0x68, 0x3, 0x69, 0x3, 0x69, + 0x5, 0x69, 0x3ef, 0xa, 0x69, 0x3, 0x69, 0x3, 0x3e5, 0xb, 0x4a, 0x76, + 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x84, 0x90, 0x6a, 0x2, 0x4, 0x6, 0x8, + 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, + 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, + 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, + 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, + 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, + 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, + 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, + 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, + 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, + 0x2, 0x13, 0x4, 0x2, 0x75, 0x75, 0x77, 0x77, 0x3, 0x2, 0x8, 0x9, + 0x3, 0x2, 0xa, 0xb, 0x3, 0x2, 0xc, 0xf, 0x4, 0x2, 0x18, 0x19, 0x76, + 0x76, 0x3, 0x2, 0x22, 0x23, 0x3, 0x2, 0x24, 0x29, 0x4, 0x2, 0x16, + 0x16, 0x2a, 0x2a, 0x3, 0x2, 0x2e, 0x2f, 0x4, 0x2, 0x30, 0x30, 0x70, + 0x70, 0x3, 0x2, 0x31, 0x33, 0x3, 0x2, 0x34, 0x35, 0x3, 0x2, 0x36, + 0x42, 0x4, 0x2, 0x43, 0x4c, 0x6e, 0x6e, 0x3, 0x2, 0x53, 0x55, 0x3, + 0x2, 0x5f, 0x60, 0x4, 0x2, 0x63, 0x63, 0x79, 0x79, 0x2, 0x413, 0x2, + 0xd2, 0x3, 0x2, 0x2, 0x2, 0x4, 0xdb, 0x3, 0x2, 0x2, 0x2, 0x6, 0xe3, + 0x3, 0x2, 0x2, 0x2, 0x8, 0xe7, 0x3, 0x2, 0x2, 0x2, 0xa, 0xf1, 0x3, + 0x2, 0x2, 0x2, 0xc, 0xfe, 0x3, 0x2, 0x2, 0x2, 0xe, 0x100, 0x3, 0x2, + 0x2, 0x2, 0x10, 0x105, 0x3, 0x2, 0x2, 0x2, 0x12, 0x10b, 0x3, 0x2, + 0x2, 0x2, 0x14, 0x110, 0x3, 0x2, 0x2, 0x2, 0x16, 0x114, 0x3, 0x2, + 0x2, 0x2, 0x18, 0x11c, 0x3, 0x2, 0x2, 0x2, 0x1a, 0x120, 0x3, 0x2, + 0x2, 0x2, 0x1c, 0x123, 0x3, 0x2, 0x2, 0x2, 0x1e, 0x127, 0x3, 0x2, + 0x2, 0x2, 0x20, 0x131, 0x3, 0x2, 0x2, 0x2, 0x22, 0x136, 0x3, 0x2, + 0x2, 0x2, 0x24, 0x139, 0x3, 0x2, 0x2, 0x2, 0x26, 0x145, 0x3, 0x2, + 0x2, 0x2, 0x28, 0x147, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x152, 0x3, 0x2, + 0x2, 0x2, 0x2c, 0x157, 0x3, 0x2, 0x2, 0x2, 0x2e, 0x159, 0x3, 0x2, + 0x2, 0x2, 0x30, 0x15b, 0x3, 0x2, 0x2, 0x2, 0x32, 0x163, 0x3, 0x2, + 0x2, 0x2, 0x34, 0x170, 0x3, 0x2, 0x2, 0x2, 0x36, 0x172, 0x3, 0x2, + 0x2, 0x2, 0x38, 0x175, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x17b, 0x3, 0x2, + 0x2, 0x2, 0x3c, 0x181, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x186, 0x3, 0x2, + 0x2, 0x2, 0x40, 0x18f, 0x3, 0x2, 0x2, 0x2, 0x42, 0x196, 0x3, 0x2, + 0x2, 0x2, 0x44, 0x19b, 0x3, 0x2, 0x2, 0x2, 0x46, 0x1a3, 0x3, 0x2, + 0x2, 0x2, 0x48, 0x1a8, 0x3, 0x2, 0x2, 0x2, 0x4a, 0x1b8, 0x3, 0x2, + 0x2, 0x2, 0x4c, 0x1c7, 0x3, 0x2, 0x2, 0x2, 0x4e, 0x1d2, 0x3, 0x2, + 0x2, 0x2, 0x50, 0x1d8, 0x3, 0x2, 0x2, 0x2, 0x52, 0x1e6, 0x3, 0x2, + 0x2, 0x2, 0x54, 0x1ea, 0x3, 0x2, 0x2, 0x2, 0x56, 0x1f4, 0x3, 0x2, + 0x2, 0x2, 0x58, 0x1ff, 0x3, 0x2, 0x2, 0x2, 0x5a, 0x20b, 0x3, 0x2, + 0x2, 0x2, 0x5c, 0x211, 0x3, 0x2, 0x2, 0x2, 0x5e, 0x217, 0x3, 0x2, + 0x2, 0x2, 0x60, 0x219, 0x3, 0x2, 0x2, 0x2, 0x62, 0x21e, 0x3, 0x2, + 0x2, 0x2, 0x64, 0x22a, 0x3, 0x2, 0x2, 0x2, 0x66, 0x22c, 0x3, 0x2, + 0x2, 0x2, 0x68, 0x236, 0x3, 0x2, 0x2, 0x2, 0x6a, 0x23a, 0x3, 0x2, + 0x2, 0x2, 0x6c, 0x24b, 0x3, 0x2, 0x2, 0x2, 0x6e, 0x24d, 0x3, 0x2, + 0x2, 0x2, 0x70, 0x24f, 0x3, 0x2, 0x2, 0x2, 0x72, 0x251, 0x3, 0x2, + 0x2, 0x2, 0x74, 0x253, 0x3, 0x2, 0x2, 0x2, 0x76, 0x25a, 0x3, 0x2, + 0x2, 0x2, 0x78, 0x264, 0x3, 0x2, 0x2, 0x2, 0x7a, 0x26f, 0x3, 0x2, + 0x2, 0x2, 0x7c, 0x27a, 0x3, 0x2, 0x2, 0x2, 0x7e, 0x285, 0x3, 0x2, + 0x2, 0x2, 0x80, 0x293, 0x3, 0x2, 0x2, 0x2, 0x82, 0x2a0, 0x3, 0x2, + 0x2, 0x2, 0x84, 0x2b3, 0x3, 0x2, 0x2, 0x2, 0x86, 0x2c1, 0x3, 0x2, + 0x2, 0x2, 0x88, 0x2c5, 0x3, 0x2, 0x2, 0x2, 0x8a, 0x2cb, 0x3, 0x2, + 0x2, 0x2, 0x8c, 0x2cd, 0x3, 0x2, 0x2, 0x2, 0x8e, 0x2d4, 0x3, 0x2, + 0x2, 0x2, 0x90, 0x2dc, 0x3, 0x2, 0x2, 0x2, 0x92, 0x2ec, 0x3, 0x2, + 0x2, 0x2, 0x94, 0x2ee, 0x3, 0x2, 0x2, 0x2, 0x96, 0x2f1, 0x3, 0x2, + 0x2, 0x2, 0x98, 0x2f9, 0x3, 0x2, 0x2, 0x2, 0x9a, 0x2ff, 0x3, 0x2, + 0x2, 0x2, 0x9c, 0x309, 0x3, 0x2, 0x2, 0x2, 0x9e, 0x314, 0x3, 0x2, + 0x2, 0x2, 0xa0, 0x316, 0x3, 0x2, 0x2, 0x2, 0xa2, 0x326, 0x3, 0x2, + 0x2, 0x2, 0xa4, 0x328, 0x3, 0x2, 0x2, 0x2, 0xa6, 0x347, 0x3, 0x2, + 0x2, 0x2, 0xa8, 0x349, 0x3, 0x2, 0x2, 0x2, 0xaa, 0x34c, 0x3, 0x2, + 0x2, 0x2, 0xac, 0x34e, 0x3, 0x2, 0x2, 0x2, 0xae, 0x35f, 0x3, 0x2, + 0x2, 0x2, 0xb0, 0x366, 0x3, 0x2, 0x2, 0x2, 0xb2, 0x377, 0x3, 0x2, + 0x2, 0x2, 0xb4, 0x387, 0x3, 0x2, 0x2, 0x2, 0xb6, 0x389, 0x3, 0x2, + 0x2, 0x2, 0xb8, 0x392, 0x3, 0x2, 0x2, 0x2, 0xba, 0x3a1, 0x3, 0x2, + 0x2, 0x2, 0xbc, 0x3a9, 0x3, 0x2, 0x2, 0x2, 0xbe, 0x3ad, 0x3, 0x2, + 0x2, 0x2, 0xc0, 0x3b7, 0x3, 0x2, 0x2, 0x2, 0xc2, 0x3b9, 0x3, 0x2, + 0x2, 0x2, 0xc4, 0x3bb, 0x3, 0x2, 0x2, 0x2, 0xc6, 0x3ca, 0x3, 0x2, + 0x2, 0x2, 0xc8, 0x3ce, 0x3, 0x2, 0x2, 0x2, 0xca, 0x3d0, 0x3, 0x2, + 0x2, 0x2, 0xcc, 0x3d4, 0x3, 0x2, 0x2, 0x2, 0xce, 0x3ea, 0x3, 0x2, + 0x2, 0x2, 0xd0, 0x3ee, 0x3, 0x2, 0x2, 0x2, 0xd2, 0xd7, 0x5, 0x4, + 0x3, 0x2, 0xd3, 0xd6, 0x5, 0xa, 0x6, 0x2, 0xd4, 0xd6, 0x5, 0xc, 0x7, + 0x2, 0xd5, 0xd3, 0x3, 0x2, 0x2, 0x2, 0xd5, 0xd4, 0x3, 0x2, 0x2, 0x2, + 0xd6, 0xd9, 0x3, 0x2, 0x2, 0x2, 0xd7, 0xd5, 0x3, 0x2, 0x2, 0x2, 0xd7, + 0xd8, 0x3, 0x2, 0x2, 0x2, 0xd8, 0x3, 0x3, 0x2, 0x2, 0x2, 0xd9, 0xd7, + 0x3, 0x2, 0x2, 0x2, 0xda, 0xdc, 0x5, 0x6, 0x4, 0x2, 0xdb, 0xda, 0x3, + 0x2, 0x2, 0x2, 0xdb, 0xdc, 0x3, 0x2, 0x2, 0x2, 0xdc, 0xe0, 0x3, 0x2, + 0x2, 0x2, 0xdd, 0xdf, 0x5, 0x8, 0x5, 0x2, 0xde, 0xdd, 0x3, 0x2, 0x2, + 0x2, 0xdf, 0xe2, 0x3, 0x2, 0x2, 0x2, 0xe0, 0xde, 0x3, 0x2, 0x2, 0x2, + 0xe0, 0xe1, 0x3, 0x2, 0x2, 0x2, 0xe1, 0x5, 0x3, 0x2, 0x2, 0x2, 0xe2, + 0xe0, 0x3, 0x2, 0x2, 0x2, 0xe3, 0xe4, 0x7, 0x3, 0x2, 0x2, 0xe4, 0xe5, + 0x9, 0x2, 0x2, 0x2, 0xe5, 0xe6, 0x7, 0x6b, 0x2, 0x2, 0xe6, 0x7, 0x3, + 0x2, 0x2, 0x2, 0xe7, 0xe8, 0x7, 0x4, 0x2, 0x2, 0xe8, 0xe9, 0x7, 0x79, + 0x2, 0x2, 0xe9, 0xea, 0x7, 0x6b, 0x2, 0x2, 0xea, 0x9, 0x3, 0x2, 0x2, + 0x2, 0xeb, 0xf2, 0x5, 0xb0, 0x59, 0x2, 0xec, 0xf2, 0x5, 0xac, 0x57, + 0x2, 0xed, 0xf2, 0x5, 0x52, 0x2a, 0x2, 0xee, 0xf2, 0x5, 0xc8, 0x65, + 0x2, 0xef, 0xf2, 0x5, 0x12, 0xa, 0x2, 0xf0, 0xf2, 0x5, 0xb8, 0x5d, + 0x2, 0xf1, 0xeb, 0x3, 0x2, 0x2, 0x2, 0xf1, 0xec, 0x3, 0x2, 0x2, 0x2, + 0xf1, 0xed, 0x3, 0x2, 0x2, 0x2, 0xf1, 0xee, 0x3, 0x2, 0x2, 0x2, 0xf1, + 0xef, 0x3, 0x2, 0x2, 0x2, 0xf1, 0xf0, 0x3, 0x2, 0x2, 0x2, 0xf2, 0xb, + 0x3, 0x2, 0x2, 0x2, 0xf3, 0xff, 0x5, 0x74, 0x3b, 0x2, 0xf4, 0xff, + 0x5, 0x18, 0xd, 0x2, 0xf5, 0xff, 0x5, 0x14, 0xb, 0x2, 0xf6, 0xff, + 0x5, 0xa0, 0x51, 0x2, 0xf7, 0xff, 0x5, 0xa4, 0x53, 0x2, 0xf8, 0xff, + 0x5, 0xa8, 0x55, 0x2, 0xf9, 0xff, 0x5, 0x48, 0x25, 0x2, 0xfa, 0xff, + 0x5, 0x5c, 0x2f, 0x2, 0xfb, 0xff, 0x5, 0xb2, 0x5a, 0x2, 0xfc, 0xff, + 0x5, 0x10, 0x9, 0x2, 0xfd, 0xff, 0x5, 0xe, 0x8, 0x2, 0xfe, 0xf3, + 0x3, 0x2, 0x2, 0x2, 0xfe, 0xf4, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xf5, 0x3, + 0x2, 0x2, 0x2, 0xfe, 0xf6, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xf7, 0x3, 0x2, + 0x2, 0x2, 0xfe, 0xf8, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xf9, 0x3, 0x2, 0x2, + 0x2, 0xfe, 0xfa, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xfb, 0x3, 0x2, 0x2, 0x2, + 0xfe, 0xfc, 0x3, 0x2, 0x2, 0x2, 0xfe, 0xfd, 0x3, 0x2, 0x2, 0x2, 0xff, + 0xd, 0x3, 0x2, 0x2, 0x2, 0x100, 0x101, 0x7, 0x5, 0x2, 0x2, 0x101, + 0x102, 0x5, 0x9e, 0x50, 0x2, 0x102, 0x103, 0x7, 0x6, 0x2, 0x2, 0x103, + 0x104, 0x5, 0x9e, 0x50, 0x2, 0x104, 0xf, 0x3, 0x2, 0x2, 0x2, 0x105, + 0x106, 0x7, 0x7, 0x2, 0x2, 0x106, 0x107, 0x7, 0x68, 0x2, 0x2, 0x107, + 0x108, 0x5, 0x90, 0x49, 0x2, 0x108, 0x109, 0x7, 0x69, 0x2, 0x2, 0x109, + 0x10a, 0x7, 0x6b, 0x2, 0x2, 0x10a, 0x11, 0x3, 0x2, 0x2, 0x2, 0x10b, + 0x10c, 0x5, 0x26, 0x14, 0x2, 0x10c, 0x10d, 0x7, 0x6b, 0x2, 0x2, 0x10d, + 0x13, 0x3, 0x2, 0x2, 0x2, 0x10e, 0x111, 0x5, 0x40, 0x21, 0x2, 0x10f, + 0x111, 0x5, 0x36, 0x1c, 0x2, 0x110, 0x10e, 0x3, 0x2, 0x2, 0x2, 0x110, + 0x10f, 0x3, 0x2, 0x2, 0x2, 0x111, 0x112, 0x3, 0x2, 0x2, 0x2, 0x112, + 0x113, 0x7, 0x6b, 0x2, 0x2, 0x113, 0x15, 0x3, 0x2, 0x2, 0x2, 0x114, + 0x115, 0x5, 0x4a, 0x26, 0x2, 0x115, 0x118, 0x5, 0x96, 0x4c, 0x2, + 0x116, 0x119, 0x5, 0x76, 0x3c, 0x2, 0x117, 0x119, 0x5, 0x4a, 0x26, + 0x2, 0x118, 0x116, 0x3, 0x2, 0x2, 0x2, 0x118, 0x117, 0x3, 0x2, 0x2, + 0x2, 0x119, 0x17, 0x3, 0x2, 0x2, 0x2, 0x11a, 0x11d, 0x5, 0x16, 0xc, + 0x2, 0x11b, 0x11d, 0x5, 0x64, 0x33, 0x2, 0x11c, 0x11a, 0x3, 0x2, + 0x2, 0x2, 0x11c, 0x11b, 0x3, 0x2, 0x2, 0x2, 0x11d, 0x11e, 0x3, 0x2, + 0x2, 0x2, 0x11e, 0x11f, 0x7, 0x6b, 0x2, 0x2, 0x11f, 0x19, 0x3, 0x2, + 0x2, 0x2, 0x120, 0x121, 0x7, 0x6f, 0x2, 0x2, 0x121, 0x122, 0x5, 0x34, + 0x1b, 0x2, 0x122, 0x1b, 0x3, 0x2, 0x2, 0x2, 0x123, 0x124, 0x7, 0x64, + 0x2, 0x2, 0x124, 0x125, 0x5, 0x76, 0x3c, 0x2, 0x125, 0x126, 0x7, + 0x65, 0x2, 0x2, 0x126, 0x1d, 0x3, 0x2, 0x2, 0x2, 0x127, 0x128, 0x7, + 0x64, 0x2, 0x2, 0x128, 0x129, 0x5, 0x76, 0x3c, 0x2, 0x129, 0x12a, + 0x7, 0x6d, 0x2, 0x2, 0x12a, 0x12b, 0x5, 0x76, 0x3c, 0x2, 0x12b, 0x12c, + 0x7, 0x65, 0x2, 0x2, 0x12c, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x12d, 0x12e, + 0x7, 0x76, 0x2, 0x2, 0x12e, 0x130, 0x7, 0x6d, 0x2, 0x2, 0x12f, 0x12d, + 0x3, 0x2, 0x2, 0x2, 0x130, 0x133, 0x3, 0x2, 0x2, 0x2, 0x131, 0x12f, + 0x3, 0x2, 0x2, 0x2, 0x131, 0x132, 0x3, 0x2, 0x2, 0x2, 0x132, 0x134, + 0x3, 0x2, 0x2, 0x2, 0x133, 0x131, 0x3, 0x2, 0x2, 0x2, 0x134, 0x135, + 0x7, 0x76, 0x2, 0x2, 0x135, 0x21, 0x3, 0x2, 0x2, 0x2, 0x136, 0x137, + 0x7, 0x6a, 0x2, 0x2, 0x137, 0x138, 0x7, 0x76, 0x2, 0x2, 0x138, 0x23, + 0x3, 0x2, 0x2, 0x2, 0x139, 0x13a, 0x9, 0x3, 0x2, 0x2, 0x13a, 0x25, + 0x3, 0x2, 0x2, 0x2, 0x13b, 0x13c, 0x7, 0x9, 0x2, 0x2, 0x13c, 0x13e, + 0x7, 0x76, 0x2, 0x2, 0x13d, 0x13f, 0x5, 0x1c, 0xf, 0x2, 0x13e, 0x13d, + 0x3, 0x2, 0x2, 0x2, 0x13e, 0x13f, 0x3, 0x2, 0x2, 0x2, 0x13f, 0x146, + 0x3, 0x2, 0x2, 0x2, 0x140, 0x142, 0x7, 0x8, 0x2, 0x2, 0x141, 0x143, + 0x5, 0x1c, 0xf, 0x2, 0x142, 0x141, 0x3, 0x2, 0x2, 0x2, 0x142, 0x143, + 0x3, 0x2, 0x2, 0x2, 0x143, 0x144, 0x3, 0x2, 0x2, 0x2, 0x144, 0x146, + 0x7, 0x76, 0x2, 0x2, 0x145, 0x13b, 0x3, 0x2, 0x2, 0x2, 0x145, 0x140, + 0x3, 0x2, 0x2, 0x2, 0x146, 0x27, 0x3, 0x2, 0x2, 0x2, 0x147, 0x149, + 0x5, 0x24, 0x13, 0x2, 0x148, 0x14a, 0x5, 0x1c, 0xf, 0x2, 0x149, 0x148, + 0x3, 0x2, 0x2, 0x2, 0x149, 0x14a, 0x3, 0x2, 0x2, 0x2, 0x14a, 0x14b, + 0x3, 0x2, 0x2, 0x2, 0x14b, 0x14c, 0x5, 0x22, 0x12, 0x2, 0x14c, 0x29, + 0x3, 0x2, 0x2, 0x2, 0x14d, 0x14e, 0x5, 0x28, 0x15, 0x2, 0x14e, 0x14f, + 0x7, 0x6d, 0x2, 0x2, 0x14f, 0x151, 0x3, 0x2, 0x2, 0x2, 0x150, 0x14d, + 0x3, 0x2, 0x2, 0x2, 0x151, 0x154, 0x3, 0x2, 0x2, 0x2, 0x152, 0x150, + 0x3, 0x2, 0x2, 0x2, 0x152, 0x153, 0x3, 0x2, 0x2, 0x2, 0x153, 0x155, + 0x3, 0x2, 0x2, 0x2, 0x154, 0x152, 0x3, 0x2, 0x2, 0x2, 0x155, 0x156, + 0x5, 0x28, 0x15, 0x2, 0x156, 0x2b, 0x3, 0x2, 0x2, 0x2, 0x157, 0x158, + 0x9, 0x4, 0x2, 0x2, 0x158, 0x2d, 0x3, 0x2, 0x2, 0x2, 0x159, 0x15a, + 0x9, 0x5, 0x2, 0x2, 0x15a, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x15b, 0x15c, + 0x7, 0x10, 0x2, 0x2, 0x15c, 0x31, 0x3, 0x2, 0x2, 0x2, 0x15d, 0x164, + 0x7, 0x11, 0x2, 0x2, 0x15e, 0x164, 0x5, 0xba, 0x5e, 0x2, 0x15f, 0x164, + 0x7, 0xc, 0x2, 0x2, 0x160, 0x164, 0x7, 0x12, 0x2, 0x2, 0x161, 0x164, + 0x7, 0xe, 0x2, 0x2, 0x162, 0x164, 0x7, 0x13, 0x2, 0x2, 0x163, 0x15d, + 0x3, 0x2, 0x2, 0x2, 0x163, 0x15e, 0x3, 0x2, 0x2, 0x2, 0x163, 0x15f, + 0x3, 0x2, 0x2, 0x2, 0x163, 0x160, 0x3, 0x2, 0x2, 0x2, 0x163, 0x161, + 0x3, 0x2, 0x2, 0x2, 0x163, 0x162, 0x3, 0x2, 0x2, 0x2, 0x164, 0x33, + 0x3, 0x2, 0x2, 0x2, 0x165, 0x166, 0x5, 0x2e, 0x18, 0x2, 0x166, 0x167, + 0x5, 0x1c, 0xf, 0x2, 0x167, 0x171, 0x3, 0x2, 0x2, 0x2, 0x168, 0x169, + 0x5, 0x30, 0x19, 0x2, 0x169, 0x16a, 0x5, 0x1e, 0x10, 0x2, 0x16a, + 0x171, 0x3, 0x2, 0x2, 0x2, 0x16b, 0x171, 0x5, 0x32, 0x1a, 0x2, 0x16c, + 0x16e, 0x5, 0x2c, 0x17, 0x2, 0x16d, 0x16f, 0x5, 0x1c, 0xf, 0x2, 0x16e, + 0x16d, 0x3, 0x2, 0x2, 0x2, 0x16e, 0x16f, 0x3, 0x2, 0x2, 0x2, 0x16f, + 0x171, 0x3, 0x2, 0x2, 0x2, 0x170, 0x165, 0x3, 0x2, 0x2, 0x2, 0x170, + 0x168, 0x3, 0x2, 0x2, 0x2, 0x170, 0x16b, 0x3, 0x2, 0x2, 0x2, 0x170, + 0x16c, 0x3, 0x2, 0x2, 0x2, 0x171, 0x35, 0x3, 0x2, 0x2, 0x2, 0x172, + 0x173, 0x7, 0x14, 0x2, 0x2, 0x173, 0x174, 0x5, 0x98, 0x4d, 0x2, 0x174, + 0x37, 0x3, 0x2, 0x2, 0x2, 0x175, 0x176, 0x5, 0x2e, 0x18, 0x2, 0x176, + 0x179, 0x5, 0x1c, 0xf, 0x2, 0x177, 0x17a, 0x5, 0x20, 0x11, 0x2, 0x178, + 0x17a, 0x5, 0x98, 0x4d, 0x2, 0x179, 0x177, 0x3, 0x2, 0x2, 0x2, 0x179, + 0x178, 0x3, 0x2, 0x2, 0x2, 0x17a, 0x39, 0x3, 0x2, 0x2, 0x2, 0x17b, + 0x17c, 0x5, 0x30, 0x19, 0x2, 0x17c, 0x17f, 0x5, 0x1e, 0x10, 0x2, + 0x17d, 0x180, 0x5, 0x20, 0x11, 0x2, 0x17e, 0x180, 0x5, 0x98, 0x4d, + 0x2, 0x17f, 0x17d, 0x3, 0x2, 0x2, 0x2, 0x17f, 0x17e, 0x3, 0x2, 0x2, + 0x2, 0x180, 0x3b, 0x3, 0x2, 0x2, 0x2, 0x181, 0x184, 0x5, 0x32, 0x1a, + 0x2, 0x182, 0x185, 0x5, 0x20, 0x11, 0x2, 0x183, 0x185, 0x5, 0x98, + 0x4d, 0x2, 0x184, 0x182, 0x3, 0x2, 0x2, 0x2, 0x184, 0x183, 0x3, 0x2, + 0x2, 0x2, 0x185, 0x3d, 0x3, 0x2, 0x2, 0x2, 0x186, 0x189, 0x5, 0x2c, + 0x17, 0x2, 0x187, 0x18a, 0x5, 0x4c, 0x27, 0x2, 0x188, 0x18a, 0x5, + 0x4e, 0x28, 0x2, 0x189, 0x187, 0x3, 0x2, 0x2, 0x2, 0x189, 0x188, + 0x3, 0x2, 0x2, 0x2, 0x18a, 0x3f, 0x3, 0x2, 0x2, 0x2, 0x18b, 0x190, + 0x5, 0x38, 0x1d, 0x2, 0x18c, 0x190, 0x5, 0x3a, 0x1e, 0x2, 0x18d, + 0x190, 0x5, 0x3c, 0x1f, 0x2, 0x18e, 0x190, 0x5, 0x3e, 0x20, 0x2, + 0x18f, 0x18b, 0x3, 0x2, 0x2, 0x2, 0x18f, 0x18c, 0x3, 0x2, 0x2, 0x2, + 0x18f, 0x18d, 0x3, 0x2, 0x2, 0x2, 0x18f, 0x18e, 0x3, 0x2, 0x2, 0x2, + 0x190, 0x41, 0x3, 0x2, 0x2, 0x2, 0x191, 0x192, 0x5, 0x34, 0x1b, 0x2, + 0x192, 0x193, 0x7, 0x6d, 0x2, 0x2, 0x193, 0x195, 0x3, 0x2, 0x2, 0x2, + 0x194, 0x191, 0x3, 0x2, 0x2, 0x2, 0x195, 0x198, 0x3, 0x2, 0x2, 0x2, + 0x196, 0x194, 0x3, 0x2, 0x2, 0x2, 0x196, 0x197, 0x3, 0x2, 0x2, 0x2, + 0x197, 0x199, 0x3, 0x2, 0x2, 0x2, 0x198, 0x196, 0x3, 0x2, 0x2, 0x2, + 0x199, 0x19a, 0x5, 0x34, 0x1b, 0x2, 0x19a, 0x43, 0x3, 0x2, 0x2, 0x2, + 0x19b, 0x19c, 0x5, 0x34, 0x1b, 0x2, 0x19c, 0x19d, 0x5, 0x22, 0x12, + 0x2, 0x19d, 0x45, 0x3, 0x2, 0x2, 0x2, 0x19e, 0x19f, 0x5, 0x44, 0x23, + 0x2, 0x19f, 0x1a0, 0x7, 0x6d, 0x2, 0x2, 0x1a0, 0x1a2, 0x3, 0x2, 0x2, + 0x2, 0x1a1, 0x19e, 0x3, 0x2, 0x2, 0x2, 0x1a2, 0x1a5, 0x3, 0x2, 0x2, + 0x2, 0x1a3, 0x1a1, 0x3, 0x2, 0x2, 0x2, 0x1a3, 0x1a4, 0x3, 0x2, 0x2, + 0x2, 0x1a4, 0x1a6, 0x3, 0x2, 0x2, 0x2, 0x1a5, 0x1a3, 0x3, 0x2, 0x2, + 0x2, 0x1a6, 0x1a7, 0x5, 0x44, 0x23, 0x2, 0x1a7, 0x47, 0x3, 0x2, 0x2, + 0x2, 0x1a8, 0x1a9, 0x7, 0x15, 0x2, 0x2, 0x1a9, 0x1aa, 0x7, 0x76, + 0x2, 0x2, 0x1aa, 0x1ab, 0x7, 0x6e, 0x2, 0x2, 0x1ab, 0x1ac, 0x5, 0x4a, + 0x26, 0x2, 0x1ac, 0x1ad, 0x7, 0x6b, 0x2, 0x2, 0x1ad, 0x49, 0x3, 0x2, + 0x2, 0x2, 0x1ae, 0x1af, 0x8, 0x26, 0x1, 0x2, 0x1af, 0x1b0, 0x7, 0x76, + 0x2, 0x2, 0x1b0, 0x1b9, 0x5, 0x50, 0x29, 0x2, 0x1b1, 0x1b6, 0x7, + 0x76, 0x2, 0x2, 0x1b2, 0x1b3, 0x7, 0x64, 0x2, 0x2, 0x1b3, 0x1b4, + 0x5, 0x8e, 0x48, 0x2, 0x1b4, 0x1b5, 0x7, 0x65, 0x2, 0x2, 0x1b5, 0x1b7, + 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b2, 0x3, 0x2, 0x2, 0x2, 0x1b6, 0x1b7, + 0x3, 0x2, 0x2, 0x2, 0x1b7, 0x1b9, 0x3, 0x2, 0x2, 0x2, 0x1b8, 0x1ae, + 0x3, 0x2, 0x2, 0x2, 0x1b8, 0x1b1, 0x3, 0x2, 0x2, 0x2, 0x1b9, 0x1bf, + 0x3, 0x2, 0x2, 0x2, 0x1ba, 0x1bb, 0xc, 0x3, 0x2, 0x2, 0x1bb, 0x1bc, + 0x7, 0x16, 0x2, 0x2, 0x1bc, 0x1be, 0x5, 0x4a, 0x26, 0x4, 0x1bd, 0x1ba, + 0x3, 0x2, 0x2, 0x2, 0x1be, 0x1c1, 0x3, 0x2, 0x2, 0x2, 0x1bf, 0x1bd, + 0x3, 0x2, 0x2, 0x2, 0x1bf, 0x1c0, 0x3, 0x2, 0x2, 0x2, 0x1c0, 0x4b, + 0x3, 0x2, 0x2, 0x2, 0x1c1, 0x1bf, 0x3, 0x2, 0x2, 0x2, 0x1c2, 0x1c3, + 0x5, 0x4a, 0x26, 0x2, 0x1c3, 0x1c4, 0x7, 0x6d, 0x2, 0x2, 0x1c4, 0x1c6, + 0x3, 0x2, 0x2, 0x2, 0x1c5, 0x1c2, 0x3, 0x2, 0x2, 0x2, 0x1c6, 0x1c9, + 0x3, 0x2, 0x2, 0x2, 0x1c7, 0x1c5, 0x3, 0x2, 0x2, 0x2, 0x1c7, 0x1c8, + 0x3, 0x2, 0x2, 0x2, 0x1c8, 0x1ca, 0x3, 0x2, 0x2, 0x2, 0x1c9, 0x1c7, + 0x3, 0x2, 0x2, 0x2, 0x1ca, 0x1cb, 0x5, 0x4a, 0x26, 0x2, 0x1cb, 0x4d, + 0x3, 0x2, 0x2, 0x2, 0x1cc, 0x1cd, 0x5, 0x4a, 0x26, 0x2, 0x1cd, 0x1ce, + 0x5, 0x94, 0x4b, 0x2, 0x1ce, 0x1cf, 0x7, 0x6d, 0x2, 0x2, 0x1cf, 0x1d1, + 0x3, 0x2, 0x2, 0x2, 0x1d0, 0x1cc, 0x3, 0x2, 0x2, 0x2, 0x1d1, 0x1d4, + 0x3, 0x2, 0x2, 0x2, 0x1d2, 0x1d0, 0x3, 0x2, 0x2, 0x2, 0x1d2, 0x1d3, + 0x3, 0x2, 0x2, 0x2, 0x1d3, 0x1d5, 0x3, 0x2, 0x2, 0x2, 0x1d4, 0x1d2, + 0x3, 0x2, 0x2, 0x2, 0x1d5, 0x1d6, 0x5, 0x4a, 0x26, 0x2, 0x1d6, 0x1d7, + 0x5, 0x94, 0x4b, 0x2, 0x1d7, 0x4f, 0x3, 0x2, 0x2, 0x2, 0x1d8, 0x1da, + 0x7, 0x64, 0x2, 0x2, 0x1d9, 0x1db, 0x5, 0x76, 0x3c, 0x2, 0x1da, 0x1d9, + 0x3, 0x2, 0x2, 0x2, 0x1da, 0x1db, 0x3, 0x2, 0x2, 0x2, 0x1db, 0x1dc, + 0x3, 0x2, 0x2, 0x2, 0x1dc, 0x1de, 0x7, 0x6a, 0x2, 0x2, 0x1dd, 0x1df, + 0x5, 0x76, 0x3c, 0x2, 0x1de, 0x1dd, 0x3, 0x2, 0x2, 0x2, 0x1de, 0x1df, + 0x3, 0x2, 0x2, 0x2, 0x1df, 0x1e2, 0x3, 0x2, 0x2, 0x2, 0x1e0, 0x1e1, + 0x7, 0x6a, 0x2, 0x2, 0x1e1, 0x1e3, 0x5, 0x76, 0x3c, 0x2, 0x1e2, 0x1e0, + 0x3, 0x2, 0x2, 0x2, 0x1e2, 0x1e3, 0x3, 0x2, 0x2, 0x2, 0x1e3, 0x1e4, + 0x3, 0x2, 0x2, 0x2, 0x1e4, 0x1e5, 0x7, 0x65, 0x2, 0x2, 0x1e5, 0x51, + 0x3, 0x2, 0x2, 0x2, 0x1e6, 0x1e7, 0x7, 0x17, 0x2, 0x2, 0x1e7, 0x1e8, + 0x5, 0x54, 0x2b, 0x2, 0x1e8, 0x1e9, 0x5, 0x56, 0x2c, 0x2, 0x1e9, + 0x53, 0x3, 0x2, 0x2, 0x2, 0x1ea, 0x1f0, 0x9, 0x6, 0x2, 0x2, 0x1eb, + 0x1ed, 0x7, 0x68, 0x2, 0x2, 0x1ec, 0x1ee, 0x5, 0x20, 0x11, 0x2, 0x1ed, + 0x1ec, 0x3, 0x2, 0x2, 0x2, 0x1ed, 0x1ee, 0x3, 0x2, 0x2, 0x2, 0x1ee, + 0x1ef, 0x3, 0x2, 0x2, 0x2, 0x1ef, 0x1f1, 0x7, 0x69, 0x2, 0x2, 0x1f0, + 0x1eb, 0x3, 0x2, 0x2, 0x2, 0x1f0, 0x1f1, 0x3, 0x2, 0x2, 0x2, 0x1f1, + 0x1f2, 0x3, 0x2, 0x2, 0x2, 0x1f2, 0x1f3, 0x5, 0x20, 0x11, 0x2, 0x1f3, + 0x55, 0x3, 0x2, 0x2, 0x2, 0x1f4, 0x1fa, 0x7, 0x66, 0x2, 0x2, 0x1f5, + 0x1f9, 0x5, 0xe, 0x8, 0x2, 0x1f6, 0x1f9, 0x5, 0x5c, 0x2f, 0x2, 0x1f7, + 0x1f9, 0x5, 0x58, 0x2d, 0x2, 0x1f8, 0x1f5, 0x3, 0x2, 0x2, 0x2, 0x1f8, + 0x1f6, 0x3, 0x2, 0x2, 0x2, 0x1f8, 0x1f7, 0x3, 0x2, 0x2, 0x2, 0x1f9, + 0x1fc, 0x3, 0x2, 0x2, 0x2, 0x1fa, 0x1f8, 0x3, 0x2, 0x2, 0x2, 0x1fa, + 0x1fb, 0x3, 0x2, 0x2, 0x2, 0x1fb, 0x1fd, 0x3, 0x2, 0x2, 0x2, 0x1fc, + 0x1fa, 0x3, 0x2, 0x2, 0x2, 0x1fd, 0x1fe, 0x7, 0x67, 0x2, 0x2, 0x1fe, + 0x57, 0x3, 0x2, 0x2, 0x2, 0x1ff, 0x200, 0x5, 0xa2, 0x52, 0x2, 0x200, + 0x201, 0x5, 0x5a, 0x2e, 0x2, 0x201, 0x59, 0x3, 0x2, 0x2, 0x2, 0x202, + 0x20c, 0x5, 0x5c, 0x2f, 0x2, 0x203, 0x207, 0x7, 0x66, 0x2, 0x2, 0x204, + 0x206, 0x5, 0x5c, 0x2f, 0x2, 0x205, 0x204, 0x3, 0x2, 0x2, 0x2, 0x206, + 0x209, 0x3, 0x2, 0x2, 0x2, 0x207, 0x205, 0x3, 0x2, 0x2, 0x2, 0x207, + 0x208, 0x3, 0x2, 0x2, 0x2, 0x208, 0x20a, 0x3, 0x2, 0x2, 0x2, 0x209, + 0x207, 0x3, 0x2, 0x2, 0x2, 0x20a, 0x20c, 0x7, 0x67, 0x2, 0x2, 0x20b, + 0x202, 0x3, 0x2, 0x2, 0x2, 0x20b, 0x203, 0x3, 0x2, 0x2, 0x2, 0x20c, + 0x5b, 0x3, 0x2, 0x2, 0x2, 0x20d, 0x20e, 0x5, 0x5e, 0x30, 0x2, 0x20e, + 0x20f, 0x7, 0x6b, 0x2, 0x2, 0x20f, 0x212, 0x3, 0x2, 0x2, 0x2, 0x210, + 0x212, 0x5, 0xc6, 0x64, 0x2, 0x211, 0x20d, 0x3, 0x2, 0x2, 0x2, 0x211, + 0x210, 0x3, 0x2, 0x2, 0x2, 0x212, 0x5d, 0x3, 0x2, 0x2, 0x2, 0x213, + 0x218, 0x5, 0x6a, 0x36, 0x2, 0x214, 0x218, 0x5, 0x60, 0x31, 0x2, + 0x215, 0x218, 0x5, 0x62, 0x32, 0x2, 0x216, 0x218, 0x5, 0x66, 0x34, + 0x2, 0x217, 0x213, 0x3, 0x2, 0x2, 0x2, 0x217, 0x214, 0x3, 0x2, 0x2, + 0x2, 0x217, 0x215, 0x3, 0x2, 0x2, 0x2, 0x217, 0x216, 0x3, 0x2, 0x2, + 0x2, 0x218, 0x5f, 0x3, 0x2, 0x2, 0x2, 0x219, 0x21a, 0x7, 0x1a, 0x2, + 0x2, 0x21a, 0x21b, 0x7, 0x68, 0x2, 0x2, 0x21b, 0x21c, 0x7, 0x76, + 0x2, 0x2, 0x21c, 0x21d, 0x7, 0x69, 0x2, 0x2, 0x21d, 0x61, 0x3, 0x2, + 0x2, 0x2, 0x21e, 0x21f, 0x7, 0x1b, 0x2, 0x2, 0x21f, 0x220, 0x5, 0x4c, + 0x27, 0x2, 0x220, 0x63, 0x3, 0x2, 0x2, 0x2, 0x221, 0x224, 0x5, 0x62, + 0x32, 0x2, 0x222, 0x223, 0x7, 0x6f, 0x2, 0x2, 0x223, 0x225, 0x5, + 0x4c, 0x27, 0x2, 0x224, 0x222, 0x3, 0x2, 0x2, 0x2, 0x224, 0x225, + 0x3, 0x2, 0x2, 0x2, 0x225, 0x22b, 0x3, 0x2, 0x2, 0x2, 0x226, 0x227, + 0x5, 0x4c, 0x27, 0x2, 0x227, 0x228, 0x7, 0x6e, 0x2, 0x2, 0x228, 0x229, + 0x5, 0x62, 0x32, 0x2, 0x229, 0x22b, 0x3, 0x2, 0x2, 0x2, 0x22a, 0x221, + 0x3, 0x2, 0x2, 0x2, 0x22a, 0x226, 0x3, 0x2, 0x2, 0x2, 0x22b, 0x65, + 0x3, 0x2, 0x2, 0x2, 0x22c, 0x22d, 0x7, 0x1c, 0x2, 0x2, 0x22d, 0x22e, + 0x5, 0x4c, 0x27, 0x2, 0x22e, 0x67, 0x3, 0x2, 0x2, 0x2, 0x22f, 0x237, + 0x7, 0x1d, 0x2, 0x2, 0x230, 0x231, 0x7, 0x1e, 0x2, 0x2, 0x231, 0x232, + 0x7, 0x68, 0x2, 0x2, 0x232, 0x233, 0x5, 0x76, 0x3c, 0x2, 0x233, 0x234, + 0x7, 0x69, 0x2, 0x2, 0x234, 0x237, 0x3, 0x2, 0x2, 0x2, 0x235, 0x237, + 0x7, 0x1f, 0x2, 0x2, 0x236, 0x22f, 0x3, 0x2, 0x2, 0x2, 0x236, 0x230, + 0x3, 0x2, 0x2, 0x2, 0x236, 0x235, 0x3, 0x2, 0x2, 0x2, 0x237, 0x238, + 0x3, 0x2, 0x2, 0x2, 0x238, 0x239, 0x7, 0x20, 0x2, 0x2, 0x239, 0x69, + 0x3, 0x2, 0x2, 0x2, 0x23a, 0x240, 0x5, 0x6c, 0x37, 0x2, 0x23b, 0x23d, + 0x7, 0x68, 0x2, 0x2, 0x23c, 0x23e, 0x5, 0x8e, 0x48, 0x2, 0x23d, 0x23c, + 0x3, 0x2, 0x2, 0x2, 0x23d, 0x23e, 0x3, 0x2, 0x2, 0x2, 0x23e, 0x23f, + 0x3, 0x2, 0x2, 0x2, 0x23f, 0x241, 0x7, 0x69, 0x2, 0x2, 0x240, 0x23b, + 0x3, 0x2, 0x2, 0x2, 0x240, 0x241, 0x3, 0x2, 0x2, 0x2, 0x241, 0x242, + 0x3, 0x2, 0x2, 0x2, 0x242, 0x243, 0x5, 0x4c, 0x27, 0x2, 0x243, 0x6b, + 0x3, 0x2, 0x2, 0x2, 0x244, 0x24c, 0x7, 0x18, 0x2, 0x2, 0x245, 0x24c, + 0x7, 0x19, 0x2, 0x2, 0x246, 0x24c, 0x7, 0x21, 0x2, 0x2, 0x247, 0x24c, + 0x7, 0x76, 0x2, 0x2, 0x248, 0x249, 0x5, 0x68, 0x35, 0x2, 0x249, 0x24a, + 0x5, 0x6c, 0x37, 0x2, 0x24a, 0x24c, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x244, + 0x3, 0x2, 0x2, 0x2, 0x24b, 0x245, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x246, + 0x3, 0x2, 0x2, 0x2, 0x24b, 0x247, 0x3, 0x2, 0x2, 0x2, 0x24b, 0x248, + 0x3, 0x2, 0x2, 0x2, 0x24c, 0x6d, 0x3, 0x2, 0x2, 0x2, 0x24d, 0x24e, + 0x9, 0x7, 0x2, 0x2, 0x24e, 0x6f, 0x3, 0x2, 0x2, 0x2, 0x24f, 0x250, + 0x9, 0x8, 0x2, 0x2, 0x250, 0x71, 0x3, 0x2, 0x2, 0x2, 0x251, 0x252, + 0x9, 0x9, 0x2, 0x2, 0x252, 0x73, 0x3, 0x2, 0x2, 0x2, 0x253, 0x254, + 0x5, 0x76, 0x3c, 0x2, 0x254, 0x255, 0x7, 0x6b, 0x2, 0x2, 0x255, 0x75, + 0x3, 0x2, 0x2, 0x2, 0x256, 0x257, 0x8, 0x3c, 0x1, 0x2, 0x257, 0x25b, + 0x5, 0x84, 0x43, 0x2, 0x258, 0x25b, 0x5, 0x82, 0x42, 0x2, 0x259, + 0x25b, 0x5, 0x78, 0x3d, 0x2, 0x25a, 0x256, 0x3, 0x2, 0x2, 0x2, 0x25a, + 0x258, 0x3, 0x2, 0x2, 0x2, 0x25a, 0x259, 0x3, 0x2, 0x2, 0x2, 0x25b, + 0x261, 0x3, 0x2, 0x2, 0x2, 0x25c, 0x25d, 0xc, 0x3, 0x2, 0x2, 0x25d, + 0x25e, 0x7, 0x2b, 0x2, 0x2, 0x25e, 0x260, 0x5, 0x78, 0x3d, 0x2, 0x25f, + 0x25c, 0x3, 0x2, 0x2, 0x2, 0x260, 0x263, 0x3, 0x2, 0x2, 0x2, 0x261, + 0x25f, 0x3, 0x2, 0x2, 0x2, 0x261, 0x262, 0x3, 0x2, 0x2, 0x2, 0x262, + 0x77, 0x3, 0x2, 0x2, 0x2, 0x263, 0x261, 0x3, 0x2, 0x2, 0x2, 0x264, + 0x265, 0x8, 0x3d, 0x1, 0x2, 0x265, 0x266, 0x5, 0x7a, 0x3e, 0x2, 0x266, + 0x26c, 0x3, 0x2, 0x2, 0x2, 0x267, 0x268, 0xc, 0x3, 0x2, 0x2, 0x268, + 0x269, 0x7, 0x2c, 0x2, 0x2, 0x269, 0x26b, 0x5, 0x7a, 0x3e, 0x2, 0x26a, + 0x267, 0x3, 0x2, 0x2, 0x2, 0x26b, 0x26e, 0x3, 0x2, 0x2, 0x2, 0x26c, + 0x26a, 0x3, 0x2, 0x2, 0x2, 0x26c, 0x26d, 0x3, 0x2, 0x2, 0x2, 0x26d, + 0x79, 0x3, 0x2, 0x2, 0x2, 0x26e, 0x26c, 0x3, 0x2, 0x2, 0x2, 0x26f, + 0x270, 0x8, 0x3e, 0x1, 0x2, 0x270, 0x271, 0x5, 0x7c, 0x3f, 0x2, 0x271, + 0x277, 0x3, 0x2, 0x2, 0x2, 0x272, 0x273, 0xc, 0x3, 0x2, 0x2, 0x273, + 0x274, 0x7, 0x2d, 0x2, 0x2, 0x274, 0x276, 0x5, 0x7c, 0x3f, 0x2, 0x275, + 0x272, 0x3, 0x2, 0x2, 0x2, 0x276, 0x279, 0x3, 0x2, 0x2, 0x2, 0x277, + 0x275, 0x3, 0x2, 0x2, 0x2, 0x277, 0x278, 0x3, 0x2, 0x2, 0x2, 0x278, + 0x7b, 0x3, 0x2, 0x2, 0x2, 0x279, 0x277, 0x3, 0x2, 0x2, 0x2, 0x27a, + 0x27b, 0x8, 0x3f, 0x1, 0x2, 0x27b, 0x27c, 0x5, 0x7e, 0x40, 0x2, 0x27c, + 0x282, 0x3, 0x2, 0x2, 0x2, 0x27d, 0x27e, 0xc, 0x3, 0x2, 0x2, 0x27e, + 0x27f, 0x9, 0xa, 0x2, 0x2, 0x27f, 0x281, 0x5, 0x7e, 0x40, 0x2, 0x280, + 0x27d, 0x3, 0x2, 0x2, 0x2, 0x281, 0x284, 0x3, 0x2, 0x2, 0x2, 0x282, + 0x280, 0x3, 0x2, 0x2, 0x2, 0x282, 0x283, 0x3, 0x2, 0x2, 0x2, 0x283, + 0x7d, 0x3, 0x2, 0x2, 0x2, 0x284, 0x282, 0x3, 0x2, 0x2, 0x2, 0x285, + 0x286, 0x8, 0x40, 0x1, 0x2, 0x286, 0x287, 0x5, 0x80, 0x41, 0x2, 0x287, + 0x28d, 0x3, 0x2, 0x2, 0x2, 0x288, 0x289, 0xc, 0x3, 0x2, 0x2, 0x289, + 0x28a, 0x9, 0xb, 0x2, 0x2, 0x28a, 0x28c, 0x5, 0x80, 0x41, 0x2, 0x28b, + 0x288, 0x3, 0x2, 0x2, 0x2, 0x28c, 0x28f, 0x3, 0x2, 0x2, 0x2, 0x28d, + 0x28b, 0x3, 0x2, 0x2, 0x2, 0x28d, 0x28e, 0x3, 0x2, 0x2, 0x2, 0x28e, + 0x7f, 0x3, 0x2, 0x2, 0x2, 0x28f, 0x28d, 0x3, 0x2, 0x2, 0x2, 0x290, + 0x291, 0x8, 0x41, 0x1, 0x2, 0x291, 0x294, 0x5, 0x84, 0x43, 0x2, 0x292, + 0x294, 0x5, 0x82, 0x42, 0x2, 0x293, 0x290, 0x3, 0x2, 0x2, 0x2, 0x293, + 0x292, 0x3, 0x2, 0x2, 0x2, 0x294, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x295, + 0x296, 0xc, 0x3, 0x2, 0x2, 0x296, 0x299, 0x9, 0xc, 0x2, 0x2, 0x297, + 0x29a, 0x5, 0x84, 0x43, 0x2, 0x298, 0x29a, 0x5, 0x82, 0x42, 0x2, + 0x299, 0x297, 0x3, 0x2, 0x2, 0x2, 0x299, 0x298, 0x3, 0x2, 0x2, 0x2, + 0x29a, 0x29c, 0x3, 0x2, 0x2, 0x2, 0x29b, 0x295, 0x3, 0x2, 0x2, 0x2, + 0x29c, 0x29f, 0x3, 0x2, 0x2, 0x2, 0x29d, 0x29b, 0x3, 0x2, 0x2, 0x2, + 0x29d, 0x29e, 0x3, 0x2, 0x2, 0x2, 0x29e, 0x81, 0x3, 0x2, 0x2, 0x2, + 0x29f, 0x29d, 0x3, 0x2, 0x2, 0x2, 0x2a0, 0x2a1, 0x5, 0x6e, 0x38, + 0x2, 0x2a1, 0x2a2, 0x5, 0x84, 0x43, 0x2, 0x2a2, 0x83, 0x3, 0x2, 0x2, + 0x2, 0x2a3, 0x2a4, 0x8, 0x43, 0x1, 0x2, 0x2a4, 0x2b4, 0x7, 0x72, + 0x2, 0x2, 0x2a5, 0x2b4, 0x7, 0x75, 0x2, 0x2, 0x2a6, 0x2b4, 0x7, 0x77, + 0x2, 0x2, 0x2a7, 0x2b4, 0x7, 0x76, 0x2, 0x2, 0x2a8, 0x2b4, 0x7, 0x79, + 0x2, 0x2, 0x2a9, 0x2b4, 0x5, 0x88, 0x45, 0x2, 0x2aa, 0x2b4, 0x5, + 0xae, 0x58, 0x2, 0x2ab, 0x2b4, 0x5, 0xb6, 0x5c, 0x2, 0x2ac, 0x2b4, + 0x5, 0xbe, 0x60, 0x2, 0x2ad, 0x2ae, 0x7, 0x70, 0x2, 0x2, 0x2ae, 0x2b4, + 0x5, 0x84, 0x43, 0x6, 0x2af, 0x2b0, 0x7, 0x68, 0x2, 0x2, 0x2b0, 0x2b1, + 0x5, 0x76, 0x3c, 0x2, 0x2b1, 0x2b2, 0x7, 0x69, 0x2, 0x2, 0x2b2, 0x2b4, + 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2a3, 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2a5, + 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2a6, 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2a7, + 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2a8, 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2a9, + 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2aa, 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2ab, + 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2ac, 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2ad, + 0x3, 0x2, 0x2, 0x2, 0x2b3, 0x2af, 0x3, 0x2, 0x2, 0x2, 0x2b4, 0x2be, + 0x3, 0x2, 0x2, 0x2, 0x2b5, 0x2b6, 0xc, 0x4, 0x2, 0x2, 0x2b6, 0x2b7, + 0x7, 0x64, 0x2, 0x2, 0x2b7, 0x2b8, 0x5, 0x76, 0x3c, 0x2, 0x2b8, 0x2b9, + 0x7, 0x65, 0x2, 0x2, 0x2b9, 0x2bd, 0x3, 0x2, 0x2, 0x2, 0x2ba, 0x2bb, + 0xc, 0x3, 0x2, 0x2, 0x2bb, 0x2bd, 0x5, 0x86, 0x44, 0x2, 0x2bc, 0x2b5, + 0x3, 0x2, 0x2, 0x2, 0x2bc, 0x2ba, 0x3, 0x2, 0x2, 0x2, 0x2bd, 0x2c0, + 0x3, 0x2, 0x2, 0x2, 0x2be, 0x2bc, 0x3, 0x2, 0x2, 0x2, 0x2be, 0x2bf, + 0x3, 0x2, 0x2, 0x2, 0x2bf, 0x85, 0x3, 0x2, 0x2, 0x2, 0x2c0, 0x2be, + 0x3, 0x2, 0x2, 0x2, 0x2c1, 0x2c2, 0x9, 0xd, 0x2, 0x2, 0x2c2, 0x87, + 0x3, 0x2, 0x2, 0x2, 0x2c3, 0x2c6, 0x5, 0x8a, 0x46, 0x2, 0x2c4, 0x2c6, + 0x5, 0x8c, 0x47, 0x2, 0x2c5, 0x2c3, 0x3, 0x2, 0x2, 0x2, 0x2c5, 0x2c4, + 0x3, 0x2, 0x2, 0x2, 0x2c6, 0x2c7, 0x3, 0x2, 0x2, 0x2, 0x2c7, 0x2c8, + 0x7, 0x68, 0x2, 0x2, 0x2c8, 0x2c9, 0x5, 0x8e, 0x48, 0x2, 0x2c9, 0x2ca, + 0x7, 0x69, 0x2, 0x2, 0x2ca, 0x89, 0x3, 0x2, 0x2, 0x2, 0x2cb, 0x2cc, + 0x9, 0xe, 0x2, 0x2, 0x2cc, 0x8b, 0x3, 0x2, 0x2, 0x2, 0x2cd, 0x2ce, + 0x5, 0x34, 0x1b, 0x2, 0x2ce, 0x8d, 0x3, 0x2, 0x2, 0x2, 0x2cf, 0x2d0, + 0x5, 0x76, 0x3c, 0x2, 0x2d0, 0x2d1, 0x7, 0x6d, 0x2, 0x2, 0x2d1, 0x2d3, + 0x3, 0x2, 0x2, 0x2, 0x2d2, 0x2cf, 0x3, 0x2, 0x2, 0x2, 0x2d3, 0x2d6, + 0x3, 0x2, 0x2, 0x2, 0x2d4, 0x2d2, 0x3, 0x2, 0x2, 0x2, 0x2d4, 0x2d5, + 0x3, 0x2, 0x2, 0x2, 0x2d5, 0x2d7, 0x3, 0x2, 0x2, 0x2, 0x2d6, 0x2d4, + 0x3, 0x2, 0x2, 0x2, 0x2d7, 0x2d8, 0x5, 0x76, 0x3c, 0x2, 0x2d8, 0x8f, + 0x3, 0x2, 0x2, 0x2, 0x2d9, 0x2da, 0x8, 0x49, 0x1, 0x2, 0x2da, 0x2dd, + 0x5, 0x9a, 0x4e, 0x2, 0x2db, 0x2dd, 0x5, 0x92, 0x4a, 0x2, 0x2dc, + 0x2d9, 0x3, 0x2, 0x2, 0x2, 0x2dc, 0x2db, 0x3, 0x2, 0x2, 0x2, 0x2dd, + 0x2e4, 0x3, 0x2, 0x2, 0x2, 0x2de, 0x2df, 0xc, 0x3, 0x2, 0x2, 0x2df, + 0x2e0, 0x5, 0x72, 0x3a, 0x2, 0x2e0, 0x2e1, 0x5, 0x92, 0x4a, 0x2, + 0x2e1, 0x2e3, 0x3, 0x2, 0x2, 0x2, 0x2e2, 0x2de, 0x3, 0x2, 0x2, 0x2, + 0x2e3, 0x2e6, 0x3, 0x2, 0x2, 0x2, 0x2e4, 0x2e2, 0x3, 0x2, 0x2, 0x2, + 0x2e4, 0x2e5, 0x3, 0x2, 0x2, 0x2, 0x2e5, 0x91, 0x3, 0x2, 0x2, 0x2, + 0x2e6, 0x2e4, 0x3, 0x2, 0x2, 0x2, 0x2e7, 0x2ed, 0x5, 0x76, 0x3c, + 0x2, 0x2e8, 0x2e9, 0x5, 0x76, 0x3c, 0x2, 0x2e9, 0x2ea, 0x5, 0x70, + 0x39, 0x2, 0x2ea, 0x2eb, 0x5, 0x76, 0x3c, 0x2, 0x2eb, 0x2ed, 0x3, + 0x2, 0x2, 0x2, 0x2ec, 0x2e7, 0x3, 0x2, 0x2, 0x2, 0x2ec, 0x2e8, 0x3, + 0x2, 0x2, 0x2, 0x2ed, 0x93, 0x3, 0x2, 0x2, 0x2, 0x2ee, 0x2ef, 0x7, + 0x6e, 0x2, 0x2, 0x2ef, 0x2f0, 0x5, 0x76, 0x3c, 0x2, 0x2f0, 0x95, + 0x3, 0x2, 0x2, 0x2, 0x2f1, 0x2f2, 0x9, 0xf, 0x2, 0x2, 0x2f2, 0x97, + 0x3, 0x2, 0x2, 0x2, 0x2f3, 0x2f4, 0x7, 0x76, 0x2, 0x2, 0x2f4, 0x2f5, + 0x5, 0x94, 0x4b, 0x2, 0x2f5, 0x2f6, 0x7, 0x6d, 0x2, 0x2, 0x2f6, 0x2f8, + 0x3, 0x2, 0x2, 0x2, 0x2f7, 0x2f3, 0x3, 0x2, 0x2, 0x2, 0x2f8, 0x2fb, + 0x3, 0x2, 0x2, 0x2, 0x2f9, 0x2f7, 0x3, 0x2, 0x2, 0x2, 0x2f9, 0x2fa, + 0x3, 0x2, 0x2, 0x2, 0x2fa, 0x2fc, 0x3, 0x2, 0x2, 0x2, 0x2fb, 0x2f9, + 0x3, 0x2, 0x2, 0x2, 0x2fc, 0x2fd, 0x7, 0x76, 0x2, 0x2, 0x2fd, 0x2fe, + 0x5, 0x94, 0x4b, 0x2, 0x2fe, 0x99, 0x3, 0x2, 0x2, 0x2, 0x2ff, 0x300, + 0x7, 0x76, 0x2, 0x2, 0x300, 0x301, 0x7, 0x4d, 0x2, 0x2, 0x301, 0x302, + 0x5, 0x9c, 0x4f, 0x2, 0x302, 0x9b, 0x3, 0x2, 0x2, 0x2, 0x303, 0x304, + 0x7, 0x66, 0x2, 0x2, 0x304, 0x305, 0x5, 0x8e, 0x48, 0x2, 0x305, 0x306, + 0x7, 0x67, 0x2, 0x2, 0x306, 0x30a, 0x3, 0x2, 0x2, 0x2, 0x307, 0x30a, + 0x5, 0x50, 0x29, 0x2, 0x308, 0x30a, 0x7, 0x76, 0x2, 0x2, 0x309, 0x303, + 0x3, 0x2, 0x2, 0x2, 0x309, 0x307, 0x3, 0x2, 0x2, 0x2, 0x309, 0x308, + 0x3, 0x2, 0x2, 0x2, 0x30a, 0x9d, 0x3, 0x2, 0x2, 0x2, 0x30b, 0x315, + 0x5, 0xc, 0x7, 0x2, 0x30c, 0x310, 0x7, 0x66, 0x2, 0x2, 0x30d, 0x30f, + 0x5, 0xc, 0x7, 0x2, 0x30e, 0x30d, 0x3, 0x2, 0x2, 0x2, 0x30f, 0x312, + 0x3, 0x2, 0x2, 0x2, 0x310, 0x30e, 0x3, 0x2, 0x2, 0x2, 0x310, 0x311, + 0x3, 0x2, 0x2, 0x2, 0x311, 0x313, 0x3, 0x2, 0x2, 0x2, 0x312, 0x310, + 0x3, 0x2, 0x2, 0x2, 0x313, 0x315, 0x7, 0x67, 0x2, 0x2, 0x314, 0x30b, + 0x3, 0x2, 0x2, 0x2, 0x314, 0x30c, 0x3, 0x2, 0x2, 0x2, 0x315, 0x9f, + 0x3, 0x2, 0x2, 0x2, 0x316, 0x317, 0x7, 0x4e, 0x2, 0x2, 0x317, 0x318, + 0x7, 0x68, 0x2, 0x2, 0x318, 0x319, 0x5, 0x90, 0x49, 0x2, 0x319, 0x31a, + 0x7, 0x69, 0x2, 0x2, 0x31a, 0x31d, 0x5, 0x9e, 0x50, 0x2, 0x31b, 0x31c, + 0x7, 0x4f, 0x2, 0x2, 0x31c, 0x31e, 0x5, 0x9e, 0x50, 0x2, 0x31d, 0x31b, + 0x3, 0x2, 0x2, 0x2, 0x31d, 0x31e, 0x3, 0x2, 0x2, 0x2, 0x31e, 0xa1, + 0x3, 0x2, 0x2, 0x2, 0x31f, 0x320, 0x7, 0x50, 0x2, 0x2, 0x320, 0x327, + 0x5, 0x9a, 0x4e, 0x2, 0x321, 0x322, 0x7, 0x51, 0x2, 0x2, 0x322, 0x323, + 0x7, 0x68, 0x2, 0x2, 0x323, 0x324, 0x5, 0x90, 0x49, 0x2, 0x324, 0x325, + 0x7, 0x69, 0x2, 0x2, 0x325, 0x327, 0x3, 0x2, 0x2, 0x2, 0x326, 0x31f, + 0x3, 0x2, 0x2, 0x2, 0x326, 0x321, 0x3, 0x2, 0x2, 0x2, 0x327, 0xa3, + 0x3, 0x2, 0x2, 0x2, 0x328, 0x329, 0x5, 0xa2, 0x52, 0x2, 0x329, 0x32a, + 0x5, 0x9e, 0x50, 0x2, 0x32a, 0xa5, 0x3, 0x2, 0x2, 0x2, 0x32b, 0x32c, + 0x7, 0x50, 0x2, 0x2, 0x32c, 0x32d, 0x7, 0x68, 0x2, 0x2, 0x32d, 0x32e, + 0x5, 0x34, 0x1b, 0x2, 0x32e, 0x32f, 0x7, 0x76, 0x2, 0x2, 0x32f, 0x330, + 0x5, 0x94, 0x4b, 0x2, 0x330, 0x331, 0x7, 0x6b, 0x2, 0x2, 0x331, 0x332, + 0x5, 0x90, 0x49, 0x2, 0x332, 0x333, 0x7, 0x6b, 0x2, 0x2, 0x333, 0x334, + 0x5, 0x76, 0x3c, 0x2, 0x334, 0x335, 0x7, 0x69, 0x2, 0x2, 0x335, 0x336, + 0x7, 0x66, 0x2, 0x2, 0x336, 0x337, 0x5, 0x9e, 0x50, 0x2, 0x337, 0x338, + 0x7, 0x67, 0x2, 0x2, 0x338, 0x348, 0x3, 0x2, 0x2, 0x2, 0x339, 0x33a, + 0x7, 0x50, 0x2, 0x2, 0x33a, 0x33b, 0x7, 0x68, 0x2, 0x2, 0x33b, 0x33c, + 0x5, 0x34, 0x1b, 0x2, 0x33c, 0x33d, 0x7, 0x76, 0x2, 0x2, 0x33d, 0x33e, + 0x7, 0x6a, 0x2, 0x2, 0x33e, 0x33f, 0x7, 0x52, 0x2, 0x2, 0x33f, 0x340, + 0x7, 0x68, 0x2, 0x2, 0x340, 0x341, 0x5, 0x76, 0x3c, 0x2, 0x341, 0x342, + 0x7, 0x69, 0x2, 0x2, 0x342, 0x343, 0x7, 0x69, 0x2, 0x2, 0x343, 0x344, + 0x7, 0x66, 0x2, 0x2, 0x344, 0x345, 0x5, 0x9e, 0x50, 0x2, 0x345, 0x346, + 0x7, 0x67, 0x2, 0x2, 0x346, 0x348, 0x3, 0x2, 0x2, 0x2, 0x347, 0x32b, + 0x3, 0x2, 0x2, 0x2, 0x347, 0x339, 0x3, 0x2, 0x2, 0x2, 0x348, 0xa7, + 0x3, 0x2, 0x2, 0x2, 0x349, 0x34a, 0x5, 0xaa, 0x56, 0x2, 0x34a, 0x34b, + 0x7, 0x6b, 0x2, 0x2, 0x34b, 0xa9, 0x3, 0x2, 0x2, 0x2, 0x34c, 0x34d, + 0x9, 0x10, 0x2, 0x2, 0x34d, 0xab, 0x3, 0x2, 0x2, 0x2, 0x34e, 0x34f, + 0x7, 0x56, 0x2, 0x2, 0x34f, 0x355, 0x7, 0x76, 0x2, 0x2, 0x350, 0x352, + 0x7, 0x68, 0x2, 0x2, 0x351, 0x353, 0x5, 0x42, 0x22, 0x2, 0x352, 0x351, + 0x3, 0x2, 0x2, 0x2, 0x352, 0x353, 0x3, 0x2, 0x2, 0x2, 0x353, 0x354, + 0x3, 0x2, 0x2, 0x2, 0x354, 0x356, 0x7, 0x69, 0x2, 0x2, 0x355, 0x350, + 0x3, 0x2, 0x2, 0x2, 0x355, 0x356, 0x3, 0x2, 0x2, 0x2, 0x356, 0x358, + 0x3, 0x2, 0x2, 0x2, 0x357, 0x359, 0x5, 0x1a, 0xe, 0x2, 0x358, 0x357, + 0x3, 0x2, 0x2, 0x2, 0x358, 0x359, 0x3, 0x2, 0x2, 0x2, 0x359, 0x35b, + 0x3, 0x2, 0x2, 0x2, 0x35a, 0x35c, 0x5, 0x34, 0x1b, 0x2, 0x35b, 0x35a, + 0x3, 0x2, 0x2, 0x2, 0x35b, 0x35c, 0x3, 0x2, 0x2, 0x2, 0x35c, 0x35d, + 0x3, 0x2, 0x2, 0x2, 0x35d, 0x35e, 0x7, 0x6b, 0x2, 0x2, 0x35e, 0xad, + 0x3, 0x2, 0x2, 0x2, 0x35f, 0x360, 0x7, 0x76, 0x2, 0x2, 0x360, 0x362, + 0x7, 0x68, 0x2, 0x2, 0x361, 0x363, 0x5, 0x8e, 0x48, 0x2, 0x362, 0x361, + 0x3, 0x2, 0x2, 0x2, 0x362, 0x363, 0x3, 0x2, 0x2, 0x2, 0x363, 0x364, + 0x3, 0x2, 0x2, 0x2, 0x364, 0x365, 0x7, 0x69, 0x2, 0x2, 0x365, 0xaf, + 0x3, 0x2, 0x2, 0x2, 0x366, 0x367, 0x7, 0x57, 0x2, 0x2, 0x367, 0x36d, + 0x7, 0x76, 0x2, 0x2, 0x368, 0x36a, 0x7, 0x68, 0x2, 0x2, 0x369, 0x36b, + 0x5, 0x46, 0x24, 0x2, 0x36a, 0x369, 0x3, 0x2, 0x2, 0x2, 0x36a, 0x36b, + 0x3, 0x2, 0x2, 0x2, 0x36b, 0x36c, 0x3, 0x2, 0x2, 0x2, 0x36c, 0x36e, + 0x7, 0x69, 0x2, 0x2, 0x36d, 0x368, 0x3, 0x2, 0x2, 0x2, 0x36d, 0x36e, + 0x3, 0x2, 0x2, 0x2, 0x36e, 0x370, 0x3, 0x2, 0x2, 0x2, 0x36f, 0x371, + 0x5, 0x2a, 0x16, 0x2, 0x370, 0x36f, 0x3, 0x2, 0x2, 0x2, 0x370, 0x371, + 0x3, 0x2, 0x2, 0x2, 0x371, 0x373, 0x3, 0x2, 0x2, 0x2, 0x372, 0x374, + 0x5, 0x1a, 0xe, 0x2, 0x373, 0x372, 0x3, 0x2, 0x2, 0x2, 0x373, 0x374, + 0x3, 0x2, 0x2, 0x2, 0x374, 0x375, 0x3, 0x2, 0x2, 0x2, 0x375, 0x376, + 0x5, 0xb4, 0x5b, 0x2, 0x376, 0xb1, 0x3, 0x2, 0x2, 0x2, 0x377, 0x378, + 0x7, 0x58, 0x2, 0x2, 0x378, 0x379, 0x5, 0xc, 0x7, 0x2, 0x379, 0xb3, + 0x3, 0x2, 0x2, 0x2, 0x37a, 0x37e, 0x7, 0x66, 0x2, 0x2, 0x37b, 0x37d, + 0x5, 0xc, 0x7, 0x2, 0x37c, 0x37b, 0x3, 0x2, 0x2, 0x2, 0x37d, 0x380, + 0x3, 0x2, 0x2, 0x2, 0x37e, 0x37c, 0x3, 0x2, 0x2, 0x2, 0x37e, 0x37f, + 0x3, 0x2, 0x2, 0x2, 0x37f, 0x382, 0x3, 0x2, 0x2, 0x2, 0x380, 0x37e, + 0x3, 0x2, 0x2, 0x2, 0x381, 0x383, 0x5, 0xb2, 0x5a, 0x2, 0x382, 0x381, + 0x3, 0x2, 0x2, 0x2, 0x382, 0x383, 0x3, 0x2, 0x2, 0x2, 0x383, 0x384, + 0x3, 0x2, 0x2, 0x2, 0x384, 0x388, 0x7, 0x67, 0x2, 0x2, 0x385, 0x386, + 0x7, 0x71, 0x2, 0x2, 0x386, 0x388, 0x7, 0x6b, 0x2, 0x2, 0x387, 0x37a, + 0x3, 0x2, 0x2, 0x2, 0x387, 0x385, 0x3, 0x2, 0x2, 0x2, 0x388, 0xb5, + 0x3, 0x2, 0x2, 0x2, 0x389, 0x38a, 0x7, 0x76, 0x2, 0x2, 0x38a, 0x38c, + 0x7, 0x68, 0x2, 0x2, 0x38b, 0x38d, 0x5, 0x8e, 0x48, 0x2, 0x38c, 0x38b, + 0x3, 0x2, 0x2, 0x2, 0x38c, 0x38d, 0x3, 0x2, 0x2, 0x2, 0x38d, 0x38e, + 0x3, 0x2, 0x2, 0x2, 0x38e, 0x38f, 0x7, 0x69, 0x2, 0x2, 0x38f, 0x390, + 0x3, 0x2, 0x2, 0x2, 0x390, 0x391, 0x5, 0x8e, 0x48, 0x2, 0x391, 0xb7, + 0x3, 0x2, 0x2, 0x2, 0x392, 0x393, 0x7, 0x59, 0x2, 0x2, 0x393, 0x397, + 0x7, 0x66, 0x2, 0x2, 0x394, 0x396, 0x5, 0xc, 0x7, 0x2, 0x395, 0x394, + 0x3, 0x2, 0x2, 0x2, 0x396, 0x399, 0x3, 0x2, 0x2, 0x2, 0x397, 0x395, + 0x3, 0x2, 0x2, 0x2, 0x397, 0x398, 0x3, 0x2, 0x2, 0x2, 0x398, 0x39a, + 0x3, 0x2, 0x2, 0x2, 0x399, 0x397, 0x3, 0x2, 0x2, 0x2, 0x39a, 0x39b, + 0x7, 0x67, 0x2, 0x2, 0x39b, 0xb9, 0x3, 0x2, 0x2, 0x2, 0x39c, 0x3a2, + 0x7, 0x5a, 0x2, 0x2, 0x39d, 0x39f, 0x7, 0x5b, 0x2, 0x2, 0x39e, 0x3a0, + 0x7, 0x75, 0x2, 0x2, 0x39f, 0x39e, 0x3, 0x2, 0x2, 0x2, 0x39f, 0x3a0, + 0x3, 0x2, 0x2, 0x2, 0x3a0, 0x3a2, 0x3, 0x2, 0x2, 0x2, 0x3a1, 0x39c, + 0x3, 0x2, 0x2, 0x2, 0x3a1, 0x39d, 0x3, 0x2, 0x2, 0x2, 0x3a2, 0xbb, + 0x3, 0x2, 0x2, 0x2, 0x3a3, 0x3a4, 0x7, 0x5c, 0x2, 0x2, 0x3a4, 0x3a5, + 0x7, 0x76, 0x2, 0x2, 0x3a5, 0x3aa, 0x5, 0x56, 0x2c, 0x2, 0x3a6, 0x3a7, + 0x7, 0x5d, 0x2, 0x2, 0x3a7, 0x3a8, 0x7, 0x78, 0x2, 0x2, 0x3a8, 0x3aa, + 0x5, 0x56, 0x2c, 0x2, 0x3a9, 0x3a3, 0x3, 0x2, 0x2, 0x2, 0x3a9, 0x3a6, + 0x3, 0x2, 0x2, 0x2, 0x3aa, 0xbd, 0x3, 0x2, 0x2, 0x2, 0x3ab, 0x3ae, + 0x5, 0xc0, 0x61, 0x2, 0x3ac, 0x3ae, 0x7, 0x5e, 0x2, 0x2, 0x3ad, 0x3ab, + 0x3, 0x2, 0x2, 0x2, 0x3ad, 0x3ac, 0x3, 0x2, 0x2, 0x2, 0x3ae, 0xbf, + 0x3, 0x2, 0x2, 0x2, 0x3af, 0x3b8, 0x7, 0x78, 0x2, 0x2, 0x3b0, 0x3b1, + 0x7, 0x42, 0x2, 0x2, 0x3b1, 0x3b4, 0x7, 0x68, 0x2, 0x2, 0x3b2, 0x3b5, + 0x7, 0x76, 0x2, 0x2, 0x3b3, 0x3b5, 0x5, 0x56, 0x2c, 0x2, 0x3b4, 0x3b2, + 0x3, 0x2, 0x2, 0x2, 0x3b4, 0x3b3, 0x3, 0x2, 0x2, 0x2, 0x3b5, 0x3b6, + 0x3, 0x2, 0x2, 0x2, 0x3b6, 0x3b8, 0x7, 0x69, 0x2, 0x2, 0x3b7, 0x3af, + 0x3, 0x2, 0x2, 0x2, 0x3b7, 0x3b0, 0x3, 0x2, 0x2, 0x2, 0x3b8, 0xc1, + 0x3, 0x2, 0x2, 0x2, 0x3b9, 0x3ba, 0x9, 0x11, 0x2, 0x2, 0x3ba, 0xc3, + 0x3, 0x2, 0x2, 0x2, 0x3bb, 0x3c1, 0x5, 0xc2, 0x62, 0x2, 0x3bc, 0x3be, + 0x7, 0x68, 0x2, 0x2, 0x3bd, 0x3bf, 0x5, 0x8e, 0x48, 0x2, 0x3be, 0x3bd, + 0x3, 0x2, 0x2, 0x2, 0x3be, 0x3bf, 0x3, 0x2, 0x2, 0x2, 0x3bf, 0x3c0, + 0x3, 0x2, 0x2, 0x2, 0x3c0, 0x3c2, 0x7, 0x69, 0x2, 0x2, 0x3c1, 0x3bc, + 0x3, 0x2, 0x2, 0x2, 0x3c1, 0x3c2, 0x3, 0x2, 0x2, 0x2, 0x3c2, 0x3c3, + 0x3, 0x2, 0x2, 0x2, 0x3c3, 0x3c4, 0x5, 0x1c, 0xf, 0x2, 0x3c4, 0x3c5, + 0x5, 0x4c, 0x27, 0x2, 0x3c5, 0xc5, 0x3, 0x2, 0x2, 0x2, 0x3c6, 0x3c7, + 0x5, 0xc4, 0x63, 0x2, 0x3c7, 0x3c8, 0x7, 0x6b, 0x2, 0x2, 0x3c8, 0x3cb, + 0x3, 0x2, 0x2, 0x2, 0x3c9, 0x3cb, 0x5, 0xbc, 0x5f, 0x2, 0x3ca, 0x3c6, + 0x3, 0x2, 0x2, 0x2, 0x3ca, 0x3c9, 0x3, 0x2, 0x2, 0x2, 0x3cb, 0xc7, + 0x3, 0x2, 0x2, 0x2, 0x3cc, 0x3cf, 0x5, 0xca, 0x66, 0x2, 0x3cd, 0x3cf, + 0x5, 0xcc, 0x67, 0x2, 0x3ce, 0x3cc, 0x3, 0x2, 0x2, 0x2, 0x3ce, 0x3cd, + 0x3, 0x2, 0x2, 0x2, 0x3cf, 0xc9, 0x3, 0x2, 0x2, 0x2, 0x3d0, 0x3d1, + 0x7, 0x61, 0x2, 0x2, 0x3d1, 0x3d2, 0x5, 0xce, 0x68, 0x2, 0x3d2, 0x3d3, + 0x7, 0x6b, 0x2, 0x2, 0x3d3, 0xcb, 0x3, 0x2, 0x2, 0x2, 0x3d4, 0x3d5, + 0x7, 0x62, 0x2, 0x2, 0x3d5, 0x3db, 0x7, 0x76, 0x2, 0x2, 0x3d6, 0x3d8, + 0x7, 0x68, 0x2, 0x2, 0x3d7, 0x3d9, 0x5, 0xd0, 0x69, 0x2, 0x3d8, 0x3d7, + 0x3, 0x2, 0x2, 0x2, 0x3d8, 0x3d9, 0x3, 0x2, 0x2, 0x2, 0x3d9, 0x3da, + 0x3, 0x2, 0x2, 0x2, 0x3da, 0x3dc, 0x7, 0x69, 0x2, 0x2, 0x3db, 0x3d6, + 0x3, 0x2, 0x2, 0x2, 0x3db, 0x3dc, 0x3, 0x2, 0x2, 0x2, 0x3dc, 0x3dd, + 0x3, 0x2, 0x2, 0x2, 0x3dd, 0x3df, 0x5, 0x20, 0x11, 0x2, 0x3de, 0x3e0, + 0x5, 0x1a, 0xe, 0x2, 0x3df, 0x3de, 0x3, 0x2, 0x2, 0x2, 0x3df, 0x3e0, + 0x3, 0x2, 0x2, 0x2, 0x3e0, 0x3e1, 0x3, 0x2, 0x2, 0x2, 0x3e1, 0x3e5, + 0x7, 0x66, 0x2, 0x2, 0x3e2, 0x3e4, 0xb, 0x2, 0x2, 0x2, 0x3e3, 0x3e2, + 0x3, 0x2, 0x2, 0x2, 0x3e4, 0x3e7, 0x3, 0x2, 0x2, 0x2, 0x3e5, 0x3e6, + 0x3, 0x2, 0x2, 0x2, 0x3e5, 0x3e3, 0x3, 0x2, 0x2, 0x2, 0x3e6, 0x3e8, + 0x3, 0x2, 0x2, 0x2, 0x3e7, 0x3e5, 0x3, 0x2, 0x2, 0x2, 0x3e8, 0x3e9, + 0x7, 0x67, 0x2, 0x2, 0x3e9, 0xcd, 0x3, 0x2, 0x2, 0x2, 0x3ea, 0x3eb, + 0x9, 0x12, 0x2, 0x2, 0x3eb, 0xcf, 0x3, 0x2, 0x2, 0x2, 0x3ec, 0x3ef, + 0x5, 0x46, 0x24, 0x2, 0x3ed, 0x3ef, 0x5, 0x8e, 0x48, 0x2, 0x3ee, + 0x3ec, 0x3, 0x2, 0x2, 0x2, 0x3ee, 0x3ed, 0x3, 0x2, 0x2, 0x2, 0x3ef, + 0xd1, 0x3, 0x2, 0x2, 0x2, 0x66, 0xd5, 0xd7, 0xdb, 0xe0, 0xf1, 0xfe, + 0x110, 0x118, 0x11c, 0x131, 0x13e, 0x142, 0x145, 0x149, 0x152, 0x163, + 0x16e, 0x170, 0x179, 0x17f, 0x184, 0x189, 0x18f, 0x196, 0x1a3, 0x1b6, + 0x1b8, 0x1bf, 0x1c7, 0x1d2, 0x1da, 0x1de, 0x1e2, 0x1ed, 0x1f0, 0x1f8, + 0x1fa, 0x207, 0x20b, 0x211, 0x217, 0x224, 0x22a, 0x236, 0x23d, 0x240, + 0x24b, 0x25a, 0x261, 0x26c, 0x277, 0x282, 0x28d, 0x293, 0x299, 0x29d, + 0x2b3, 0x2bc, 0x2be, 0x2c5, 0x2d4, 0x2dc, 0x2e4, 0x2ec, 0x2f9, 0x309, + 0x310, 0x314, 0x31d, 0x326, 0x347, 0x352, 0x355, 0x358, 0x35b, 0x362, + 0x36a, 0x36d, 0x370, 0x373, 0x37e, 0x382, 0x387, 0x38c, 0x397, 0x39f, + 0x3a1, 0x3a9, 0x3ad, 0x3b4, 0x3b7, 0x3be, 0x3c1, 0x3ca, 0x3ce, 0x3d8, + 0x3db, 0x3df, 0x3e5, 0x3ee, + }; + + _serializedATN.insert(_serializedATN.end(), serializedATNSegment0, + serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0])); + + + atn::ATNDeserializer deserializer; + _atn = deserializer.deserialize(_serializedATN); + + size_t count = _atn.getNumberOfDecisions(); + _decisionToDFA.reserve(count); + for (size_t i = 0; i < count; i++) { + _decisionToDFA.emplace_back(_atn.getDecisionState(i), i); + } +} + +qasm3Parser::Initializer qasm3Parser::_init; diff --git a/mlir/parsers/qasm3/antlr/generated/qasm3Parser.h b/mlir/parsers/qasm3/antlr/generated/qasm3Parser.h index 17ce7e09..ab0552b2 100644 --- a/mlir/parsers/qasm3/antlr/generated/qasm3Parser.h +++ b/mlir/parsers/qasm3/antlr/generated/qasm3Parser.h @@ -1,2038 +1,2038 @@ - -// Generated from qasm3.g4 by ANTLR 4.9.2 - -#pragma once - - -#include "antlr4-runtime.h" - - -namespace qasm3 { - - -class qasm3Parser : public antlr4::Parser { -public: - enum { - T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, - T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, - T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20, - T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26, - T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, - T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, - T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, - T__44 = 45, T__45 = 46, T__46 = 47, T__47 = 48, T__48 = 49, T__49 = 50, - T__50 = 51, T__51 = 52, T__52 = 53, T__53 = 54, T__54 = 55, T__55 = 56, - T__56 = 57, T__57 = 58, T__58 = 59, T__59 = 60, T__60 = 61, T__61 = 62, - T__62 = 63, T__63 = 64, T__64 = 65, T__65 = 66, T__66 = 67, T__67 = 68, - T__68 = 69, T__69 = 70, T__70 = 71, T__71 = 72, T__72 = 73, T__73 = 74, - T__74 = 75, T__75 = 76, T__76 = 77, T__77 = 78, T__78 = 79, T__79 = 80, - T__80 = 81, T__81 = 82, T__82 = 83, T__83 = 84, T__84 = 85, T__85 = 86, - T__86 = 87, T__87 = 88, T__88 = 89, T__89 = 90, T__90 = 91, T__91 = 92, - T__92 = 93, T__93 = 94, T__94 = 95, T__95 = 96, T__96 = 97, LBRACKET = 98, - RBRACKET = 99, LBRACE = 100, RBRACE = 101, LPAREN = 102, RPAREN = 103, - COLON = 104, SEMICOLON = 105, DOT = 106, COMMA = 107, EQUALS = 108, - ARROW = 109, MINUS = 110, EXTERN = 111, Constant = 112, Whitespace = 113, - Newline = 114, Integer = 115, Identifier = 116, RealNumber = 117, TimingLiteral = 118, - StringLiteral = 119, LineComment = 120, BlockComment = 121 - }; - - enum { - RuleProgram = 0, RuleHeader = 1, RuleVersion = 2, RuleInclude = 3, RuleGlobalStatement = 4, - RuleStatement = 5, RuleCompute_action_stmt = 6, RuleQcor_test_statement = 7, - RuleQuantumDeclarationStatement = 8, RuleClassicalDeclarationStatement = 9, - RuleClassicalAssignment = 10, RuleAssignmentStatement = 11, RuleReturnSignature = 12, - RuleDesignator = 13, RuleDoubleDesignator = 14, RuleIdentifierList = 15, - RuleAssociation = 16, RuleQuantumType = 17, RuleQuantumDeclaration = 18, - RuleQuantumArgument = 19, RuleQuantumArgumentList = 20, RuleBitType = 21, - RuleSingleDesignatorType = 22, RuleDoubleDesignatorType = 23, RuleNoDesignatorType = 24, - RuleClassicalType = 25, RuleConstantDeclaration = 26, RuleSingleDesignatorDeclaration = 27, - RuleDoubleDesignatorDeclaration = 28, RuleNoDesignatorDeclaration = 29, - RuleBitDeclaration = 30, RuleClassicalDeclaration = 31, RuleClassicalTypeList = 32, - RuleClassicalArgument = 33, RuleClassicalArgumentList = 34, RuleAliasStatement = 35, - RuleIndexIdentifier = 36, RuleIndexIdentifierList = 37, RuleIndexEqualsAssignmentList = 38, - RuleRangeDefinition = 39, RuleQuantumGateDefinition = 40, RuleQuantumGateSignature = 41, - RuleQuantumBlock = 42, RuleQuantumLoop = 43, RuleQuantumLoopBlock = 44, - RuleQuantumStatement = 45, RuleQuantumInstruction = 46, RuleQuantumPhase = 47, - RuleQuantumMeasurement = 48, RuleQuantumMeasurementAssignment = 49, - RuleQuantumBarrier = 50, RuleQuantumGateModifier = 51, RuleQuantumGateCall = 52, - RuleQuantumGateName = 53, RuleUnaryOperator = 54, RuleRelationalOperator = 55, - RuleLogicalOperator = 56, RuleExpressionStatement = 57, RuleExpression = 58, - RuleXOrExpression = 59, RuleBitAndExpression = 60, RuleBitShiftExpression = 61, - RuleAdditiveExpression = 62, RuleMultiplicativeExpression = 63, RuleUnaryExpression = 64, - RuleExpressionTerminator = 65, RuleIncrementor = 66, RuleBuiltInCall = 67, - RuleBuiltInMath = 68, RuleCastOperator = 69, RuleExpressionList = 70, - RuleBooleanExpression = 71, RuleComparsionExpression = 72, RuleEqualsExpression = 73, - RuleAssignmentOperator = 74, RuleEqualsAssignmentList = 75, RuleMembershipTest = 76, - RuleSetDeclaration = 77, RuleProgramBlock = 78, RuleBranchingStatement = 79, - RuleLoopSignature = 80, RuleLoopStatement = 81, RuleCLikeLoopStatement = 82, - RuleControlDirectiveStatement = 83, RuleControlDirective = 84, RuleKernelDeclaration = 85, - RuleKernelCall = 86, RuleSubroutineDefinition = 87, RuleReturnStatement = 88, - RuleSubroutineBlock = 89, RuleSubroutineCall = 90, RulePragma = 91, - RuleTimingType = 92, RuleTimingBox = 93, RuleTimingTerminator = 94, - RuleTimingIdentifier = 95, RuleTimingInstructionName = 96, RuleTimingInstruction = 97, - RuleTimingStatement = 98, RuleCalibration = 99, RuleCalibrationGrammarDeclaration = 100, - RuleCalibrationDefinition = 101, RuleCalibrationGrammar = 102, RuleCalibrationArgumentList = 103 - }; - - explicit qasm3Parser(antlr4::TokenStream *input); - ~qasm3Parser(); - - virtual std::string getGrammarFileName() const override; - virtual const antlr4::atn::ATN& getATN() const override { return _atn; }; - virtual const std::vector& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead. - virtual const std::vector& getRuleNames() const override; - virtual antlr4::dfa::Vocabulary& getVocabulary() const override; - - - class ProgramContext; - class HeaderContext; - class VersionContext; - class IncludeContext; - class GlobalStatementContext; - class StatementContext; - class Compute_action_stmtContext; - class Qcor_test_statementContext; - class QuantumDeclarationStatementContext; - class ClassicalDeclarationStatementContext; - class ClassicalAssignmentContext; - class AssignmentStatementContext; - class ReturnSignatureContext; - class DesignatorContext; - class DoubleDesignatorContext; - class IdentifierListContext; - class AssociationContext; - class QuantumTypeContext; - class QuantumDeclarationContext; - class QuantumArgumentContext; - class QuantumArgumentListContext; - class BitTypeContext; - class SingleDesignatorTypeContext; - class DoubleDesignatorTypeContext; - class NoDesignatorTypeContext; - class ClassicalTypeContext; - class ConstantDeclarationContext; - class SingleDesignatorDeclarationContext; - class DoubleDesignatorDeclarationContext; - class NoDesignatorDeclarationContext; - class BitDeclarationContext; - class ClassicalDeclarationContext; - class ClassicalTypeListContext; - class ClassicalArgumentContext; - class ClassicalArgumentListContext; - class AliasStatementContext; - class IndexIdentifierContext; - class IndexIdentifierListContext; - class IndexEqualsAssignmentListContext; - class RangeDefinitionContext; - class QuantumGateDefinitionContext; - class QuantumGateSignatureContext; - class QuantumBlockContext; - class QuantumLoopContext; - class QuantumLoopBlockContext; - class QuantumStatementContext; - class QuantumInstructionContext; - class QuantumPhaseContext; - class QuantumMeasurementContext; - class QuantumMeasurementAssignmentContext; - class QuantumBarrierContext; - class QuantumGateModifierContext; - class QuantumGateCallContext; - class QuantumGateNameContext; - class UnaryOperatorContext; - class RelationalOperatorContext; - class LogicalOperatorContext; - class ExpressionStatementContext; - class ExpressionContext; - class XOrExpressionContext; - class BitAndExpressionContext; - class BitShiftExpressionContext; - class AdditiveExpressionContext; - class MultiplicativeExpressionContext; - class UnaryExpressionContext; - class ExpressionTerminatorContext; - class IncrementorContext; - class BuiltInCallContext; - class BuiltInMathContext; - class CastOperatorContext; - class ExpressionListContext; - class BooleanExpressionContext; - class ComparsionExpressionContext; - class EqualsExpressionContext; - class AssignmentOperatorContext; - class EqualsAssignmentListContext; - class MembershipTestContext; - class SetDeclarationContext; - class ProgramBlockContext; - class BranchingStatementContext; - class LoopSignatureContext; - class LoopStatementContext; - class CLikeLoopStatementContext; - class ControlDirectiveStatementContext; - class ControlDirectiveContext; - class KernelDeclarationContext; - class KernelCallContext; - class SubroutineDefinitionContext; - class ReturnStatementContext; - class SubroutineBlockContext; - class SubroutineCallContext; - class PragmaContext; - class TimingTypeContext; - class TimingBoxContext; - class TimingTerminatorContext; - class TimingIdentifierContext; - class TimingInstructionNameContext; - class TimingInstructionContext; - class TimingStatementContext; - class CalibrationContext; - class CalibrationGrammarDeclarationContext; - class CalibrationDefinitionContext; - class CalibrationGrammarContext; - class CalibrationArgumentListContext; - - class ProgramContext : public antlr4::ParserRuleContext { - public: - ProgramContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - HeaderContext *header(); - std::vector globalStatement(); - GlobalStatementContext* globalStatement(size_t i); - std::vector statement(); - StatementContext* statement(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ProgramContext* program(); - - class HeaderContext : public antlr4::ParserRuleContext { - public: - HeaderContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - VersionContext *version(); - std::vector include(); - IncludeContext* include(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - HeaderContext* header(); - - class VersionContext : public antlr4::ParserRuleContext { - public: - VersionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *SEMICOLON(); - antlr4::tree::TerminalNode *Integer(); - antlr4::tree::TerminalNode *RealNumber(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - VersionContext* version(); - - class IncludeContext : public antlr4::ParserRuleContext { - public: - IncludeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *StringLiteral(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - IncludeContext* include(); - - class GlobalStatementContext : public antlr4::ParserRuleContext { - public: - GlobalStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - SubroutineDefinitionContext *subroutineDefinition(); - KernelDeclarationContext *kernelDeclaration(); - QuantumGateDefinitionContext *quantumGateDefinition(); - CalibrationContext *calibration(); - QuantumDeclarationStatementContext *quantumDeclarationStatement(); - PragmaContext *pragma(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - GlobalStatementContext* globalStatement(); - - class StatementContext : public antlr4::ParserRuleContext { - public: - StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ExpressionStatementContext *expressionStatement(); - AssignmentStatementContext *assignmentStatement(); - ClassicalDeclarationStatementContext *classicalDeclarationStatement(); - BranchingStatementContext *branchingStatement(); - LoopStatementContext *loopStatement(); - ControlDirectiveStatementContext *controlDirectiveStatement(); - AliasStatementContext *aliasStatement(); - QuantumStatementContext *quantumStatement(); - ReturnStatementContext *returnStatement(); - Qcor_test_statementContext *qcor_test_statement(); - Compute_action_stmtContext *compute_action_stmt(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - StatementContext* statement(); - - class Compute_action_stmtContext : public antlr4::ParserRuleContext { - public: - qasm3Parser::ProgramBlockContext *compute_block = nullptr; - qasm3Parser::ProgramBlockContext *action_block = nullptr; - Compute_action_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector programBlock(); - ProgramBlockContext* programBlock(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - Compute_action_stmtContext* compute_action_stmt(); - - class Qcor_test_statementContext : public antlr4::ParserRuleContext { - public: - Qcor_test_statementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LPAREN(); - BooleanExpressionContext *booleanExpression(); - antlr4::tree::TerminalNode *RPAREN(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - Qcor_test_statementContext* qcor_test_statement(); - - class QuantumDeclarationStatementContext : public antlr4::ParserRuleContext { - public: - QuantumDeclarationStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumDeclarationContext *quantumDeclaration(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumDeclarationStatementContext* quantumDeclarationStatement(); - - class ClassicalDeclarationStatementContext : public antlr4::ParserRuleContext { - public: - ClassicalDeclarationStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *SEMICOLON(); - ClassicalDeclarationContext *classicalDeclaration(); - ConstantDeclarationContext *constantDeclaration(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ClassicalDeclarationStatementContext* classicalDeclarationStatement(); - - class ClassicalAssignmentContext : public antlr4::ParserRuleContext { - public: - ClassicalAssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector indexIdentifier(); - IndexIdentifierContext* indexIdentifier(size_t i); - AssignmentOperatorContext *assignmentOperator(); - ExpressionContext *expression(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ClassicalAssignmentContext* classicalAssignment(); - - class AssignmentStatementContext : public antlr4::ParserRuleContext { - public: - AssignmentStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *SEMICOLON(); - ClassicalAssignmentContext *classicalAssignment(); - QuantumMeasurementAssignmentContext *quantumMeasurementAssignment(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - AssignmentStatementContext* assignmentStatement(); - - class ReturnSignatureContext : public antlr4::ParserRuleContext { - public: - ReturnSignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *ARROW(); - ClassicalTypeContext *classicalType(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ReturnSignatureContext* returnSignature(); - - class DesignatorContext : public antlr4::ParserRuleContext { - public: - DesignatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LBRACKET(); - ExpressionContext *expression(); - antlr4::tree::TerminalNode *RBRACKET(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - DesignatorContext* designator(); - - class DoubleDesignatorContext : public antlr4::ParserRuleContext { - public: - DoubleDesignatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LBRACKET(); - std::vector expression(); - ExpressionContext* expression(size_t i); - antlr4::tree::TerminalNode *COMMA(); - antlr4::tree::TerminalNode *RBRACKET(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - DoubleDesignatorContext* doubleDesignator(); - - class IdentifierListContext : public antlr4::ParserRuleContext { - public: - IdentifierListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector Identifier(); - antlr4::tree::TerminalNode* Identifier(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - IdentifierListContext* identifierList(); - - class AssociationContext : public antlr4::ParserRuleContext { - public: - AssociationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *COLON(); - antlr4::tree::TerminalNode *Identifier(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - AssociationContext* association(); - - class QuantumTypeContext : public antlr4::ParserRuleContext { - public: - QuantumTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumTypeContext* quantumType(); - - class QuantumDeclarationContext : public antlr4::ParserRuleContext { - public: - QuantumDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumTypeContext *quantumType(); - IndexIdentifierListContext *indexIdentifierList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumDeclarationContext* quantumDeclaration(); - - class QuantumArgumentContext : public antlr4::ParserRuleContext { - public: - QuantumArgumentContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumTypeContext *quantumType(); - AssociationContext *association(); - DesignatorContext *designator(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumArgumentContext* quantumArgument(); - - class QuantumArgumentListContext : public antlr4::ParserRuleContext { - public: - QuantumArgumentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector quantumArgument(); - QuantumArgumentContext* quantumArgument(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumArgumentListContext* quantumArgumentList(); - - class BitTypeContext : public antlr4::ParserRuleContext { - public: - BitTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BitTypeContext* bitType(); - - class SingleDesignatorTypeContext : public antlr4::ParserRuleContext { - public: - SingleDesignatorTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - SingleDesignatorTypeContext* singleDesignatorType(); - - class DoubleDesignatorTypeContext : public antlr4::ParserRuleContext { - public: - DoubleDesignatorTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - DoubleDesignatorTypeContext* doubleDesignatorType(); - - class NoDesignatorTypeContext : public antlr4::ParserRuleContext { - public: - NoDesignatorTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - TimingTypeContext *timingType(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - NoDesignatorTypeContext* noDesignatorType(); - - class ClassicalTypeContext : public antlr4::ParserRuleContext { - public: - ClassicalTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - SingleDesignatorTypeContext *singleDesignatorType(); - DesignatorContext *designator(); - DoubleDesignatorTypeContext *doubleDesignatorType(); - DoubleDesignatorContext *doubleDesignator(); - NoDesignatorTypeContext *noDesignatorType(); - BitTypeContext *bitType(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ClassicalTypeContext* classicalType(); - - class ConstantDeclarationContext : public antlr4::ParserRuleContext { - public: - ConstantDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - EqualsAssignmentListContext *equalsAssignmentList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ConstantDeclarationContext* constantDeclaration(); - - class SingleDesignatorDeclarationContext : public antlr4::ParserRuleContext { - public: - SingleDesignatorDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - SingleDesignatorTypeContext *singleDesignatorType(); - DesignatorContext *designator(); - IdentifierListContext *identifierList(); - EqualsAssignmentListContext *equalsAssignmentList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - SingleDesignatorDeclarationContext* singleDesignatorDeclaration(); - - class DoubleDesignatorDeclarationContext : public antlr4::ParserRuleContext { - public: - DoubleDesignatorDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - DoubleDesignatorTypeContext *doubleDesignatorType(); - DoubleDesignatorContext *doubleDesignator(); - IdentifierListContext *identifierList(); - EqualsAssignmentListContext *equalsAssignmentList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - DoubleDesignatorDeclarationContext* doubleDesignatorDeclaration(); - - class NoDesignatorDeclarationContext : public antlr4::ParserRuleContext { - public: - NoDesignatorDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - NoDesignatorTypeContext *noDesignatorType(); - IdentifierListContext *identifierList(); - EqualsAssignmentListContext *equalsAssignmentList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - NoDesignatorDeclarationContext* noDesignatorDeclaration(); - - class BitDeclarationContext : public antlr4::ParserRuleContext { - public: - BitDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - BitTypeContext *bitType(); - IndexIdentifierListContext *indexIdentifierList(); - IndexEqualsAssignmentListContext *indexEqualsAssignmentList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BitDeclarationContext* bitDeclaration(); - - class ClassicalDeclarationContext : public antlr4::ParserRuleContext { - public: - ClassicalDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - SingleDesignatorDeclarationContext *singleDesignatorDeclaration(); - DoubleDesignatorDeclarationContext *doubleDesignatorDeclaration(); - NoDesignatorDeclarationContext *noDesignatorDeclaration(); - BitDeclarationContext *bitDeclaration(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ClassicalDeclarationContext* classicalDeclaration(); - - class ClassicalTypeListContext : public antlr4::ParserRuleContext { - public: - ClassicalTypeListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector classicalType(); - ClassicalTypeContext* classicalType(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ClassicalTypeListContext* classicalTypeList(); - - class ClassicalArgumentContext : public antlr4::ParserRuleContext { - public: - ClassicalArgumentContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ClassicalTypeContext *classicalType(); - AssociationContext *association(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ClassicalArgumentContext* classicalArgument(); - - class ClassicalArgumentListContext : public antlr4::ParserRuleContext { - public: - ClassicalArgumentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector classicalArgument(); - ClassicalArgumentContext* classicalArgument(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ClassicalArgumentListContext* classicalArgumentList(); - - class AliasStatementContext : public antlr4::ParserRuleContext { - public: - AliasStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - antlr4::tree::TerminalNode *EQUALS(); - IndexIdentifierContext *indexIdentifier(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - AliasStatementContext* aliasStatement(); - - class IndexIdentifierContext : public antlr4::ParserRuleContext { - public: - IndexIdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - RangeDefinitionContext *rangeDefinition(); - antlr4::tree::TerminalNode *LBRACKET(); - ExpressionListContext *expressionList(); - antlr4::tree::TerminalNode *RBRACKET(); - std::vector indexIdentifier(); - IndexIdentifierContext* indexIdentifier(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - IndexIdentifierContext* indexIdentifier(); - IndexIdentifierContext* indexIdentifier(int precedence); - class IndexIdentifierListContext : public antlr4::ParserRuleContext { - public: - IndexIdentifierListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector indexIdentifier(); - IndexIdentifierContext* indexIdentifier(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - IndexIdentifierListContext* indexIdentifierList(); - - class IndexEqualsAssignmentListContext : public antlr4::ParserRuleContext { - public: - IndexEqualsAssignmentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector indexIdentifier(); - IndexIdentifierContext* indexIdentifier(size_t i); - std::vector equalsExpression(); - EqualsExpressionContext* equalsExpression(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - IndexEqualsAssignmentListContext* indexEqualsAssignmentList(); - - class RangeDefinitionContext : public antlr4::ParserRuleContext { - public: - RangeDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LBRACKET(); - std::vector COLON(); - antlr4::tree::TerminalNode* COLON(size_t i); - antlr4::tree::TerminalNode *RBRACKET(); - std::vector expression(); - ExpressionContext* expression(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - RangeDefinitionContext* rangeDefinition(); - - class QuantumGateDefinitionContext : public antlr4::ParserRuleContext { - public: - QuantumGateDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumGateSignatureContext *quantumGateSignature(); - QuantumBlockContext *quantumBlock(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumGateDefinitionContext* quantumGateDefinition(); - - class QuantumGateSignatureContext : public antlr4::ParserRuleContext { - public: - QuantumGateSignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector identifierList(); - IdentifierListContext* identifierList(size_t i); - antlr4::tree::TerminalNode *Identifier(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumGateSignatureContext* quantumGateSignature(); - - class QuantumBlockContext : public antlr4::ParserRuleContext { - public: - QuantumBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LBRACE(); - antlr4::tree::TerminalNode *RBRACE(); - std::vector compute_action_stmt(); - Compute_action_stmtContext* compute_action_stmt(size_t i); - std::vector quantumStatement(); - QuantumStatementContext* quantumStatement(size_t i); - std::vector quantumLoop(); - QuantumLoopContext* quantumLoop(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumBlockContext* quantumBlock(); - - class QuantumLoopContext : public antlr4::ParserRuleContext { - public: - QuantumLoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - LoopSignatureContext *loopSignature(); - QuantumLoopBlockContext *quantumLoopBlock(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumLoopContext* quantumLoop(); - - class QuantumLoopBlockContext : public antlr4::ParserRuleContext { - public: - QuantumLoopBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector quantumStatement(); - QuantumStatementContext* quantumStatement(size_t i); - antlr4::tree::TerminalNode *LBRACE(); - antlr4::tree::TerminalNode *RBRACE(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumLoopBlockContext* quantumLoopBlock(); - - class QuantumStatementContext : public antlr4::ParserRuleContext { - public: - QuantumStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumInstructionContext *quantumInstruction(); - antlr4::tree::TerminalNode *SEMICOLON(); - TimingStatementContext *timingStatement(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumStatementContext* quantumStatement(); - - class QuantumInstructionContext : public antlr4::ParserRuleContext { - public: - QuantumInstructionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumGateCallContext *quantumGateCall(); - QuantumPhaseContext *quantumPhase(); - QuantumMeasurementContext *quantumMeasurement(); - QuantumBarrierContext *quantumBarrier(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumInstructionContext* quantumInstruction(); - - class QuantumPhaseContext : public antlr4::ParserRuleContext { - public: - QuantumPhaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *Identifier(); - antlr4::tree::TerminalNode *RPAREN(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumPhaseContext* quantumPhase(); - - class QuantumMeasurementContext : public antlr4::ParserRuleContext { - public: - QuantumMeasurementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - IndexIdentifierListContext *indexIdentifierList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumMeasurementContext* quantumMeasurement(); - - class QuantumMeasurementAssignmentContext : public antlr4::ParserRuleContext { - public: - QuantumMeasurementAssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumMeasurementContext *quantumMeasurement(); - antlr4::tree::TerminalNode *ARROW(); - IndexIdentifierListContext *indexIdentifierList(); - antlr4::tree::TerminalNode *EQUALS(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumMeasurementAssignmentContext* quantumMeasurementAssignment(); - - class QuantumBarrierContext : public antlr4::ParserRuleContext { - public: - QuantumBarrierContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - IndexIdentifierListContext *indexIdentifierList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumBarrierContext* quantumBarrier(); - - class QuantumGateModifierContext : public antlr4::ParserRuleContext { - public: - QuantumGateModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LPAREN(); - ExpressionContext *expression(); - antlr4::tree::TerminalNode *RPAREN(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumGateModifierContext* quantumGateModifier(); - - class QuantumGateCallContext : public antlr4::ParserRuleContext { - public: - QuantumGateCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - QuantumGateNameContext *quantumGateName(); - IndexIdentifierListContext *indexIdentifierList(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - ExpressionListContext *expressionList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumGateCallContext* quantumGateCall(); - - class QuantumGateNameContext : public antlr4::ParserRuleContext { - public: - QuantumGateNameContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - QuantumGateModifierContext *quantumGateModifier(); - QuantumGateNameContext *quantumGateName(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - QuantumGateNameContext* quantumGateName(); - - class UnaryOperatorContext : public antlr4::ParserRuleContext { - public: - UnaryOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - UnaryOperatorContext* unaryOperator(); - - class RelationalOperatorContext : public antlr4::ParserRuleContext { - public: - RelationalOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - RelationalOperatorContext* relationalOperator(); - - class LogicalOperatorContext : public antlr4::ParserRuleContext { - public: - LogicalOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - LogicalOperatorContext* logicalOperator(); - - class ExpressionStatementContext : public antlr4::ParserRuleContext { - public: - ExpressionStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ExpressionContext *expression(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ExpressionStatementContext* expressionStatement(); - - class ExpressionContext : public antlr4::ParserRuleContext { - public: - ExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ExpressionTerminatorContext *expressionTerminator(); - UnaryExpressionContext *unaryExpression(); - XOrExpressionContext *xOrExpression(); - ExpressionContext *expression(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ExpressionContext* expression(); - ExpressionContext* expression(int precedence); - class XOrExpressionContext : public antlr4::ParserRuleContext { - public: - XOrExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - BitAndExpressionContext *bitAndExpression(); - XOrExpressionContext *xOrExpression(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - XOrExpressionContext* xOrExpression(); - XOrExpressionContext* xOrExpression(int precedence); - class BitAndExpressionContext : public antlr4::ParserRuleContext { - public: - BitAndExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - BitShiftExpressionContext *bitShiftExpression(); - BitAndExpressionContext *bitAndExpression(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BitAndExpressionContext* bitAndExpression(); - BitAndExpressionContext* bitAndExpression(int precedence); - class BitShiftExpressionContext : public antlr4::ParserRuleContext { - public: - BitShiftExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - AdditiveExpressionContext *additiveExpression(); - BitShiftExpressionContext *bitShiftExpression(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BitShiftExpressionContext* bitShiftExpression(); - BitShiftExpressionContext* bitShiftExpression(int precedence); - class AdditiveExpressionContext : public antlr4::ParserRuleContext { - public: - antlr4::Token *binary_op = nullptr; - AdditiveExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - MultiplicativeExpressionContext *multiplicativeExpression(); - AdditiveExpressionContext *additiveExpression(); - antlr4::tree::TerminalNode *MINUS(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - AdditiveExpressionContext* additiveExpression(); - AdditiveExpressionContext* additiveExpression(int precedence); - class MultiplicativeExpressionContext : public antlr4::ParserRuleContext { - public: - antlr4::Token *binary_op = nullptr; - MultiplicativeExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ExpressionTerminatorContext *expressionTerminator(); - UnaryExpressionContext *unaryExpression(); - MultiplicativeExpressionContext *multiplicativeExpression(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - MultiplicativeExpressionContext* multiplicativeExpression(); - MultiplicativeExpressionContext* multiplicativeExpression(int precedence); - class UnaryExpressionContext : public antlr4::ParserRuleContext { - public: - UnaryExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - UnaryOperatorContext *unaryOperator(); - ExpressionTerminatorContext *expressionTerminator(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - UnaryExpressionContext* unaryExpression(); - - class ExpressionTerminatorContext : public antlr4::ParserRuleContext { - public: - ExpressionTerminatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Constant(); - antlr4::tree::TerminalNode *Integer(); - antlr4::tree::TerminalNode *RealNumber(); - antlr4::tree::TerminalNode *Identifier(); - antlr4::tree::TerminalNode *StringLiteral(); - BuiltInCallContext *builtInCall(); - KernelCallContext *kernelCall(); - SubroutineCallContext *subroutineCall(); - TimingTerminatorContext *timingTerminator(); - antlr4::tree::TerminalNode *MINUS(); - ExpressionTerminatorContext *expressionTerminator(); - antlr4::tree::TerminalNode *LPAREN(); - ExpressionContext *expression(); - antlr4::tree::TerminalNode *RPAREN(); - antlr4::tree::TerminalNode *LBRACKET(); - antlr4::tree::TerminalNode *RBRACKET(); - IncrementorContext *incrementor(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ExpressionTerminatorContext* expressionTerminator(); - ExpressionTerminatorContext* expressionTerminator(int precedence); - class IncrementorContext : public antlr4::ParserRuleContext { - public: - IncrementorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - IncrementorContext* incrementor(); - - class BuiltInCallContext : public antlr4::ParserRuleContext { - public: - BuiltInCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LPAREN(); - ExpressionListContext *expressionList(); - antlr4::tree::TerminalNode *RPAREN(); - BuiltInMathContext *builtInMath(); - CastOperatorContext *castOperator(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BuiltInCallContext* builtInCall(); - - class BuiltInMathContext : public antlr4::ParserRuleContext { - public: - BuiltInMathContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BuiltInMathContext* builtInMath(); - - class CastOperatorContext : public antlr4::ParserRuleContext { - public: - CastOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ClassicalTypeContext *classicalType(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - CastOperatorContext* castOperator(); - - class ExpressionListContext : public antlr4::ParserRuleContext { - public: - ExpressionListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector expression(); - ExpressionContext* expression(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ExpressionListContext* expressionList(); - - class BooleanExpressionContext : public antlr4::ParserRuleContext { - public: - BooleanExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - MembershipTestContext *membershipTest(); - ComparsionExpressionContext *comparsionExpression(); - BooleanExpressionContext *booleanExpression(); - LogicalOperatorContext *logicalOperator(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BooleanExpressionContext* booleanExpression(); - BooleanExpressionContext* booleanExpression(int precedence); - class ComparsionExpressionContext : public antlr4::ParserRuleContext { - public: - ComparsionExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector expression(); - ExpressionContext* expression(size_t i); - RelationalOperatorContext *relationalOperator(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ComparsionExpressionContext* comparsionExpression(); - - class EqualsExpressionContext : public antlr4::ParserRuleContext { - public: - EqualsExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *EQUALS(); - ExpressionContext *expression(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - EqualsExpressionContext* equalsExpression(); - - class AssignmentOperatorContext : public antlr4::ParserRuleContext { - public: - AssignmentOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *EQUALS(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - AssignmentOperatorContext* assignmentOperator(); - - class EqualsAssignmentListContext : public antlr4::ParserRuleContext { - public: - EqualsAssignmentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector Identifier(); - antlr4::tree::TerminalNode* Identifier(size_t i); - std::vector equalsExpression(); - EqualsExpressionContext* equalsExpression(size_t i); - std::vector COMMA(); - antlr4::tree::TerminalNode* COMMA(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - EqualsAssignmentListContext* equalsAssignmentList(); - - class MembershipTestContext : public antlr4::ParserRuleContext { - public: - MembershipTestContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - SetDeclarationContext *setDeclaration(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - MembershipTestContext* membershipTest(); - - class SetDeclarationContext : public antlr4::ParserRuleContext { - public: - SetDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LBRACE(); - ExpressionListContext *expressionList(); - antlr4::tree::TerminalNode *RBRACE(); - RangeDefinitionContext *rangeDefinition(); - antlr4::tree::TerminalNode *Identifier(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - SetDeclarationContext* setDeclaration(); - - class ProgramBlockContext : public antlr4::ParserRuleContext { - public: - ProgramBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector statement(); - StatementContext* statement(size_t i); - antlr4::tree::TerminalNode *LBRACE(); - antlr4::tree::TerminalNode *RBRACE(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ProgramBlockContext* programBlock(); - - class BranchingStatementContext : public antlr4::ParserRuleContext { - public: - BranchingStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LPAREN(); - BooleanExpressionContext *booleanExpression(); - antlr4::tree::TerminalNode *RPAREN(); - std::vector programBlock(); - ProgramBlockContext* programBlock(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - BranchingStatementContext* branchingStatement(); - - class LoopSignatureContext : public antlr4::ParserRuleContext { - public: - LoopSignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - MembershipTestContext *membershipTest(); - antlr4::tree::TerminalNode *LPAREN(); - BooleanExpressionContext *booleanExpression(); - antlr4::tree::TerminalNode *RPAREN(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - LoopSignatureContext* loopSignature(); - - class LoopStatementContext : public antlr4::ParserRuleContext { - public: - LoopStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - LoopSignatureContext *loopSignature(); - ProgramBlockContext *programBlock(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - LoopStatementContext* loopStatement(); - - class CLikeLoopStatementContext : public antlr4::ParserRuleContext { - public: - CLikeLoopStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - std::vector LPAREN(); - antlr4::tree::TerminalNode* LPAREN(size_t i); - ClassicalTypeContext *classicalType(); - antlr4::tree::TerminalNode *Identifier(); - EqualsExpressionContext *equalsExpression(); - std::vector SEMICOLON(); - antlr4::tree::TerminalNode* SEMICOLON(size_t i); - BooleanExpressionContext *booleanExpression(); - ExpressionContext *expression(); - std::vector RPAREN(); - antlr4::tree::TerminalNode* RPAREN(size_t i); - antlr4::tree::TerminalNode *LBRACE(); - ProgramBlockContext *programBlock(); - antlr4::tree::TerminalNode *RBRACE(); - antlr4::tree::TerminalNode *COLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - CLikeLoopStatementContext* cLikeLoopStatement(); - - class ControlDirectiveStatementContext : public antlr4::ParserRuleContext { - public: - ControlDirectiveStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ControlDirectiveContext *controlDirective(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ControlDirectiveStatementContext* controlDirectiveStatement(); - - class ControlDirectiveContext : public antlr4::ParserRuleContext { - public: - ControlDirectiveContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ControlDirectiveContext* controlDirective(); - - class KernelDeclarationContext : public antlr4::ParserRuleContext { - public: - KernelDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - antlr4::tree::TerminalNode *SEMICOLON(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - ReturnSignatureContext *returnSignature(); - ClassicalTypeContext *classicalType(); - ClassicalTypeListContext *classicalTypeList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - KernelDeclarationContext* kernelDeclaration(); - - class KernelCallContext : public antlr4::ParserRuleContext { - public: - KernelCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - ExpressionListContext *expressionList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - KernelCallContext* kernelCall(); - - class SubroutineDefinitionContext : public antlr4::ParserRuleContext { - public: - SubroutineDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - SubroutineBlockContext *subroutineBlock(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - QuantumArgumentListContext *quantumArgumentList(); - ReturnSignatureContext *returnSignature(); - ClassicalArgumentListContext *classicalArgumentList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - SubroutineDefinitionContext* subroutineDefinition(); - - class ReturnStatementContext : public antlr4::ParserRuleContext { - public: - ReturnStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - StatementContext *statement(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - ReturnStatementContext* returnStatement(); - - class SubroutineBlockContext : public antlr4::ParserRuleContext { - public: - SubroutineBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LBRACE(); - antlr4::tree::TerminalNode *RBRACE(); - std::vector statement(); - StatementContext* statement(size_t i); - ReturnStatementContext *returnStatement(); - antlr4::tree::TerminalNode *EXTERN(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - SubroutineBlockContext* subroutineBlock(); - - class SubroutineCallContext : public antlr4::ParserRuleContext { - public: - SubroutineCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - std::vector expressionList(); - ExpressionListContext* expressionList(size_t i); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - SubroutineCallContext* subroutineCall(); - - class PragmaContext : public antlr4::ParserRuleContext { - public: - PragmaContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *LBRACE(); - antlr4::tree::TerminalNode *RBRACE(); - std::vector statement(); - StatementContext* statement(size_t i); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - PragmaContext* pragma(); - - class TimingTypeContext : public antlr4::ParserRuleContext { - public: - TimingTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Integer(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TimingTypeContext* timingType(); - - class TimingBoxContext : public antlr4::ParserRuleContext { - public: - TimingBoxContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - QuantumBlockContext *quantumBlock(); - antlr4::tree::TerminalNode *TimingLiteral(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TimingBoxContext* timingBox(); - - class TimingTerminatorContext : public antlr4::ParserRuleContext { - public: - TimingTerminatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - TimingIdentifierContext *timingIdentifier(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TimingTerminatorContext* timingTerminator(); - - class TimingIdentifierContext : public antlr4::ParserRuleContext { - public: - TimingIdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *TimingLiteral(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - antlr4::tree::TerminalNode *Identifier(); - QuantumBlockContext *quantumBlock(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TimingIdentifierContext* timingIdentifier(); - - class TimingInstructionNameContext : public antlr4::ParserRuleContext { - public: - TimingInstructionNameContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TimingInstructionNameContext* timingInstructionName(); - - class TimingInstructionContext : public antlr4::ParserRuleContext { - public: - TimingInstructionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - TimingInstructionNameContext *timingInstructionName(); - DesignatorContext *designator(); - IndexIdentifierListContext *indexIdentifierList(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - ExpressionListContext *expressionList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TimingInstructionContext* timingInstruction(); - - class TimingStatementContext : public antlr4::ParserRuleContext { - public: - TimingStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - TimingInstructionContext *timingInstruction(); - antlr4::tree::TerminalNode *SEMICOLON(); - TimingBoxContext *timingBox(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - TimingStatementContext* timingStatement(); - - class CalibrationContext : public antlr4::ParserRuleContext { - public: - CalibrationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - CalibrationGrammarDeclarationContext *calibrationGrammarDeclaration(); - CalibrationDefinitionContext *calibrationDefinition(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - CalibrationContext* calibration(); - - class CalibrationGrammarDeclarationContext : public antlr4::ParserRuleContext { - public: - CalibrationGrammarDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - CalibrationGrammarContext *calibrationGrammar(); - antlr4::tree::TerminalNode *SEMICOLON(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - CalibrationGrammarDeclarationContext* calibrationGrammarDeclaration(); - - class CalibrationDefinitionContext : public antlr4::ParserRuleContext { - public: - CalibrationDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *Identifier(); - IdentifierListContext *identifierList(); - antlr4::tree::TerminalNode *LBRACE(); - antlr4::tree::TerminalNode *RBRACE(); - antlr4::tree::TerminalNode *LPAREN(); - antlr4::tree::TerminalNode *RPAREN(); - ReturnSignatureContext *returnSignature(); - CalibrationArgumentListContext *calibrationArgumentList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - CalibrationDefinitionContext* calibrationDefinition(); - - class CalibrationGrammarContext : public antlr4::ParserRuleContext { - public: - CalibrationGrammarContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - antlr4::tree::TerminalNode *StringLiteral(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - CalibrationGrammarContext* calibrationGrammar(); - - class CalibrationArgumentListContext : public antlr4::ParserRuleContext { - public: - CalibrationArgumentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); - virtual size_t getRuleIndex() const override; - ClassicalArgumentListContext *classicalArgumentList(); - ExpressionListContext *expressionList(); - - virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; - virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; - - virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; - - }; - - CalibrationArgumentListContext* calibrationArgumentList(); - - - virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; - bool indexIdentifierSempred(IndexIdentifierContext *_localctx, size_t predicateIndex); - bool expressionSempred(ExpressionContext *_localctx, size_t predicateIndex); - bool xOrExpressionSempred(XOrExpressionContext *_localctx, size_t predicateIndex); - bool bitAndExpressionSempred(BitAndExpressionContext *_localctx, size_t predicateIndex); - bool bitShiftExpressionSempred(BitShiftExpressionContext *_localctx, size_t predicateIndex); - bool additiveExpressionSempred(AdditiveExpressionContext *_localctx, size_t predicateIndex); - bool multiplicativeExpressionSempred(MultiplicativeExpressionContext *_localctx, size_t predicateIndex); - bool expressionTerminatorSempred(ExpressionTerminatorContext *_localctx, size_t predicateIndex); - bool booleanExpressionSempred(BooleanExpressionContext *_localctx, size_t predicateIndex); - -private: - static std::vector _decisionToDFA; - static antlr4::atn::PredictionContextCache _sharedContextCache; - static std::vector _ruleNames; - static std::vector _tokenNames; - - static std::vector _literalNames; - static std::vector _symbolicNames; - static antlr4::dfa::Vocabulary _vocabulary; - static antlr4::atn::ATN _atn; - static std::vector _serializedATN; - - - struct Initializer { - Initializer(); - }; - static Initializer _init; -}; - -} // namespace qasm3 + +// Generated from qasm3.g4 by ANTLR 4.9.2 + +#pragma once + + +#include "antlr4-runtime.h" + + +namespace qasm3 { + + +class qasm3Parser : public antlr4::Parser { +public: + enum { + T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, + T__7 = 8, T__8 = 9, T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, + T__14 = 15, T__15 = 16, T__16 = 17, T__17 = 18, T__18 = 19, T__19 = 20, + T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, T__24 = 25, T__25 = 26, + T__26 = 27, T__27 = 28, T__28 = 29, T__29 = 30, T__30 = 31, T__31 = 32, + T__32 = 33, T__33 = 34, T__34 = 35, T__35 = 36, T__36 = 37, T__37 = 38, + T__38 = 39, T__39 = 40, T__40 = 41, T__41 = 42, T__42 = 43, T__43 = 44, + T__44 = 45, T__45 = 46, T__46 = 47, T__47 = 48, T__48 = 49, T__49 = 50, + T__50 = 51, T__51 = 52, T__52 = 53, T__53 = 54, T__54 = 55, T__55 = 56, + T__56 = 57, T__57 = 58, T__58 = 59, T__59 = 60, T__60 = 61, T__61 = 62, + T__62 = 63, T__63 = 64, T__64 = 65, T__65 = 66, T__66 = 67, T__67 = 68, + T__68 = 69, T__69 = 70, T__70 = 71, T__71 = 72, T__72 = 73, T__73 = 74, + T__74 = 75, T__75 = 76, T__76 = 77, T__77 = 78, T__78 = 79, T__79 = 80, + T__80 = 81, T__81 = 82, T__82 = 83, T__83 = 84, T__84 = 85, T__85 = 86, + T__86 = 87, T__87 = 88, T__88 = 89, T__89 = 90, T__90 = 91, T__91 = 92, + T__92 = 93, T__93 = 94, T__94 = 95, T__95 = 96, T__96 = 97, LBRACKET = 98, + RBRACKET = 99, LBRACE = 100, RBRACE = 101, LPAREN = 102, RPAREN = 103, + COLON = 104, SEMICOLON = 105, DOT = 106, COMMA = 107, EQUALS = 108, + ARROW = 109, MINUS = 110, EXTERN = 111, Constant = 112, Whitespace = 113, + Newline = 114, Integer = 115, Identifier = 116, RealNumber = 117, TimingLiteral = 118, + StringLiteral = 119, LineComment = 120, BlockComment = 121 + }; + + enum { + RuleProgram = 0, RuleHeader = 1, RuleVersion = 2, RuleInclude = 3, RuleGlobalStatement = 4, + RuleStatement = 5, RuleCompute_action_stmt = 6, RuleQcor_test_statement = 7, + RuleQuantumDeclarationStatement = 8, RuleClassicalDeclarationStatement = 9, + RuleClassicalAssignment = 10, RuleAssignmentStatement = 11, RuleReturnSignature = 12, + RuleDesignator = 13, RuleDoubleDesignator = 14, RuleIdentifierList = 15, + RuleAssociation = 16, RuleQuantumType = 17, RuleQuantumDeclaration = 18, + RuleQuantumArgument = 19, RuleQuantumArgumentList = 20, RuleBitType = 21, + RuleSingleDesignatorType = 22, RuleDoubleDesignatorType = 23, RuleNoDesignatorType = 24, + RuleClassicalType = 25, RuleConstantDeclaration = 26, RuleSingleDesignatorDeclaration = 27, + RuleDoubleDesignatorDeclaration = 28, RuleNoDesignatorDeclaration = 29, + RuleBitDeclaration = 30, RuleClassicalDeclaration = 31, RuleClassicalTypeList = 32, + RuleClassicalArgument = 33, RuleClassicalArgumentList = 34, RuleAliasStatement = 35, + RuleIndexIdentifier = 36, RuleIndexIdentifierList = 37, RuleIndexEqualsAssignmentList = 38, + RuleRangeDefinition = 39, RuleQuantumGateDefinition = 40, RuleQuantumGateSignature = 41, + RuleQuantumBlock = 42, RuleQuantumLoop = 43, RuleQuantumLoopBlock = 44, + RuleQuantumStatement = 45, RuleQuantumInstruction = 46, RuleQuantumPhase = 47, + RuleQuantumMeasurement = 48, RuleQuantumMeasurementAssignment = 49, + RuleQuantumBarrier = 50, RuleQuantumGateModifier = 51, RuleQuantumGateCall = 52, + RuleQuantumGateName = 53, RuleUnaryOperator = 54, RuleRelationalOperator = 55, + RuleLogicalOperator = 56, RuleExpressionStatement = 57, RuleExpression = 58, + RuleXOrExpression = 59, RuleBitAndExpression = 60, RuleBitShiftExpression = 61, + RuleAdditiveExpression = 62, RuleMultiplicativeExpression = 63, RuleUnaryExpression = 64, + RuleExpressionTerminator = 65, RuleIncrementor = 66, RuleBuiltInCall = 67, + RuleBuiltInMath = 68, RuleCastOperator = 69, RuleExpressionList = 70, + RuleBooleanExpression = 71, RuleComparsionExpression = 72, RuleEqualsExpression = 73, + RuleAssignmentOperator = 74, RuleEqualsAssignmentList = 75, RuleMembershipTest = 76, + RuleSetDeclaration = 77, RuleProgramBlock = 78, RuleBranchingStatement = 79, + RuleLoopSignature = 80, RuleLoopStatement = 81, RuleCLikeLoopStatement = 82, + RuleControlDirectiveStatement = 83, RuleControlDirective = 84, RuleKernelDeclaration = 85, + RuleKernelCall = 86, RuleSubroutineDefinition = 87, RuleReturnStatement = 88, + RuleSubroutineBlock = 89, RuleSubroutineCall = 90, RulePragma = 91, + RuleTimingType = 92, RuleTimingBox = 93, RuleTimingTerminator = 94, + RuleTimingIdentifier = 95, RuleTimingInstructionName = 96, RuleTimingInstruction = 97, + RuleTimingStatement = 98, RuleCalibration = 99, RuleCalibrationGrammarDeclaration = 100, + RuleCalibrationDefinition = 101, RuleCalibrationGrammar = 102, RuleCalibrationArgumentList = 103 + }; + + explicit qasm3Parser(antlr4::TokenStream *input); + ~qasm3Parser(); + + virtual std::string getGrammarFileName() const override; + virtual const antlr4::atn::ATN& getATN() const override { return _atn; }; + virtual const std::vector& getTokenNames() const override { return _tokenNames; }; // deprecated: use vocabulary instead. + virtual const std::vector& getRuleNames() const override; + virtual antlr4::dfa::Vocabulary& getVocabulary() const override; + + + class ProgramContext; + class HeaderContext; + class VersionContext; + class IncludeContext; + class GlobalStatementContext; + class StatementContext; + class Compute_action_stmtContext; + class Qcor_test_statementContext; + class QuantumDeclarationStatementContext; + class ClassicalDeclarationStatementContext; + class ClassicalAssignmentContext; + class AssignmentStatementContext; + class ReturnSignatureContext; + class DesignatorContext; + class DoubleDesignatorContext; + class IdentifierListContext; + class AssociationContext; + class QuantumTypeContext; + class QuantumDeclarationContext; + class QuantumArgumentContext; + class QuantumArgumentListContext; + class BitTypeContext; + class SingleDesignatorTypeContext; + class DoubleDesignatorTypeContext; + class NoDesignatorTypeContext; + class ClassicalTypeContext; + class ConstantDeclarationContext; + class SingleDesignatorDeclarationContext; + class DoubleDesignatorDeclarationContext; + class NoDesignatorDeclarationContext; + class BitDeclarationContext; + class ClassicalDeclarationContext; + class ClassicalTypeListContext; + class ClassicalArgumentContext; + class ClassicalArgumentListContext; + class AliasStatementContext; + class IndexIdentifierContext; + class IndexIdentifierListContext; + class IndexEqualsAssignmentListContext; + class RangeDefinitionContext; + class QuantumGateDefinitionContext; + class QuantumGateSignatureContext; + class QuantumBlockContext; + class QuantumLoopContext; + class QuantumLoopBlockContext; + class QuantumStatementContext; + class QuantumInstructionContext; + class QuantumPhaseContext; + class QuantumMeasurementContext; + class QuantumMeasurementAssignmentContext; + class QuantumBarrierContext; + class QuantumGateModifierContext; + class QuantumGateCallContext; + class QuantumGateNameContext; + class UnaryOperatorContext; + class RelationalOperatorContext; + class LogicalOperatorContext; + class ExpressionStatementContext; + class ExpressionContext; + class XOrExpressionContext; + class BitAndExpressionContext; + class BitShiftExpressionContext; + class AdditiveExpressionContext; + class MultiplicativeExpressionContext; + class UnaryExpressionContext; + class ExpressionTerminatorContext; + class IncrementorContext; + class BuiltInCallContext; + class BuiltInMathContext; + class CastOperatorContext; + class ExpressionListContext; + class BooleanExpressionContext; + class ComparsionExpressionContext; + class EqualsExpressionContext; + class AssignmentOperatorContext; + class EqualsAssignmentListContext; + class MembershipTestContext; + class SetDeclarationContext; + class ProgramBlockContext; + class BranchingStatementContext; + class LoopSignatureContext; + class LoopStatementContext; + class CLikeLoopStatementContext; + class ControlDirectiveStatementContext; + class ControlDirectiveContext; + class KernelDeclarationContext; + class KernelCallContext; + class SubroutineDefinitionContext; + class ReturnStatementContext; + class SubroutineBlockContext; + class SubroutineCallContext; + class PragmaContext; + class TimingTypeContext; + class TimingBoxContext; + class TimingTerminatorContext; + class TimingIdentifierContext; + class TimingInstructionNameContext; + class TimingInstructionContext; + class TimingStatementContext; + class CalibrationContext; + class CalibrationGrammarDeclarationContext; + class CalibrationDefinitionContext; + class CalibrationGrammarContext; + class CalibrationArgumentListContext; + + class ProgramContext : public antlr4::ParserRuleContext { + public: + ProgramContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + HeaderContext *header(); + std::vector globalStatement(); + GlobalStatementContext* globalStatement(size_t i); + std::vector statement(); + StatementContext* statement(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ProgramContext* program(); + + class HeaderContext : public antlr4::ParserRuleContext { + public: + HeaderContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + VersionContext *version(); + std::vector include(); + IncludeContext* include(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + HeaderContext* header(); + + class VersionContext : public antlr4::ParserRuleContext { + public: + VersionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *SEMICOLON(); + antlr4::tree::TerminalNode *Integer(); + antlr4::tree::TerminalNode *RealNumber(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + VersionContext* version(); + + class IncludeContext : public antlr4::ParserRuleContext { + public: + IncludeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *StringLiteral(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + IncludeContext* include(); + + class GlobalStatementContext : public antlr4::ParserRuleContext { + public: + GlobalStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + SubroutineDefinitionContext *subroutineDefinition(); + KernelDeclarationContext *kernelDeclaration(); + QuantumGateDefinitionContext *quantumGateDefinition(); + CalibrationContext *calibration(); + QuantumDeclarationStatementContext *quantumDeclarationStatement(); + PragmaContext *pragma(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + GlobalStatementContext* globalStatement(); + + class StatementContext : public antlr4::ParserRuleContext { + public: + StatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionStatementContext *expressionStatement(); + AssignmentStatementContext *assignmentStatement(); + ClassicalDeclarationStatementContext *classicalDeclarationStatement(); + BranchingStatementContext *branchingStatement(); + LoopStatementContext *loopStatement(); + ControlDirectiveStatementContext *controlDirectiveStatement(); + AliasStatementContext *aliasStatement(); + QuantumStatementContext *quantumStatement(); + ReturnStatementContext *returnStatement(); + Qcor_test_statementContext *qcor_test_statement(); + Compute_action_stmtContext *compute_action_stmt(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + StatementContext* statement(); + + class Compute_action_stmtContext : public antlr4::ParserRuleContext { + public: + qasm3Parser::ProgramBlockContext *compute_block = nullptr; + qasm3Parser::ProgramBlockContext *action_block = nullptr; + Compute_action_stmtContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector programBlock(); + ProgramBlockContext* programBlock(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Compute_action_stmtContext* compute_action_stmt(); + + class Qcor_test_statementContext : public antlr4::ParserRuleContext { + public: + Qcor_test_statementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LPAREN(); + BooleanExpressionContext *booleanExpression(); + antlr4::tree::TerminalNode *RPAREN(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + Qcor_test_statementContext* qcor_test_statement(); + + class QuantumDeclarationStatementContext : public antlr4::ParserRuleContext { + public: + QuantumDeclarationStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QuantumDeclarationContext *quantumDeclaration(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumDeclarationStatementContext* quantumDeclarationStatement(); + + class ClassicalDeclarationStatementContext : public antlr4::ParserRuleContext { + public: + ClassicalDeclarationStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *SEMICOLON(); + ClassicalDeclarationContext *classicalDeclaration(); + ConstantDeclarationContext *constantDeclaration(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ClassicalDeclarationStatementContext* classicalDeclarationStatement(); + + class ClassicalAssignmentContext : public antlr4::ParserRuleContext { + public: + ClassicalAssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector indexIdentifier(); + IndexIdentifierContext* indexIdentifier(size_t i); + AssignmentOperatorContext *assignmentOperator(); + ExpressionContext *expression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ClassicalAssignmentContext* classicalAssignment(); + + class AssignmentStatementContext : public antlr4::ParserRuleContext { + public: + AssignmentStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *SEMICOLON(); + ClassicalAssignmentContext *classicalAssignment(); + QuantumMeasurementAssignmentContext *quantumMeasurementAssignment(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + AssignmentStatementContext* assignmentStatement(); + + class ReturnSignatureContext : public antlr4::ParserRuleContext { + public: + ReturnSignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *ARROW(); + ClassicalTypeContext *classicalType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ReturnSignatureContext* returnSignature(); + + class DesignatorContext : public antlr4::ParserRuleContext { + public: + DesignatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LBRACKET(); + ExpressionContext *expression(); + antlr4::tree::TerminalNode *RBRACKET(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + DesignatorContext* designator(); + + class DoubleDesignatorContext : public antlr4::ParserRuleContext { + public: + DoubleDesignatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LBRACKET(); + std::vector expression(); + ExpressionContext* expression(size_t i); + antlr4::tree::TerminalNode *COMMA(); + antlr4::tree::TerminalNode *RBRACKET(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + DoubleDesignatorContext* doubleDesignator(); + + class IdentifierListContext : public antlr4::ParserRuleContext { + public: + IdentifierListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector Identifier(); + antlr4::tree::TerminalNode* Identifier(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + IdentifierListContext* identifierList(); + + class AssociationContext : public antlr4::ParserRuleContext { + public: + AssociationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *COLON(); + antlr4::tree::TerminalNode *Identifier(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + AssociationContext* association(); + + class QuantumTypeContext : public antlr4::ParserRuleContext { + public: + QuantumTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumTypeContext* quantumType(); + + class QuantumDeclarationContext : public antlr4::ParserRuleContext { + public: + QuantumDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + DesignatorContext *designator(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumDeclarationContext* quantumDeclaration(); + + class QuantumArgumentContext : public antlr4::ParserRuleContext { + public: + QuantumArgumentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QuantumTypeContext *quantumType(); + AssociationContext *association(); + DesignatorContext *designator(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumArgumentContext* quantumArgument(); + + class QuantumArgumentListContext : public antlr4::ParserRuleContext { + public: + QuantumArgumentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector quantumArgument(); + QuantumArgumentContext* quantumArgument(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumArgumentListContext* quantumArgumentList(); + + class BitTypeContext : public antlr4::ParserRuleContext { + public: + BitTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BitTypeContext* bitType(); + + class SingleDesignatorTypeContext : public antlr4::ParserRuleContext { + public: + SingleDesignatorTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + SingleDesignatorTypeContext* singleDesignatorType(); + + class DoubleDesignatorTypeContext : public antlr4::ParserRuleContext { + public: + DoubleDesignatorTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + DoubleDesignatorTypeContext* doubleDesignatorType(); + + class NoDesignatorTypeContext : public antlr4::ParserRuleContext { + public: + NoDesignatorTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TimingTypeContext *timingType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + NoDesignatorTypeContext* noDesignatorType(); + + class ClassicalTypeContext : public antlr4::ParserRuleContext { + public: + ClassicalTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + SingleDesignatorTypeContext *singleDesignatorType(); + DesignatorContext *designator(); + DoubleDesignatorTypeContext *doubleDesignatorType(); + DoubleDesignatorContext *doubleDesignator(); + NoDesignatorTypeContext *noDesignatorType(); + BitTypeContext *bitType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ClassicalTypeContext* classicalType(); + + class ConstantDeclarationContext : public antlr4::ParserRuleContext { + public: + ConstantDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + EqualsAssignmentListContext *equalsAssignmentList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ConstantDeclarationContext* constantDeclaration(); + + class SingleDesignatorDeclarationContext : public antlr4::ParserRuleContext { + public: + SingleDesignatorDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + SingleDesignatorTypeContext *singleDesignatorType(); + DesignatorContext *designator(); + IdentifierListContext *identifierList(); + EqualsAssignmentListContext *equalsAssignmentList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + SingleDesignatorDeclarationContext* singleDesignatorDeclaration(); + + class DoubleDesignatorDeclarationContext : public antlr4::ParserRuleContext { + public: + DoubleDesignatorDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + DoubleDesignatorTypeContext *doubleDesignatorType(); + DoubleDesignatorContext *doubleDesignator(); + IdentifierListContext *identifierList(); + EqualsAssignmentListContext *equalsAssignmentList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + DoubleDesignatorDeclarationContext* doubleDesignatorDeclaration(); + + class NoDesignatorDeclarationContext : public antlr4::ParserRuleContext { + public: + NoDesignatorDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + NoDesignatorTypeContext *noDesignatorType(); + IdentifierListContext *identifierList(); + EqualsAssignmentListContext *equalsAssignmentList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + NoDesignatorDeclarationContext* noDesignatorDeclaration(); + + class BitDeclarationContext : public antlr4::ParserRuleContext { + public: + BitDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + BitTypeContext *bitType(); + IndexIdentifierListContext *indexIdentifierList(); + IndexEqualsAssignmentListContext *indexEqualsAssignmentList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BitDeclarationContext* bitDeclaration(); + + class ClassicalDeclarationContext : public antlr4::ParserRuleContext { + public: + ClassicalDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + SingleDesignatorDeclarationContext *singleDesignatorDeclaration(); + DoubleDesignatorDeclarationContext *doubleDesignatorDeclaration(); + NoDesignatorDeclarationContext *noDesignatorDeclaration(); + BitDeclarationContext *bitDeclaration(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ClassicalDeclarationContext* classicalDeclaration(); + + class ClassicalTypeListContext : public antlr4::ParserRuleContext { + public: + ClassicalTypeListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector classicalType(); + ClassicalTypeContext* classicalType(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ClassicalTypeListContext* classicalTypeList(); + + class ClassicalArgumentContext : public antlr4::ParserRuleContext { + public: + ClassicalArgumentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ClassicalTypeContext *classicalType(); + AssociationContext *association(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ClassicalArgumentContext* classicalArgument(); + + class ClassicalArgumentListContext : public antlr4::ParserRuleContext { + public: + ClassicalArgumentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector classicalArgument(); + ClassicalArgumentContext* classicalArgument(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ClassicalArgumentListContext* classicalArgumentList(); + + class AliasStatementContext : public antlr4::ParserRuleContext { + public: + AliasStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + antlr4::tree::TerminalNode *EQUALS(); + IndexIdentifierContext *indexIdentifier(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + AliasStatementContext* aliasStatement(); + + class IndexIdentifierContext : public antlr4::ParserRuleContext { + public: + IndexIdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + RangeDefinitionContext *rangeDefinition(); + antlr4::tree::TerminalNode *LBRACKET(); + ExpressionListContext *expressionList(); + antlr4::tree::TerminalNode *RBRACKET(); + std::vector indexIdentifier(); + IndexIdentifierContext* indexIdentifier(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + IndexIdentifierContext* indexIdentifier(); + IndexIdentifierContext* indexIdentifier(int precedence); + class IndexIdentifierListContext : public antlr4::ParserRuleContext { + public: + IndexIdentifierListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector indexIdentifier(); + IndexIdentifierContext* indexIdentifier(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + IndexIdentifierListContext* indexIdentifierList(); + + class IndexEqualsAssignmentListContext : public antlr4::ParserRuleContext { + public: + IndexEqualsAssignmentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector indexIdentifier(); + IndexIdentifierContext* indexIdentifier(size_t i); + std::vector equalsExpression(); + EqualsExpressionContext* equalsExpression(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + IndexEqualsAssignmentListContext* indexEqualsAssignmentList(); + + class RangeDefinitionContext : public antlr4::ParserRuleContext { + public: + RangeDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LBRACKET(); + std::vector COLON(); + antlr4::tree::TerminalNode* COLON(size_t i); + antlr4::tree::TerminalNode *RBRACKET(); + std::vector expression(); + ExpressionContext* expression(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + RangeDefinitionContext* rangeDefinition(); + + class QuantumGateDefinitionContext : public antlr4::ParserRuleContext { + public: + QuantumGateDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QuantumGateSignatureContext *quantumGateSignature(); + QuantumBlockContext *quantumBlock(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumGateDefinitionContext* quantumGateDefinition(); + + class QuantumGateSignatureContext : public antlr4::ParserRuleContext { + public: + QuantumGateSignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector identifierList(); + IdentifierListContext* identifierList(size_t i); + antlr4::tree::TerminalNode *Identifier(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumGateSignatureContext* quantumGateSignature(); + + class QuantumBlockContext : public antlr4::ParserRuleContext { + public: + QuantumBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + std::vector compute_action_stmt(); + Compute_action_stmtContext* compute_action_stmt(size_t i); + std::vector quantumStatement(); + QuantumStatementContext* quantumStatement(size_t i); + std::vector quantumLoop(); + QuantumLoopContext* quantumLoop(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumBlockContext* quantumBlock(); + + class QuantumLoopContext : public antlr4::ParserRuleContext { + public: + QuantumLoopContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + LoopSignatureContext *loopSignature(); + QuantumLoopBlockContext *quantumLoopBlock(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumLoopContext* quantumLoop(); + + class QuantumLoopBlockContext : public antlr4::ParserRuleContext { + public: + QuantumLoopBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector quantumStatement(); + QuantumStatementContext* quantumStatement(size_t i); + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumLoopBlockContext* quantumLoopBlock(); + + class QuantumStatementContext : public antlr4::ParserRuleContext { + public: + QuantumStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QuantumInstructionContext *quantumInstruction(); + antlr4::tree::TerminalNode *SEMICOLON(); + TimingStatementContext *timingStatement(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumStatementContext* quantumStatement(); + + class QuantumInstructionContext : public antlr4::ParserRuleContext { + public: + QuantumInstructionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QuantumGateCallContext *quantumGateCall(); + QuantumPhaseContext *quantumPhase(); + QuantumMeasurementContext *quantumMeasurement(); + QuantumBarrierContext *quantumBarrier(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumInstructionContext* quantumInstruction(); + + class QuantumPhaseContext : public antlr4::ParserRuleContext { + public: + QuantumPhaseContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *Identifier(); + antlr4::tree::TerminalNode *RPAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumPhaseContext* quantumPhase(); + + class QuantumMeasurementContext : public antlr4::ParserRuleContext { + public: + QuantumMeasurementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IndexIdentifierListContext *indexIdentifierList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumMeasurementContext* quantumMeasurement(); + + class QuantumMeasurementAssignmentContext : public antlr4::ParserRuleContext { + public: + QuantumMeasurementAssignmentContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QuantumMeasurementContext *quantumMeasurement(); + antlr4::tree::TerminalNode *ARROW(); + IndexIdentifierListContext *indexIdentifierList(); + antlr4::tree::TerminalNode *EQUALS(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumMeasurementAssignmentContext* quantumMeasurementAssignment(); + + class QuantumBarrierContext : public antlr4::ParserRuleContext { + public: + QuantumBarrierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + IndexIdentifierListContext *indexIdentifierList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumBarrierContext* quantumBarrier(); + + class QuantumGateModifierContext : public antlr4::ParserRuleContext { + public: + QuantumGateModifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LPAREN(); + ExpressionContext *expression(); + antlr4::tree::TerminalNode *RPAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumGateModifierContext* quantumGateModifier(); + + class QuantumGateCallContext : public antlr4::ParserRuleContext { + public: + QuantumGateCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + QuantumGateNameContext *quantumGateName(); + IndexIdentifierListContext *indexIdentifierList(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + ExpressionListContext *expressionList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumGateCallContext* quantumGateCall(); + + class QuantumGateNameContext : public antlr4::ParserRuleContext { + public: + QuantumGateNameContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + QuantumGateModifierContext *quantumGateModifier(); + QuantumGateNameContext *quantumGateName(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + QuantumGateNameContext* quantumGateName(); + + class UnaryOperatorContext : public antlr4::ParserRuleContext { + public: + UnaryOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + UnaryOperatorContext* unaryOperator(); + + class RelationalOperatorContext : public antlr4::ParserRuleContext { + public: + RelationalOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + RelationalOperatorContext* relationalOperator(); + + class LogicalOperatorContext : public antlr4::ParserRuleContext { + public: + LogicalOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + LogicalOperatorContext* logicalOperator(); + + class ExpressionStatementContext : public antlr4::ParserRuleContext { + public: + ExpressionStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionContext *expression(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ExpressionStatementContext* expressionStatement(); + + class ExpressionContext : public antlr4::ParserRuleContext { + public: + ExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionTerminatorContext *expressionTerminator(); + UnaryExpressionContext *unaryExpression(); + XOrExpressionContext *xOrExpression(); + ExpressionContext *expression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ExpressionContext* expression(); + ExpressionContext* expression(int precedence); + class XOrExpressionContext : public antlr4::ParserRuleContext { + public: + XOrExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + BitAndExpressionContext *bitAndExpression(); + XOrExpressionContext *xOrExpression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + XOrExpressionContext* xOrExpression(); + XOrExpressionContext* xOrExpression(int precedence); + class BitAndExpressionContext : public antlr4::ParserRuleContext { + public: + BitAndExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + BitShiftExpressionContext *bitShiftExpression(); + BitAndExpressionContext *bitAndExpression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BitAndExpressionContext* bitAndExpression(); + BitAndExpressionContext* bitAndExpression(int precedence); + class BitShiftExpressionContext : public antlr4::ParserRuleContext { + public: + BitShiftExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + AdditiveExpressionContext *additiveExpression(); + BitShiftExpressionContext *bitShiftExpression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BitShiftExpressionContext* bitShiftExpression(); + BitShiftExpressionContext* bitShiftExpression(int precedence); + class AdditiveExpressionContext : public antlr4::ParserRuleContext { + public: + antlr4::Token *binary_op = nullptr; + AdditiveExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + MultiplicativeExpressionContext *multiplicativeExpression(); + AdditiveExpressionContext *additiveExpression(); + antlr4::tree::TerminalNode *MINUS(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + AdditiveExpressionContext* additiveExpression(); + AdditiveExpressionContext* additiveExpression(int precedence); + class MultiplicativeExpressionContext : public antlr4::ParserRuleContext { + public: + antlr4::Token *binary_op = nullptr; + MultiplicativeExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ExpressionTerminatorContext *expressionTerminator(); + UnaryExpressionContext *unaryExpression(); + MultiplicativeExpressionContext *multiplicativeExpression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + MultiplicativeExpressionContext* multiplicativeExpression(); + MultiplicativeExpressionContext* multiplicativeExpression(int precedence); + class UnaryExpressionContext : public antlr4::ParserRuleContext { + public: + UnaryExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + UnaryOperatorContext *unaryOperator(); + ExpressionTerminatorContext *expressionTerminator(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + UnaryExpressionContext* unaryExpression(); + + class ExpressionTerminatorContext : public antlr4::ParserRuleContext { + public: + ExpressionTerminatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Constant(); + antlr4::tree::TerminalNode *Integer(); + antlr4::tree::TerminalNode *RealNumber(); + antlr4::tree::TerminalNode *Identifier(); + antlr4::tree::TerminalNode *StringLiteral(); + BuiltInCallContext *builtInCall(); + KernelCallContext *kernelCall(); + SubroutineCallContext *subroutineCall(); + TimingTerminatorContext *timingTerminator(); + antlr4::tree::TerminalNode *MINUS(); + ExpressionTerminatorContext *expressionTerminator(); + antlr4::tree::TerminalNode *LPAREN(); + ExpressionContext *expression(); + antlr4::tree::TerminalNode *RPAREN(); + antlr4::tree::TerminalNode *LBRACKET(); + antlr4::tree::TerminalNode *RBRACKET(); + IncrementorContext *incrementor(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ExpressionTerminatorContext* expressionTerminator(); + ExpressionTerminatorContext* expressionTerminator(int precedence); + class IncrementorContext : public antlr4::ParserRuleContext { + public: + IncrementorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + IncrementorContext* incrementor(); + + class BuiltInCallContext : public antlr4::ParserRuleContext { + public: + BuiltInCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LPAREN(); + ExpressionListContext *expressionList(); + antlr4::tree::TerminalNode *RPAREN(); + BuiltInMathContext *builtInMath(); + CastOperatorContext *castOperator(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BuiltInCallContext* builtInCall(); + + class BuiltInMathContext : public antlr4::ParserRuleContext { + public: + BuiltInMathContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BuiltInMathContext* builtInMath(); + + class CastOperatorContext : public antlr4::ParserRuleContext { + public: + CastOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ClassicalTypeContext *classicalType(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CastOperatorContext* castOperator(); + + class ExpressionListContext : public antlr4::ParserRuleContext { + public: + ExpressionListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector expression(); + ExpressionContext* expression(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ExpressionListContext* expressionList(); + + class BooleanExpressionContext : public antlr4::ParserRuleContext { + public: + BooleanExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + MembershipTestContext *membershipTest(); + ComparsionExpressionContext *comparsionExpression(); + BooleanExpressionContext *booleanExpression(); + LogicalOperatorContext *logicalOperator(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BooleanExpressionContext* booleanExpression(); + BooleanExpressionContext* booleanExpression(int precedence); + class ComparsionExpressionContext : public antlr4::ParserRuleContext { + public: + ComparsionExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector expression(); + ExpressionContext* expression(size_t i); + RelationalOperatorContext *relationalOperator(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ComparsionExpressionContext* comparsionExpression(); + + class EqualsExpressionContext : public antlr4::ParserRuleContext { + public: + EqualsExpressionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *EQUALS(); + ExpressionContext *expression(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + EqualsExpressionContext* equalsExpression(); + + class AssignmentOperatorContext : public antlr4::ParserRuleContext { + public: + AssignmentOperatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *EQUALS(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + AssignmentOperatorContext* assignmentOperator(); + + class EqualsAssignmentListContext : public antlr4::ParserRuleContext { + public: + EqualsAssignmentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector Identifier(); + antlr4::tree::TerminalNode* Identifier(size_t i); + std::vector equalsExpression(); + EqualsExpressionContext* equalsExpression(size_t i); + std::vector COMMA(); + antlr4::tree::TerminalNode* COMMA(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + EqualsAssignmentListContext* equalsAssignmentList(); + + class MembershipTestContext : public antlr4::ParserRuleContext { + public: + MembershipTestContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + SetDeclarationContext *setDeclaration(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + MembershipTestContext* membershipTest(); + + class SetDeclarationContext : public antlr4::ParserRuleContext { + public: + SetDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LBRACE(); + ExpressionListContext *expressionList(); + antlr4::tree::TerminalNode *RBRACE(); + RangeDefinitionContext *rangeDefinition(); + antlr4::tree::TerminalNode *Identifier(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + SetDeclarationContext* setDeclaration(); + + class ProgramBlockContext : public antlr4::ParserRuleContext { + public: + ProgramBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector statement(); + StatementContext* statement(size_t i); + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ProgramBlockContext* programBlock(); + + class BranchingStatementContext : public antlr4::ParserRuleContext { + public: + BranchingStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LPAREN(); + BooleanExpressionContext *booleanExpression(); + antlr4::tree::TerminalNode *RPAREN(); + std::vector programBlock(); + ProgramBlockContext* programBlock(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + BranchingStatementContext* branchingStatement(); + + class LoopSignatureContext : public antlr4::ParserRuleContext { + public: + LoopSignatureContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + MembershipTestContext *membershipTest(); + antlr4::tree::TerminalNode *LPAREN(); + BooleanExpressionContext *booleanExpression(); + antlr4::tree::TerminalNode *RPAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + LoopSignatureContext* loopSignature(); + + class LoopStatementContext : public antlr4::ParserRuleContext { + public: + LoopStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + LoopSignatureContext *loopSignature(); + ProgramBlockContext *programBlock(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + LoopStatementContext* loopStatement(); + + class CLikeLoopStatementContext : public antlr4::ParserRuleContext { + public: + CLikeLoopStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + std::vector LPAREN(); + antlr4::tree::TerminalNode* LPAREN(size_t i); + ClassicalTypeContext *classicalType(); + antlr4::tree::TerminalNode *Identifier(); + EqualsExpressionContext *equalsExpression(); + std::vector SEMICOLON(); + antlr4::tree::TerminalNode* SEMICOLON(size_t i); + BooleanExpressionContext *booleanExpression(); + ExpressionContext *expression(); + std::vector RPAREN(); + antlr4::tree::TerminalNode* RPAREN(size_t i); + antlr4::tree::TerminalNode *LBRACE(); + ProgramBlockContext *programBlock(); + antlr4::tree::TerminalNode *RBRACE(); + antlr4::tree::TerminalNode *COLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CLikeLoopStatementContext* cLikeLoopStatement(); + + class ControlDirectiveStatementContext : public antlr4::ParserRuleContext { + public: + ControlDirectiveStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ControlDirectiveContext *controlDirective(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ControlDirectiveStatementContext* controlDirectiveStatement(); + + class ControlDirectiveContext : public antlr4::ParserRuleContext { + public: + ControlDirectiveContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ControlDirectiveContext* controlDirective(); + + class KernelDeclarationContext : public antlr4::ParserRuleContext { + public: + KernelDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + antlr4::tree::TerminalNode *SEMICOLON(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + ReturnSignatureContext *returnSignature(); + ClassicalTypeContext *classicalType(); + ClassicalTypeListContext *classicalTypeList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + KernelDeclarationContext* kernelDeclaration(); + + class KernelCallContext : public antlr4::ParserRuleContext { + public: + KernelCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + ExpressionListContext *expressionList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + KernelCallContext* kernelCall(); + + class SubroutineDefinitionContext : public antlr4::ParserRuleContext { + public: + SubroutineDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + SubroutineBlockContext *subroutineBlock(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + QuantumArgumentListContext *quantumArgumentList(); + ReturnSignatureContext *returnSignature(); + ClassicalArgumentListContext *classicalArgumentList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + SubroutineDefinitionContext* subroutineDefinition(); + + class ReturnStatementContext : public antlr4::ParserRuleContext { + public: + ReturnStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + StatementContext *statement(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + ReturnStatementContext* returnStatement(); + + class SubroutineBlockContext : public antlr4::ParserRuleContext { + public: + SubroutineBlockContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + std::vector statement(); + StatementContext* statement(size_t i); + ReturnStatementContext *returnStatement(); + antlr4::tree::TerminalNode *EXTERN(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + SubroutineBlockContext* subroutineBlock(); + + class SubroutineCallContext : public antlr4::ParserRuleContext { + public: + SubroutineCallContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + std::vector expressionList(); + ExpressionListContext* expressionList(size_t i); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + SubroutineCallContext* subroutineCall(); + + class PragmaContext : public antlr4::ParserRuleContext { + public: + PragmaContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + std::vector statement(); + StatementContext* statement(size_t i); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + PragmaContext* pragma(); + + class TimingTypeContext : public antlr4::ParserRuleContext { + public: + TimingTypeContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Integer(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TimingTypeContext* timingType(); + + class TimingBoxContext : public antlr4::ParserRuleContext { + public: + TimingBoxContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + QuantumBlockContext *quantumBlock(); + antlr4::tree::TerminalNode *TimingLiteral(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TimingBoxContext* timingBox(); + + class TimingTerminatorContext : public antlr4::ParserRuleContext { + public: + TimingTerminatorContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TimingIdentifierContext *timingIdentifier(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TimingTerminatorContext* timingTerminator(); + + class TimingIdentifierContext : public antlr4::ParserRuleContext { + public: + TimingIdentifierContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *TimingLiteral(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + antlr4::tree::TerminalNode *Identifier(); + QuantumBlockContext *quantumBlock(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TimingIdentifierContext* timingIdentifier(); + + class TimingInstructionNameContext : public antlr4::ParserRuleContext { + public: + TimingInstructionNameContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TimingInstructionNameContext* timingInstructionName(); + + class TimingInstructionContext : public antlr4::ParserRuleContext { + public: + TimingInstructionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TimingInstructionNameContext *timingInstructionName(); + DesignatorContext *designator(); + IndexIdentifierListContext *indexIdentifierList(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + ExpressionListContext *expressionList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TimingInstructionContext* timingInstruction(); + + class TimingStatementContext : public antlr4::ParserRuleContext { + public: + TimingStatementContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + TimingInstructionContext *timingInstruction(); + antlr4::tree::TerminalNode *SEMICOLON(); + TimingBoxContext *timingBox(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + TimingStatementContext* timingStatement(); + + class CalibrationContext : public antlr4::ParserRuleContext { + public: + CalibrationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + CalibrationGrammarDeclarationContext *calibrationGrammarDeclaration(); + CalibrationDefinitionContext *calibrationDefinition(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CalibrationContext* calibration(); + + class CalibrationGrammarDeclarationContext : public antlr4::ParserRuleContext { + public: + CalibrationGrammarDeclarationContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + CalibrationGrammarContext *calibrationGrammar(); + antlr4::tree::TerminalNode *SEMICOLON(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CalibrationGrammarDeclarationContext* calibrationGrammarDeclaration(); + + class CalibrationDefinitionContext : public antlr4::ParserRuleContext { + public: + CalibrationDefinitionContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *Identifier(); + IdentifierListContext *identifierList(); + antlr4::tree::TerminalNode *LBRACE(); + antlr4::tree::TerminalNode *RBRACE(); + antlr4::tree::TerminalNode *LPAREN(); + antlr4::tree::TerminalNode *RPAREN(); + ReturnSignatureContext *returnSignature(); + CalibrationArgumentListContext *calibrationArgumentList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CalibrationDefinitionContext* calibrationDefinition(); + + class CalibrationGrammarContext : public antlr4::ParserRuleContext { + public: + CalibrationGrammarContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + antlr4::tree::TerminalNode *StringLiteral(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CalibrationGrammarContext* calibrationGrammar(); + + class CalibrationArgumentListContext : public antlr4::ParserRuleContext { + public: + CalibrationArgumentListContext(antlr4::ParserRuleContext *parent, size_t invokingState); + virtual size_t getRuleIndex() const override; + ClassicalArgumentListContext *classicalArgumentList(); + ExpressionListContext *expressionList(); + + virtual void enterRule(antlr4::tree::ParseTreeListener *listener) override; + virtual void exitRule(antlr4::tree::ParseTreeListener *listener) override; + + virtual antlrcpp::Any accept(antlr4::tree::ParseTreeVisitor *visitor) override; + + }; + + CalibrationArgumentListContext* calibrationArgumentList(); + + + virtual bool sempred(antlr4::RuleContext *_localctx, size_t ruleIndex, size_t predicateIndex) override; + bool indexIdentifierSempred(IndexIdentifierContext *_localctx, size_t predicateIndex); + bool expressionSempred(ExpressionContext *_localctx, size_t predicateIndex); + bool xOrExpressionSempred(XOrExpressionContext *_localctx, size_t predicateIndex); + bool bitAndExpressionSempred(BitAndExpressionContext *_localctx, size_t predicateIndex); + bool bitShiftExpressionSempred(BitShiftExpressionContext *_localctx, size_t predicateIndex); + bool additiveExpressionSempred(AdditiveExpressionContext *_localctx, size_t predicateIndex); + bool multiplicativeExpressionSempred(MultiplicativeExpressionContext *_localctx, size_t predicateIndex); + bool expressionTerminatorSempred(ExpressionTerminatorContext *_localctx, size_t predicateIndex); + bool booleanExpressionSempred(BooleanExpressionContext *_localctx, size_t predicateIndex); + +private: + static std::vector _decisionToDFA; + static antlr4::atn::PredictionContextCache _sharedContextCache; + static std::vector _ruleNames; + static std::vector _tokenNames; + + static std::vector _literalNames; + static std::vector _symbolicNames; + static antlr4::dfa::Vocabulary _vocabulary; + static antlr4::atn::ATN _atn; + static std::vector _serializedATN; + + + struct Initializer { + Initializer(); + }; + static Initializer _init; +}; + +} // namespace qasm3 diff --git a/mlir/parsers/qasm3/antlr/qasm3.g4 b/mlir/parsers/qasm3/antlr/qasm3.g4 index cb8bb069..991800ca 100644 --- a/mlir/parsers/qasm3/antlr/qasm3.g4 +++ b/mlir/parsers/qasm3/antlr/qasm3.g4 @@ -1,623 +1,623 @@ -/***** ANTLRv4 grammar for OpenQASM3.0. *****/ - -grammar qasm3; - -/**** Parser grammar ****/ - -program - : header (globalStatement | statement)* - ; - -header - : version? include* - ; - -version - : 'OPENQASM' ( Integer | RealNumber ) SEMICOLON - ; - -include - : 'include' StringLiteral SEMICOLON - ; - -globalStatement - : subroutineDefinition - | kernelDeclaration - | quantumGateDefinition - | calibration - | quantumDeclarationStatement // qubits are declared globally - | pragma - ; - - -statement - : expressionStatement - | assignmentStatement - | classicalDeclarationStatement - | branchingStatement - | loopStatement - | controlDirectiveStatement - | aliasStatement - | quantumStatement - | returnStatement - | qcor_test_statement - | compute_action_stmt - ; - -compute_action_stmt - : 'compute' compute_block=programBlock 'action' action_block=programBlock - ; - -qcor_test_statement - : 'QCOR_EXPECT_TRUE' LPAREN booleanExpression RPAREN SEMICOLON - ; - -quantumDeclarationStatement : quantumDeclaration SEMICOLON ; - -classicalDeclarationStatement - : ( classicalDeclaration | constantDeclaration ) SEMICOLON - ; - -classicalAssignment - : indexIdentifier assignmentOperator ( expression | indexIdentifier ) - ; - -assignmentStatement : ( classicalAssignment | quantumMeasurementAssignment ) SEMICOLON ; - -returnSignature - : ARROW classicalType - ; - -/*** Types and Casting ***/ - -designator - : LBRACKET expression RBRACKET - ; - -doubleDesignator - : LBRACKET expression COMMA expression RBRACKET - ; - -identifierList - : ( Identifier COMMA )* Identifier - ; - -association - : COLON Identifier - ; - -/** Quantum Types **/ -quantumType - : 'qubit' - | 'qreg' - ; - -quantumDeclaration - : quantumType indexIdentifierList - ; - -quantumArgument - : quantumType designator? association - ; - -quantumArgumentList - : ( quantumArgument COMMA )* quantumArgument - ; - -/** Classical Types **/ -bitType - : 'bit' - | 'creg' - ; - -singleDesignatorType - : 'int' - | 'uint' - | 'float' - | 'angle' - ; - -doubleDesignatorType - : 'fixed' - ; - -noDesignatorType - : 'bool' - | timingType - | 'int' | 'int64_t' | 'float' | 'double' - ; - -classicalType - : singleDesignatorType designator - | doubleDesignatorType doubleDesignator - | noDesignatorType - | bitType designator? - ; - -constantDeclaration - : 'const' equalsAssignmentList - ; - -// if multiple variables declared at once, either none are assigned or all are assigned -// prevents ambiguity w/ qubit arguments in subroutine calls -singleDesignatorDeclaration - : singleDesignatorType designator ( identifierList | equalsAssignmentList ) - ; - -doubleDesignatorDeclaration - : doubleDesignatorType doubleDesignator ( identifierList | equalsAssignmentList ) - ; - -noDesignatorDeclaration - : noDesignatorType ( identifierList | equalsAssignmentList ) - ; - -bitDeclaration - : bitType (indexIdentifierList | indexEqualsAssignmentList ) - ; - -classicalDeclaration - : singleDesignatorDeclaration - | doubleDesignatorDeclaration - | noDesignatorDeclaration - | bitDeclaration - ; - -classicalTypeList - : ( classicalType COMMA )* classicalType - ; - -classicalArgument - : classicalType association - ; - -classicalArgumentList - : ( classicalArgument COMMA )* classicalArgument - ; - -/** Aliasing **/ -aliasStatement - : 'let' Identifier EQUALS indexIdentifier SEMICOLON - ; - -/** Register Concatenation and Slicing **/ - -indexIdentifier - : Identifier rangeDefinition - | Identifier ( LBRACKET expressionList RBRACKET )? - | indexIdentifier '||' indexIdentifier - ; - -indexIdentifierList - : ( indexIdentifier COMMA )* indexIdentifier - ; - -indexEqualsAssignmentList - : ( indexIdentifier equalsExpression COMMA)* indexIdentifier equalsExpression - ; - -rangeDefinition - : LBRACKET expression? COLON expression? ( COLON expression )? RBRACKET - ; - -/*** Gates and Built-in Quantum Instructions ***/ - -quantumGateDefinition - : 'gate' quantumGateSignature quantumBlock - ; - -quantumGateSignature - : ( Identifier | 'CX' | 'U') ( LPAREN identifierList? RPAREN )? identifierList - ; - -quantumBlock - : LBRACE ( compute_action_stmt | quantumStatement | quantumLoop )* RBRACE - ; - -// loops containing only quantum statements allowed in gates -quantumLoop - : loopSignature quantumLoopBlock - ; - -quantumLoopBlock - : quantumStatement - | LBRACE quantumStatement* RBRACE - ; - -quantumStatement - : quantumInstruction SEMICOLON - | timingStatement - ; - -quantumInstruction - : quantumGateCall - | quantumPhase - | quantumMeasurement - | quantumBarrier - ; - -quantumPhase - : 'gphase' LPAREN Identifier RPAREN - ; - -quantumMeasurement - : 'measure' indexIdentifierList - ; - -quantumMeasurementAssignment - : quantumMeasurement ( ARROW indexIdentifierList)? - | indexIdentifierList EQUALS quantumMeasurement - ; - -quantumBarrier - : 'barrier' indexIdentifierList - ; - -quantumGateModifier - : ( 'inv' | 'pow' LPAREN expression RPAREN | 'ctrl' ) '@' - ; - -quantumGateCall - : quantumGateName ( LPAREN expressionList? RPAREN )? indexIdentifierList - ; - -quantumGateName - : 'CX' - | 'U' - | 'reset' - | Identifier - | quantumGateModifier quantumGateName - ; - -/*** Classical Instructions ***/ - -unaryOperator - : '~' | '!' - ; - -relationalOperator - : '>' - | '<' - | '>=' - | '<=' - | '==' - | '!=' - ; - -logicalOperator - : '&&' - | '||' - ; - -expressionStatement - : expression SEMICOLON - ; - -expression - // include terminator/unary as base cases to simplify parsing - : expressionTerminator - | unaryExpression - // expression hierarchy - | xOrExpression - | expression '|' xOrExpression - ; - -/** Expression hierarchy for non-terminators. Adapted from ANTLR4 C - * grammar: https://github.com/antlr/grammars-v4/blob/master/c/C.g4 - * Order (first to last evaluation): - Terminator (including Parens), - Unary Op, - Multiplicative - Additive - Bit Shift - Bit And - Exlusive Or (xOr) - Bit Or -**/ -xOrExpression - : bitAndExpression - | xOrExpression '^' bitAndExpression - ; - -bitAndExpression - : bitShiftExpression - | bitAndExpression '&' bitShiftExpression - ; - -bitShiftExpression - : additiveExpression - | bitShiftExpression ( '<<' | '>>' ) additiveExpression - ; - -additiveExpression - : multiplicativeExpression - | additiveExpression binary_op=( '+' | MINUS ) multiplicativeExpression - ; - -multiplicativeExpression - // base case either terminator or unary - : expressionTerminator - | unaryExpression - | multiplicativeExpression binary_op=( '*' | '/' | '%' ) ( expressionTerminator | unaryExpression ) - ; - -unaryExpression - : unaryOperator expressionTerminator - ; - -expressionTerminator - : Constant - | Integer - | RealNumber - | Identifier - | StringLiteral - | builtInCall - | kernelCall - | subroutineCall - | timingTerminator - | MINUS expressionTerminator - | LPAREN expression RPAREN - | expressionTerminator LBRACKET expression RBRACKET - | expressionTerminator incrementor - ; -/** End expression hierarchy **/ - -incrementor - : '++' - | '--' - ; - -builtInCall - : ( builtInMath | castOperator ) LPAREN expressionList RPAREN - ; - -builtInMath - : 'sin' | 'cos' | 'tan' | 'arctan' | 'arccos' | 'arcsin' | 'exp' | 'ln' | 'sqrt' | 'rotl' | 'rotr' | 'popcount' | 'lengthof' - ; - -castOperator - : classicalType - ; - -expressionList - : ( expression COMMA )* expression - ; - -/** Boolean expression hierarchy **/ -booleanExpression - : membershipTest - | comparsionExpression - | booleanExpression logicalOperator comparsionExpression - ; - -comparsionExpression - : expression // if (expression) - | expression relationalOperator expression - ; -/** End boolean expression hierarchy **/ - -equalsExpression - : EQUALS expression - ; - -assignmentOperator - : EQUALS - | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '~=' | '^=' | '<<=' | '>>=' - ; - -equalsAssignmentList - : ( Identifier equalsExpression COMMA)* Identifier equalsExpression - ; - -membershipTest - : Identifier 'in' setDeclaration - ; - -setDeclaration - : LBRACE expressionList RBRACE - | rangeDefinition - | Identifier - ; - -programBlock - : statement - | LBRACE statement* RBRACE - ; - -branchingStatement - : 'if' LPAREN booleanExpression RPAREN programBlock ( 'else' programBlock )? - ; - -loopSignature - : 'for' membershipTest - | 'while' LPAREN booleanExpression RPAREN - ; - -loopStatement: loopSignature programBlock ; - -cLikeLoopStatement - : 'for' LPAREN - classicalType Identifier equalsExpression ';' - booleanExpression ';' - expression - RPAREN - LBRACE - programBlock - RBRACE - | 'for' LPAREN - classicalType Identifier ':' 'range' LPAREN expression RPAREN - RPAREN - LBRACE - programBlock - RBRACE - ; - -controlDirectiveStatement - : controlDirective SEMICOLON - ; - -controlDirective - : 'break' - | 'continue' - | 'end' - ; - -kernelDeclaration - : 'kernel' Identifier ( LPAREN classicalTypeList? RPAREN )? returnSignature? - classicalType? SEMICOLON - ; - -// if have kernel w/ out args, is ambiguous; may get matched as identifier -kernelCall - : Identifier LPAREN expressionList? RPAREN - ; - -/*** Subroutines ***/ - -subroutineDefinition - : 'def' Identifier ( LPAREN classicalArgumentList? RPAREN )? quantumArgumentList? - returnSignature? subroutineBlock - ; - -returnStatement : 'return' statement; - -subroutineBlock - : LBRACE statement* returnStatement? RBRACE - // Begin QCOR Extension - // Allow a special 'extern' keyword in place of the subroutine definition - // to denote a declaration of an externally-provided quantum subroutine. - | EXTERN SEMICOLON - // End QCOR Extension - ; - -// if have subroutine w/ out args, is ambiguous; may get matched as identifier -subroutineCall - : Identifier ( LPAREN expressionList? RPAREN ) expressionList - ; - -/*** Directives ***/ - -pragma - : '#pragma' LBRACE statement* RBRACE // match any valid openqasm statement - ; - -/*** Circuit Timing ***/ - -timingType - : 'length' - | 'stretch' Integer? - ; - -timingBox - : 'boxas' Identifier quantumBlock - | 'boxto' TimingLiteral quantumBlock - ; - -timingTerminator - : timingIdentifier | 'stretchinf' - ; - -timingIdentifier - : TimingLiteral - | 'lengthof' LPAREN ( Identifier | quantumBlock ) RPAREN - ; - -timingInstructionName - : 'delay' - | 'rotary' - ; - -timingInstruction - : timingInstructionName ( LPAREN expressionList? RPAREN )? designator indexIdentifierList - ; - -timingStatement - : timingInstruction SEMICOLON - | timingBox - ; - -/*** Pulse Level Descriptions of Gates and Measurement ***/ -// TODO: Update when pulse grammar is formalized - -calibration - : calibrationGrammarDeclaration - | calibrationDefinition - ; - -calibrationGrammarDeclaration - : 'defcalgrammar' calibrationGrammar SEMICOLON - ; - -calibrationDefinition - : 'defcal' Identifier - ( LPAREN calibrationArgumentList? RPAREN )? identifierList - returnSignature? LBRACE .*? RBRACE // for now, match anything inside body - ; - -calibrationGrammar - : '"openpulse"' | StringLiteral // currently: pulse grammar string can be anything - ; - -calibrationArgumentList - : classicalArgumentList | expressionList - ; - -/**** Lexer grammar ****/ - -LBRACKET : '[' ; -RBRACKET : ']' ; - -LBRACE : '{' ; -RBRACE : '}' ; - -LPAREN : '(' ; -RPAREN : ')' ; - -COLON: ':' ; -SEMICOLON : ';' ; - -DOT : '.' ; -COMMA : ',' ; - -EQUALS : '=' ; -ARROW : '->' ; - -MINUS : '-' ; - -// Begin QCOR Extension -EXTERN : 'extern' ; -// End QCOR Extension - -Constant : ( 'pi' | 'ฯ€' | 'tau' | '๐œ' | 'euler' | 'โ„‡' ); - -Whitespace : [ \t]+ -> skip ; -Newline : [\r\n]+ -> skip ; - -fragment Digit : [0-9] ; -Integer : Digit+ ; - -fragment ValidUnicode : [\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}] ; // valid unicode chars -fragment Letter : [A-Za-z] ; -fragment FirstIdCharacter : '_' | '$' | ValidUnicode | Letter ; -fragment GeneralIdCharacter : FirstIdCharacter | Integer; - -Identifier : FirstIdCharacter GeneralIdCharacter* ; - -fragment SciNotation : [eE] ; -fragment PlusMinus : [-+] ; -fragment Float : Digit+ DOT Digit* | DOT Digit*; -RealNumber : Float (SciNotation PlusMinus? Integer )? ; - -fragment TimeUnit : 'dt' | 'ns' | 'us' | 'ยตs' | 'ms' | 's' ; -// represents explicit time value in SI or backend units -TimingLiteral : (Integer | RealNumber ) TimeUnit ; - -// allow ``"str"`` and ``'str'`` -StringLiteral - : '"' ~["\r\t\n]+? '"' - | '\'' ~['\r\t\n]+? '\'' - ; - -// skip comments -LineComment : '//' ~[\r\n]* -> skip; +/***** ANTLRv4 grammar for OpenQASM3.0. *****/ + +grammar qasm3; + +/**** Parser grammar ****/ + +program + : header (globalStatement | statement)* + ; + +header + : version? include* + ; + +version + : 'OPENQASM' ( Integer | RealNumber ) SEMICOLON + ; + +include + : 'include' StringLiteral SEMICOLON + ; + +globalStatement + : subroutineDefinition + | kernelDeclaration + | quantumGateDefinition + | calibration + | quantumDeclarationStatement // qubits are declared globally + | pragma + ; + + +statement + : expressionStatement + | assignmentStatement + | classicalDeclarationStatement + | branchingStatement + | loopStatement + | controlDirectiveStatement + | aliasStatement + | quantumStatement + | returnStatement + | qcor_test_statement + | compute_action_stmt + ; + +compute_action_stmt + : 'compute' compute_block=programBlock 'action' action_block=programBlock + ; + +qcor_test_statement + : 'QCOR_EXPECT_TRUE' LPAREN booleanExpression RPAREN SEMICOLON + ; + +quantumDeclarationStatement : quantumDeclaration SEMICOLON ; + +classicalDeclarationStatement + : ( classicalDeclaration | constantDeclaration ) SEMICOLON + ; + +classicalAssignment + : indexIdentifier assignmentOperator ( expression | indexIdentifier ) + ; + +assignmentStatement : ( classicalAssignment | quantumMeasurementAssignment ) SEMICOLON ; + +returnSignature + : ARROW classicalType + ; + +/*** Types and Casting ***/ + +designator + : LBRACKET expression RBRACKET + ; + +doubleDesignator + : LBRACKET expression COMMA expression RBRACKET + ; + +identifierList + : ( Identifier COMMA )* Identifier + ; + +association + : COLON Identifier + ; + +/** Quantum Types **/ +quantumType + : 'qubit' + | 'qreg' + ; + +quantumDeclaration + : 'qreg' Identifier designator? | 'qubit' designator? Identifier + ; + +quantumArgument + : quantumType designator? association + ; + +quantumArgumentList + : ( quantumArgument COMMA )* quantumArgument + ; + +/** Classical Types **/ +bitType + : 'bit' + | 'creg' + ; + +singleDesignatorType + : 'int' + | 'uint' + | 'float' + | 'angle' + ; + +doubleDesignatorType + : 'fixed' + ; + +noDesignatorType + : 'bool' + | timingType + | 'int' | 'int64_t' | 'float' | 'double' + ; + +classicalType + : singleDesignatorType designator + | doubleDesignatorType doubleDesignator + | noDesignatorType + | bitType designator? + ; + +constantDeclaration + : 'const' equalsAssignmentList + ; + +// if multiple variables declared at once, either none are assigned or all are assigned +// prevents ambiguity w/ qubit arguments in subroutine calls +singleDesignatorDeclaration + : singleDesignatorType designator ( identifierList | equalsAssignmentList ) + ; + +doubleDesignatorDeclaration + : doubleDesignatorType doubleDesignator ( identifierList | equalsAssignmentList ) + ; + +noDesignatorDeclaration + : noDesignatorType ( identifierList | equalsAssignmentList ) + ; + +bitDeclaration + : bitType (indexIdentifierList | indexEqualsAssignmentList ) + ; + +classicalDeclaration + : singleDesignatorDeclaration + | doubleDesignatorDeclaration + | noDesignatorDeclaration + | bitDeclaration + ; + +classicalTypeList + : ( classicalType COMMA )* classicalType + ; + +classicalArgument + : classicalType association + ; + +classicalArgumentList + : ( classicalArgument COMMA )* classicalArgument + ; + +/** Aliasing **/ +aliasStatement + : 'let' Identifier EQUALS indexIdentifier SEMICOLON + ; + +/** Register Concatenation and Slicing **/ + +indexIdentifier + : Identifier rangeDefinition + | Identifier ( LBRACKET expressionList RBRACKET )? + | indexIdentifier '||' indexIdentifier + ; + +indexIdentifierList + : ( indexIdentifier COMMA )* indexIdentifier + ; + +indexEqualsAssignmentList + : ( indexIdentifier equalsExpression COMMA)* indexIdentifier equalsExpression + ; + +rangeDefinition + : LBRACKET expression? COLON expression? ( COLON expression )? RBRACKET + ; + +/*** Gates and Built-in Quantum Instructions ***/ + +quantumGateDefinition + : 'gate' quantumGateSignature quantumBlock + ; + +quantumGateSignature + : ( Identifier | 'CX' | 'U') ( LPAREN identifierList? RPAREN )? identifierList + ; + +quantumBlock + : LBRACE ( compute_action_stmt | quantumStatement | quantumLoop )* RBRACE + ; + +// loops containing only quantum statements allowed in gates +quantumLoop + : loopSignature quantumLoopBlock + ; + +quantumLoopBlock + : quantumStatement + | LBRACE quantumStatement* RBRACE + ; + +quantumStatement + : quantumInstruction SEMICOLON + | timingStatement + ; + +quantumInstruction + : quantumGateCall + | quantumPhase + | quantumMeasurement + | quantumBarrier + ; + +quantumPhase + : 'gphase' LPAREN Identifier RPAREN + ; + +quantumMeasurement + : 'measure' indexIdentifierList + ; + +quantumMeasurementAssignment + : quantumMeasurement ( ARROW indexIdentifierList)? + | indexIdentifierList EQUALS quantumMeasurement + ; + +quantumBarrier + : 'barrier' indexIdentifierList + ; + +quantumGateModifier + : ( 'inv' | 'pow' LPAREN expression RPAREN | 'ctrl' ) '@' + ; + +quantumGateCall + : quantumGateName ( LPAREN expressionList? RPAREN )? indexIdentifierList + ; + +quantumGateName + : 'CX' + | 'U' + | 'reset' + | Identifier + | quantumGateModifier quantumGateName + ; + +/*** Classical Instructions ***/ + +unaryOperator + : '~' | '!' + ; + +relationalOperator + : '>' + | '<' + | '>=' + | '<=' + | '==' + | '!=' + ; + +logicalOperator + : '&&' + | '||' + ; + +expressionStatement + : expression SEMICOLON + ; + +expression + // include terminator/unary as base cases to simplify parsing + : expressionTerminator + | unaryExpression + // expression hierarchy + | xOrExpression + | expression '|' xOrExpression + ; + +/** Expression hierarchy for non-terminators. Adapted from ANTLR4 C + * grammar: https://github.com/antlr/grammars-v4/blob/master/c/C.g4 + * Order (first to last evaluation): + Terminator (including Parens), + Unary Op, + Multiplicative + Additive + Bit Shift + Bit And + Exlusive Or (xOr) + Bit Or +**/ +xOrExpression + : bitAndExpression + | xOrExpression '^' bitAndExpression + ; + +bitAndExpression + : bitShiftExpression + | bitAndExpression '&' bitShiftExpression + ; + +bitShiftExpression + : additiveExpression + | bitShiftExpression ( '<<' | '>>' ) additiveExpression + ; + +additiveExpression + : multiplicativeExpression + | additiveExpression binary_op=( '+' | MINUS ) multiplicativeExpression + ; + +multiplicativeExpression + // base case either terminator or unary + : expressionTerminator + | unaryExpression + | multiplicativeExpression binary_op=( '*' | '/' | '%' ) ( expressionTerminator | unaryExpression ) + ; + +unaryExpression + : unaryOperator expressionTerminator + ; + +expressionTerminator + : Constant + | Integer + | RealNumber + | Identifier + | StringLiteral + | builtInCall + | kernelCall + | subroutineCall + | timingTerminator + | MINUS expressionTerminator + | LPAREN expression RPAREN + | expressionTerminator LBRACKET expression RBRACKET + | expressionTerminator incrementor + ; +/** End expression hierarchy **/ + +incrementor + : '++' + | '--' + ; + +builtInCall + : ( builtInMath | castOperator ) LPAREN expressionList RPAREN + ; + +builtInMath + : 'sin' | 'cos' | 'tan' | 'arctan' | 'arccos' | 'arcsin' | 'exp' | 'ln' | 'sqrt' | 'rotl' | 'rotr' | 'popcount' | 'lengthof' + ; + +castOperator + : classicalType + ; + +expressionList + : ( expression COMMA )* expression + ; + +/** Boolean expression hierarchy **/ +booleanExpression + : membershipTest + | comparsionExpression + | booleanExpression logicalOperator comparsionExpression + ; + +comparsionExpression + : expression // if (expression) + | expression relationalOperator expression + ; +/** End boolean expression hierarchy **/ + +equalsExpression + : EQUALS expression + ; + +assignmentOperator + : EQUALS + | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '~=' | '^=' | '<<=' | '>>=' + ; + +equalsAssignmentList + : ( Identifier equalsExpression COMMA)* Identifier equalsExpression + ; + +membershipTest + : Identifier 'in' setDeclaration + ; + +setDeclaration + : LBRACE expressionList RBRACE + | rangeDefinition + | Identifier + ; + +programBlock + : statement + | LBRACE statement* RBRACE + ; + +branchingStatement + : 'if' LPAREN booleanExpression RPAREN programBlock ( 'else' programBlock )? + ; + +loopSignature + : 'for' membershipTest + | 'while' LPAREN booleanExpression RPAREN + ; + +loopStatement: loopSignature programBlock ; + +cLikeLoopStatement + : 'for' LPAREN + classicalType Identifier equalsExpression ';' + booleanExpression ';' + expression + RPAREN + LBRACE + programBlock + RBRACE + | 'for' LPAREN + classicalType Identifier ':' 'range' LPAREN expression RPAREN + RPAREN + LBRACE + programBlock + RBRACE + ; + +controlDirectiveStatement + : controlDirective SEMICOLON + ; + +controlDirective + : 'break' + | 'continue' + | 'end' + ; + +kernelDeclaration + : 'kernel' Identifier ( LPAREN classicalTypeList? RPAREN )? returnSignature? + classicalType? SEMICOLON + ; + +// if have kernel w/ out args, is ambiguous; may get matched as identifier +kernelCall + : Identifier LPAREN expressionList? RPAREN + ; + +/*** Subroutines ***/ + +subroutineDefinition + : 'def' Identifier ( LPAREN classicalArgumentList? RPAREN )? quantumArgumentList? + returnSignature? subroutineBlock + ; + +returnStatement : 'return' statement; + +subroutineBlock + : LBRACE statement* returnStatement? RBRACE + // Begin QCOR Extension + // Allow a special 'extern' keyword in place of the subroutine definition + // to denote a declaration of an externally-provided quantum subroutine. + | EXTERN SEMICOLON + // End QCOR Extension + ; + +// if have subroutine w/ out args, is ambiguous; may get matched as identifier +subroutineCall + : Identifier ( LPAREN expressionList? RPAREN ) expressionList + ; + +/*** Directives ***/ + +pragma + : '#pragma' LBRACE statement* RBRACE // match any valid openqasm statement + ; + +/*** Circuit Timing ***/ + +timingType + : 'length' + | 'stretch' Integer? + ; + +timingBox + : 'boxas' Identifier quantumBlock + | 'boxto' TimingLiteral quantumBlock + ; + +timingTerminator + : timingIdentifier | 'stretchinf' + ; + +timingIdentifier + : TimingLiteral + | 'lengthof' LPAREN ( Identifier | quantumBlock ) RPAREN + ; + +timingInstructionName + : 'delay' + | 'rotary' + ; + +timingInstruction + : timingInstructionName ( LPAREN expressionList? RPAREN )? designator indexIdentifierList + ; + +timingStatement + : timingInstruction SEMICOLON + | timingBox + ; + +/*** Pulse Level Descriptions of Gates and Measurement ***/ +// TODO: Update when pulse grammar is formalized + +calibration + : calibrationGrammarDeclaration + | calibrationDefinition + ; + +calibrationGrammarDeclaration + : 'defcalgrammar' calibrationGrammar SEMICOLON + ; + +calibrationDefinition + : 'defcal' Identifier + ( LPAREN calibrationArgumentList? RPAREN )? identifierList + returnSignature? LBRACE .*? RBRACE // for now, match anything inside body + ; + +calibrationGrammar + : '"openpulse"' | StringLiteral // currently: pulse grammar string can be anything + ; + +calibrationArgumentList + : classicalArgumentList | expressionList + ; + +/**** Lexer grammar ****/ + +LBRACKET : '[' ; +RBRACKET : ']' ; + +LBRACE : '{' ; +RBRACE : '}' ; + +LPAREN : '(' ; +RPAREN : ')' ; + +COLON: ':' ; +SEMICOLON : ';' ; + +DOT : '.' ; +COMMA : ',' ; + +EQUALS : '=' ; +ARROW : '->' ; + +MINUS : '-' ; + +// Begin QCOR Extension +EXTERN : 'extern' ; +// End QCOR Extension + +Constant : ( 'pi' | 'ฯ€' | 'tau' | '๐œ' | 'euler' | 'โ„‡' ); + +Whitespace : [ \t]+ -> skip ; +Newline : [\r\n]+ -> skip ; + +fragment Digit : [0-9] ; +Integer : Digit+ ; + +fragment ValidUnicode : [\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}] ; // valid unicode chars +fragment Letter : [A-Za-z] ; +fragment FirstIdCharacter : '_' | '$' | ValidUnicode | Letter ; +fragment GeneralIdCharacter : FirstIdCharacter | Integer; + +Identifier : FirstIdCharacter GeneralIdCharacter* ; + +fragment SciNotation : [eE] ; +fragment PlusMinus : [-+] ; +fragment Float : Digit+ DOT Digit* | DOT Digit*; +RealNumber : Float (SciNotation PlusMinus? Integer )? ; + +fragment TimeUnit : 'dt' | 'ns' | 'us' | 'ยตs' | 'ms' | 's' ; +// represents explicit time value in SI or backend units +TimingLiteral : (Integer | RealNumber ) TimeUnit ; + +// allow ``"str"`` and ``'str'`` +StringLiteral + : '"' ~["\r\t\n]+? '"' + | '\'' ~['\r\t\n]+? '\'' + ; + +// skip comments +LineComment : '//' ~[\r\n]* -> skip; BlockComment : '/*' .*? '*/' -> skip; \ No newline at end of file diff --git a/mlir/parsers/qasm3/tests/CMakeLists.txt b/mlir/parsers/qasm3/tests/CMakeLists.txt index ebc501aa..2f1ddd8b 100644 --- a/mlir/parsers/qasm3/tests/CMakeLists.txt +++ b/mlir/parsers/qasm3/tests/CMakeLists.txt @@ -1,105 +1,110 @@ - - - -link_directories(${XACC_ROOT}/lib) - -add_executable(qasm3CompilerTester_Alias test_alias_handler.cpp) -add_test(NAME qcor_qasm3_quantum_alias_decl_tester COMMAND qasm3CompilerTester_Alias) -target_include_directories(qasm3CompilerTester_Alias PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Alias qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Assignment test_assignment.cpp) -add_test(NAME qcor_qasm3_classical_assignment_tester COMMAND qasm3CompilerTester_Assignment) -target_include_directories(qasm3CompilerTester_Assignment PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Assignment qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_TestUtils test_qcor_expect_true.cpp) -add_test(NAME qcor_qasm3_test_utils_tester COMMAND qasm3CompilerTester_TestUtils) -target_include_directories(qasm3CompilerTester_TestUtils PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_TestUtils qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Declaration test_declaration.cpp) -add_test(NAME qcor_qasm3_test_declaration COMMAND qasm3CompilerTester_Declaration) -target_include_directories(qasm3CompilerTester_Declaration PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Declaration qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Casting test_casting.cpp) -add_test(NAME qcor_qasm3_test_casting COMMAND qasm3CompilerTester_Casting) -target_include_directories(qasm3CompilerTester_Casting PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Casting qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_LoopStmts test_loop_stmts.cpp) -add_test(NAME qcor_qasm3_test_loops COMMAND qasm3CompilerTester_LoopStmts) -target_include_directories(qasm3CompilerTester_LoopStmts PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_LoopStmts qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_QuantumInstructions test_quantum_instructions.cpp) -add_test(NAME qcor_qasm3_test_qinsts COMMAND qasm3CompilerTester_QuantumInstructions) -target_include_directories(qasm3CompilerTester_QuantumInstructions PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_QuantumInstructions qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Subroutine test_subroutine.cpp) -add_test(NAME qcor_qasm3_test_subroutine COMMAND qasm3CompilerTester_Subroutine) -target_include_directories(qasm3CompilerTester_Subroutine PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Subroutine qcor-mlir-api gtest gtest_main) - - -add_executable(qasm3CompilerTester_GlobalConstInSubroutine test_use_global_const_in_subroutine.cpp) -add_test(NAME qcor_qasm3_test_global_const_subroutine COMMAND qasm3CompilerTester_GlobalConstInSubroutine) -target_include_directories(qasm3CompilerTester_GlobalConstInSubroutine PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_GlobalConstInSubroutine qcor-mlir-api gtest gtest_main) - - -add_executable(qasm3CompilerTester_Arithmetic test_complex_arithmetic.cpp) -add_test(NAME qcor_qasm3_test_arithmetic COMMAND qasm3CompilerTester_Arithmetic) -target_include_directories(qasm3CompilerTester_Arithmetic PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Arithmetic qcor-mlir-api gtest gtest_main) - - -add_executable(qasm3CompilerTester_ControlDirectives test_control_directives.cpp) -add_test(NAME qcor_qasm3_test_control_directives COMMAND qasm3CompilerTester_ControlDirectives) -target_include_directories(qasm3CompilerTester_ControlDirectives PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_ControlDirectives qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Superposition test_superposition.cpp) -add_test(NAME qcor_qasm3_test_superposition COMMAND qasm3CompilerTester_Superposition) -target_include_directories(qasm3CompilerTester_Superposition PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Superposition qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Modifiers test_modifiers.cpp) -add_test(NAME qcor_qasm3_test_modifiers COMMAND qasm3CompilerTester_Modifiers) -target_include_directories(qasm3CompilerTester_Modifiers PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Modifiers qcor-mlir-api gtest gtest_main) - - -add_executable(qasm3CompilerTester_DefaultTypes test_default_designators.cpp) -add_test(NAME qcor_qasm3_test_default_types COMMAND qasm3CompilerTester_DefaultTypes) -target_include_directories(qasm3CompilerTester_DefaultTypes PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_DefaultTypes qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Bell test_bell.cpp) -add_test(NAME qcor_qasm3_test_bell COMMAND qasm3CompilerTester_Bell) -target_include_directories(qasm3CompilerTester_Bell PRIVATE . ../../ ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Bell qcor-mlir-api gtest gtest_main) - -add_executable(qasm3CompilerTester_Kernel test_kernel.cpp) -add_test(NAME qcor_qasm3_test_kernel COMMAND qasm3CompilerTester_Kernel) -target_include_directories(qasm3CompilerTester_Kernel PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_Kernel qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) - -add_executable(qasm3CompilerTester_PassManager test_optimization.cpp) -add_test(NAME qcor_qasm3_test_pass_mamager COMMAND qasm3CompilerTester_PassManager) -target_include_directories(qasm3CompilerTester_PassManager PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_PassManager qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) - -add_executable(qasm3CompilerTester_ComputeAction test_compute_action.cpp) -add_test(NAME qcor_qasm3_test_compute_action COMMAND qasm3CompilerTester_ComputeAction) -target_include_directories(qasm3CompilerTester_ComputeAction PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_ComputeAction qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) - - -add_executable(qasm3CompilerTester_nisq_ifstmt test_nisq_if_statements.cpp) -add_test(NAME qcor_qasm3_test_nisq_ifstmt COMMAND qasm3CompilerTester_nisq_ifstmt) -target_include_directories(qasm3CompilerTester_nisq_ifstmt PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) -target_link_libraries(qasm3CompilerTester_nisq_ifstmt qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) - + + + +link_directories(${XACC_ROOT}/lib) + +add_executable(qasm3CompilerTester_Alias test_alias_handler.cpp) +add_test(NAME qcor_qasm3_quantum_alias_decl_tester COMMAND qasm3CompilerTester_Alias) +target_include_directories(qasm3CompilerTester_Alias PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Alias qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Assignment test_assignment.cpp) +add_test(NAME qcor_qasm3_classical_assignment_tester COMMAND qasm3CompilerTester_Assignment) +target_include_directories(qasm3CompilerTester_Assignment PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Assignment qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_TestUtils test_qcor_expect_true.cpp) +add_test(NAME qcor_qasm3_test_utils_tester COMMAND qasm3CompilerTester_TestUtils) +target_include_directories(qasm3CompilerTester_TestUtils PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_TestUtils qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Declaration test_declaration.cpp) +add_test(NAME qcor_qasm3_test_declaration COMMAND qasm3CompilerTester_Declaration) +target_include_directories(qasm3CompilerTester_Declaration PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Declaration qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Casting test_casting.cpp) +add_test(NAME qcor_qasm3_test_casting COMMAND qasm3CompilerTester_Casting) +target_include_directories(qasm3CompilerTester_Casting PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Casting qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_LoopStmts test_loop_stmts.cpp) +add_test(NAME qcor_qasm3_test_loops COMMAND qasm3CompilerTester_LoopStmts) +target_include_directories(qasm3CompilerTester_LoopStmts PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_LoopStmts qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_QuantumDeclarations test_quantum_declaration.cpp) +add_test(NAME qcor_qasm3_test_qdecls COMMAND qasm3CompilerTester_QuantumDeclarations) +target_include_directories(qasm3CompilerTester_QuantumDeclarations PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_QuantumDeclarations qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_QuantumInstructions test_quantum_instructions.cpp) +add_test(NAME qcor_qasm3_test_qinsts COMMAND qasm3CompilerTester_QuantumInstructions) +target_include_directories(qasm3CompilerTester_QuantumInstructions PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_QuantumInstructions qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Subroutine test_subroutine.cpp) +add_test(NAME qcor_qasm3_test_subroutine COMMAND qasm3CompilerTester_Subroutine) +target_include_directories(qasm3CompilerTester_Subroutine PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Subroutine qcor-mlir-api gtest gtest_main) + + +add_executable(qasm3CompilerTester_GlobalConstInSubroutine test_use_global_const_in_subroutine.cpp) +add_test(NAME qcor_qasm3_test_global_const_subroutine COMMAND qasm3CompilerTester_GlobalConstInSubroutine) +target_include_directories(qasm3CompilerTester_GlobalConstInSubroutine PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_GlobalConstInSubroutine qcor-mlir-api gtest gtest_main) + + +add_executable(qasm3CompilerTester_Arithmetic test_complex_arithmetic.cpp) +add_test(NAME qcor_qasm3_test_arithmetic COMMAND qasm3CompilerTester_Arithmetic) +target_include_directories(qasm3CompilerTester_Arithmetic PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Arithmetic qcor-mlir-api gtest gtest_main) + + +add_executable(qasm3CompilerTester_ControlDirectives test_control_directives.cpp) +add_test(NAME qcor_qasm3_test_control_directives COMMAND qasm3CompilerTester_ControlDirectives) +target_include_directories(qasm3CompilerTester_ControlDirectives PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_ControlDirectives qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Superposition test_superposition.cpp) +add_test(NAME qcor_qasm3_test_superposition COMMAND qasm3CompilerTester_Superposition) +target_include_directories(qasm3CompilerTester_Superposition PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Superposition qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Modifiers test_modifiers.cpp) +add_test(NAME qcor_qasm3_test_modifiers COMMAND qasm3CompilerTester_Modifiers) +target_include_directories(qasm3CompilerTester_Modifiers PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Modifiers qcor-mlir-api gtest gtest_main) + + +add_executable(qasm3CompilerTester_DefaultTypes test_default_designators.cpp) +add_test(NAME qcor_qasm3_test_default_types COMMAND qasm3CompilerTester_DefaultTypes) +target_include_directories(qasm3CompilerTester_DefaultTypes PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_DefaultTypes qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Bell test_bell.cpp) +add_test(NAME qcor_qasm3_test_bell COMMAND qasm3CompilerTester_Bell) +target_include_directories(qasm3CompilerTester_Bell PRIVATE . ../../ ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Bell qcor-mlir-api gtest gtest_main) + +add_executable(qasm3CompilerTester_Kernel test_kernel.cpp) +add_test(NAME qcor_qasm3_test_kernel COMMAND qasm3CompilerTester_Kernel) +target_include_directories(qasm3CompilerTester_Kernel PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_Kernel qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) + +add_executable(qasm3CompilerTester_PassManager test_optimization.cpp) +add_test(NAME qcor_qasm3_test_pass_mamager COMMAND qasm3CompilerTester_PassManager) +target_include_directories(qasm3CompilerTester_PassManager PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_PassManager qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) + +add_executable(qasm3CompilerTester_ComputeAction test_compute_action.cpp) +add_test(NAME qcor_qasm3_test_compute_action COMMAND qasm3CompilerTester_ComputeAction) +target_include_directories(qasm3CompilerTester_ComputeAction PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_ComputeAction qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) + + +add_executable(qasm3CompilerTester_nisq_ifstmt test_nisq_if_statements.cpp) +add_test(NAME qcor_qasm3_test_nisq_ifstmt COMMAND qasm3CompilerTester_nisq_ifstmt) +target_include_directories(qasm3CompilerTester_nisq_ifstmt PRIVATE . ../../ ${CMAKE_SOURCE_DIR}/tools/clang-wrapper/ ${CMAKE_SOURCE_DIR}/handlers ${XACC_ROOT}/include/gtest) +target_link_libraries(qasm3CompilerTester_nisq_ifstmt qcor-mlir-api gtest gtest_main qcor-clang-wrapper qcor-syntax-handler ${CLANG_LIBS}) + diff --git a/mlir/parsers/qasm3/tests/test_alias_handler.cpp b/mlir/parsers/qasm3/tests/test_alias_handler.cpp index 787889bf..df2b9c4b 100644 --- a/mlir/parsers/qasm3/tests/test_alias_handler.cpp +++ b/mlir/parsers/qasm3/tests/test_alias_handler.cpp @@ -4,7 +4,7 @@ TEST(qasm3VisitorTester, checkAlias) { const std::string alias_by_indicies = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[6]; +qubit[6] q; // Test 1: Alias by indices // myreg[0,1,2] refers to the qubit q[1,3,5] let myreg = q[1, 3, 5]; diff --git a/mlir/parsers/qasm3/tests/test_bell.cpp b/mlir/parsers/qasm3/tests/test_bell.cpp index f0c21c1c..20c576fd 100644 --- a/mlir/parsers/qasm3/tests/test_bell.cpp +++ b/mlir/parsers/qasm3/tests/test_bell.cpp @@ -5,7 +5,7 @@ TEST(qasm3VisitorTester, checkPow) { const std::string check_pow = R"#(OPENQASM 3; include "qelib1.inc"; -qubit z[2]; +qubit[2] z; int count = 0; for i in [0:100] { h z[0]; diff --git a/mlir/parsers/qasm3/tests/test_compute_action.cpp b/mlir/parsers/qasm3/tests/test_compute_action.cpp index 8e9e7201..2f7dbc2a 100644 --- a/mlir/parsers/qasm3/tests/test_compute_action.cpp +++ b/mlir/parsers/qasm3/tests/test_compute_action.cpp @@ -18,7 +18,7 @@ int countSubstring(const std::string &str, const std::string &sub) { TEST(qasm3ComputeActionTester, checkSimple) { const std::string src = R"#(OPENQASM 3; -qubit q[4]; +qubit[4] q; let bottom_three = q[1:3]; compute { @@ -41,7 +41,11 @@ compute { TEST(qasm3ComputeActionTester, checkCtrlOpt) { const std::string src = R"#(OPENQASM 3; -qubit qq, rr, ss, vv, ww; +qubit qq; +qubit rr; +qubit ss; +qubit vv; +qubit ww; gate test22 q, r, s, v { compute { diff --git a/mlir/parsers/qasm3/tests/test_control_directives.cpp b/mlir/parsers/qasm3/tests/test_control_directives.cpp index 1a451a21..8523f1f9 100644 --- a/mlir/parsers/qasm3/tests/test_control_directives.cpp +++ b/mlir/parsers/qasm3/tests/test_control_directives.cpp @@ -394,7 +394,7 @@ include "qelib1.inc"; // phi_est = 11/16 (denom = 16 since we have 4 bits) // => phi = 2pi * 11/16 = 11pi/8 = 2pi - 5pi/8 // i.e. we estimate the -5*pi/8 angle... -qubit q[2]; +qubit[2] q; const bits_precision = 4; bit c[bits_precision]; diff --git a/mlir/parsers/qasm3/tests/test_declaration.cpp b/mlir/parsers/qasm3/tests/test_declaration.cpp index 0eaf522a..fb169173 100644 --- a/mlir/parsers/qasm3/tests/test_declaration.cpp +++ b/mlir/parsers/qasm3/tests/test_declaration.cpp @@ -14,7 +14,8 @@ int[5] xx=2, yy=1; QCOR_EXPECT_TRUE(xx == 2); QCOR_EXPECT_TRUE(yy == 1); -qubit q1[6], q2; +qubit[6] q1; +qubit q2; bit b1[4]="0100", b2 = "1"; QCOR_EXPECT_TRUE(b1[0] == 0); QCOR_EXPECT_TRUE(b1[1] == 1); diff --git a/mlir/parsers/qasm3/tests/test_modifiers.cpp b/mlir/parsers/qasm3/tests/test_modifiers.cpp index 3931cf07..6bccfd9d 100644 --- a/mlir/parsers/qasm3/tests/test_modifiers.cpp +++ b/mlir/parsers/qasm3/tests/test_modifiers.cpp @@ -53,7 +53,8 @@ pow(2) @ inv @ s a; measure a -> bb; QCOR_EXPECT_TRUE(bb == 0); -qubit z, zz; +qubit z; +qubit zz; int count = 0; for i in [0:100] { h z; diff --git a/mlir/parsers/qasm3/tests/test_optimization.cpp b/mlir/parsers/qasm3/tests/test_optimization.cpp index b9411d91..11dfb86d 100644 --- a/mlir/parsers/qasm3/tests/test_optimization.cpp +++ b/mlir/parsers/qasm3/tests/test_optimization.cpp @@ -18,7 +18,7 @@ int countSubstring(const std::string &str, const std::string &sub) { TEST(qasm3PassManagerTester, checkIdentityPairRemoval) { const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[2]; +qubit[2] q; x q[0]; x q[0]; @@ -34,7 +34,7 @@ cx q[0], q[1]; TEST(qasm3PassManagerTester, checkResetSimplification) { const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[2]; +qubit[2] q; reset q[0]; x q[1]; @@ -58,7 +58,7 @@ reset q[0]; TEST(qasm3PassManagerTester, checkRotationMerge) { const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[2]; +qubit[2] q; x q[0]; z q[1]; @@ -81,7 +81,7 @@ TEST(qasm3PassManagerTester, checkSingleQubitGateMergeOpt) { // Merge to X == rx(pi) const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[2]; +qubit[2] q; h q[0]; z q[0]; h q[0]; @@ -101,7 +101,7 @@ TEST(qasm3PassManagerTester, checkRemoveUnusedQirCalls) { // Complete cancellation => remove extract and qalloc as well const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[2]; +qubit[2] q; cx q[0], q[1]; h q[0]; z q[0]; @@ -127,7 +127,7 @@ gate oracle b { x b; } -qubit q[2]; +qubit[2] q; x q[0]; oracle q[0]; )#"; @@ -152,7 +152,7 @@ TEST(qasm3PassManagerTester, checkPermuteAndCancel) { const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[2]; +qubit[2] q; rz(0.123) q[0]; cx q[0], q[1]; @@ -180,7 +180,7 @@ TEST(qasm3PassManagerTester, checkLoopUnroll) { // cancel all X gates; combine rx const std::string src = R"#(OPENQASM 3; include "stdgates.inc"; -qubit q[2]; +qubit[2] q; for i in [0:10] { x q[0]; rx(0.123) q[1]; @@ -205,7 +205,7 @@ TEST(qasm3PassManagerTester, checkLoopUnrollTrotter) { // Trotter decompose const std::string src = R"#(OPENQASM 3; include "stdgates.inc"; -qubit qq[2]; +qubit[2] qq; for i in [0:100] { h qq; cx qq[0], qq[1]; @@ -256,7 +256,7 @@ def cnot_ladder_inv() qubit[4]:q { h q[0]; } -qubit q[4]; +qubit[4] q; double theta = 0.01; for i in [0:100] { cnot_ladder q; @@ -301,7 +301,7 @@ def cnot_ladder_inv() qubit[4]:q { h q; } -qubit q[4]; +qubit[4] q; double theta = 0.01; for i in [0:100] { cnot_ladder q; @@ -334,7 +334,7 @@ TEST(qasm3PassManagerTester, checkQubitArrayAlias) { const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[6]; +qubit[6] q; let my_reg = q[1, 3, 5]; h q[1]; @@ -361,7 +361,7 @@ h q[1]; const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[4]; +qubit[4] q; let first_and_last_qubit = q[0] || q[3]; cx q[0], q[3]; @@ -440,7 +440,7 @@ TEST(qasm3PassManagerTester, checkConditionalBlock) { const std::string src = R"#(OPENQASM 3; include "qelib1.inc"; bit c; -qubit q[2]; +qubit[2] q; h q[0]; x q[1]; @@ -486,7 +486,7 @@ include "qelib1.inc"; // phi_est = 11/16 (denom = 16 since we have 4 bits) // => phi = 2pi * 11/16 = 11pi/8 = 2pi - 5pi/8 // i.e. we estimate the -5*pi/8 angle... -qubit q[2]; +qubit[2] q; const bits_precision = 4; bit c[bits_precision]; diff --git a/mlir/parsers/qasm3/tests/test_quantum_declaration.cpp b/mlir/parsers/qasm3/tests/test_quantum_declaration.cpp index fa930694..dad47960 100644 --- a/mlir/parsers/qasm3/tests/test_quantum_declaration.cpp +++ b/mlir/parsers/qasm3/tests/test_quantum_declaration.cpp @@ -1,485 +1,499 @@ -#include "gtest/gtest.h" -#include "qcor_mlir_api.hpp" - -TEST(qasm3VisitorTester, checkDeclaration) { - const std::string src = R"#(OPENQASM 3; -include "qelib1.inc"; -print("HELLO WORLD"); -int[10] x, y; -int[5] xx=2, yy=1; -qubit q1[6], q2; -bit b1[4]="0100", b2 = "1"; -bit k, kk[22]; -bool bb = False; -bool m=True, n=bool(xx); -const c = 5.5e3, d=5; -const e = 2.2; -print(c); -print(bb); -print(m); -print(n); -print(xx); -print(b1[1]); -)#"; - auto mlir = - qcor::mlir_compile(src, "test", qcor::OutputType::MLIR, true); - std::cout << "MLIR:\n" << mlir << "\n"; - qcor::execute(src, "test"); -} - -TEST(qasm3VisitorTester, checkAssignment) { - const std::string src = R"#(OPENQASM 3; -include "qelib1.inc"; -const d = 6; -const dd = d^2; -const layers = 22; -const layers2 = layers / 2; -const t = layers * 3; -const tt = d * 33.3; -const mypi = pi / 2; -const added = layers + t; -const added_diff_types = layers + tt; -int[64] tmp = 10, tmp2 = 33, tmp3 = 22; - -tmp += tmp2; -tmp -= tmp3; -tmp *= 2; -tmp /= 2; - -int[32] i = 10; -float[32] f; -float[64] ff = 3.14; -bit result; -bit results[2]; -creg c[22]; -bool b, z; -bool bb = 1; -bool bbb = 0; - -print(layers); -print(layers2); -print(t); -print(tt); -print(mypi); -print(added); -print(added_diff_types); -print(tmp); -print(b, z); -print(bb); -print(bbb); -print(f); -print(ff); -)#"; - auto mlir = - qcor::mlir_compile(src, "test", qcor::OutputType::MLIR, true); - std::cout << "MLIR:\n" << mlir << "\n"; - qcor::execute(src, "test"); -} - -TEST(qasm3VisitorTester, checkMeasurements) { - const std::string measure_test = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit q; -qubit qq[2]; - -bit r, s; -r = measure q; -s = measure qq[0]; - -bit rr[2]; -rr[0] = measure qq[0]; - -bit xx[4]; -qubit qqq[4]; -xx = measure qqq; - - -)#"; - auto mlir = qcor::mlir_compile(measure_test, "measure_test", - qcor::OutputType::MLIR, false); - std::cout << "MLIR:\n" << mlir << "\n"; - // qcor::execute(measure_test, "test"); -} - -TEST(qasm3VisitorTester, checkQuantumInsts) { - const std::string qinst_test = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit q; -h q; -ry(2.2) q; - -qubit qq[2]; -x qq[0]; -CX qq[0], qq[1]; -U(0.1,0.2,0.3) qq[1]; -cx q, qq[1]; - -)#"; - auto mlir = qcor::mlir_compile(qinst_test, "qinst_test", - qcor::OutputType::MLIR, false); - std::cout << "MLIR:\n" << mlir << "\n"; -} - -TEST(qasm3VisitorTester, checkLoopStmt) { - const std::string for_stmt = R"#(OPENQASM 3; -include "qelib1.inc"; - -for i in {11,22,33} { - print(i); -} - -for i in [0:10] { - print(i); - -} -for j in [0:2:4] { - print("steps:", j); -} - - -for j in [0:4] { - print("j in 0:4", j); -} - -for i in [0:4] { - for j in {1,2,3} { - print(i,j); - } -} -)#"; - auto mlir = qcor::mlir_compile(for_stmt, "for_stmt", - qcor::OutputType::MLIR, false); - std::cout << "for_stmt MLIR:\n" << mlir << "\n"; - qcor::execute(for_stmt, "for_stmt"); -} - -TEST(qasm3VisitorTester, checkUintIndexing) { - const std::string uint_index = R"#(OPENQASM 3; -include "qelib1.inc"; - -uint[4] b_in = 15; - -bool b1 = bool(b_in[0]); -bool b2 = bool(b_in[1]); -bool b3 = bool(b_in[2]); -bool b4 = bool(b_in[3]); - -print(b1,b2,b3,b4); -)#"; - auto mlir = qcor::mlir_compile(uint_index, "uint_index", - qcor::OutputType::MLIR, false); - std::cout << mlir << "\n"; - qcor::execute(uint_index, "uint_index"); -} - -TEST(qasm3VisitorTester, checkIfStmt) { - const std::string if_stmt = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit q, s;//, qq[2]; -const layers = 2; -bit cc[2]; -qubit qq[2]; - -bit c; -c = measure q; -cc[0] = measure qq[0]; - -if (c == 1) { - z s; -} else { - print("c was a 0"); -} - -if (layers == 2) { - print("should be here, layers is 2"); - z s; -} - - -cc[1] = measure qq[1]; -if ( cc[1] == 1) { - ry(2.2) s; -} - - -)#"; - auto mlir = qcor::mlir_compile(if_stmt, "if_stmt", - qcor::OutputType::MLIR, false); - std::cout << mlir << "\n"; -} - -TEST(qasm3VisitorTester, checkSecondIfStmt) { - const std::string if_stmt = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit q, s, qqq[2]; -bit c; - -if (!c) { - print("you should see me"); -} -x q; -c = measure q; -if (c == 1) { - print("hi"); - ry(2.2) s; -} - -c = measure qqq[0]; -print("hi world"); - -)#"; - auto mlir = qcor::mlir_compile(if_stmt, "if_stmt", - qcor::OutputType::MLIR, false); - std::cout << mlir << "\n"; - qcor::execute(if_stmt, "if_stmt"); -} - -TEST(qasm3VisitorTester, checkIfStmt3) { - const std::string complex_if = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit q; -const n = 10; -int[32] i = 3; - -bit temp; -if(temp==0 && i==3) { - print("we are here"); - temp = measure q; -} - -)#"; - auto mlir = qcor::mlir_compile(complex_if, "complex_if", - qcor::OutputType::MLIR, false); - std::cout << mlir << "\n"; - qcor::execute(complex_if, "complex_if"); -} - -TEST(qasm3VisitorTester, checkWhile) { - const std::string while_stmt = R"#(OPENQASM 3; -include "qelib1.inc"; -int[32] i = 0; -while (i < 10) { - print(i); - i += 1; -} -)#"; - auto mlir = qcor::mlir_compile(while_stmt, "while_stmt", - qcor::OutputType::MLIR, false); - std::cout << mlir << "\n"; - qcor::execute(while_stmt, "while_stmt"); -} - -TEST(qasm3VisitorTester, checkSubroutine) { - const std::string subroutine_test = R"#(OPENQASM 3; -include "qelib1.inc"; -def xmeasure qubit:q -> bit { h q; return measure q; } -qubit q, qq[2]; -bit r, rr[2]; - -rr[0] = xmeasure q; -r = xmeasure qq[0]; -)#"; - auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", - qcor::OutputType::MLIR, false); - - std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; -} - -TEST(qasm3VisitorTester, checkSubroutine2) { - const std::string subroutine_test = R"#(OPENQASM 3; -include "qelib1.inc"; -def xcheck qubit[4]:d, qubit:a -> bit { - // reset a; - for i in [1: 3] cx d[i], a; - return measure a; -} -qubit q; -const n = 10; -def parity(bit[n]:cin) -> bit { - bit c; - for i in [0: n-1] { - c ^= cin[i]; - } - return c; -} -)#"; - auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", - qcor::OutputType::MLIR, false); - - std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; -} - -TEST(qasm3VisitorTester, checkSubroutine3) { - const std::string subroutine_test = R"#(OPENQASM 3; -include "qelib1.inc"; -const n = 10; -def xmeasure qubit:q -> bit { h q; return measure q; } -def ymeasure qubit:q -> bit { s q; h q; return measure q; } - -def pauli_measurement(bit[2*n]:spec) qubit[n]:q -> bit { - bit b; - for i in [0: n - 1] { - bit temp; - if(spec[i]==1 && spec[n+i]==0) { temp = xmeasure q[i]; } - if(spec[i]==0 && spec[n+i]==1) { temp = measure q[i]; } - if(spec[i]==1 && spec[n+i]==1) { temp = ymeasure q[i]; } - b ^= temp; - } - return b; -} -)#"; - auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", - qcor::OutputType::MLIR, false); - - std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; -} - -TEST(qasm3VisitorTester, checkSubroutine4) { - const std::string subroutine_test = R"#(OPENQASM 3; -include "qelib1.inc"; -const buffer_size = 30; - -def ymeasure qubit:q -> bit { s q; h q; return measure q; } - -def test(int[32]:addr) qubit:q, qubit[buffer_size]:buffer { - bit outcome; - cy buffer[addr], q; - outcome = ymeasure buffer[addr]; - if(outcome == 1) ry(pi / 2) q; -} -)#"; - auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", - qcor::OutputType::MLIR, false); - - std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; -} - -// TO IMPLEMENT - -TEST(qasm3VisitorTester, checkMeasureRange) { - const std::string meas_range = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit a[4], b[4]; -bit ans[5]; -measure b[1:3] -> ans[1:3]; -ans[1:3] = measure b[1:3]; -)#"; - auto mlir = qcor::mlir_compile(meas_range, "meas_range", - qcor::OutputType::MLIR, false); - - std::cout << "meas_range MLIR:\n" << mlir << "\n"; -} - -TEST(qasm3VisitorTester, checkGate) { - const std::string gate_def = R"#(OPENQASM 3; -include "qelib1.inc"; -gate cphase(x) a, b -{ - U(0, 0, x / 2) a; - CX a, b; - U(0, 0, -x / 2) b; - CX a, b; - U(0, 0, x / 2) b; -} -qubit q[2]; -qubit r[3]; -cphase(pi / 2) q[0], q[1]; - -// qubit s, t; -// cphase(pi / 2) s, t; - -)#"; - auto mlir = qcor::mlir_compile(gate_def, "gate_def", - qcor::OutputType::MLIR, false); - - std::cout << "gate_def MLIR:\n" << mlir << "\n"; - - qcor::execute(gate_def, "gate_def"); - - std::cout << "LLVM:\n" - << qcor::mlir_compile(gate_def, "gate_def", - qcor::OutputType::LLVMIR, false) - << "\n"; -} - -TEST(qasm3VisitorTester, checkCastBitToInt) { - const std::string cast_int = R"#(OPENQASM 3; -include "qelib1.inc"; -bit c[4] = "1111"; -int[4] t = int[4](c); -// should print 15 -print(t); -)#"; - auto mlir = qcor::mlir_compile(cast_int, "cast_int", - qcor::OutputType::MLIR, false); - - std::cout << "cast_int MLIR:\n" << mlir << "\n"; - - auto mlir2 = qcor::mlir_compile(cast_int, "cast_int", - qcor::OutputType::LLVMIR, false); - - std::cout << "cast_int MLIR:\n" << mlir2 << "\n"; - qcor::execute(cast_int, "cast_int"); -} - -TEST(qasm3VisitorTester, checkQuantumBroadcast) { - const std::string broadcast = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit q[4], r[4], a, b, aa[2], bb[2]; -h q; - -cx q, r; -cx a, aa; -cx bb, b; - -reset r; - -)#"; - auto mlir = qcor::mlir_compile(broadcast, "broadcast", - qcor::OutputType::MLIR, false); - - std::cout << "cast_int MLIR:\n" << mlir << "\n"; -} - -TEST(qasm3VisitorTester, checkBuiltInMath) { - const std::string built_in_math = R"#(OPENQASM 3; -include "qelib1.inc"; -qubit q; -float[64] x = pi - arccos(3/5); -print(x); -rz(x) q; -)#"; - auto mlir = qcor::mlir_compile(built_in_math, "built_in_math", - qcor::OutputType::MLIR, false); - - std::cout << "cast_int MLIR:\n" << mlir << "\n"; - auto llvm = qcor::mlir_compile(built_in_math, "built_in_math", - qcor::OutputType::LLVMIR, false); - std::cout << "LLVM:\n" << llvm << "\n"; -} - -TEST(qasm3VisitorTester, checkWhile2) { - const std::string while2 = R"#(OPENQASM 3; -include "qelib1.inc"; -bit flags[2] = "11"; -print(int[2](flags)); -// while(int[2](flags) != 0) { -// print(flags[0]); - -// } -)#"; - auto mlir = qcor::mlir_compile(while2, "while2", - qcor::OutputType::MLIR, false); - - std::cout << "cast_int MLIR:\n" << mlir << "\n"; - auto llvm = qcor::mlir_compile(while2, "while2", - qcor::OutputType::LLVMIR, false); - std::cout << "LLVM:\n" << llvm << "\n"; - qcor::execute(while2, "while2"); - -} -int main(int argc, char **argv) { - ::testing::InitGoogleTest(&argc, argv); - auto ret = RUN_ALL_TESTS(); - return ret; -} +#include "gtest/gtest.h" +#include "qcor_mlir_api.hpp" + +TEST(qasm3VisitorTester, checkDeclaration) { + const std::string src = R"#(OPENQASM 3; +include "qelib1.inc"; +print("HELLO WORLD"); +int[10] x, y; +int[5] xx=2, yy=1; +qubit[6] q1; +qubit q2; +bit b1[4]="0100", b2 = "1"; +bit k, kk[22]; +bool bb = False; +bool m=True, n=bool(xx); +const c = 5.5e3, d=5; +const e = 2.2; +print(c); +print(bb); +print(m); +print(n); +print(xx); +print(b1[1]); +)#"; + auto mlir = + qcor::mlir_compile(src, "test", qcor::OutputType::MLIR, true); + std::cout << "MLIR:\n" << mlir << "\n"; + qcor::execute(src, "test"); +} + +TEST(qasm3VisitorTester, checkAssignment) { + const std::string src = R"#(OPENQASM 3; +include "qelib1.inc"; +const d = 6; +const dd = d^2; +const layers = 22; +const layers2 = layers / 2; +const t = layers * 3; +const tt = d * 33.3; +const mypi = pi / 2; +const added = layers + t; +const added_diff_types = layers + tt; +int[64] tmp = 10, tmp2 = 33, tmp3 = 22; + +tmp += tmp2; +tmp -= tmp3; +tmp *= 2; +tmp /= 2; + +int[32] i = 10; +float[32] f; +float[64] ff = 3.14; +bit result; +bit results[2]; +creg c[22]; +bool b, z; +bool bb = 1; +bool bbb = 0; + +print(layers); +print(layers2); +print(t); +print(tt); +print(mypi); +print(added); +print(added_diff_types); +print(tmp); +print(b, z); +print(bb); +print(bbb); +print(f); +print(ff); +)#"; + auto mlir = + qcor::mlir_compile(src, "test", qcor::OutputType::MLIR, true); + std::cout << "MLIR:\n" << mlir << "\n"; + qcor::execute(src, "test"); +} + +TEST(qasm3VisitorTester, checkMeasurements) { + const std::string measure_test = R"#(OPENQASM 3; +include "qelib1.inc"; +qubit q; +qubit[2] qq; + +bit r, s; +r = measure q; +s = measure qq[0]; + +bit rr[2]; +rr[0] = measure qq[0]; + +bit xx[4]; +qubit[4] qqq; +xx = measure qqq; + + +)#"; + auto mlir = qcor::mlir_compile(measure_test, "measure_test", + qcor::OutputType::MLIR, false); + std::cout << "MLIR:\n" << mlir << "\n"; +// qcor::execute(measure_test, "test"); +} + +TEST(qasm3VisitorTester, checkQuantumInsts) { + const std::string qinst_test = R"#(OPENQASM 3; +include "qelib1.inc"; +qubit q; +h q; +ry(2.2) q; + +qubit[2] qq; +x qq[0]; +CX qq[0], qq[1]; +U(0.1,0.2,0.3) qq[1]; +cx q, qq[1]; + +)#"; + auto mlir = qcor::mlir_compile(qinst_test, "qinst_test", + qcor::OutputType::MLIR, false); + std::cout << "MLIR:\n" << mlir << "\n"; +} + +TEST(qasm3VisitorTester, checkLoopStmt) { + const std::string for_stmt = R"#(OPENQASM 3; +include "qelib1.inc"; + +for i in {11,22,33} { + print(i); +} + +for i in [0:10] { + print(i); + +} +for j in [0:2:4] { + print("steps:", j); +} + + +for j in [0:4] { + print("j in 0:4", j); +} + +for i in [0:4] { + for j in {1,2,3} { + print(i,j); + } +} +)#"; + auto mlir = qcor::mlir_compile(for_stmt, "for_stmt", + qcor::OutputType::MLIR, false); + std::cout << "for_stmt MLIR:\n" << mlir << "\n"; + qcor::execute(for_stmt, "for_stmt"); +} + +TEST(qasm3VisitorTester, checkUintIndexing) { + const std::string uint_index = R"#(OPENQASM 3; +include "qelib1.inc"; + +uint[4] b_in = 15; + +bool b1 = bool(b_in[0]); +bool b2 = bool(b_in[1]); +bool b3 = bool(b_in[2]); +bool b4 = bool(b_in[3]); + +print(b1,b2,b3,b4); +)#"; + auto mlir = qcor::mlir_compile(uint_index, "uint_index", + qcor::OutputType::MLIR, false); + std::cout << mlir << "\n"; + qcor::execute(uint_index, "uint_index"); +} + +TEST(qasm3VisitorTester, checkIfStmt) { + const std::string if_stmt = R"#(OPENQASM 3; +include "qelib1.inc"; +qubit q; +qubit s; +const layers = 2; +bit cc[2]; +qubit[2] qq; + +bit c; +c = measure q; +cc[0] = measure qq[0]; + +if (c == 1) { + z s; +} else { + print("c was a 0"); +} + +if (layers == 2) { + print("should be here, layers is 2"); + z s; +} + + +cc[1] = measure qq[1]; +if ( cc[1] == 1) { + ry(2.2) s; +} + + +)#"; + auto mlir = qcor::mlir_compile(if_stmt, "if_stmt", + qcor::OutputType::MLIR, false); + std::cout << mlir << "\n"; +} + + +TEST(qasm3VisitorTester, checkSecondIfStmt) { + const std::string if_stmt = R"#(OPENQASM 3; +include "qelib1.inc"; +qubit q; +qubit s; +qubit[2] qqq; +bit c; + +if (!c) { + print("you should see me"); +} +x q; +c = measure q; +if (c == 1) { + print("hi"); + ry(2.2) s; +} + +c = measure qqq[0]; +print("hi world"); + +)#"; + auto mlir = qcor::mlir_compile(if_stmt, "if_stmt", + qcor::OutputType::MLIR, false); + std::cout << mlir << "\n"; + qcor::execute(if_stmt, "if_stmt"); +} + +TEST(qasm3VisitorTester, checkIfStmt3) { + const std::string complex_if = R"#(OPENQASM 3; +include "qelib1.inc"; +qubit q; +const n = 10; +int[32] i = 3; + +bit temp; +if(temp==0 && i==3) { + print("we are here"); + temp = measure q; +} + +)#"; + auto mlir = qcor::mlir_compile(complex_if, "complex_if", + qcor::OutputType::MLIR, false); + std::cout << mlir << "\n"; +// qcor::execute(complex_if, "complex_if"); +} + + +TEST(qasm3VisitorTester, checkWhile) { + const std::string while_stmt = R"#(OPENQASM 3; +include "qelib1.inc"; +int[32] i = 0; +while (i < 10) { + print(i); + i += 1; +} +)#"; + auto mlir = qcor::mlir_compile(while_stmt, "while_stmt", + qcor::OutputType::MLIR, false); + std::cout << mlir << "\n"; + qcor::execute(while_stmt, "while_stmt"); +} +//TODO: uncomment when subroutine calls are bracket-less in the grammar +//TEST(qasm3VisitorTester, checkSubroutine) { +// const std::string subroutine_test = R"#(OPENQASM 3; +//include "qelib1.inc"; +//def xmeasure qubit:q -> bit { h q; return measure q; } +//qubit q; +//qubit[2] qq; +//bit r, rr[2]; +// +//rr[0] = xmeasure q; +//r = xmeasure qq[0]; +//)#"; +// auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", +// qcor::OutputType::MLIR, false); +// +// std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; +//} + +TEST(qasm3VisitorTester, checkSubroutine2) { + const std::string subroutine_test = R"#(OPENQASM 3; +include "qelib1.inc"; +def xcheck qubit[4]:d, qubit:a -> bit { + // reset a; + for i in [1: 3] cx d[i], a; + return measure a; +} +qubit q; +const n = 10; +def parity(bit[n]:cin) -> bit { + bit c; + for i in [0: n-1] { + c ^= cin[i]; + } + return c; +} +)#"; + auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", + qcor::OutputType::MLIR, false); + + std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; +} + +//TODO: uncomment when subroutine calls are bracket-less in the grammar +//TEST(qasm3VisitorTester, checkSubroutine3) { +// const std::string subroutine_test = R"#(OPENQASM 3; +//include "qelib1.inc"; +//const n = 10; +//def xmeasure qubit:q -> bit { h q; return measure q; } +//def ymeasure qubit:q -> bit { s q; h q; return measure q; } +// +//def pauli_measurement(bit[2*n]:spec) qubit[n]:q -> bit { +// bit b; +// for i in [0: n - 1] { +// bit temp; +// if(spec[i]==1 && spec[n+i]==0) { temp = xmeasure q[i]; } +// if(spec[i]==0 && spec[n+i]==1) { temp = measure q[i]; } +// if(spec[i]==1 && spec[n+i]==1) { temp = ymeasure q[i]; } +// b ^= temp; +// } +// return b; +//} +//)#"; +// auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", +// qcor::OutputType::MLIR, false); +// +// std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; +//} + +//TODO: uncomment when subroutine calls are bracket-less in the grammar +//TEST(qasm3VisitorTester, checkSubroutine4) { +// const std::string subroutine_test = R"#(OPENQASM 3; +//include "qelib1.inc"; +//const buffer_size = 30; +// +//def ymeasure qubit:q -> bit { s q; h q; return measure q; } +// +//def test(int[32]:addr) qubit:q, qubit[buffer_size]:buffer { +// bit outcome; +// cy buffer[addr], q; +// outcome = ymeasure buffer[addr]; +// if(outcome == 1) ry(pi / 2) q; +//} +//)#"; +// auto mlir = qcor::mlir_compile(subroutine_test, "subroutine_test", +// qcor::OutputType::MLIR, false); +// +// std::cout << "subroutine_test MLIR:\n" << mlir << "\n"; +//} + +// TO IMPLEMENT +//TEST(qasm3VisitorTester, checkMeasureRange) { +// const std::string meas_range = R"#(OPENQASM 3; +//include "qelib1.inc"; +//qubit[4] a; +//qubit[4] b; +//bit ans[5]; +//measure b[1:3] -> ans[1:3]; +//ans[1:3] = measure b[1:3]; +//)#"; +// auto mlir = qcor::mlir_compile(meas_range, "meas_range", +// qcor::OutputType::MLIR, false); +// +// std::cout << "meas_range MLIR:\n" << mlir << "\n"; +//} + +//TODO: Gate causes SegFault should look into it. +//TEST(qasm3VisitorTester, checkGate) { +// const std::string gate_def = R"#(OPENQASM 3; +//include "qelib1.inc"; +//gate cphase(x) a, b +//{ +// U(0, 0, x / 2) a; +// CX a, b; +// U(0, 0, -x / 2) b; +// CX a, b; +// U(0, 0, x / 2) b; +//} +//qubit[2] q; +//qubit[3] r; +//cphase(pi / 2) q[0], q[1]; +//qubit s; +//qubit t; +//cphase(pi / 2) s, t; +//)#"; +// auto mlir = qcor::mlir_compile(gate_def, "gate_def", +// qcor::OutputType::MLIR, false); +// +// std::cout << "gate_def MLIR:\n" << mlir << "\n"; +// +// qcor::execute(gate_def, "gate_def"); +// +// std::cout << "LLVM:\n" +// << qcor::mlir_compile(gate_def, "gate_def", +// qcor::OutputType::LLVMIR, false) +// << "\n"; +//} + +TEST(qasm3VisitorTester, checkCastBitToInt) { + const std::string cast_int = R"#(OPENQASM 3; +include "qelib1.inc"; +bit c[4] = "1111"; +int[4] t = int[4](c); +// should print 15 +print(t); +)#"; + auto mlir = qcor::mlir_compile(cast_int, "cast_int", + qcor::OutputType::MLIR, false); + + std::cout << "cast_int MLIR:\n" << mlir << "\n"; + + auto mlir2 = qcor::mlir_compile(cast_int, "cast_int", + qcor::OutputType::LLVMIR, false); + + std::cout << "cast_int MLIR:\n" << mlir2 << "\n"; + qcor::execute(cast_int, "cast_int"); +} + +TEST(qasm3VisitorTester, checkQuantumBroadcast) { + const std::string broadcast = R"#(OPENQASM 3; +include "qelib1.inc"; +qubit[4] q; +qubit[4] r; +qubit a; +qubit b; +qubit[2] aa; +qubit[2] bb; +h q; + +cx q, r; +cx a, aa; +cx bb, b; + +reset r; + +)#"; + auto mlir = qcor::mlir_compile(broadcast, "broadcast", + qcor::OutputType::MLIR, false); + + std::cout << "cast_int MLIR:\n" << mlir << "\n"; +} + +TEST(qasm3VisitorTester, checkBuiltInMath) { + const std::string built_in_math = R"#(OPENQASM 3; +include "qelib1.inc"; +qubit q; +float[64] x = pi - arccos(3/5); +print(x); +rz(x) q; +)#"; + auto mlir = qcor::mlir_compile(built_in_math, "built_in_math", + qcor::OutputType::MLIR, false); + + std::cout << "cast_int MLIR:\n" << mlir << "\n"; + auto llvm = qcor::mlir_compile(built_in_math, "built_in_math", + qcor::OutputType::LLVMIR, false); + std::cout << "LLVM:\n" << llvm << "\n"; +} + +TEST(qasm3VisitorTester, checkWhile2) { + const std::string while2 = R"#(OPENQASM 3; +include "qelib1.inc"; +bit flags[2] = "11"; +print(int[2](flags)); +// while(int[2](flags) != 0) { +// print(flags[0]); +// } +)#"; + auto mlir = qcor::mlir_compile(while2, "while2", + qcor::OutputType::MLIR, false); + + std::cout << "cast_int MLIR:\n" << mlir << "\n"; + auto llvm = qcor::mlir_compile(while2, "while2", + qcor::OutputType::LLVMIR, false); + std::cout << "LLVM:\n" << llvm << "\n"; + qcor::execute(while2, "while2"); + +} + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + auto ret = RUN_ALL_TESTS(); + return ret; +} diff --git a/mlir/parsers/qasm3/tests/test_quantum_instructions.cpp b/mlir/parsers/qasm3/tests/test_quantum_instructions.cpp index cdb3d4c6..7a3a1d39 100644 --- a/mlir/parsers/qasm3/tests/test_quantum_instructions.cpp +++ b/mlir/parsers/qasm3/tests/test_quantum_instructions.cpp @@ -4,7 +4,7 @@ TEST(qasm3VisitorTester, checkQuantumBroadcast) { const std::string broadcast = R"#(OPENQASM 3; include "qelib1.inc"; -qubit q[4]; +qubit[4] q; x q; bit m[4]; m = measure q; diff --git a/mlir/parsers/qasm3/tests/test_subroutine.cpp b/mlir/parsers/qasm3/tests/test_subroutine.cpp index 87df9266..63ee851b 100644 --- a/mlir/parsers/qasm3/tests/test_subroutine.cpp +++ b/mlir/parsers/qasm3/tests/test_subroutine.cpp @@ -69,7 +69,7 @@ def deuteron(float[64]:theta) qubit[2]:q -> float[64] { } float[64] theta, exp_val; -qubit qq[2]; +qubit[2] qq; // Try a theta value: const step = 2 * pi / 19; theta = -pi + step; diff --git a/mlir/parsers/qasm3/visitor_handlers/quantum_types_handler.cpp b/mlir/parsers/qasm3/visitor_handlers/quantum_types_handler.cpp index aed5f39d..6406a26c 100644 --- a/mlir/parsers/qasm3/visitor_handlers/quantum_types_handler.cpp +++ b/mlir/parsers/qasm3/visitor_handlers/quantum_types_handler.cpp @@ -1,199 +1,196 @@ -#include "qasm3_visitor.hpp" - -namespace qcor { - -antlrcpp::Any qasm3_visitor::visitQuantumDeclaration( - qasm3Parser::QuantumDeclarationContext* context) { - // quantumDeclaration - // : quantumType indexIdentifierList - // ; - // - // indexIdentifier - // : Identifier rangeDefinition - // | Identifier ( LBRACKET expressionList RBRACKET )? - // | indexIdentifier '||' indexIdentifier - // ; - - // indexIdentifierList - // : ( indexIdentifier COMMA )* indexIdentifier - // ; - // - // can be - // qubit q; - // qubit q[size]; - // qubit q[size], r[size2], ...; - // qreg q[size]; - - auto location = get_location(builder, file_name, context); - - std::size_t size = 1; - auto index_ident_list = context->indexIdentifierList(); - - for (auto idx_identifier : index_ident_list->indexIdentifier()) { - auto var_name = idx_identifier->Identifier()->getText(); - auto exp_list = idx_identifier->expressionList(); - if (exp_list) { - auto opt_size = symbol_table.try_evaluate_constant_integer_expression( - exp_list->expression(0)->getText()); - if (opt_size.has_value()) { - size = opt_size.value(); - } else { - // check if this is a constant expression - qasm3_expression_generator exp_generator(builder, symbol_table, - file_name); - exp_generator.visit(exp_list->expression(0)); - auto arg = exp_generator.current_value; - - if (auto constantOp = arg.getDefiningOp()) { - if (constantOp.getValue().isa()) { - size = constantOp.getValue().cast().getInt(); - } else { - printErrorMessage( - "This variable qubit size must be a constant integer."); - } - } else { - size = symbol_table.get_global_constant( - exp_list->expression(0)->getText()); - } - } - } - - auto integer_type = builder.getI64Type(); - auto integer_attr = mlir::IntegerAttr::get(integer_type, size); - - auto str_attr = builder.getStringAttr(var_name); - mlir::Value allocation = builder.create( - location, array_type, integer_attr, str_attr); - - if (context->quantumType()->getText() == "qubit" && size == 1) { - // we have a single qubit, dont set it as an array in teh - // symbol table, extract it and set it - mlir::Value pos = get_or_create_constant_integer_value( - 0, location, builder.getIntegerType(64), symbol_table, builder); - - // Need to also store the qubit array for this single qubit - // so that we can deallocate later. - symbol_table.add_symbol("__qcor__mlir__single_qubit_register_" + var_name, - allocation); - - allocation = builder.create( - location, qubit_type, allocation, pos); - } - - symbol_table.add_symbol(var_name, allocation); - size = 1; - } - return 0; -} - -antlrcpp::Any qasm3_visitor::visitQuantumGateDefinition( - qasm3Parser::QuantumGateDefinitionContext* context) { - // quantumGateDefinition - // : 'gate' quantumGateSignature quantumBlock - // ; - - // quantumGateSignature - // : ( Identifier | 'CX' | 'U') ( LPAREN identifierList? RPAREN )? - // identifierList - // ; - - // quantumBlock - // : LBRACE ( quantumStatement | quantumLoop )* RBRACE - // ; - - auto gate_call_name = - context->quantumGateSignature()->Identifier()->getText(); - bool has_classical_params = - context->quantumGateSignature()->identifierList().size() == 2; - - auto qbit_ident_list_idx = 0; - std::vector arg_names; - std::vector func_args; - if (has_classical_params) { - qbit_ident_list_idx = 1; - - auto params_ident_list = context->quantumGateSignature()->identifierList(0); - - for (auto ident_expr : params_ident_list->Identifier()) { - func_args.push_back(builder.getF64Type()); - arg_names.push_back(ident_expr->getText()); - } - } - auto qubits_ident_list = - context->quantumGateSignature()->identifierList(qbit_ident_list_idx); - for (auto ident_expr : qubits_ident_list->Identifier()) { - func_args.push_back(qubit_type); - arg_names.push_back(ident_expr->getText()); - } - - auto main_block = builder.saveInsertionPoint(); - - auto func_type = builder.getFunctionType(func_args, func_args); - auto proto = - mlir::FuncOp::create(builder.getUnknownLoc(), gate_call_name, func_type); - mlir::FuncOp function(proto); - - auto& entryBlock = *function.addEntryBlock(); - builder.setInsertionPointToStart(&entryBlock); - - symbol_table.enter_new_scope(); - - auto arguments = entryBlock.getArguments(); - for (int i = 0; i < arguments.size(); i++) { - symbol_table.add_symbol(arg_names[i], arguments[i]); - } - - auto quantum_block = context->quantumBlock(); - - auto ret = visitChildren(quantum_block); - - // Can I walk the use chain of the block arguments - // and get the resultant qubit values taht I can then return - // from this custom gate definition - std::vector result_qubit_vals; - for (auto arg : entryBlock.getArguments()) { - mlir::Value last_user = arg; - auto users = last_user.getUsers(); - - while (!users.empty()) { - // Get the first and only user - auto only_user = *users.begin(); - - // figure out which operand idx last_user - // corresponds to - int idx = -1; - for (auto op : only_user->getOperands()) { - idx++; - if (op == last_user) { - break; - } - } - - // set the new last user as the correct - // return value of the user - last_user = only_user->getResult(idx); - users = last_user.getUsers(); - } - result_qubit_vals.push_back(last_user); - } - - // std::cout << "GATE " << gate_call_name << " has " << result_qubit_vals.size() - // << " to return.\n"; - // for (auto v : result_qubit_vals) { - // v.dump(); - // } - - builder.create(builder.getUnknownLoc(), - llvm::makeArrayRef(result_qubit_vals)); - - m_module.push_back(function); - - builder.restoreInsertionPoint(main_block); - - symbol_table.exit_scope(); - - symbol_table.add_seen_function(gate_call_name, function); - - return 0; -} +#include "qasm3_visitor.hpp" + +namespace qcor { + +antlrcpp::Any qasm3_visitor::visitQuantumDeclaration( + qasm3Parser::QuantumDeclarationContext* context) { + // quantumDeclaration + // : quantumType indexIdentifierList + // ; + // + // indexIdentifier + // : Identifier rangeDefinition + // | Identifier ( LBRACKET expressionList RBRACKET )? + // | indexIdentifier '||' indexIdentifier + // ; + + // indexIdentifierList + // : ( indexIdentifier COMMA )* indexIdentifier + // ; + // + // can be + // qubit q; + // qubit [size]q; + // qreg q[size]; + + auto location = get_location(builder, file_name, context); + + std::size_t size = 1; + auto identifier = context->Identifier(); + auto var_name = identifier->getText(); + auto designator = context->designator(); + if (designator) { + auto opt_size = symbol_table.try_evaluate_constant_integer_expression( + designator->expression()->getText()); + if (opt_size.has_value()) { + size = opt_size.value(); + } else { + // check if this is a constant expression + qasm3_expression_generator exp_generator(builder, symbol_table, + file_name); + exp_generator.visit(designator->expression()); + auto arg = exp_generator.current_value; + + if (auto constantOp = arg.getDefiningOp()) { + if (constantOp.getValue().isa()) { + size = constantOp.getValue().cast().getInt(); + } else { + printErrorMessage( + "This variable's qubit size must be a constant integer."); + } + } else { + size = symbol_table.get_global_constant( + designator->expression()->getText()); + } + } + } + + auto integer_type = builder.getI64Type(); + auto integer_attr = mlir::IntegerAttr::get(integer_type, size); + + auto str_attr = builder.getStringAttr(var_name); + mlir::Value allocation = builder.create( + location, array_type, integer_attr, str_attr); + + if (context->getStart()->getText() == "qubit" && size == 1) { + // we have a single qubit, don't set it as an array in the + // symbol table, extract it and set it + mlir::Value pos = get_or_create_constant_integer_value( + 0, location, builder.getIntegerType(64), symbol_table, builder); + + // Need to also store the qubit array for this single qubit + // so that we can deallocate later. + symbol_table.add_symbol("__qcor__mlir__single_qubit_register_" + var_name, + allocation); + + allocation = builder.create( + location, qubit_type, allocation, pos); + } + + symbol_table.add_symbol(var_name, allocation); + size = 1; + + return 0; +} + +antlrcpp::Any qasm3_visitor::visitQuantumGateDefinition( + qasm3Parser::QuantumGateDefinitionContext* context) { + // quantumGateDefinition + // : 'gate' quantumGateSignature quantumBlock + // ; + + // quantumGateSignature + // : ( Identifier | 'CX' | 'U') ( LPAREN identifierList? RPAREN )? + // identifierList + // ; + + // quantumBlock + // : LBRACE ( quantumStatement | quantumLoop )* RBRACE + // ; + + auto gate_call_name = + context->quantumGateSignature()->Identifier()->getText(); + bool has_classical_params = + context->quantumGateSignature()->identifierList().size() == 2; + + auto qbit_ident_list_idx = 0; + std::vector arg_names; + std::vector func_args; + if (has_classical_params) { + qbit_ident_list_idx = 1; + + auto params_ident_list = context->quantumGateSignature()->identifierList(0); + + for (auto ident_expr : params_ident_list->Identifier()) { + func_args.push_back(builder.getF64Type()); + arg_names.push_back(ident_expr->getText()); + } + } + auto qubits_ident_list = + context->quantumGateSignature()->identifierList(qbit_ident_list_idx); + for (auto ident_expr : qubits_ident_list->Identifier()) { + func_args.push_back(qubit_type); + arg_names.push_back(ident_expr->getText()); + } + + auto main_block = builder.saveInsertionPoint(); + + auto func_type = builder.getFunctionType(func_args, func_args); + auto proto = + mlir::FuncOp::create(builder.getUnknownLoc(), gate_call_name, func_type); + mlir::FuncOp function(proto); + + auto& entryBlock = *function.addEntryBlock(); + builder.setInsertionPointToStart(&entryBlock); + + symbol_table.enter_new_scope(); + + auto arguments = entryBlock.getArguments(); + for (int i = 0; i < arguments.size(); i++) { + symbol_table.add_symbol(arg_names[i], arguments[i]); + } + + auto quantum_block = context->quantumBlock(); + + auto ret = visitChildren(quantum_block); + + // Can I walk the use chain of the block arguments + // and get the resultant qubit values taht I can then return + // from this custom gate definition + std::vector result_qubit_vals; + for (auto arg : entryBlock.getArguments()) { + mlir::Value last_user = arg; + auto users = last_user.getUsers(); + + while (!users.empty()) { + // Get the first and only user + auto only_user = *users.begin(); + + // figure out which operand idx last_user + // corresponds to + int idx = -1; + for (auto op : only_user->getOperands()) { + idx++; + if (op == last_user) { + break; + } + } + + // set the new last user as the correct + // return value of the user + last_user = only_user->getResult(idx); + users = last_user.getUsers(); + } + result_qubit_vals.push_back(last_user); + } + + // std::cout << "GATE " << gate_call_name << " has " << result_qubit_vals.size() + // << " to return.\n"; + // for (auto v : result_qubit_vals) { + // v.dump(); + // } + + builder.create(builder.getUnknownLoc(), + llvm::makeArrayRef(result_qubit_vals)); + + m_module.push_back(function); + + builder.restoreInsertionPoint(main_block); + + symbol_table.exit_scope(); + + symbol_table.add_seen_function(gate_call_name, function); + + return 0; +} } // namespace qcor \ No newline at end of file